Forum: Mikrocontroller und Digitale Elektronik Taktflankenerkennung


von Karl (Gast)


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

von Matthias L. (Gast)


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?

von Helmi (Gast)


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

von Karl (Gast)


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.

von Matthias (Gast)


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

von Rolf Magnus (Gast)


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.

von Matthias L. (Gast)


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.

von Peter D. (peda)


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

von Gast (Gast)


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.

von Rolf Magnus (Gast)


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.

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.