Sleep Mode Power Down und INT0 funktioniert nicht

Gast #1143432
Ich habe am PD2 (INT0) des ATmega32 (16MHz ext. Quarz) ein IR Empfänger. 
Das empfangen funktioniert auch alles problemlos. Wenn ich aber in den 
Sleep gehe und irgend etwas höheres als IDLE eingestellt habe (wollte 
eigentlich POWER DOWN), dann wacht mein µC nicht mehr auf. Woran kann 
das liegen?
1
...
2
  TCCR0 = 1<<CS02;      // Teiler 256
3
  TIMSK = 1<<TOIE0;      // Timer Interrupt freigeben
4
  GIMSK = (1 << INT0);      // externen Interrupt freigeben, bei anderen µC "GICR"
5
  //MCUCR = (1 << ISC00)|(1 << ISC01);  // steigende Flanke löst ext. Interrupt aus
6
  MCUCR = (1 << ISC01);          // fallende Flanke löst ext. Interrupt aus
7
...
8
...
9
  sei();          // ISR aktivieren
10
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
11
  sleep_mode();             // in den Schlafmodus wechseln
12
  // hier wieder aufwachen bei ext. Interrupt
13
  GIMSK &= ~(1 << INT0);    // externen Interrupt sperren, durch Timer werden jetzt alle 14 Bits eingelesen
14
  while(1)          
15
  {  
16
...
17
...
18
    GIMSK = (1 << INT0);    // externen Interrupt freigeben, damit wieder aufgewacht werden kann
19
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
20
    sleep_mode(); 
21
    // hier wieder aufwachen bei ext. Interrupt
22
    GIMSK &= ~(1 << INT0);    // externen Interrupt sperren, durch Timer werden jetzt alle 14 Bits eingelesen
23
  }
24
...
25
...
26
ISR(INT0_vect) {
27
  // 3 Takte warten, dass Oszillator einschwingen kann
28
  //__asm volatile ("nop");
29
  //__asm volatile ("nop");
30
  //__asm volatile ("nop");
31
  DDRD|=(1<<PD6);
32
  PORTD^=(1<<PD6);
33
}
Gast
Nix steigende oder fallende Flanke! Zum Aufwachen aus dem Power Down 
Schlafmodus musst Du den INT0 auf _Pegel_triggerung konfigurieren. Denn 
im Power Down hat der Controller keinen Takt, und ohne diesen kann er 
keine Flanke detektieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.