mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PinChange Interrupt Flag ohne Interrupt enable?


Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Öpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Öpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
Aha. Danke.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Öpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.