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

 
 
> Порты 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
 
Start new topic
Ответов
mdmitry
сообщение Sep 27 2007, 06:27
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


Местный
***

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



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


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


кекс
******

Группа: Свой
Сообщений: 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
Qwertty
сообщение Sep 27 2007, 12:58
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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
Сергей Борщ
сообщение Sep 27 2007, 14:23
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Qwertty @ Sep 27 2007, 15:58) *
Ну да - __flash, __eeprom на порядок превосходят EEMEM, PROGMEM smile.gif
На два. defunct объяснил почему.
Цитата(Qwertty @ Sep 27 2007, 15:58) *
С ИАР-ом же придется в большинстве случаев решать все проблемы самому - типа файловых систем и т.п. Ну или адаптировать код от Winavr smile.gif
1) При наличии опыта адаптация происходит быстро.
2) Все равно придется что-то править, а в процессе адаптации глубже вникаешь в чужие исходники.
3) По закону подлости нужный код будет под какой-нибудь третий компилятор и вообще не под AVR.
4) По размеру кода ИАР сильно обгоняет WinAVR (по личному опыту, последний эксперимент - AES loader AVR231 буквально вчера. У ИАРа остается свободное место в 2К области, у WinAVRа код вылазит почти на 1К).
Цитата(Qwertty @ Sep 27 2007, 15:58) *
У ИАРа одно преимущество - ассемблер встраивать легче.
С точностью до наоборот. Вот уж что-что, а инлайн асм у WinAVR шикарный, а у IAR вообще никакой и они сами его не рекомендуют. А в обработке отдельного асм-исходника возможности у них практически одинаковые.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Sep 27 2007, 16:36
Сообщение #7


Местный
***

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



Цитата(Сергей Борщ @ Sep 27 2007, 18:23) *
На два. defunct объяснил почему.

Ну-ну... Про преимущества CV- выше smile.gif
Цитата(Сергей Борщ @ Sep 27 2007, 18:23) *
1) При наличии опыта адаптация происходит быстро.
2) Все равно придется что-то править, а в процессе адаптации глубже вникаешь в чужие исходники.

Значит если я хочу ездить на машине, мне нужно ее купить, разобрать,собрать, ведь я так глубже вникну в ее устройство. Мне нужно например подключить харддрайв, считать один файл,и может больше никогда в жизни мне это не понадобиться. Зачем мне вникать во внутреннее устройсто FAT32?
А если и понадобиться, лет через 5-10, то все равно придется вникать заново.
Цитата(Сергей Борщ @ Sep 27 2007, 18:23) *
3) По закону подлости нужный код будет под какой-нибудь третий компилятор и вообще не под AVR.
4) По размеру кода ИАР сильно обгоняет WinAVR (по личному опыту, последний эксперимент - AES loader AVR231 буквально вчера. У ИАРа остается свободное место в 2К области, у WinAVRа код вылазит почти на 1К).

Мое имхо - загрузчик должен вполне помещаться в бутовую область любых контроллеров мега. И если у ИАР загрузчик помещается в эти жалких 2 килобайта и еще 2 килобайта свободно, то мне кажется тут что-то не то smile.gif
Цитата(Сергей Борщ @ Sep 27 2007, 18:23) *
С точностью до наоборот. Вот уж что-что, а инлайн асм у WinAVR шикарный, а у IAR вообще никакой и они сами его не рекомендуют. А в обработке отдельного асм-исходника возможности у них практически одинаковые.

