_Alfred_
Mar 3 2006, 00:19
Привет всем!
До сих пор писал для PIC на ассемблере, сейчас хочу перейти на AVR и писать на С.
Прочитал описание МК и док.AVR035 - с виду ничего сложного (С/С++ знаю).
Установил IAR (IAR Embedded Workbench for Atmel AVR 4.11A).
Создаю проект (Project->Create New Project), выбираю DLIB (C/EC++) - выдается сообщение, что проект не может быть создан.
Выбираю С->AVR® Studio 4 compatible output - проект создается. Набираю текст:
#include<iom16.h>
int main( void )
{
char c=10;
do{
PORTB=c;
}while(--c);
return 0;
}
Пытаюсь компилировать, выдается сообщение:
Fatal Error[Pe035]: #error directive: This file should only be compiled with iccavr or aavr with processor option -v3 C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\INC\iom16.h 23
В связи с этим у меня вопрос: Как правильно создавать проект в IAR ???
haker_fox
Mar 3 2006, 02:23
Есть же подфорум по IAR, там и надо задавать вопросы.
А так, почитайте вот это
C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\doc\EWAVR_UserGuide.pdf
стр. 63, там как раз описывается создание проекта. Сам обучался по этому документу.
defunct
Mar 3 2006, 02:40
Цитата(_Alfred_ @ Mar 3 2006, 02:19)

Привет всем!
До сих пор писал для PIC на ассемблере, сейчас хочу перейти на AVR и писать на С.
Странное какое-то желание.. А почему бы для начала не начать писать на C под PIC? А потом пересесть на AVR.. Есть же хорошие компиляторы и среды разработки к примеру ht-picc + ht-tide (eclipse), IAR EW_PIC...
Код
This file should only be compiled with iccavr or aavr with processor option -v3
выберите target процессор в опциях проекта..
Цитата(_Alfred_ @ Mar 3 2006, 02:19)

Создаю проект (Project->Create New Project), выбираю DLIB (C/EC++) - выдается сообщение, что проект не может быть создан.
Тоже наблюдал такую штуку, в т.ч. и для CLIB. Причин не выяснял. Просто создавал вариант с main, после чего независимо от метода создания проекта старательно просматривал все настройки проекта до единой. Может быть полезным.
Потом при создании новых похожих проектов можно просто копировать бывший проект и заменять в нем списки файлов, оставляя настройки. Экономит время на полный пересмотр.
Кстати, в 4.12A CLIB/DLIB вариантов создания уже нет (только посмотрел) - там или AVR® Studio 4 compatible output, или main. К чему бы это? :-)
Цитата
#include<iom16.h>
Пытаюсь компилировать, выдается сообщение:
Fatal Error[Pe035]: #error directive: This file should only be compiled with iccavr or aavr with processor option -v3 C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\INC\iom16.h 23
Файл iom16.h предназначен для ATmega16. А processor option в настройках проекта, вероятно, стоит по умолчанию в -v0 или -v1 для устройств с другим объемом RAM/FLASH.
Правильнее всего выбрать в настройках не опцию процессора -vN, а конкретную модификацию контроллера. Тогда можно в тексте использовать:
Код
#include <ioavr.h>
#include <inavr.h> // также может быть полезен
который автоматически включит нужный файл в зависимости от выбранного типа контроллера. С вариантами типа -vN такой способ не работает. -v предназначено для компиляции проектов для тех типов или модификаций контроллеров, которых (еще пока) нет в предлагаемом списке, но для которых можно подобрать ближайший подходящий processor option.
Guest_Виктор_*
Mar 3 2006, 17:06
Никак не могу установить iar ew 4.11. Клизма есть. Сгенерированные коды менеджер ключей воспринимает и пишет, что всё о'кей, но компилятор при построении проекта выдаёт 'fatal error. there is not valid license". Для evaluation версии я правда подставлял коды не те, которые мне прислали (я вообщ не посылал запрос), а нашёл на каком-то форуме. Может быть проблема в этом? Ошибка выдавалась и на evaluation версии. Может быть, у кого-нибудь есть хороший дистрибутив какой-нибудь версии и evaluation коды для него?
Цитата(Guest_Виктор_* @ Mar 3 2006, 19:06)

