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

 
 
 
Reply to this topicStart new topic
> Не могу выйти из цикла, 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
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
IgorKossak
сообщение Dec 23 2010, 14:51
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



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

Application Builder уже давно не поддерживается IARом как тупиковый проект. Последние его версии были года четыре назад, если не больше. Так что пробуйте обходиться без него и внимательно изучайте примеры (от самого IARа и от кого угодно).
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 23 2010, 15:01
Сообщение #5


Гуру
******

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



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

Впервые слышу про такой генератор. sm.gif
Надо только галочку поставить возле:
General Option -> System -> Enable bit definitions in I/O-include files
А дальше просто беру и пишу, начиная с main(). Вот и всё. Инициализацию (startup-код) оно само добавляет.

__C_task main()
{
}

оптимизацей не увлекайтесь - выше medium не ставьте.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 23 2010, 16:59
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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
alexeyv
сообщение Dec 24 2010, 00:26
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



zhevak
+1000
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 24 2010, 03:14
Сообщение #8


Гуру
******

Группа: Модератор 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
Сообщение #9





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


Гуру
******

Группа: Свой
Сообщений: 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
demiurg_spb
сообщение Dec 24 2010, 12:59
Сообщение #11


неотягощённый злом
******

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



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

Стоит также упомянуть и о существовании абсолютно бесплатного xxx-gcc, который на фоне обсуждаемых выше компиляторов смотрится весьма и весьма привлекательно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Dec 24 2010, 13:40
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Услугами визарда вполне можно пользоваться. Ибо чем этот код отличается от примеров? Ничем. Сиди и разбирай.

Кстати, кому как, но мне лично удобнее USRB=0xA0. А все эти символьные вещи - ищи кто их и где определил.
А цифирка - она вот она. 10100000 - все как на ладони. С 32 разрядами, правда, привычка нужна..

Сообщение отредактировал DpInRock - Dec 24 2010, 13:40


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 26 2010, 17:27
Сообщение #13


неотягощённый злом
******

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



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


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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