www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taktflankenerkennung


Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich suche eine Umsetzung für eine Taktflankenerkennung. Die Schaltung 
muss taktsynchron entweder die positive oder negative Flanke erkennen 
können.

Wenn ich mich noch richtig an meine Informatikstunden entsinnen kann, 
kann man sowas doch aus 3 NOT-Gliedern in Reihe und einem 2x-UND machen 
indem man die Laufzeit des Signals durch die NOT-Glieder ausnutzt. Haut 
das hin oder nicht?

Das ganze ist nicht sonderlich zeitkritisch.


Gruß
Karl

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit den NOT&AND Gattern ist korrekt.
Aber versteh ich nicht ganz, was du damit meinst:

>Ich suche eine Umsetzung für eine Taktflankenerkennung. Die Schaltung
>muss taktsynchron entweder die positive oder negative Flanke erkennen
>können.


Willst du mit den entstandenen Impuls zB einen Zähler zählen lassen?

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das kannste du so machen. Du erwischst dann immer die positive 
Flanke.Wenn du die negative willst setze einen Inverter davor oder 
ersetz das und durch ein Oder Gatter.


Gruss Helmi

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hilfe :-)

Nein, die von der Schaltung erkannte Flanke wird dann mit einem µC 
weiterverarbeitet.

Mit dem "Schaltung muss taktsynchron sein" meinte ich, dass die 
Schaltung zur Flankenerkennung möglichst synchron mit dem Takt arbeiten 
muss. Wenn also eine entsprechende Flanke kommt, soll der Ausgang der 
Schaltung auch sofort reagieren. Eben binnen weniger µs. Das ist bei so 
Standardgattern ja kein Problem.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Teil sowieso von einem uC weiterverbastelt wird, dann versteh 
ich dein Problem nicht. Bei einem AVR kann ich z.B. einen ext. Interrupt 
oder einen Pinchange Interrupt für sowas verwenden. Die 
Signaländerungsrate des Eingangssignals muss dann halt kleiner als die 
Taktfrequenz sein. (glaub Faktor 2 od. 4, damit der uC die Flanke sicher 
erkennt).

Ein AVR mit 16 Mhz Takt braucht ca. 65 ns für ein Befehl, als innerhalb 
einer
Mikrosekunde ca. 15 Befehle. Wenn da zu langsam ist, dann würde ich 
einen CPLD empfehlen....

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ginge auch noch der Input Capture. Damit kannst du taktzyklengenau 
die Flanke erkennen. Wenn die Flanke eintritt, wird der aktuelle 
Timer-Wert in einem I/O-Register gesichert, dann ein Interrupt 
ausgelöst. Da mußt du den Wert nur noch auslesen und verarbeiten, bevor 
die nächste Flanke kommt.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>enn also eine entsprechende Flanke kommt, soll der Ausgang der
>Schaltung auch sofort reagieren. Eben binnen weniger µs. Das ist bei so
>Standardgattern ja kein Problem.

Dazu brauchst du KEINE externe Logik!

Einfach das zu untersuchende Signal an einen 
Extern-Interrupt-Pin_Eingang.

Mit dem Programm kannst du dann sagen, auf welche Flanke der Interrupt 
ausgelöst werden soll, und was passieren soll.
Reaktionszeit: ca 4..10 CPU-Takte, bei 16MHz <1µs.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl wrote:
> Nein, die von der Schaltung erkannte Flanke wird dann mit einem µC
> weiterverarbeitet.

Das kannste abschminken, die Schaltung mit Gatterlaufzeit dürfte nur 
etwa 20ns Pulsbreite erzeugen, viel zu kurz für nen MC.

Laß also die Flanke den MC einfach selber erkennen.

Ist die original Pulsbreite aber schon sehr kurz, nimm nen Flipflop zum 
Speichern der Flanke und setz den MC-Interrupt auf beide Flanken.


Peter

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Kondensator in Reihe tut das auch.
Ausgang -> Kondensator -> Eingang
Evtl noch eine Diode und einen Widerstand an den Eingang hängen und gut 
ist.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Reaktionszeit: ca 4..10 CPU-Takte, bei 16MHz <1µs.

Beim AVR (so es denn um den geht - der OP hat dazu nix geschrieben) 
geht's eher so Richtung 10 bis 15 Takte, wenn man die ISR in Assembler 
implementiert und keinen Sleep-Modus benutzt.

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.