Страница 1 из 1
ATMega32 рестартится ...
Добавлено: Сб дек 05, 2009 01:46:36
BCluster
Привет, кисы. Что-то фигня какая то - все работает, пока не начинаю использваоть прерывания по переполнению таймера. При возникновении прерывания мега просто рестартится, без видимых причин. Ктот видел такое?)
ATMega32, 16 MHz (менялось)
Добавлено: Сб дек 05, 2009 09:04:37
BCluster
неа, нету wdr, выключен он. Плюс еще раз - без прерываний все работат
Добавлено: Сб дек 05, 2009 10:18:39
AI_Disable
В симуляторе нормально работает? И, да, код в студию.
Re: ATMega32 рестартится ...
Добавлено: Сб дек 05, 2009 10:53:20
smac
BCluster писал(а):... При возникновении прерывания мега просто рестартится, без видимых причин. Ктот видел такое?)
..
Наверняка таблица векторов прерываний неправильно составлена - у меги 32 между адресами векторов по два слова а не по одному.
Добавлено: Сб дек 05, 2009 11:53:17
BCluster
Код: Выделить всё
#include <mega32>
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// шото тут делать надо...
}
void main(void)
{
TCCR0=0x04;
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01; // если не включаь прерывания рестарта нет
#asm("sei") // если не включать прерывания рестарта нет
while (1)
{
// чтото тут
};
}
Добавлено: Сб дек 05, 2009 12:23:56
KraMax
Было что-то подобное, когда параметры стека не задал
Код: Выделить всё
; установка параметров стека
ldi tmp1,low(ramend) ;
ldi tmp2,high(ramend) ;
out spl,tmp1 ;
out sph,tmp2 ;
Добавлено: Сб дек 05, 2009 19:19:53
smac
[quote="BCluster"][/quote]
Умеет ли компилятор, который ты применяешь, делать ассемблерный листинг? Если да, то выкладывай его, если нет - то хекс выкладывай, глянем на таблицу прерываний. Еще неплохо бы все-же код обработчика прерываний полностью посмотреть.