Может быть, у кого-нибудь есть хороший дистрибутив какой-нибудь версии и evaluation коды для него?
Вполне хороший дистрибутив был взят несколько дней назад на iar.com, версии 4.12A/Evaluation (через регистрацию) . А по поводу прочего - давай свое мыло по почте, PM или ICQ.
SasaVitebsk
Mar 3 2006, 19:22
У меня те же проблемы бьюсь как рыба об лёд.

sasa@c32dvina.com
Цитата(SasaVitebsk @ Mar 3 2006, 21:22)

У меня те же проблемы бьюсь как рыба об лёд.
Наверное стоило просто поискать по форуму. Двум 'бьющимся' лично отвечал это
естественно не считая массы ответов других форумчан.
Мой e-mail v_anisimov3@rambler.ru Если можно, вышлите к дистрибутиву evaluation код.
Буду очень благодарен
_Alfred_
Mar 4 2006, 23:05
Цитата(haker_fox @ Mar 3 2006, 06:23)

А так, почитайте вот это
C:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\doc\EWAVR_UserGuide.pdf
стр. 63, там как раз описывается создание проекта. Сам обучался по этому документу.
Распечатал - сейчас изучаю.
Спасибо!
А возможно вообще где-нибудь скачать дистрибутив. На сайте ведь лежит update только :-(
В проекте надо (вначале) #define ENABLE_BIT_DEFINITIONS
иначе сосмому определять имена регистров....
Цитата(Гость @ Mar 5 2006, 02:05)

А возможно вообще где-нибудь скачать дистрибутив. На сайте ведь лежит update только :-(
Update - это к коммерческим версиям. Скачивать надо ознакомительную (evaluation). Она отличается от полной коммерческой только отсутствием исходников библиотек. Это плохо, но не смертельно. Для ее установки после регистрации для скачки высылают лицензию на 30 дней. А за это время люди обычно или покупают постоянную лицензию, или... удаляют программу с диска, как того требует лицензионное соглашение
Цитата(arttab @ Mar 6 2006, 08:42)

В проекте надо (вначале) #define ENABLE_BIT_DEFINITIONS
иначе сосмому определять имена регистров....
Или, что более красиво при использовании IAR IDE (интересно, сколько процентов пользователей компиляторов IAR его же среду НЕ используют

), выставить соответствующую галочку в свойствах проекта.
Объясните мне, где лежит эта evaluation версия на сайте. Всё уже на нём облазил: не могу найти...
Цитата(osnwt @ Mar 6 2006, 16:30)

(интересно, сколько процентов пользователей компиляторов IAR его же среду НЕ используют

)
Примите мои соболезнования, если используете эту уродицу. Желаю как можно раньше дойти до
мысли, что в профессиональной деятельности надо использовать более универсальные
и удобные средства.
Цитата(Гость @ Mar 6 2006, 21:09)

Объясните мне, где лежит эта evaluation версия на сайте. Всё уже на нём облазил: не могу найти...
www.iar.com -> Products -> C++ compilers, Embedded Workbench -> AVR -> 30-day evaluation version.
Цитата(zltigo @ Mar 6 2006, 22:12)

Примите мои соболезнования, если используете эту уродицу. Желаю как можно раньше дойти до
мысли, что в профессиональной деятельности надо использовать более универсальные
и удобные средства.
Утверждение голословное.
То же самое можно сказать про абсолютно любую IDE и предложить всем использовать Make, который относительно кроссплатформенный (на уровне языка, если пользовать что-то GNUшное) или т.п.
Хотя определенная доля истины в утверждении и есть, но нельзя ли озвучить, что конкретно не подходит в этой среде для профессиональной деятельности? Чего конкретно нельзя изменить из среды (если и командные строки компиляторов, и файл конфигурации линкера доступны, и pre/post build commands, и custom build для своих типов файлов есть, и управление версиями файлов поддержано из среды)? То, что она за кого-то считает зависимости? Я не считаю, что это настолько мешает профессиональной деятельности. Редактор слабоват и не программируется? Смотря для каких целей, мне тоже хватает, хотя иногда пользую MultiEdit.
Просто любопытно мнение профессионала (поскольку я в данное время не зарабатываю этим деньги, а пишу просто ради удовольствия)... И хотелось бы не утверждения типа "Надо пользовать, как минимум, вот это", а конкретно по пунктам: "Нет возможности сделать то, нет возможности сделать это...". А то критика получается какая-то не слишком конструктивная.
Цитата(osnwt @ Mar 7 2006, 09:05)

То же самое можно сказать про абсолютно любую IDE и предложить всем использовать Make, который относительно кроссплатформенный (на уровне языка, если пользовать что-то GNUшное) или т.п.
Именно о "любой IDE", которая прилагается разработчиками конкретного компилятора в качестве
"бесплатного" приложения к своему компилятору и веду речь. Они все сделаны по принципу
китайского набора инстумента "199 в одном" :-(
Я еще не встречал ни одной такой IDE не несущей признаков "вторичности", жесткости и вкусовщины того, кто ее делал. В результате небходимость подстраивать свой организм при прыгании с IDE на IDE + скромные возможности редакторов (хотя большинство сознавая их убогость позволяют с разной степенью удобства цеплять внешний), плюс разнообразие глюков (IAR в череде тех, котоых я крутил - рекордсмен), которые ввиду вторичности живут доооолго :-(. Меня еще не устраивает ползание по многочисленным менюшкам сгруппированным по вкусу создателя и невозможность окинуть единым взглядом установки всего проекта и подключение сторонних инструментов.
Посему - действительно IDE, который является основным продуктом для производителя
(желательно в исходниках для серьезного подгибания под свой вкус и кросплатформенный)+
make + прочие инстументы.
В настоящее время пользуюсь ME для DOS, MEW для WIN и FTE под *nix. Multiedit-ы не порекомендую для использования в настоящее время для начала, уж больно уродливо отделаны по умолчанию и
практически заброшены. То дерьмо которые представляют собой исходники это отдельная песня. Сам однако с них слезать не собираюсь, ибо за многие годы изрядно под себя переписаны и естественно ВСЕМ устраивают и оставляют потратившему на них время почти полную свободу действий.
Цитата(zltigo @ Mar 6 2006, 23:12)

Цитата(osnwt @ Mar 6 2006, 16:30)

(интересно, сколько процентов пользователей компиляторов IAR его же среду НЕ используют

)
Примите мои соболезнования, если используете эту уродицу. Желаю как можно раньше дойти до
мысли, что в профессиональной деятельности надо использовать более универсальные
и удобные средства.
Я с IAR работаю 6 лет. НИКАКИХ проблем НИКОГДА не было. Сделан очень добротно. Одно могу сказать: не стоит гнаться за новыми версиями. Я перешел на 3.20C только в этом году. До этого работал на 2.28.
IgorKossak
Apr 24 2006, 14:05
Цитата(_Bill @ Apr 24 2006, 15:26)

Я с IAR работаю 6 лет. НИКАКИХ проблем НИКОГДА не было. Сделан очень добротно. Одно могу сказать: не стоит гнаться за новыми версиями. Я перешел на 3.20C только в этом году. До этого работал на 2.28.
Ну тогда самое время пропатчить компилятор до версии 3.20D. В этом патче исправлены четыре известные на тот момент ошибки (подробнее на сайте производителя), да и к тому же не принципиально отойдёте от Вашего же постулата о гонке за новыми версиями
arttab
Apr 25 2006, 01:38
Для меня практически все проблемы с IAR от плохого знания английского - не прочел хелп по нему и переодически накалываюсь на свое не знание всех его возможностей и путей реализации то что я хочу сделать. Думаю что и у многих проблема с этим. К сожалению, нет перевода хелпа.
Кто начинает с ним возиться, пожалуйста, напишите хистори на что вы напоролись и получиться статья по быстрому старту. Многие проблемы у начинающих одинаковы. Сам уже практически забыл на что я натолкнулся вначале его использования.
Proton
Apr 25 2006, 04:06
Считаю что IDE IAR'а незаменимо на стадии создания проекта и первичной отладки. Поскольку назначение параметров компилятора и линковщика вручную с использованием ключей - это ИМХО геморой, к которому привыкли в основном пользователи Linux, которым нипочём командная строка. Между тем расстановка галочек в чекбоксах к которым тут-же приведены описания одно удовольствие. Тоже самое касается встроенного отладчика - на начальной стадии, когда приходится много раз перекомпилировать проект, перезапускать каждый раз AVRStudio не совсем удобно. Здесь приходит на выручку встроенный отладчик, которым возможна кроме всего прочего отладка программы через JTAG. Ввиду упомянутых обстоятельств не вижу для себя никакой альтернативы встроеному IDE.
zltigo
Apr 25 2006, 05:56
Цитата(Proton @ Apr 25 2006, 07:06)

Считаю что IDE IAR'а незаменимо на стадии создания проекта и первичной отладки.
Создания первого/первых проектов, дабы необходимость возни с изучением-управлением "самолетом" не заслонила радости первого "полета" - 'Я ЛЕЧУ.......!!!!!!' (как-то двусмысленно получилось :-).
Цитата
Между тем расстановка галочек в чекбоксах к которым тут-же приведены описания одно удовольствие.
Ну прямо увлекательная игра в 'морской бой' - найди где прячется что-то не знаю что и поставь
галочку, а когда поставил - еще интересне не забудь, где поставил, ибо с большей степенью вероятности начинающий понял "описание" около чекбокса совсем не так и получил невесть что. Там еще поля ввода тех самых "ключей" - поняли для чего? Подсказываю - чекбоксиков поменее будет, чем возможностей у компиляора и линкера. А еще там "подсказочки" в виде засеривания "ненужных" чекбоксов в "ненужных" ситуациях (ну например попробуйте манипулируя галочками разместить
контрольную сумму добавляемую линкером _сразу_после_ кода/данных ). Да кстати - а чего это
"добрые дяди" совсем забросили свое дело с галочками на командной строке линкера? То, что
там получилось - вообще смотреть нельзя, не говоря об использовании....
Про редактор с минималистичными функциями уже писал где-то в сходной теме.
Цитата
Ввиду упомянутых обстоятельств не вижу для себя никакой альтернативы встроеному IDE.
Просто не смотрели, на самом деле. Смотреть, подбирать инструмент, осваивать это на самом деле достаточно тяжелое и трудоемкое занятие - тут спору нет.
"Всякое категорическое мнение должно быть признано неверным."
Это не я придумал, это - человечество. - Да, есть проколы и неудобства в ИАРЕ, но даже я не идеален. Мне кажется, за качество компайлера иаровцам можно простить все что угодно! К тому же не каждый день ведь приходится переходить на новые чипы, вполне можно ( и многие так делают) брать старый проект как заготовку. Когда кого-то ругаешь, вроде как сам возносишься... А откуда мы так хорошо знаем недостатки системы? Не потому ли, что пользуемся интенсивно и предпочитаем иар другим?!
Но не будем о пристрастиях. Все же вопрос был типа помогите начать. Могу предложить фрагментарный перевод нужных разделов хелпы (усерской гиды или чего еще) с квалифицированным комментарием. В смысле, спросите - переведу.
SasaVitebsk
Jun 9 2006, 21:36
Цитата(Atashi @ Jun 9 2006, 00:10)

"Всякое категорическое мнение должно быть признано неверным."
Это не я придумал, это - человечество. - Да, есть проколы и неудобства в ИАРЕ, но даже я не идеален. Мне кажется, за качество компайлера иаровцам можно простить все что угодно! К тому же не каждый день ведь приходится переходить на новые чипы, вполне можно ( и многие так делают) брать старый проект как заготовку. Когда кого-то ругаешь, вроде как сам возносишься... А откуда мы так хорошо знаем недостатки системы? Не потому ли, что пользуемся интенсивно и предпочитаем иар другим?!
Но не будем о пристрастиях. Все же вопрос был типа помогите начать. Могу предложить фрагментарный перевод нужных разделов хелпы (усерской гиды или чего еще) с квалифицированным комментарием. В смысле, спросите - переведу.
Я не категоричен и высказываю своё мнение.

Компилятор очень хорош и с этим вроде бы никто не спорит. IDE мне очень не понравилась, но сроки ограничены и похоже процесс настройки очень бы затянулся. На мой взгляд строки и ключи различные, для командного файла, напоминают головоломку типа пляшущих человечков. Ну например:
-Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE-_..X_EXT_SRAM_END
-Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE-_..X_EXT_SRAM_END
-Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE-_..X_EXT_SRAM_END
Еслибы такая строка была одна-две, то пол беды, - но их же там много ...
Причём как правило надо изменить одну. Надо бы какой нибудь генератор сделать. Кто-то писал что он есть. Где? Я что-то не нашёл. И упоминаний в доках тоже не нашёл.
Существуют опции проекта. как сгенерировать .xcl файл соответствующий опциям проекта?
А в общем при достаточно малом времени работы с компилятором, я согласен с zltigo. Мне приходится с ним согласится.
1) Галочками всё (как уже оказалось у меня) не высставишь.
2) Опции проекта, при переустановке системы (вирусок хапнул) безвозвратно теряются.
3) А если бы был создан файл, то был бы сохранён.
4) Даже при краткой работе с IDE понятно что надо куда-то линять. Можно перечислить 20 пунктов чем она меня не устраивает, но для человека достаточно и одного.
Вот только линять пока некуда! Я это уже почуствовал. Обустраивание комфортной работы займёт (по крайней мере у меня ) не один месяц (минимум).
С другой стороны внесение изменений в программу на С, - это же просто песня!!!

