Hallo, Bin ich AVR Anfänger (Mit ATmega128). Möchte ich bei dem gleichen Pin zuerst fallende Flanke abfangen (und was zu tun). Danach auch steigende Flanke (und auch was andere zu tun) usw. (Es ist ein Zyklus.) Hier brauche ich eigentlich 2 Externel Vector. Wie sieht für diesen Fall Source Code aus? Vielen Dank!!
Ich antworte mal als absoluter Laie: Nachdem die erste Flanke erkannt wurde, mit dem Interrupt die Routine für die Flankenauswertung des Portpins abändern bzw. einfach toggeln lassen. So ändert sich bei jeder Flankenänderung auch die Auslösung des Interrupts, der eine Portpin reagiert somit auf die steigende und fallende Flanke. Ein Beispiel kann ich leider nicht geben, aber das Prinzip sollte funktionieren. MFG Marco
Die externen Interrupts 4-7 können so konfiguriert werden, dass sie auf beide Flanken reagieren. Siehe Datenblatt. Frage ist allerdings, was Du zwischen den Flanken tun willst. Wenn es eine Periodendauermessung werden soll, dann nimm die Input Capture-Funktion.
Danke für die Beantwortung! Ich muss die "steigende" und "fallende" Fälle unterscheiden. Es gibt für jeweilige Fall nur eine einfach Operation für andere 2 Pins (von H nach L).
Ju wrote:
> Ich muss die "steigende" und "fallende" Fälle unterscheiden.
Wenn gewährleistet ist, dass zwischen zwei Flanken genug Zeit vergeht,
dann ist es doch kein Problem, im Interrupt Handler den Zustand des Pins
abzufragen. Dann weißt Du auch, ob es eine steigende oder eine fallende
Flanke gewesen ist.
Das Problem ist, habe ich bei Hardware Design schon INT1 ausgewählt. :) Deswegen gibt es jetzt schon zuviel Arbeit für mich, wenn ich jetzt die Pin wechseln.
Ju wrote: > Das Problem ist, habe ich bei Hardware Design schon INT1 ausgewählt. :) > Deswegen gibt es jetzt schon zuviel Arbeit für mich, wenn ich jetzt die > Pin wechseln. Dann musste den Interrupt eben auf eine Flanke konfigurieren (die ISC-Bits entsprechend setzen) und im Interrupt Handler jeweils die Flankenrichtung umschalten. Hat sogar den Vorteil, dass Du den Pin nicht zusätzlich noch mal einlesen musst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.