Hallo!
Ich bekomme meinen uC nicht mehr aus dem Power Down Mode und hoffe auf
ein paar Tips:
Ich möchte den ext. INT1 verwenden um den MEGA168 wieder aus dem Power
Down Mode aufzuwecken. Dazu konfiguriere ich diesen auf "any logical
change":
1 | EICRA &= ~(1<<ISC11); // Setze Interrupt INT1 Sense Control auf "Any logical change" (01)
|
2 |
|
3 | EICRA |= (1<<ISC10);
|
4 | EIFR |= (1<<INTF1); //Aktiviere ISR
|
5 |
|
6 | EIMSK &= ~(1<<INT1); //Deaktiviere externen Interrupt INT1 by default
|
Wenn ich den uC schlafen schicke, aktivere ich den externen Interrupt:
1 | // Watchdog abschalten um autom. Reset (=Neustart) zu vermeiden
|
2 | wdt_disable();
|
3 |
|
4 | //Alle Ausgänge abschalten
|
5 | PORT_OUT1 &= ~(1<<OUT1);
|
6 | PORT_OUT2 &= ~(1<<OUT2);
|
7 |
|
8 | // Aktiviere externen Interrupt um ein Aufwachen zu ermöglichen
|
9 | EIMSK |= (1<<INT1);
|
10 |
|
11 | //Herunterfahren
|
12 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
13 | sleep_enable();
|
14 | sleep_cpu(); // BYE BYE!
|
Wenn nun am INT 1 wieder ein Signal anliegt (PWM mit 1...2ms high Phase)
soll der uC wieder aufwachen, siehe ISR:
1 | ISR(INT1_vect)
|
2 | {
|
3 | //Deaktiviere externen Interrupt INT1 wieder
|
4 | EIMSK &= ~(1<<INT1);
|
5 | }
|
Leider wacht hier niemand auf... Die Interrupts sind sicher aktiviert.
Kann mir jemand erklären wo es hängt?