После ассемблера. Я так доволен, что готов мирится со множеством недостатков!!!
Сергей Борщ
Jun 9 2006, 22:03
Цитата(SasaVitebsk @ Jun 10 2006, 00:36)

Существуют опции проекта. как сгенерировать .xcl файл соответствующий опциям проекта?
поставить галочку "генерить .map" В шапке файла идет вся командная строка вызова линкера. То же и с компилятором - все ключи в шапке .lst файлов.
Цитата
1) Галочками всё (как уже оказалось у меня) не высставишь.
В опциях компилятора есть специальное место куда можно вписать все недостающие опции в виде клюей командной строки компилятора. То же и для линкера. В качестве бонуса можно использовать макросы $TOOLKIT_DIR$, $PROJ_DIR$ и т.п.
Цитата
2) Опции проекта, при переустановке системы (вирусок хапнул) безвозвратно теряются.
3) А если бы был создан файл, то был бы сохранён.
Чудеса говорите. Все опции проекта хранятся в файлах .ewp, .ewd которые обычно находятся в директории проекта вместе с исходниками. В качестве бонуса в директории проекта создается директория settings в которой хранятся файлы описывающие расположение окон и прочие установки C-SPY. Так что здесь все придумано за нас и именно так как надо.
Цитата
4) Даже при краткой работе с IDE понятно что надо куда-то линять. Можно перечислить 20 пунктов чем она меня не устраивает, но для человека достаточно и одного.
Ну это "на вкус и цвет". Я привык, меня устраивает. Я с VIM не смог подружиться, а многие от него в восторге. Поэтому я для текстовых файлов пользую notepad а если нужны номера строк - ту же IAR IDE.
Цитата
С другой стороны внесение изменений в программу на С, - это же просто песня!!!

