Sleep mit int0 aufwecken

(Firma: matzetronics) #4610309
Nö, geht nicht. Aber der Pinchange Interrupt am gleichen Pin läuft 
flankengetriggert auch in Sleepmodes - nimm den.
Im Datenblatt ist das ein wenig merkwürdig ausgedrückt: Im Powerdown 
Mode gehen INT0 und INT1 nur bei Level- und nicht bei Flanken 
Interrupts.
Gast #4610314
Matthias S. schrieb:
> Nö, geht nicht. Aber der Pinchange Interrupt am gleichen Pin läuft
> flankengetriggert auch in Sleepmodes - nimm den.
> Im Datenblatt ist das ein wenig merkwürdig ausgedrückt: Im Powerdown
> Mode gehen INT0 und INT1 nur bei Level- und nicht bei Flanken
> Interrupts.

Also kann ich bei steigender Flanke den Atmega 88 aufwecken?
Danke Lg
#4610344
When the SM2..0 bits are written to 010, the SLEEP instruct
ion makes the MCU enter power-down mode. In this mode, the external 
oscillator is stopped, while the external interrupts, the 2-
wire serial Interface address watch, and the Watchdog continue operating 
(if enabled). Only an external reset, a watchdog system reset, a 
watchdog
interrupt, a brown-out reset, a 2-wire serial interface address match, 
an external level interrupt on INT0 or INT1, or a pin change interrupt 
can wake up the MCU.

Das ist doch eigentlich recht verständlich.
#4610394
pi_user schrieb:
> H.Joachim S. schrieb:
>> Das ist doch eigentlich recht verständlich.
>
>
> Für mich leider nicht! Aber wenn ihr mir bestätigt das eine
> Flankenerkennung geht dann bin ich Zufrieden!
>
> Lg

Der altbekannte INT0 kann ohne Takt, z.b. PowerDown, keine Flanke 
erkennen. Wenn der aber auf High-Level reagiert und vorher hatte man 
Löw-Level, dann hast du fast den gewünschten Effekt. Fast bedeutet, die 
ISR wird gerufen, bis der INT0 disabled wird, oder er nicht mehr auf 
"Trigger On High-Level" steht.

PinChange-Int braucht für Flanken-Erkennung keine Takt. Vermutlich wird 
einfach das Signal per Buffer-Gate-Laufzeit verzögert mit dem Original 
XORed. Und als Nachteil hat man Trigger auf beiden Flanken.
#4610398
Es geht nicht über INT0, aber über PCINT18, liegen auf dem gleichen Pin.
Also:
-zusätzlich eine ISR für PC_INT2 (Interruptvektor u.a.für PCINT18), dort 
dann den Pinchange-Int komplett wieder ausschalten.

Vor power-down den PCINT18 aktivieren:
PCICR=(1<<PCIE2) | (0<<PCIE1) | (0<<PCIE0);
PCMSK2=(0<<PCINT23) | (0<<PCINT22) | (0<<PCINT21) | (0<<PCINT20) | 
(0<<PCINT19) | (1<<PCINT18) | (0<<PCINT17) | (0<<PCINT16);

Oder so ähnlich :-)

Direkt mit dem INT0 oder 1 geht es jedenfalls nicht, wenn der 
flankengesteuert arbeitet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.