Forum: Mikrocontroller und Digitale Elektronik ATMEGA wacht nicht aus "Power-Down" auf


von Mike (Gast)


Lesenswert?

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?

von MO (Gast)


Lesenswert?

>Bei Anwendung von sleep_cpu() müssen Interrupts also bereits freigeben sein 
>(sei()), da der Controller sonst nicht mehr "aufwachen" kann.

Quelle
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Sleep-Modes

Evtl. ist ein fehlendes SEI() der grund...

MfG

von inti (Gast)


Lesenswert?

wacht der nur bei Level-Int auf?
nicht mit "any logical change"?

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
Noch kein Account? Hier anmelden.