После ассемблера.
А вот это уже "слова юноши, но мужа" :-))
Кстати, символы _..X в начале имен констант в командной строке, придающие ужасность этим именам - это признак для C-SPY не воспринимать эти значения в качестве адресов меток и таким образом не показывать эти имена в окне дизассемблера.
Atashi
Jun 11 2006, 02:17
SasaVitebsk, может, я был слишком прямолинеен... Это эмоциональное: я люблю иар. Ваше знание среды очевидно; но я хотел бы акцентировать один момент: просто ругать - ни к чему; мы все здесь работаем на результат, и, если есть критические замечания, - они должны наводить на решения, выпуск пара вещь непродуктивная. Вот лично мне было бы интересно узнать, как Вы обходите эти все неприятности - кроме очевидных путей.
aleksey_g
Jun 16 2006, 15:14
Вставлю и я своих пать копеек.
Уважаемый zltigo, Ваша категоричность свидетельство либо закостенелости мышления, либо
очень давних (со времен ДОС_а) привычек, и как следствие - отрицание всего, к чему не привыкли,
либо чего - то более закамуфлированного.
Ваша ПРОФЕСИОНАЛЬНАЯ деятельность ни для кого не может быть показательной.
У каждого продукта есть свой круг пользователей. И если при помощи понравившегося инструментария
достигается желаемый результат, инструмент можно считать удовлетворительным.
Тем более, что сейчас попробовать практически все можно почти бесплатно.
Попробуйте меня убедить, что молоток весом 500 грамм - профессиональней, чем 50-гамовый.
Да, возразите Вы, им дробить кирпичи, (если в этом состоит Ваша професия) более професионально.
Но моя (например) стеклить окна. Попробуйте посоревнуйтесь со мной в забивании стекольных гвоздей.
Если Вам более понравился (например GCC)- и слава богу! Мы просто рады за Вас.
Мне, например он кажется просто неудобным инструментом (хотя, может быть и очень качественным).
Ну не привык я к таким инструментам и все тут. Но это только мои субьективные ощущения.
А затевать категоричные споры, привлекая в качестве аргументов понятия професиональности,
по - моему отдает хвастовством!
Я, например никак не могу обойтись без FAR-менеджера. А мой дружек говорит 'Куда ты меня тянешь?
Обратно в ДОС? Посмотри, на улице уже 21 век!', хотя все, что ему нужно в его 'професиональной деятельности'
он очень качественно и быстро может сделать со "своим инструментарием".
Тут, похоже, кому поп а кому и попадья!
zltigo
Jun 16 2006, 15:46
Цитата(aleksey_g @ Jun 16 2006, 18:14)

