ATmega48 sleep
Fuzesi Arnold
arno at externet.hu
Tue Dec 21 03:41:07 CET 2004
Sziasztok!
Van valakinek tippje, miert mukodik ez:
....
else if(!remote_type){ //ha vezetékes
__watchdog_reset();
WDTCSR=b00011000;
WDTCSR=b00000000; //WDT off
LED=0;
//WAKE-UP
while(IR_IN); //varakozunk egy 0 szintre
WDTCSR=b00011000;
WDTCSR=b00001110; //1s WDT period
LED=1;
goto INIT;
}
Ez meg nem:
else if(!remote_type){ //ha vezetékes
__watchdog_reset();
WDTCSR=b00011000;
WDTCSR=b00000000; //WDT off
EICRA=b00000000; //INT0 low level (required for wake-up from power down
mode)
EIFR=b00000001; //INT0 flag clear
EIMSK=b00000001; //INT0 enable
LED=0;
__enable_interrupt();
SMCR=b00000101; //sleep enable,power down mode
__sleep(); //INT0 ebreszti
asm("nop");
//WAKE-UP
__disable_interrupt();
WDTCSR=b00011000;
WDTCSR=b00001110; //1s period
LED=1;
goto INIT;
}
WDT ki van kapcsolva a fuse biteknel.
Ugy csinal, mintha sleep-bol nem lepne tovabb. Illetve 104uA-t fogyaszt.
Neha mikor rajon akkor csak 2uA-t. (ez lenne a normalis, minden ki van
kapcsolva, boden, wdt, power down modban van)
INT0 mukodik rendesen futo program eseten.
Egy egyszeru rutin amelyik siman lefut, es visszater.
Nem ertem... Valakinek otlete?
Kösz,
Arnold
More information about the Elektro
mailing list