mikrocontroller.net

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


Autor: Ju (Gast)
Datum:

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

Autor: mbc (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Ju (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Ju (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

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.