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

 
 
> Не могу выйти из цикла, ATmega16; Компилятор: ICCV7 for AVR
Aneg
сообщение Dec 23 2010, 13:01
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346



Компилятор: ICCV7 for AVR, http://www.imagecraft.com/
Целевой камень: ATmega16


ADCSR |= BIT(6); //запуск АЦП

while (ADIF != 1){ //ожидание установки флага ADIF завершения АЦП
}

UDR = 0x03; //контрольная отправка в СОМ порт


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Dec 23 2010, 13:10
Сообщение #2


Гуру
******

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



ADIF - это номер бита, а не регистр. Проверять надо регистр ADCSRA на наличие этого флага. Вот так:
while (!(ADCSRA & (1<<ADIF))) {}

Здесь, сдвигом единички влево, из номера бита получается маска. Потом с помощью операции "&", бит ADIF вырезается из значения регистра статуса ADCSRA. Результат сравнения инвертируем операцией "!".

P.S. На ICCV7 я не работаю, поэтому для уточнения рекомендации смотрите сами, как определен ADIF в хидере: номер бита он или маска.
На моем любимом IAR'е sm.gif это выглядит много изящней и нагляднее:
while( !ADCSRA_ADIF) {}
Рекомендую.
Go to the top of the page
 
+Quote Post
Aneg
сообщение Dec 23 2010, 14:07
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346



Спасибо заработало!
Я вчера тоже проинсталил IAR, но не нашел там генератор начального кода (Application Builder). Слыхал что у IAR это реализовано в отдельной программе. Подскажите как она называется?

Сообщение отредактировал IgorKossak - Dec 23 2010, 14:52
Причина редактирования: Лишнее цитирование
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 23 2010, 16:59
Сообщение #4


Знающий
****

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



Цитата(Aneg @ Dec 23 2010, 22:07) *
Я вчера тоже проинсталил IAR, но не нашел там генератор начального кода (Application Builder). Слыхал что у IAR это реализовано в отдельной программе. Подскажите как она называется?

Я в свое время подсел на CodeVision с его чудесным визардом... Потом из-за ограниченности CV пересел на IAR. Сейчас сижу в Лине и все делаю в gcc. Абсолютно не страдаю по Венде, но...
CV вспоминаю недобрым словом, ибо все эти визарды -- это такая медвежья услуга, что... У меня до сих пор икается, что я иногда чего-то не знаю из-за того, что за меня это делал CV. Визард съел мой мозг. Теперь мне приходится его восстанавливать. Не совершайте моих ошибок. Визарды и генераторы начальных кодов -- это костыли, которые окончательно сдуют ваши мышцы. Или Вы не серьезно настроены на работу с МК?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 24 2010, 03:14
Сообщение #5


Гуру
******

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



Цитата(zhevak @ Dec 23 2010, 22:59) *
Визарды и генераторы начальных кодов -- это костыли, которые окончательно сдуют ваши мышцы. Или Вы не серьезно настроены на работу с МК?

zhevak в целом прав. Действительно программирование, как дисциплина, довольно быстро мигрирует от собственно программного кода к ... постановкам галочек во многочисленных диалогах и закладках sm.gif. Через несколько лет такого упорного труда sm.gif выясняется, что данный программист мало чем отличается от фаната какой-нибудь компьютерной игры, познавший все ее пути и выходы. Т.е. собственно программировать он разучился, подсевши на визард. Соотвественно, при переходе на любую другую систему учится ему придется практически с полного нуля, поскольку те галочки, к котором он так привык, бесследно пропали, а вместо них возникли новые и совершенно незнакомые.

Вот только к IAR-компилятору сказанное отношения не имеет. По нынешним меркам это довольно спартанская система - почти ничего лишнего. Никакие "начальные коды" там не генерируются, а имеет место простое подключение стартового модуля, кои для каждого типа МК лежат в библиотеке в готовом виде. А не хочешь - отказывайся и пиши свой стартовый модуль или обходись без оного.

Т.е. в IARе по-прежнему присутствует экзешники компилятооров, линкеров и т.п., допускающими работу с командной строкой без использования IDE. Последняя здесь выполняет роль надстройки и пока не сильно покушается на то, чтобы узурпировать полную власть. Но соглашусь, что опасная тенденция не только существует, но и нарастает со временем - всё меньше програмистов помнят ключи и опции к своим компиляторам, а всё больше расположение галочек на визарадах.
Go to the top of the page
 
+Quote Post
Aneg
сообщение Dec 24 2010, 12:16
Сообщение #6





Группа: Новичок
Сообщений: 5
Регистрация: 19-12-09
Пользователь №: 54 346



В состав ICC AVR входит полезный модуль Application Builder, существенно упрощающий рутинную работу по инициализации микроконтроллера. ICC AVR Application Builder берет на себя инициализацию портов ввода-вывода, аналогово-цифрового преобразователя, компаратора, таймеров и счетчиков, внешних интерфейсов SPI, USART и TWI (аналог I2C), а также базовое распределение памяти и необходимые прерывания — все процедуры, которые обычно занимают много времени программиста, и ошибки в которых трудно найти на стадии разработки. Но почему же такого нет в IAR?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 24 2010, 12:55
Сообщение #7


Гуру
******

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



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



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

 


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


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