|
|
  |
Порты AVR и компиляция |
|
|
|
Sep 26 2007, 15:26
|
Группа: Участник
Сообщений: 12
Регистрация: 19-05-07
Пользователь №: 27 828

|
Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы: У этих AVR что нет удобного побитового доступа к портам? Какой компилятор делает наиболее красивый код?
|
|
|
|
|
Sep 26 2007, 16:01
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(allexmor @ Sep 26 2007, 18:26)  У этих AVR что нет удобного побитового доступа к портам? есть, на запись - cbi/sbi на чтение - sbic/sbis но это будет "очень" побитовый доступ. Такого как в ARM - IOSET/IOCLR в AVR нет. Зато есть и хорошая сторона - такого "гонива" как в ARM - потребность применять 2 команды для записи конкретного значения в порт - в AVR'е тоже нет. Пишете сразу действующее значение (пример): PORTB = 0x55; // на выводах порта 0x55 PORTB = 0xAA; // на выводах порта 0xAA Цитата Какой компилятор делает наиболее красивый код? IAR
|
|
|
|
|
Sep 26 2007, 16:38
|

Частый гость
 
Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618

|
Цитата(allexmor @ Sep 26 2007, 18:26)  Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы: У этих AVR что нет удобного побитового доступа к портам? CVAVR дает побитовый доступ к портам (правда в некоторых процах не ко всем) Код PORTB.0 = 1; DDRB.3 = 0;
|
|
|
|
|
Sep 26 2007, 16:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата такого гонива как потребность применять 2 команды для записи конкретного значения в порт как в ARM в AVR'е тоже нет. Хм... Вы слегка заблуждаетесь, если говорите об LPC. В них совсем необязательно использовать IOSET/IOCLR - Вы можете просто модифицировать (чтение-модификация-запись) регистр IOPIN Writing to the IOPIN register stores the value in the port output register, bypassing the need to use both the IOSET and IOCLR registers to obtain the entire written value. This feature should be used carefully in an application since it affects the entire port. Чтение-модификация-запись возможно более привычная операция, но она неатомарна и без FIO дороже по времени (шина-то периферийная узковата). Неатомарность заставляет задумываться об использовании портов в обработчиках прерываний.
--------------------
aka Vit
|
|
|
|
|
Sep 27 2007, 04:51
|
Группа: Участник
Сообщений: 12
Регистрация: 19-05-07
Пользователь №: 27 828

|
Цитата(defunct @ Sep 27 2007, 02:19)  Ну... В реалиях этой фичей особо не попользуешься, особенно когда всего 1 порт, и после включения периферии остаются разрозненные, хаотически пронумерованные пины... IOSET/IOCLR the only way to go в этом случае.
В AVR'е те же 32 пина разбиты на 4 порта, отсюда возможность проектирования девайса так, что можно обойтись без чтения-модификации-записи. Ну с портами все понятно. На какой среде разработки остановиться? в CodeVAVR - можно ли в проект загнать не один файл?
|
|
|
|
|
Sep 27 2007, 05:08
|
Группа: Участник
Сообщений: 12
Регистрация: 19-05-07
Пользователь №: 27 828

|
Цитата(sensor_ua @ Sep 27 2007, 09:04)  Фаворит IAR. WinAVR вполне юзабилен, но когда нужно чуть более, чем дрыгать пинами, то с нуля нужно тратить больше времени для эффективного использования. CV - ничего не скажу, т.к. не пользую. Замечу только, что в последнее время автор предупреждает пользователей, что леченный продукт распознаётся и может не так чтобы совсем не работать, а генерировать неадекватный результат. Где можно IAR скачать? ну и крэк?
|
|
|
|
|
Sep 27 2007, 12:58
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(defunct @ Sep 27 2007, 12:56)  Ну почему же. Упомянутый WinAVR очень не плох, к тому же бесплатный. "глобальное" отличие между WinAVR и IAR лишь в использовании различных адресных пространств. В IAR это сделано на порядок лучше - __flash, __eeprom. Ну да - __flash, __eeprom на порядок превосходят EEMEM, PROGMEM  По теме - если дрыгать ножками, то любой. Если что-то серьезнее то WinAvr. Под него пишут сотни тысяч человек и в отличии от IAR их труды доступны в сети. Не придется адаптировать, бери и пользуйся. С ИАР-ом же придется в большинстве случаев решать все проблемы самому - типа файловых систем и т.п. Ну или адаптировать код от Winavr  У ИАРа одно преимущество - ассемблер встраивать легче.
Сообщение отредактировал Qwertty - Sep 27 2007, 13:00
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|