RISING und FALLING bei SLEEPING

OP #6323941
Lesenswert?
• ▲
▼
Hier schreibt der Fachmann:
1
attachInterrupt(digitalPinToInterrupt(wakePin), sleepISR, RISING);
https://github.com/RalphBacon/PIR-ATMega328P-Deep-Sleep/blob/master/Benny_Cupboard_Alarm.ino

Das Datenblatt von ATmega328P (s.62) sagt aber, dass diese Feinheiten im 
ungetakteten Zustand nicht zur Verfügung stehen: entweder Low Level 
Interrupt oder Pin Change Interrupt.

Wie ist das zu verstehen? Kann Arduino mehr aus dem ATmega328P machen?
Gast #6323993
Lesenswert?
• ▲
▼
Georg M. schrieb:

> Das Datenblatt von ATmega328P (s.62) sagt aber, dass diese Feinheiten im
> ungetakteten Zustand nicht zur Verfügung stehen: entweder Low Level
> Interrupt oder Pin Change Interrupt.
>
> Wie ist das zu verstehen?

Dass wohl der Pinchange-Interrupt verwendet wird...

Die anderen (INTx)-Interrupts stehen sowieso nur an sehr wenigen Pins 
zur Verfügung, beim Mega328P an nur zwei Pins.
Gast #6323998
Lesenswert?
• ▲
▼
c-hater schrieb:
> Dass wohl der Pinchange-Interrupt verwendet wird...
Nicht an der Stelle.
Das muss man dann schon selber einleiten.
attachInterrupt() behandelt nur die beiden Hardware Interrupts

Georg M. schrieb:
> Das Datenblatt von ATmega328P (s.62) sagt aber, dass diese Feinheiten im
> ungetakteten Zustand nicht zur Verfügung stehen: entweder Low Level
> Interrupt oder Pin Change Interrupt.
Das ist Wahr!

Georg M. schrieb:
> Kann Arduino mehr aus dem ATmega328P machen?
Nein!
Wie sollte es.
Arduino mag toll sein.
Aber Gott ähnlich ist es dann doch nicht wirklich.

Die Hardware Interrupts, können nur Level Interrupts im Sleep.
Wer im Sleep Flanken will, muss die PCINT verwenden.
OP #6324066
Lesenswert?
• ▲
▼
c-hater schrieb:
> Die anderen (INTx)-Interrupts stehen sowieso nur an sehr wenigen Pins
> zur Verfügung, beim Mega328P an nur zwei Pins.


Arduino Fanboy D. schrieb:
> attachInterrupt() behandelt nur die beiden Hardware Interrupts
>
> Die Hardware Interrupts, können nur Level Interrupts im Sleep.
> Wer im Sleep Flanken will, muss die PCINT verwenden.


Ja, es geht um diese zwei Interrupt-Pins: INT0 und INT1.
Er schreibt:
1
#define wakePin 3   // when rising, makes 328P wake up, must be an interrupt pin (2 or 3 on ATMEGA328P)
Vermutlich meint er Pin 2 oder 3 von Arduino.

Und PCINT unterscheidet nicht zwischen RISING und FALLING.

Irgendwie blicke ich immer noch nicht durch.
Gast #6324083
Lesenswert?
• ▲
▼
Nur im Idle Sleep Mode kann es Flanken auf int 0 und 1


Georg M. schrieb:
> Irgendwie blicke ich immer noch nicht durch.
Das Datenblatt sagt die Wahrheit.

Wiederhole:
Das Datenblatt sagt die Wahrheit. Glaube dem Datenblatt.
Das Datenblatt sagt die Wahrheit. Glaube dem Datenblatt.
Das Datenblatt sagt die Wahrheit. Glaube dem Datenblatt.

Wenn dann noch Zweifel bleiben:
Lese das Datenblatt nochmal und akzeptiere das dort geschriebene.
#6324102
Lesenswert?
• ▲
▼
Georg M. schrieb:
> Ja, es geht um diese zwei Interrupt-Pins: INT0 und INT1.
> Er schreibt:#define wakePin 3   // when rising, makes 328P wake up, must
> be an interrupt pin (2 or 3 on ATMEGA328P)
> Vermutlich meint er Pin 2 oder 3 von Arduino.

Ja.

> Und PCINT unterscheidet nicht zwischen RISING und FALLING.

Ja. Diese Unterscheidung muss man dann in der ISR per Software machen, 
indem man den aktuellen Pinzustand ausliest und auswertet.
Beitrag #6324169 wurde von einem Moderator gelöscht.
#6324184
Lesenswert?
• ▲
▼
Georg M. schrieb:
> a, es geht um diese zwei Interrupt-Pins: INT0 und INT1.
> ...
> Und PCINT unterscheidet nicht zwischen RISING und FALLING.

Die uralten Ursprungs-AVRs hatten nur ein paar wenige externe 
Interrupt-Pins (INTn). Die etwas neueren haben dazu ein zweites externes 
Interruptsystem mit mehr Eingängen, genannt PCINT. Die INT-Interrupts 
funktionieren anders als die PCINT-Interrupts. Wie, steht im Datenblatt. 
Klingt komisch, ist aber so.

Oliver

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.