Sleep mode på atmega 32

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Igus
Inlägg: 2
Blev medlem: 29 maj 2008, 19:37:01
Ort: Lund

Sleep mode på atmega 32

Inlägg av Igus »

Jag försöker använda sleepfunktionen på Atmega32 och har problem.
Processorn går i sleep som den ska, men går inte att väcka efteråt.

Jag vill få igång processorn med hjälp av en external interrupt, som aktiveras av låg nivå på ingången.

koden för det hela ser ut på följande vis:

void goToSleep() {
MCUCR = (MCUCR & 0b00001111) | 0b10100000; // sleep enable, mode = power down
MCUCR &= 0b11110011; // ext int 1 trigger on low level
GICR |= 0b10000000; // enables ext int 1
__asm__ __volatile__ ("sleep" ::);
}

// activated by external interrupt 1:
ISR(INT1_vect) {
GICR &= 0b01111111; // disables ext int 1
MCUCR &= 0b01111111; // sleep disable
}

En märklig detalj är att koden fungerar som den ska om jag kör programmet med debugern igång.

Är det någon som har erfarenhet av något liknande?
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Har du global interrupt aktiverat?

Använder du avr-gcc finns det lite makron att använda som ev. underlättar
http://www.nongnu.org/avr-libc/user-man ... sleep.html
Igus
Inlägg: 2
Blev medlem: 29 maj 2008, 19:37:01
Ort: Lund

Inlägg av Igus »

Oj... Nu kännar jag mig lite dum. Men global interrupt är bra att ha aktiverat ja =)

Tack för snabb hjälp.
Skriv svar