Возможно, что с ассемблером в ИАР тоже не все хорошо, я сам вставок в нем не делал, только видел чужие. Они не показались мне уж такими страшными. А вот WinAvr-овские вещь тяжелая, я предпочитаю ими не пользоваться. Все выношу в S файл.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 28 2007, 08:27
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Qwertty @ Sep 27 2007, 19:36) *
Ну-ну... Про преимущества CV- выше smile.gif
1)Хорошо, но не совсем: не для всех потров такая конструкция работает, поэтому я не могу сделать, скажем, #define LED PORTA.1 а потом безболезненно изменить на #define LED PORTE.7, в то время как конструкция PORT |= (1 << BIT); с макросами поверх нее не страдает подобным недостаком.
2)Собственно на этом преимущества CV заканчиваются и его нельзя рассматривать как серьезный инструмент из-за отсутствия раздельной компиляции и всеми вытекающими несоответствиями стандарту. Вопрос обсуждался, я излагал подробные аргументы. Если интересно, поищите по ключевому слову CV и моему имени.
Цитата(Qwertty @ Sep 27 2007, 19:36) *
Значит если я хочу ездить на машине, мне нужно ее купить, разобрать,собрать, ведь я так глубже вникну в ее устройство.
Если мы говорим о любительстве - не за чем Но не уверен, что у любителя все пойдет сразу и без доработок напильником. Если о профессиональной работе - не помешает.
Цитата(Qwertty @ Sep 27 2007, 19:36) *
Мое имхо - загрузчик должен вполне помещаться в бутовую область любых контроллеров мега. И если у ИАР загрузчик помещается в эти жалких 2 килобайта и еще 2 килобайта свободно, то мне кажется тут что-то не то smile.gif
Вы меня не поняли. ИАР выдал код размером ~1800 байт, WinAVR - около 2700.
Цитата(Qwertty @ Sep 27 2007, 19:36) *
Возможно, что с ассемблером в ИАР тоже не все хорошо, я сам вставок в нем не делал, только видел чужие. Они не показались мне уж такими страшными.
Естественно. Чем примитивнее инструмент, тем меньше вы им можете сделать. Вот цитата из мануала:
Цитата
Inline assembler is therefore often best avoided. If there is no suitable intrinsic function available, we recommend the use of modules written in assembler language instead of inline assembler, because the function call to an assembler routine normally causes less performance reduction.
Цитата(Qwertty @ Sep 27 2007, 19:36) *
А вот WinAvr-овские вещь тяжелая, я предпочитаю ими не пользоваться. Все выношу в S файл.
Если вы не умеете пользоваться инструментом потому, что он слишком сложный - это не значит, что инструмент плохой. На уровне ИАРовского инлайн-асма вы в винавре напишете ровно столько же и практически так же.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Marian
сообщение Sep 28 2007, 15:16
Сообщение #9


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

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



Цитата(Сергей Борщ @ Sep 28 2007, 11:27) *
1)Хорошо, но не совсем: не для всех потров такая конструкция работает, поэтому я не могу сделать, скажем, #define LED PORTA.1 а потом безболезненно изменить на #define LED PORTE.7, в то время как конструкция PORT |= (1 << BIT); с макросами поверх нее не страдает подобным недостаком.


Я не рекламирую CVAVR, но работать можно и на нем.
Я и писал
Цитата
CVAVR дает побитовый доступ к портам (правда в некоторых процах не ко всем)

