реклама на сайте
подробности

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Порты AVR и компиляция
allexmor
сообщение Sep 26 2007, 15:26
Сообщение #1





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



Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы:
У этих AVR что нет удобного побитового доступа к портам?
Какой компилятор делает наиболее красивый код?
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 26 2007, 16:01
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Marian
сообщение Sep 26 2007, 16:38
Сообщение #3


Частый гость
**

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



Цитата(allexmor @ Sep 26 2007, 18:26) *
Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы:
У этих AVR что нет удобного побитового доступа к портам?


CVAVR дает побитовый доступ к портам (правда в некоторых процах не ко всем)

Код
PORTB.0 = 1;
DDRB.3  = 0;
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 26 2007, 16:48
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
bodja74
сообщение Sep 26 2007, 17:32
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Зато сразу IOPIN=0x5555AAAA; smile.gif smile.gif smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 26 2007, 22:19
Сообщение #6


кекс
******

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



Цитата(sensor_ua @ Sep 26 2007, 19:48) *
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.

Ну... В реалиях этой фичей особо не попользуешься, особенно когда всего 1 порт, и после включения периферии остаются разрозненные, хаотически пронумерованные пины...
IOSET/IOCLR the only way to go в этом случае.

В AVR'е те же 32 пина разбиты на 4 порта, отсюда возможность проектирования девайса так, что можно обойтись без чтения-модификации-записи.
Go to the top of the page
 
+Quote Post
allexmor
сообщение Sep 27 2007, 04:51
Сообщение #7





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



Цитата(defunct @ Sep 27 2007, 02:19) *
Ну... В реалиях этой фичей особо не попользуешься, особенно когда всего 1 порт, и после включения периферии остаются разрозненные, хаотически пронумерованные пины...
IOSET/IOCLR the only way to go в этом случае.

В AVR'е те же 32 пина разбиты на 4 порта, отсюда возможность проектирования девайса так, что можно обойтись без чтения-модификации-записи.



Ну с портами все понятно.
На какой среде разработки остановиться?
в CodeVAVR - можно ли в проект загнать не один файл?
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Sep 27 2007, 05:04
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Фаворит IAR. WinAVR вполне юзабилен, но когда нужно чуть более, чем дрыгать пинами, то с нуля нужно тратить больше времени для эффективного использования. CV - ничего не скажу, т.к. не пользую. Замечу только, что в последнее время автор предупреждает пользователей, что леченный продукт распознаётся и может не так чтобы совсем не работать, а генерировать неадекватный результат.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
allexmor
сообщение Sep 27 2007, 05:08
Сообщение #9





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



Цитата(sensor_ua @ Sep 27 2007, 09:04) *
Фаворит IAR. WinAVR вполне юзабилен, но когда нужно чуть более, чем дрыгать пинами, то с нуля нужно тратить больше времени для эффективного использования. CV - ничего не скажу, т.к. не пользую. Замечу только, что в последнее время автор предупреждает пользователей, что леченный продукт распознаётся и может не так чтобы совсем не работать, а генерировать неадекватный результат.



Где можно IAR скачать? ну и крэк?
Go to the top of the page
 
+Quote Post
alexander55
сообщение Sep 27 2007, 05:49
Сообщение #10


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(allexmor @ Sep 27 2007, 09:08) *
Где можно IAR скачать? ну и крэк?

Есть ветка про IAR. Там есть ответы на все вопросы (зачем здесь оффтоп).
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Sep 27 2007, 06:27
Сообщение #11


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



WinAvr(gcc)+Eclipse - хорошая бесплатная связка для разработки. IAR поймал однажды на тесте с худшим результатом компиляции, чем gcc. Наверно, тест такой был sad.gif GNU как-то спокойнее, а то как его не ломали, а IAR - не ясно. Есть удобные макросы для работы.
P.S. Просьба не начинать религиозные войны по качеству кодогенерации компиляторов, они на форуме уже были.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
IJAR
сообщение Sep 27 2007, 06:51
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



IMHO: После IAR другие компиляторы даже пробовать не хочется, ну все что было нужно
он делать умеет.


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 27 2007, 08:56
Сообщение #13


кекс
******

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



Цитата(IJAR @ Sep 27 2007, 09:51) *
IMHO: После IAR другие компиляторы даже пробовать не хочется, ну все что было нужно
он делать умеет.

Ну почему же. Упомянутый WinAVR очень не плох, к тому же бесплатный.
"глобальное" отличие между WinAVR и IAR лишь в использовании различных адресных пространств. В IAR это сделано на порядок лучше - __flash, __eeprom.
Go to the top of the page
 
+Quote Post
GDI
сообщение Sep 27 2007, 09:09
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



В CodeVision можно сделать несколько файлов в проекте, ну и несомненное его достоинство по сравнению с остальными - это наличие мастера проекта, который сам сделает все стартап коды, но когда появляются собственные библиотеки для IAR или GCC то надобность в мастере отпадает, как правило. Сам я работаю в ИАРе, но держу КодеВижон, именно для создания инитов.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Sep 27 2007, 12:58
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(defunct @ Sep 27 2007, 12:56) *
Ну почему же. Упомянутый WinAVR очень не плох, к тому же бесплатный.
"глобальное" отличие между WinAVR и IAR лишь в использовании различных адресных пространств. В IAR это сделано на порядок лучше - __flash, __eeprom.

Ну да - __flash, __eeprom на порядок превосходят EEMEM, PROGMEM smile.gif
По теме - если дрыгать ножками, то любой. Если что-то серьезнее то WinAvr. Под него пишут сотни тысяч человек и в отличии от IAR их труды доступны в сети. Не придется адаптировать, бери и пользуйся. С ИАР-ом же придется в большинстве случаев решать все проблемы самому - типа файловых систем и т.п. Ну или адаптировать код от Winavr smile.gif У ИАРа одно преимущество - ассемблер встраивать легче.

Сообщение отредактировал Qwertty - Sep 27 2007, 13:00
Go to the top of the page
 
+Quote Post

6 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 13:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01522 секунд с 7
ELECTRONIX ©2004-2016