Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Тупой я. Новыый процессор, старый язык с гордым названием С, но совершенно иной подход.
Отправлено
dshabrov
(84.21.231.242)
16 февраля 2011, г. 15:03
Если в Keil Uv3 mcs51 для присвоения значения регистру можно было написать
SCON = 0x40;
Если в cvavr тоже самое звучало как:
TCCR0=(1<<CS02)|(1<<CS00);
То в Keil uVision4 для SAM7s64 используется тарабарщина:
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
Т.е. я понимаю, что в PMC_PCER пишется 1, сдвинутая на константу AT91C_ID_PIOA.
Но осознать доконца немогу. По идее это структура. И вроде должна она называться AT91C_BASE_PMC. Но поиском в AT91SAM7S64.H нахожу число:
#define AT91C_BASE_PIOA (AT91_CAST(AT91PS_PIO) 0xFFFFF400) // (PIOA) Base Address
К какой структуре в данном случае идет обращение?
Составить ответ
|
Вернуться на конференцию
Ответы
Ты поищи в хедере. Там должны типы: структура AT91S_PMC и указатель на эту структуру, AT91PS_PMC. И должно быть приведение начального адреса блока PMC- регистров, т.е. 16-ричного числа, к типу указателя на структуру AT91S_PMC, т.е. к типу AT91PS_PMC. И результат этого приведения дефайном обзывается at91c_base_pmc
-
-=ВН=-
(16.02.2011, 18:07:25
194.190.183.238
, 921 байт)
Хотя я тебе конкретные имена - AT91S_PMC, AT91PS_PMC взял от иар, в кейле они может другие какие, но смысел один хер должен быть такой, как я и написал - объявление типов на структуру и на указатель на нее, приведение адресу к типу указатель на структуру и обзывание результата приведения каким-нибудь осмысленным аббревиатуром:-))
-
-=ВН=-
(16.02.2011, 18:13:45
194.190.183.238
,
пустое
)
так понятней?
-
ы
(16.02.2011, 15:26:49
213.108.4.47
, 1365 байт)
Понятнее, но не совсем+++
-
dshabrov
(16.02.2011, 15:37:53
84.21.231.242
, 265 байт)
объявляется структура таймера (последовательно регистры), с помощью преобразования типов присваивается ей адрес начала физической карты памяти таймера/ов. Далее осуществляется доступ. к примеру
-
ы
(16.02.2011, 15:48:0
213.108.4.47
, 578 байт)
Ответ: Если не трудно, кинте ссылку где почитать об этом. Чтобы я больше не тупил здесь.
-
dshabrov
(16.02.2011, 16:16:50
84.21.231.242
,
пустое
)
Любая толковая книга по Си. Н-р, "Программирование на языке Си" В.В. Подбельский, С.С. Фомин
-
Юрий_СВ
(16.02.2011, 16:22:33
213.5.199.158
,
пустое
)
Так понятно. Спасибо. Только непонятно зачем так делать++
-
dshabrov
(16.02.2011, 16:07:48
84.21.231.242
, 143 байт)
функция присвоения, да еще и на asm(!) нагляднее знака '=' ?
-
ы
(16.02.2011, 16:38:39
213.108.4.47
,
пустое
)
Перифериии стало слишком много. Замахаешься на каждый регистр отдельное имя придумывать и запоминать. Тем более, что много одинаковых устройств. Поэтому, перешли к другой форме представления: базовый адрес(переферийное устройство)+смещение(регистр). Всё равно в обоих случаях на выходе одно и тоже : сохранить "слово" по фиксированному адресу.
-
Юрий_СВ
(16.02.2011, 16:20:10
213.5.199.158
,
пустое
)
Т.е. во всех этих случаях до компилятора (после препроцессора) доходит что-то типа: *((unsigned char*)0x001D)-0x40;
-
Юрий_СВ
(16.02.2011, 16:25:26
217.12.195.250
,
пустое
)
описка: там не "-", а "="
-
Юрий_СВ
(16.02.2011, 16:25:56
217.12.195.250
,
пустое
)
ну так делай. Вообще макросы - большая, очень большая бяка. Переходи на С++ и юзай inline
-
DASM
(16.02.2011, 16:15:51
89.163.14.219
,
пустое
)
Ты еще в Кортекс загляни..для кристаллов с навернутой периферией это действительно облегчает. Суть вот в чем
-
Неспящие_
(16.02.2011, 15:19:38
192.168.24.76,89.184.24.74
, 538 байт)
Принял как должное, пытаюсь разобраться.
-
dshabrov
(16.02.2011, 15:22:46
84.21.231.242
,
пустое
)
Ответ:
-
Тумблер
(16.02.2011, 15:19:30
95.143.115.166
, 742 байт)
Дык. Мне на этом языке писать. Константы я давно нашел. Хочу понять принцип.
-
dshabrov
(16.02.2011, 15:21:22
84.21.231.242
,
пустое
)
Только сейчас понял, что я еще тупее.
-
dshabrov
(16.02.2011, 15:16:38
84.21.231.242
, 236 байт)
Дык макрос это, забей.
-
Неспящие_
(16.02.2011, 15:20:19
192.168.24.76,89.184.24.74
,
пустое
)
да все С тарабарщина.. када язык оптимизируют не для наглядности а скорости набивания исходника - то и получается г на букву "ц"
-
basilmak
(16.02.2011, 15:08:38
178.177.233.211
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 38:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru