hello Leute habe ne kleine frage zu dem Watchdog und power down mode. Kann mir jemand ein Beispiel eventuell schreiben wo ich den µC in den Power Down mode schalte und nach einer gewissen Zeit wieder erwachen lasse und das immer (gewisse zeit schlafen und wieder aufwachen und wieder von vorn) Hoffe ihr könntet mir dabei helfen mein Problem zu lösen.
Wo hängt es denn genau? Weil ein Problem hast du ja gar nicht genannt, sondern nur eine Aufgabe.
Ups sry bissi falsch ausgedrückt also die Inititialisierung habe ich gemacht nur wie mache ich das dass der µC in den Power Down mode geht und dann mit dem Watchdog aus dem schlaf geholt wird
Das Datenblatt sollte auskunft geben. Du musst den Watchdog richtig initialisieren. Die ISR mit ins Programm holen und den Controller an der entsprechenden Stelle schlafen legen. Zum Beispiel so:
1 | void GlobalSleepMode(void) |
2 | {
|
3 | cli(); |
4 | wdt_reset(); |
5 | WDTCSR |= (1<<WDCE)|(1<<WDE); //WD Interrupt Enable, WD Change Enable |
6 | WDTCSR = (1<<WDIE)|(1<<WDP1)|(1<<WDP0); //16k, ca. 0,125s |
7 | sei(); |
8 | |
9 | set_sleep_mode(SLEEP_MODE_STANDBY); |
10 | sleep_mode(); |
11 | }
|
12 | |
13 | void GlobalWakeUp(void) |
14 | {
|
15 | cli(); |
16 | WDTCSR |= (1<<WDCE)|(1<<WDE); //WD Change Enable |
17 | WDTCSR = 0x00; //Turn WD off |
18 | sei(); |
19 | }
|
20 | |
21 | ISR(WDT_vect) |
22 | {
|
23 | |
24 | }
|
Das ganze ist für den Mega88. Für den Tiny musst du es wahrscheinlich anpassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.