PinChange Interrupt Flag ohne Interrupt enable?

OP (Firma: privat) #1508040
Lesenswert?

Hallo!

Ich würde in einem attiny461 gerne das Pinchange Interrupt Flag 
auswerten ohne wirklich einen Interrupt auszulösen. Also mit gelöschtem 
Interrupt Enable Flag in GIMSK.

Vermutlich gibt es dazu keine Möglichkeit? Alleine schon durch die 
Aufteilung in PCIE0 und PCIE1, welche aber nur einem Interruptflag 
zugeordnet sind, sieht es so aus dass das nicht gehen kann.

Oder?


Viele Grüße,
Klaus
Gast #1508046
Lesenswert?

>Ich würde in einem attiny461 gerne das Pinchange Interrupt Flag
>auswerten ohne wirklich einen Interrupt auszulösen. Also mit gelöschtem
>Interrupt Enable Flag in GIMSK.

>Vermutlich gibt es dazu keine Möglichkeit?

Kann ich jetzt auch nicht sagen ob das geht.
Beim SPI Modul kann man SPIF auswerten ohne
den Interrupt zu aktivieren.

Einfach mal ausprobieren würde ich sagen.
#1508048
Lesenswert?

Ohne im Datenblatt nachgelesen zu haben: Interruptflags werden 
unabhängig vom Interrupt-Enable gesetzt. Lediglich der Aufruf der ISR 
unterbleibt, wenn ein interruptfähiger Eingang eine Interruptbedingung 
erkannt hat.

Du mußt eben das IF nach der Auswerung explizit rücksetzen.
OP (Firma: privat) #1508049
Lesenswert?

Öpf schrieb:
>>Ich würde in einem attiny461 gerne das Pinchange Interrupt Flag
>>auswerten ohne wirklich einen Interrupt auszulösen.
> Was spricht dagegen den Interrupt zu verwenden?

Der Prozessor wacht dann im Sleep Mode auf. Das soll er eigentlich 
nicht. Ich will nur nach dem Aufwachen (Timer) wissen, ob 
zwischenzeitlich ein PinChange stattgefunden hat.
#1508375
Lesenswert?

Klaus W. schrieb:
> Öpf schrieb:
>>>Ich würde in einem attiny461 gerne das Pinchange Interrupt Flag
>>>auswerten ohne wirklich einen Interrupt auszulösen.
>> Was spricht dagegen den Interrupt zu verwenden?
>
> Der Prozessor wacht dann im Sleep Mode auf. Das soll er eigentlich
> nicht. Ich will nur nach dem Aufwachen (Timer) wissen, ob
> zwischenzeitlich ein PinChange stattgefunden hat.

wo ist das Problem? da wacht er ebend auf, du seetzt eine Variable, 
deaktiverst den PCI und legst ihn wieder schlafen.
das ist in wenigen nano-sekunden erledigt und kostet so gut wie keinen 
strom.
Gast #1508399
Lesenswert?

>wo ist das Problem? da wacht er ebend auf, du seetzt eine Variable,
>deaktiverst den PCI und legst ihn wieder schlafen.
>das ist in wenigen nano-sekunden erledigt und kostet so gut wie keinen
>strom.

Das habe ich mich auch gefragt. Aber ich nehme an, das der uC sowieso 
aufwachen soll, auch wenn am Pin kein Pegelwechsel stattfindet bzw. das 
Klaus auch wissen muss, das innerhalb eines gewissen Zeitablaufs eben 
keiner stattgefunden hat.
OP (Firma: privat) #1508502
Lesenswert?

>> Der Prozessor wacht dann im Sleep Mode auf. Das soll er eigentlich
>> nicht. Ich will nur nach dem Aufwachen (Timer) wissen, ob
>> zwischenzeitlich ein PinChange stattgefunden hat.
>
> wo ist das Problem? da wacht er ebend auf, du seetzt eine Variable,
> deaktiverst den PCI und legst ihn wieder schlafen.
> das ist in wenigen nano-sekunden erledigt und kostet so gut wie keinen
> strom.

Stimmt, aber das bedeutet, dass ich dann unterscheiden müsste, ob er vom 
Timer oder vom Pinchange aufgewacht ist. Gleiches gilt für die A/D 
Wandler im noise-reduction mode. Ich müsste dann wirklich 
interrupthandler implementieren usw. Klar, alles kein Problem. Aber wäre 
schöner wenn es anders ginge.

Viele Grüße,
Klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren