Hallo Ich arbeite mit einem Tiny13 und möchte diesen gelegentlich in den Sleepmode setzten und zwar so:
1 | ... |
2 | if( sleepMode ) |
3 | { |
4 | ... |
5 | sleepMode = 0; |
6 | // go to sleepMode |
7 | MCUCR |= (1 << SM1); |
8 | MCUCR |= (1 << SE); |
9 | } |
10 | ... |
Die If-Bedingung wird ab und zu zweifelslos erfüllt (gebe im IF-Block noch was aus, vor dem Schlafen legen), dennoch setzt sich der uC nicht in den Sleepmode (die Anzeige wird weiterhin munter verändert durch Funktionen, die ausserhalb der sleep-IF-Schleife stehen => kein sleep mode aktiviert) Im Datenblatt des Tiny13 steht über das "MCUCR – MCU Control Register" beim "Bit 5 – SE: Sleep Enable": "To avoid the MCU entering the sleep mode unless it is the programmer’s purpose, it is recommended to write the Sleep Enable (SE) bit to one just before the execution of the SLEEP instruction and to clear it immediately after waking up." Muss ich nun also noch eine SLEEP instruction ausführen? Aber was soll das sein? Hab dazu im Datenblatt keine weiteren nützlichen Infos gesehen. Könnt ihr mir weiterhelfen? Vielen Dank Markus