Уважаемый zltigo, Ваша категоричность свидетельство либо закостенелости мышления, либо
Моя категоричность свидетельствует АБСОЛЮТНО об обратном. Закостенелость или даже полное отсутствие мышления наблюдается обычно у пользователей "готовых", сделанных абы как IDE.
И не надо использование "чего бог послал" противопоставлять тщательно собранному набору обкатанных и подогнанных инструментальных средств. И тем более СМЕШНО пытаться выдавать это
бездумное решение за "гибкось мышления".
Судя по теме ветки, здесь просили помощи разобраться с IARом ... а закончилось все водопадом пререканий великих философов %-)
Попробую вернуть тему на место :-)
Решил попробовать IAR - уж больно хвалят... и первый вопрос - что качать?
Подскажите, пжлст, новую и стабильную на сегодня версию с кряком (с сылками было бы здорово)... ну и что там ему еще нужно.
И огромная просьба .... отвечать либо по делу либо вообще не отвечать.
___
P.S.
Философы, не обижайтесь, но посмотрите ветку - человек просил помощи, а вы его заткнули подальше и начали беседы о высоких материях в таком ракурсе, что больтать можно годами.
Цитата(Guest_Виктор_* @ Mar 3 2006, 17:06)

Никак не могу установить iar ew 4.11. Клизма есть. Сгенерированные коды менеджер ключей воспринимает и пишет, что всё о'кей, но компилятор при построении проекта выдаёт 'fatal error. there is not valid license". Для evaluation версии я правда подставлял коды не те, которые мне прислали (я вообщ не посылал запрос), а нашёл на каком-то форуме. Может быть проблема в этом? Ошибка выдавалась и на evaluation версии. Может быть, у кого-нибудь есть хороший дистрибутив какой-нибудь версии и evaluation коды для него?
Я сталкивался уже с проблемой установки IAR'а и успешно ее решил тупым переводом времени. Вообще я только начинаю с ним работать и у меня версия 2.28А. (старовато, но на этом писалась программа, которую мне необходимо переделать, а использовать более новую версию боюсь, да и нет ее у меня). У меня сейчас возник другой вопрос. Мне нужно отладить программу, написанную в Си, а С-Spy соглашается показывать ее только в ассемблере. Есть ли какой-нибудь способ просмотреть пошаговое выполнение программы на Сях?
IgorKossak
Mar 30 2007, 10:04
В опциях компилятора надо установить генерирование отладочной информации.
В опциях линкера - установить формат выходного файла debug или ubrof, расширение при этом будет d90 или dbg.
существует ли возможность в IAR через C-Cpy отлаживать USART?
Dog Pawlowa
Sep 7 2007, 05:58
Цитата(aspID @ Sep 7 2007, 08:49)

