Forum: Mikrocontroller und Digitale Elektronik RISING und FALLING bei SLEEPING


von Georg M. (g_m)


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?

von c-hater (Gast)


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.

von Einer K. (Gast)


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.

von Georg M. (g_m)


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.

von Einer K. (Gast)


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.

von Falk B. (falk)


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.
von Oliver S. (oliverso)


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

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.