|
|
  |
Не могу выйти из цикла, ATmega16; Компилятор: ICCV7 for AVR |
|
|
|
Dec 23 2010, 13:01
|
Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346

|
Компилятор: ICCV7 for AVR, http://www.imagecraft.com/Целевой камень: ATmega16 ADCSR |= BIT(6); //запуск АЦП while (ADIF != 1){ //ожидание установки флага ADIF завершения АЦП } UDR = 0x03; //контрольная отправка в СОМ порт
|
|
|
|
|
Dec 23 2010, 13:10
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
ADIF - это номер бита, а не регистр. Проверять надо регистр ADCSRA на наличие этого флага. Вот так: while (!(ADCSRA & (1<<ADIF))) {} Здесь, сдвигом единички влево, из номера бита получается маска. Потом с помощью операции "&", бит ADIF вырезается из значения регистра статуса ADCSRA. Результат сравнения инвертируем операцией "!". P.S. На ICCV7 я не работаю, поэтому для уточнения рекомендации смотрите сами, как определен ADIF в хидере: номер бита он или маска. На моем любимом IAR'е  это выглядит много изящней и нагляднее: while( !ADCSRA_ADIF) {} Рекомендую.
|
|
|
|
|
Dec 23 2010, 14:07
|
Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346

|
Спасибо заработало! Я вчера тоже проинсталил IAR, но не нашел там генератор начального кода (Application Builder). Слыхал что у IAR это реализовано в отдельной программе. Подскажите как она называется?
Сообщение отредактировал IgorKossak - Dec 23 2010, 14:52
Причина редактирования: Лишнее цитирование
|
|
|
|
|
Dec 23 2010, 15:01
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(Aneg @ Dec 23 2010, 20:07)  Я вчера тоже проинсталил IAR, но не нашел там генератор начального кода (Application Builder). Слыхал что у IAR это реализовано в отдельной программе. Подскажите как она называется? Впервые слышу про такой генератор.  Надо только галочку поставить возле: General Option -> System -> Enable bit definitions in I/O-include files А дальше просто беру и пишу, начиная с main(). Вот и всё. Инициализацию (startup-код) оно само добавляет. __C_task main() { } оптимизацей не увлекайтесь - выше medium не ставьте.
|
|
|
|
|
Dec 23 2010, 16:59
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(Aneg @ Dec 23 2010, 22:07)  Я вчера тоже проинсталил IAR, но не нашел там генератор начального кода (Application Builder). Слыхал что у IAR это реализовано в отдельной программе. Подскажите как она называется? Я в свое время подсел на CodeVision с его чудесным визардом... Потом из-за ограниченности CV пересел на IAR. Сейчас сижу в Лине и все делаю в gcc. Абсолютно не страдаю по Венде, но... CV вспоминаю недобрым словом, ибо все эти визарды -- это такая медвежья услуга, что... У меня до сих пор икается, что я иногда чего-то не знаю из-за того, что за меня это делал CV. Визард съел мой мозг. Теперь мне приходится его восстанавливать. Не совершайте моих ошибок. Визарды и генераторы начальных кодов -- это костыли, которые окончательно сдуют ваши мышцы. Или Вы не серьезно настроены на работу с МК?
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Dec 24 2010, 03:14
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(zhevak @ Dec 23 2010, 22:59)  Визарды и генераторы начальных кодов -- это костыли, которые окончательно сдуют ваши мышцы. Или Вы не серьезно настроены на работу с МК? zhevak в целом прав. Действительно программирование, как дисциплина, довольно быстро мигрирует от собственно программного кода к ... постановкам галочек во многочисленных диалогах и закладках  . Через несколько лет такого упорного труда  выясняется, что данный программист мало чем отличается от фаната какой-нибудь компьютерной игры, познавший все ее пути и выходы. Т.е. собственно программировать он разучился, подсевши на визард. Соотвественно, при переходе на любую другую систему учится ему придется практически с полного нуля, поскольку те галочки, к котором он так привык, бесследно пропали, а вместо них возникли новые и совершенно незнакомые. Вот только к IAR-компилятору сказанное отношения не имеет. По нынешним меркам это довольно спартанская система - почти ничего лишнего. Никакие "начальные коды" там не генерируются, а имеет место простое подключение стартового модуля, кои для каждого типа МК лежат в библиотеке в готовом виде. А не хочешь - отказывайся и пиши свой стартовый модуль или обходись без оного. Т.е. в IARе по-прежнему присутствует экзешники компилятооров, линкеров и т.п., допускающими работу с командной строкой без использования IDE. Последняя здесь выполняет роль надстройки и пока не сильно покушается на то, чтобы узурпировать полную власть. Но соглашусь, что опасная тенденция не только существует, но и нарастает со временем - всё меньше програмистов помнят ключи и опции к своим компиляторам, а всё больше расположение галочек на визарадах.
|
|
|
|
|
Dec 24 2010, 12:16
|
Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346

|
В состав ICC AVR входит полезный модуль Application Builder, существенно упрощающий рутинную работу по инициализации микроконтроллера. ICC AVR Application Builder берет на себя инициализацию портов ввода-вывода, аналогово-цифрового преобразователя, компаратора, таймеров и счетчиков, внешних интерфейсов SPI, USART и TWI (аналог I2C), а также базовое распределение памяти и необходимые прерывания — все процедуры, которые обычно занимают много времени программиста, и ошибки в которых трудно найти на стадии разработки. Но почему же такого нет в IAR?
|
|
|
|
|
Dec 24 2010, 12:55
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Aneg @ Dec 24 2010, 18:16)  ... и ошибки в которых трудно найти на стадии разработки. Всё - как раз наоборот. Сравните "написанное руками": Код UCSR0B = (1<<RXCIE0) | (1<<UDRIE0); и текст от визарда Код UCSR0B = 0xA0; А теперь скажите: какая из строк понятнее и где легче найти ошибку?
|
|
|
|
|
Dec 24 2010, 12:59
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Aneg @ Dec 24 2010, 18:16)  Но почему же такого нет в IAR? Потому, что ICCAVR позиционируется (и таковым является) как инструмент для начинающих и совершенствующихся разработчиков энтузиастов-любителей. А IAR - качественно и дорого для профессионалов c большим бюджетом и амбициями (но стоит в разы дороже чем ICCAVR). Стоит также упомянуть и о существовании абсолютно бесплатного xxx-gcc, который на фоне обсуждаемых выше компиляторов смотрится весьма и весьма привлекательно.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 26 2010, 17:27
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(DpInRock @ Dec 24 2010, 19:40)  Кстати, кому как, но мне лично удобнее USRB=0xA0. Моветон. Цитата А все эти символьные вещи - ищи кто их и где определил. Не перегибайте палку. Всегда однозначно ясно откуда ноги растут. А так можно и ногтем заточенным дырки в перфокарте ковырять, ибо поди разбери что за кодировка в текстовом файле c исходником применяется:-)
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|