существует ли возможность в IAR через C-Cpy отлаживать USART?
Конечно, все доступно.
а где можно прочитать про это? В руководстве нашел про случай с использованием stdin, stdout. Но использую фрагмент предложенный в даташите
Код
void USART_Transmit( char & data )
{
PORTD |= (1 << PD3);
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) );
/* Put data into buffer, sends the data */
UDR = data;
};
Dog Pawlowa
Sep 7 2007, 07:04
Цитата(aspID @ Sep 7 2007, 09:36)

а где можно прочитать про это? В руководстве нашел про случай с использованием stdin, stdout. Но использую фрагмент предложенный в даташите...
Извините, про что ЭТО? Я немного перестал понимать, о чем речь.
У Вас данные не отправляются в порт?
Можно поставить точку останова и убедиться, что контроллер выполняет эту команду.
Про конфигурацию порта и прерываний, я думаю, Вы знаете.
Цитата
про что ЭТО?
Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные?
rezident
Sep 7 2007, 07:22
Цитата(aspID @ Sep 7 2007, 13:13)

Про отладку USART. Реальным устройством данные и посылаются, и принимаются. А как в дебаггере этот момент можно отследить/сэмулировать, если работаю не через print-ы в stdin, а сразу в регистры пихаю данные?
Поставьте брейкпоинт прямо на команду "пихания данных в регистр". Если USART сконфигурирован верно, то после выполнения этой команды очередной символ уйдет в линию.
симовол уходит без проблем, но при этом не выставляется флаг TXC и при попытке передачи следующего стоим на
Код
while ( !( UCSRA & (1<<UDRE)) );
до тех пор, пока руками 1 не поставить. После передачи пары строк забываешь, чего хотел...
Unknown_User
Sep 27 2007, 04:43
У меня такой вопрос: почему у меня, если поставить галочку General Options->System->Initialize unused interrupt vectors with RETI instructions не работает прерывание по переполнению TIMER3 ?
Сергей Борщ
Sep 27 2007, 09:34
Цитата(Unknown_User @ Sep 27 2007, 07:43)