но заменить например в Atmege16 :
#define LED PORTA.1
на
#define LED PORTD.3
несоставит труда.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- allexmor   Порты AVR и компиляция   Sep 26 2007, 15:26
- - defunct   Цитата(allexmor @ Sep 26 2007, 18:26) У э...   Sep 26 2007, 16:01
- - Marian   Цитата(allexmor @ Sep 26 2007, 18:26) Оче...   Sep 26 2007, 16:38
|- - kv_addr   Цитата(Marian @ Sep 26 2007, 19:38) CVAVR...   Sep 27 2007, 20:15
- - sensor_ua   Цитататакого гонива как потребность применять 2 ко...   Sep 26 2007, 16:48
|- - defunct   Цитата(sensor_ua @ Sep 26 2007, 19:48) Wr...   Sep 26 2007, 22:19
|- - allexmor   Цитата(defunct @ Sep 27 2007, 02:19) Ну.....   Sep 27 2007, 04:51
- - bodja74   Зато сразу IOPIN=0x5555AAAA;   Sep 26 2007, 17:32
- - sensor_ua   Фаворит IAR. WinAVR вполне юзабилен, но когда нужн...   Sep 27 2007, 05:04
|- - allexmor   Цитата(sensor_ua @ Sep 27 2007, 09:04) Фа...   Sep 27 2007, 05:08
|- - alexander55   Цитата(allexmor @ Sep 27 2007, 09:08) Где...   Sep 27 2007, 05:49
|- - defunct   Цитата(Qwertty @ Sep 27 2007, 15:58) Ну д...   Sep 27 2007, 13:10
||- - singlskv   Цитата(defunct @ Sep 27 2007, 17:10) Вы х...   Sep 27 2007, 14:48
|||- - defunct   Цитата(singlskv @ Sep 27 2007, 17:48) А к...   Sep 27 2007, 15:14
|||- - singlskv   Цитата(defunct @ Sep 27 2007, 19:14) Отли...   Sep 27 2007, 15:27
|||- - defunct   Цитата(singlskv @ Sep 27 2007, 18:27) eeC...   Sep 27 2007, 15:33
|||- - singlskv   Цитата(defunct @ Sep 27 2007, 19:33) Это ...   Sep 27 2007, 16:32
||- - Qwertty   Цитата(defunct @ Sep 27 2007, 17:10) Вы х...   Sep 27 2007, 16:23
|- - singlskv   Цитата(Qwertty @ Sep 27 2007, 20:36) Знач...   Sep 27 2007, 17:49
- - GDI   В CodeVision можно сделать несколько файлов в прое...   Sep 27 2007, 09:09
- - SasaVitebsk   Есть ещё один момент для WinAvr. Только за последн...   Sep 27 2007, 20:02
|- - singlskv   Цитата(SasaVitebsk @ Sep 28 2007, 00:02) ...   Sep 28 2007, 22:37
|- - defunct   Цитата(singlskv @ Sep 29 2007, 01:37) P.S...   Sep 29 2007, 11:54
||- - singlskv   Цитата(defunct @ Sep 29 2007, 15:54) Ок, ...   Sep 29 2007, 17:21
||- - defunct   Цитата(singlskv @ Sep 29 2007, 20:21) Ну ...   Sep 29 2007, 19:47
|||- - singlskv   Цитата(defunct @ Sep 29 2007, 23:47) Да и...   Sep 29 2007, 20:15
|||- - defunct   Цитата(singlskv @ Sep 29 2007, 23:15) e=k...   Sep 29 2007, 20:20
|||- - singlskv   Цитата(defunct @ Sep 30 2007, 00:20) Ну и...   Sep 29 2007, 20:30
|||- - defunct   Цитата(singlskv @ Sep 29 2007, 23:30) [i]...   Sep 29 2007, 20:40
|||- - singlskv   Цитата(defunct @ Sep 30 2007, 00:40) Для ...   Sep 29 2007, 20:58
||- - Сергей Борщ   Цитата(singlskv @ Sep 29 2007, 20:21) Нас...   Sep 29 2007, 22:09
||- - singlskv   Цитата(Сергей Борщ @ Sep 30 2007, 01:57) ...   Sep 29 2007, 22:36
|||- - defunct   Цитата(singlskv @ Sep 30 2007, 01:36) Упс...   Sep 29 2007, 23:56
||||- - singlskv   Цитата(defunct @ Sep 30 2007, 03:56) Если...   Sep 30 2007, 18:32
||||- - SasaVitebsk   Цитата(singlskv @ Sep 30 2007, 21:32) Вос...   Sep 30 2007, 19:17
||||- - Сергей Борщ   Цитата(singlskv @ Sep 30 2007, 21:32) А ...   Sep 30 2007, 19:30
||||- - singlskv   Цитата(Сергей Борщ @ Sep 30 2007, 23:30) ...   Sep 30 2007, 20:04
|||- - Сергей Борщ   Цитата(singlskv @ Sep 30 2007, 01:36) а е...   Sep 30 2007, 07:59
|||- - Qwertty   Цитата(Сергей Борщ @ Sep 30 2007, 11:59) ...   Sep 30 2007, 12:13
|||- - Proton   Цитата(Qwertty @ Sep 30 2007, 19:13) Но в...   Sep 30 2007, 12:42
||- - Dog Pawlowa   Цитата(Сергей Борщ @ Sep 30 2007, 01:09) ...   Sep 30 2007, 18:38
|||- - singlskv   Цитата(Dog Pawlowa @ Sep 30 2007, 22:38) ...   Sep 30 2007, 18:44
||||- - Dog Pawlowa   Цитата(singlskv @ Sep 30 2007, 21:44) Вы ...   Oct 1 2007, 11:56
|||- - defunct   Цитата(Dog Pawlowa @ Sep 30 2007, 21:38) ...   Sep 30 2007, 22:44
||- - Непомнящий Евгений   to Сергей Борщ Подскажите, а зачем нужна обвязка и...   Oct 1 2007, 10:38
|||- - Сергей Борщ   Цитата(Непомнящий Евгений @ Oct 1 2007, 13...   Oct 1 2007, 11:16
|||- - defunct   Цитата(Сергей Борщ @ Oct 1 2007, 14:16) К...   Oct 1 2007, 11:36
|||- - Сергей Борщ   Цитата(defunct @ Oct 1 2007, 14:36) Подро...   Oct 1 2007, 11:51
||- - SergeiCh   Цитата(Сергей Борщ @ Sep 30 2007, 05:09) ...   Oct 1 2007, 11:55
|- - Сергей Борщ   Цитата(singlskv @ Sep 29 2007, 01:37) Пря...   Sep 29 2007, 12:46
|- - singlskv   Цитата(Сергей Борщ @ Sep 29 2007, 16:46) ...   Sep 29 2007, 18:42
- - mdmitry   Увы! Началась религиозная война! По поводу...   Sep 27 2007, 20:51
- - SasaVitebsk   Преимущества они и в Африке преимущества. Вы пре...   Sep 28 2007, 23:06
|- - SergeiCh   Если хочется писать PORTB_0 = 1, это можно сделать...   Sep 29 2007, 07:05
- - sensor_ua   ЦитатаIAR дает нам простой инструмент доступа Заме...   Sep 29 2007, 19:56
- - sensor_ua   ЦитатаГде в этой проге можно написать cfg_EE = cfg...   Sep 29 2007, 21:05
|- - singlskv   Цитата(sensor_ua @ Sep 30 2007, 01:05) та...   Sep 29 2007, 21:26
- - sensor_ua   ЦитатаЯ НЕ пользуюсь ни IARовским ни каким другим ...   Sep 29 2007, 23:01
- - sensor_ua   ЦитатаEEMEM, PROGMEM я типами данных просто не счи...   Oct 1 2007, 05:17
- - Rst7   Кстати, между прочим, переделав eeprom.s90 наприме...   Oct 1 2007, 13:41
|- - SasaVitebsk   Цитата(Rst7 @ Oct 1 2007, 16:41) Кстати, ...   Oct 1 2007, 18:04
||- - Rst7   Цитата(SasaVitebsk @ Oct 1 2007, 21:04) ...   Oct 2 2007, 06:42
||- - SasaVitebsk   Цитата(Rst7 @ Oct 2 2007, 09:42) Ээээ... ...   Oct 2 2007, 11:39
||- - Rst7   Цитата(SasaVitebsk @ Oct 2 2007, 14:39) Я...   Oct 2 2007, 11:57
|- - singlskv   Цитата(Rst7 @ Oct 1 2007, 17:41) Кстати, ...   Oct 2 2007, 18:06
|- - Непомнящий Евгений   Цитата(singlskv @ Oct 2 2007, 22:06) Може...   Oct 3 2007, 04:22
- - sensor_ua   ЦитатаБыла идея патчить кодегенератор, дабы он дел...   Oct 2 2007, 14:18
|- - Rst7   Цитата(sensor_ua @ Oct 2 2007, 17:18) Пыт...   Oct 3 2007, 05:38
- - sensor_ua   ЦитатаМожет все-таки стоит в подобных ситуациях оз...   Oct 2 2007, 19:38
|- - singlskv   Цитата(sensor_ua @ Oct 2 2007, 23:38) А ...   Oct 2 2007, 20:08
- - sensor_ua   ЦитатаКак сохранить текущую конфигурацию прибора п...   Oct 2 2007, 20:32
|- - singlskv   Цитата(sensor_ua @ Oct 3 2007, 00:32) Оза...   Oct 2 2007, 20:56
|- - defunct   Цитата(singlskv @ Oct 2 2007, 23:56) Если...   Oct 2 2007, 21:44
|- - sensor_ua   Цитата(singlskv @ Oct 2 2007, 23:56) Я и ...   Oct 3 2007, 05:16
- - sensor_ua   Цитатаон генерирует комманду записи в RAMPx, ее мо...   Oct 3 2007, 06:58


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:52
Рейтинг@Mail.ru


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