Страница 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]
Умеет ли компилятор, который ты применяешь, делать ассемблерный листинг? Если да, то выкладывай его, если нет - то хекс выкладывай, глянем на таблицу прерываний. Еще неплохо бы все-же код обработчика прерываний полностью посмотреть.