У меня такой вопрос: почему
Недостаточно информации. А без галочки обработчик работает? Перестает работать только этот обработчик или вся остальная программа тоже? В любом случае ответ один - потому что у вас где-то ошибка в программе. Предполагаю, что разрешается какое-то из прерываний, для которого не прописан обработчик. Попав в него выполняется RETI, но флаг не снимается (например, прерывание АЦП, UDRE, RXC и подобные), и после reti выполняется вход в этот обработчик снова, программа циклится. А таймер3 имеет приоритет ниже и до него очередь не доходит. Или вектор на ваш обработчик прерывания от TIMER3 расположен по неправильному адресу. И если раньше при переходе по вектору процессор натыкался на опкод 0xFFFF, исполнял его и попадал таки в ваш обработчик, то теперь он сразу попадает на RETI и до вашего обработчика не добирается.
P.S. На всяки случай - когда вы разберетесь, в чем дело - напишите пожалуйста сюда, чтобы другие не наступали на такие же грабли или, если все же наступят, найдя это сообщение могли в комплекте получить и ответ. Даже если ответ будет из серии "сам дурак".
Unknown_User
Sep 28 2007, 07:28
to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу.
Сергей Борщ
Sep 28 2007, 20:28
Цитата(Unknown_User @ Sep 28 2007, 10:28)

