Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
01.02.2011, 14:09
|
|
Прохожий
Регистрация: 20.11.2010
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
AVR вылетает из while(1)
Добрый день.
Столкнулся с вот такой ситуацией.
проц ATmega164p, компилятор CV
В процессе работы проц постоянно вылетает из while(1), может перезагружается?
урезал прогу до до тестового кусочка вида:
Цитата:
|
static bit flag = 1;
...
void main(void)
{
//....
//тут инициализация UART0,UART1
//....
#asm("sei")
putchar1(0x0D);
putchar1(0x0A);
if (flag)
{
flag = 0;
putchar1('2');
}
while (1)
{
putchar1('3');
}//end while
putchar ('4');
}
|
Терминалом получаю с порта примерно следующее
Цитата:
|
1233333333333333
1233333333333333
//.....
//итак далее
|
или вопрос совсем чайницкий и так и должно быть?
|
|
|
|
01.02.2011, 14:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: AVR вылетает из while(1)
watchdog включен? Попробуйте внутри while вставить команду #asm("wdr");
|
|
|
Сказали "Спасибо" omercury
|
|
|
01.02.2011, 14:27
|
|
Прохожий
Регистрация: 20.11.2010
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: AVR вылетает из while(1)
вочдог Отключен.
добавил wdr, ничего не изменилось(
|
|
|
|
01.02.2011, 14:34
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: AVR вылетает из while(1)
А прерывания правильно настроены? А то попадаете на неописанный вектор, и программа начинается сначала.
|
|
|
Сказали "Спасибо" testerplus
|
|
|
01.02.2011, 14:41
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: AVR вылетает из while(1)
Сообщение от pooh_w
|
В процессе работы проц постоянно вылетает из while(1), может перезагружается?
|
С питанием всё нормально? Ёмкостя по питанию присутствуют? BOD настроен правильно?
|
|
|
|
01.02.2011, 14:49
|
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: AVR вылетает из while(1)
Уберите asm("sei") и проверьте, а лучше вставьте asm(''cli") - для чистоты эксперимента. Если будет всё нормально - значит вы некорректно работаете с прерываниями. Прерывание вызывается, а обработчика нет. Из-за этого может быть подобная бодяга.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо RY723 за это сообщение:
|
|
|
01.02.2011, 15:05
|
|
Прохожий
Регистрация: 20.11.2010
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: AVR вылетает из while(1)
Включены прерывания уартов (прием, передача), но обработчики для них прописаны.
остальные прерывания отключил в поисках глюка..
гонял код в Astudio, там все ок.
BOD фузы стоят для Crystal Oscillator, slowly rising power. кристалл на 18 МГц, вроде правильно.
Последний раз редактировалось pooh_w; 01.02.2011 в 15:12.
|
|
|
|
01.02.2011, 15:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: AVR вылетает из while(1)
Сообщение от testerplus
|
А прерывания правильно настроены? А то попадаете на неописанный вектор, и программа начинается сначала.
|
Кстати - да. CV на неиспользованные векторы прерываний пишет RJMP 0.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо omercury за это сообщение:
|
|
|
01.02.2011, 15:22
|
|
Прохожий
Регистрация: 20.11.2010
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: AVR вылетает из while(1)
Отключил прерывания. вывел сигнал на диодик. при отключнных прерываниях действительно все нормально
остальсь найти какое из них гадило...
спасибо)
|
|
|
|
01.02.2011, 20:54
|
|
Прохожий
Регистрация: 20.11.2010
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: AVR вылетает из while(1)
Разрешил только 1 прерывание от USART0 (по приему), остальное все позанулял - никакого эффекта.
по прежнему вылетает в начало программы.
пролил тотже код в плату с мегой 128 - там все работает нормально((
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:10.
|
|