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

|
Очень долго работал с разными МК(51, в основном ARM) решил попробовать AVR вопросы: У этих AVR что нет удобного побитового доступа к портам? Какой компилятор делает наиболее красивый код?
|
|
|
|
|
 |
Ответов
|
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
|
|
|
|
|
Sep 27 2007, 14:23
|

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

|
Цитата(Qwertty @ Sep 27 2007, 15:58)  Ну да - __flash, __eeprom на порядок превосходят EEMEM, PROGMEM  На два. defunct объяснил почему. Цитата(Qwertty @ Sep 27 2007, 15:58)  С ИАР-ом же придется в большинстве случаев решать все проблемы самому - типа файловых систем и т.п. Ну или адаптировать код от Winavr  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)
|
|
|
|
|
Sep 27 2007, 16:36
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Сергей Борщ @ Sep 27 2007, 18:23)  На два. defunct объяснил почему. Ну-ну... Про преимущества CV- выше  Цитата(Сергей Борщ @ 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 килобайта свободно, то мне кажется тут что-то не то  Цитата(Сергей Борщ @ Sep 27 2007, 18:23)  С точностью до наоборот. Вот уж что-что, а инлайн асм у WinAVR шикарный, а у IAR вообще никакой и они сами его не рекомендуют. А в обработке отдельного асм-исходника возможности у них практически одинаковые. Возможно, что с ассемблером в ИАР тоже не все хорошо, я сам вставок в нем не делал, только видел чужие. Они не показались мне уж такими страшными. А вот WinAvr-овские вещь тяжелая, я предпочитаю ими не пользоваться. Все выношу в S файл.
|
|
|
|
|
Sep 28 2007, 08:27
|

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

|
Цитата(Qwertty @ Sep 27 2007, 19:36)  Ну-ну... Про преимущества CV- выше  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 килобайта свободно, то мне кажется тут что-то не то  Вы меня не поняли. ИАР выдал код размером ~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)
|
|
|
|
|
Sep 28 2007, 15:16
|

Частый гость
 
Группа: Участник
Сообщений: 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 несоставит труда.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|