Forum: Compiler & IDEs Pin Change Interrupt mit steigender Flanke


von Andreas (Gast)


Lesenswert?

Hallo zusammen,
ich möchte dass meine interrupt-routine nur bei steigender flanke
ausgeführt wird. bei fallender soll nichts passieren.
das eingangssignal kann/ist zu kurz um einfach in der interruptroutine
den pin auf high oder low abzufragen...

hat jemand einen vorschlag?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wenn das Eingangssignal zu kurz ist, dann braucht's dich doch
nicht kümmern, welche der beiden Flanken getriggert hat.  Oder
was verstehe ich daran nicht?

Ich denke nicht, dass du beim pin change interrupt großartig was
festlegen kannst, dafür müsstest du einen ,,richtigen'' externen
Interrupt benutzen.

von Andreas (Gast)


Lesenswert?

der benutzer kann aber "den schalter" der den pci steuert selbst
drücken. drückt er ihn kurz-> kein problem;
drückt er ihn lang -> fallende flanke wird erkannt und pci ausgelöst...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ist sowieso eine schlechte Idee, mechanische Schalter über
externe oder Pinchange-Interrupts abzufragen.  Die fragt man
mit einem Timer ab, da man die sowieso entprellen muss.

Ansonsten: schalt' doch den pinchange interrupt im Handler
erstmal aus (und durch einen Timer wieder an).  Wenn's wirklich
so kurz gewesen ist, dass er beide Flanken vor der Interrupt-
annahme hatte, isses egal, ansonsten verhinderst du den Interrupt
auf der fallenden Flanke.

von Rolf Magnus (Gast)


Lesenswert?

> der benutzer kann aber "den schalter" der den pci steuert selbst
> drücken.

Ist der denn entprellt? Sonst bekommst du eh mehrere Flanken.

> drückt er ihn kurz-> kein problem;

Da müßte er aber sehr kurz drücken.

> drückt er ihn lang -> fallende flanke wird erkannt und pci
> ausgelöst...

Mal angenommen, du redest von AVR: Warum weichst du nicht auf einen
Interrupt-Eingang aus? Bei dem ist einstellbar, worauf er triggert.

von Andreas (Gast)


Lesenswert?

streng genommen ist es ein touch panel, von dem nur kooerdinaten gelesen
werden sollen, wenn es auch gedrückt ist...


>Mal angenommen, du redest von AVR: Warum weichst du nicht auf einen
Interrupt-Eingang aus? Bei dem ist einstellbar, worauf er triggert.

davon rede ich zwar. möchte/kann keinen externen interrupt benutzen...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dann nimm doch einen Timer.  Zum Entprellen brauchst du den
wohl auch bei einem touch panel ohnehin.

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.