[an error occurred while processing this directive]
Ничего не надо забивать - достаточно штатных h-файлов. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ReAl 13 ноября 2006 г. 14:16
В ответ на: эммм. ну ок. такие дефайны забить можно. а будет ли работать? т.е. поймет ли компилер к каким адресам надо через in out ломиться, а к каким через память? В winavr прописаны через SFR_IO8 и SFR_IO16, хотя где-то и память видел... вообще, насколько это тормознее будет? отправлено <font color=gray>507</font> 13 ноября 2006 г. 13:38

См выше пример от _Bill - аналогично будет работать.
По сути, эти SFR_IO похожи на предложенное.
Макросы SFR_IO от MEM_IO отличаются тем, что добавляют "подставку" в 32 (пропуск регистров) и приводят одреса портов к адресам памяти.
Если ты передаёшь указатель, то во время выполнения компилятор никаких проверок не делает и ко всем портам будет обращаться через st/ld.
А если применяешь PORTA/PORTE напрямую, то оптимизатор смотрит на значение адреса и, если он попадает в зону IO-портов, вычитает назад подставку и ставит команды in/out, где можно - sbi/cbi/sbis/sbic

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание