Forum: Mikrocontroller und Digitale Elektronik Steigende und Fallende Flanke Abfangen bei dem gleichen Pin


von Ju (Gast)


Lesenswert?

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!!

von mbc (Gast)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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.

von Ju (Gast)


Lesenswert?

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).

von Johannes M. (johnny-m)


Lesenswert?

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.

von Ju (Gast)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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
Noch kein Account? Hier anmelden.