roboforum.ru

Технический форум по робототехнике.

Разбудить микроконтроллер через External Interrupt

Разбудить микроконтроллер через External Interrupt

NEOSoftWare » 06 окт 2011, 23:39

Как разбудить микроконтроллер через External Interrupt
делаю так
Код: Выделить всёРазвернуть
GICR|=0xC0;
CUCR |= 0x0A;
GIFR=0xC0;
#asm("sei")


Код: Выделить всёРазвернуть
interrupt [EXT_INT1] void ext_int1_isr(void)
{
    ....
}


// прирывания с датчика спедометра
interrupt [EXT_INT0] void ext_int0_isr(void)
{
    ......

}


при замыкании ножки INT0 и INT1 на землю код в соответствующих функциях прерывания работает как надо, перевожу контроллер в режим сна
Код: Выделить всёРазвернуть
MCUCR |= 1 << SE | 1 << SM1;
#asm("SLEEP")

по даташиту если перевести контролер в режим Power-down (SM0=0,SM1=1,SM2=0) то он должен пробуждаться от "INT1/ INT0" и "TWIAddress Match", но от INT1/ INT0 не пробуждается, почему?

з.ы.: контролер atmega8a

Re: Разбудить микроконтроллер через External Interrupt

=DeaD= » 06 окт 2011, 23:58

CUCR |= 0x0A; - это MCUCR что-ли? Если да, то похоже проблема в этом, выход из режима сна вроде возможен только по level-прерываниям, а не по falling-edge-прерываниям

Re: Разбудить микроконтроллер через External Interrupt

NEOSoftWare » 07 окт 2011, 00:07

=DeaD= писал(а):CUCR |= 0x0A; - это MCUCR что-ли? Если да, то похоже проблема в этом, выход из режима сна вроде возможен только по level-прерываниям, а не по falling-edge-прерываниям

да MCUCR,
ставлю
MCUCR=0x00;
тоже самое, не могу разбудить


cron
Rambler\'s Top100 Mail.ru counter