to Сергей Борщ. Пока проблема решается тем, что галочка "Initialize unused interrupt vectors with RETI instructions" не ставится. Но мне всё равно интересно, почему так происходит. Разберусь - обязательно напишу.
Я бы написал на неиспользуемые вектора ловушки и дергал в них в цикле разными свободными ногами. Или если свободная нога одна, то в разных ловушках с разной частотой а еще нагляднее - скважностью. Таким образом определил бы, не попадает ли программа в какой-либо из неиспользуемых векторов и если попадает - то в какой. Дальше смотрел бы в исходнике работу с соотвествующей периферией и разбирался бы, почему вызывается прерывание. Ибо если такое случается - это вылезет каким-нибудь очень неприятным глюком в самый неподходящий момент. Это даже очень хорошо, что вы обнаружили такое непонятное поведение сами и сейчас, а не заказчик во время приемо-сдаточных испытаний

Но если вы не локализуете ее, может случиться такое:
Unknown_User
Oct 1 2007, 10:02
Сегодня проверил - и правда программа заходит, как минимум, ещё в одно прерывание, которое я запрещал. Видимо "просто" в результате какого либо бага моя программа нечаянно его разрешает. Будем копать дальше.
Сергей Борщ, спасибо за совет )).
Unknown_User
Oct 3 2007, 10:20
Никак не могу найти способ доступа из функций, написаных на Си, к переменным, размещёным в области кода программы.
То есть, есть массив, объявленый как :
__flash char SomeArray[] = { 1, 2 };
и функция:
void DoSmth( char *Arr ){
}
Что нужно сделать, чтобы, код DoSmth( SomeArray ); нормально работал ?
Сергей Борщ
Oct 3 2007, 10:28
Цитата(Unknown_User @ Oct 3 2007, 13:20)

Что нужно сделать, чтобы, код DoSmth( SomeArray ); нормально работал ?
Код
void DoSmth( char __flash *Arr ){
}
Только при этом такая функция перестанет работать с массивами в ОЗУ. Поэтому в pgmspace.h введены дополнительные фукции типа puts_P().
Unknown_User
Oct 3 2007, 10:42
ok, спасибо, заработало )).
Unknown_User
Oct 10 2007, 07:44
Продолжаем череду глупых вопросов )).
Что может означать подобная картина в дебаггере ( см. аттач ) ?
Появляеться она при вызове одной из функций, причём сразу же после старта дебаггера. Если этот вызов функции закомментировать, то всё работает нормально.
Пробовал рыться в коде с целью выяснения конкретной строчки, наткнулся на простое присваивание.
Сергей Борщ
Oct 10 2007, 10:09
Цитата(Unknown_User @ Oct 10 2007, 10:44)

Что может означать подобная картина в дебаггере ( см. аттач ) ?
Что он исполняет какой-то код. Возможно, в вашей функции произошло зацикливание.
Unknown_User
Oct 10 2007, 11:08
Дело в том, что такая картина появляеться СРАЗУ при старте программы, то есть функция, из-за вставки которой в код появляеться такое чудо, ещё не вызывалась.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.