Forum: Mikrocontroller und Digitale Elektronik Monoflop, das auf beide Flanke triggert, zur Taktverdoppelung


von Stefan Bergdorf (Gast)


Lesenswert?

Hallo zusammen,

Ich möchte ein Taktsignal dazu verwenden, in meinem ATMega88 einen Timer 
laufen zu lassen. Leider musste ich nun feststellen, dass beide Flanken 
(steigend und fallend) die für mich interessanten Taktinformationen 
tragen.
Da ich nun aber nicht jeden 2. Takt interpolieren möchte sondern gerne 
die volle Auflösung hätte, würde ich nun das Taktsignal durch eine 
monostabile Kippstufe schicken um so aus jeder Flanke einen "ganzen 
Takt" zu generieren.
Die Frequenz meines Taktsignals variiert, ist aber auf 26kHz begrenzt, 
ich möchte daraus also bis zu 52kHz "interpolieren" und das eben per 
Hardware.

Nun zu meinem Problem:
Unter der 74XX-Familie gibts ja einige monostabile Kippstufen, doch 
leider finde ich keine, welche sich zum Takt verdoppeln eigenen, da sie 
alle das "Problem" haben wie z.B. der 74xx123
http://docs-europe.electrocomponents.com/webdocs/0cb3/0900766b80cb368f.pdf
Legt man das Signal an /A und B an so "blockiert" immer einer der Beiden 
den Ausgang, welcher dann auf Low-Pegel liegt (siehe Wahrheitstabelle)

Nun verzweifle ich ein wenig, das Problem der Taktverdopplung ist doch 
nichts neues. Warum finde ich diesbezüglich keine Schaltungen?
Kann mir jemand helfen?

Vielen Dank
Stefan

von Harald Wilhelms (Gast)


Lesenswert?

Stefan Bergdorf schrieb:
> Hallo zusammen,
>
> Ich möchte ein Taktsignal dazu verwenden, in meinem ATMega88 einen Timer
> laufen zu lassen. Leider musste ich nun feststellen, dass beide Flanken
> (steigend und fallend) die für mich interessanten Taktinformationen
> tragen.
> Da ich nun aber nicht jeden 2. Takt interpolieren möchte sondern gerne
> die volle Auflösung hätte, würde ich nun das Taktsignal durch eine
> monostabile Kippstufe schicken um so aus jeder Flanke einen "ganzen
> Takt" zu generieren.
> Die Frequenz meines Taktsignals variiert, ist aber auf 26kHz begrenzt,
> ich möchte daraus also bis zu 52kHz "interpolieren" und das eben per
> Hardware.
>
> Nun zu meinem Problem:
> Unter der 74XX-Familie gibts ja einige monostabile Kippstufen, doch
> leider finde ich keine, welche sich zum Takt verdoppeln eigenen, da sie
> alle das "Problem" haben wie z.B. der 74xx123
> http://docs-europe.electrocomponents.com/webdocs/0...
> Legt man das Signal an /A und B an so "blockiert" immer einer der Beiden
> den Ausgang, welcher dann auf Low-Pegel liegt (siehe Wahrheitstabelle)
>
> Nun verzweifle ich ein wenig, das Problem der Taktverdopplung ist doch
> nichts neues. Warum finde ich diesbezüglich keine Schaltungen?
> Kann mir jemand helfen?
>
> Vielen Dank
> Stefan

Vielleicht solltest Du einfach zwei Monoflos nehmen und die
Ausgänge "verunden".
Gruss
Harald

von Stefan Bergdorf (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Vielleicht solltest Du einfach zwei Monoflos nehmen und die
> Ausgänge "verunden".

Das wäre eine logische folge, aber wäre es dann nicht weniger 
Bauteileaufwand einen Schmittgetriggerten XOR zu finden und einen 
Eingang mittels RC-Glied zu verzögern?

von bitte löschen (Gast)


Lesenswert?

Mich wundert, dass noch keiner vorgeschlagen hat, einen Tiny dafür zu 
verwenden. Da wird das Problem mit einem Bauteil erschlagen. Na ja, 2 
mit Stützkondensator.

Die Frage drängt sich auf, warum das Problem nicht durch den µC selbst 
zu lösen sein soll.
Wenn Du mal kurz beschreibst, was Du eigentlich machst, wird das Problem 
fassbarer.

von Peter D. (peda)


Lesenswert?

Stefan Bergdorf schrieb:
> Da ich nun aber nicht jeden 2. Takt interpolieren möchte sondern gerne
> die volle Auflösung hätte, würde ich nun das Taktsignal durch eine
> monostabile Kippstufe schicken um so aus jeder Flanke einen "ganzen
> Takt" zu generieren.

Beide Flanken heißt, das Signal ist bereits das 1.Bit.
Du gibst es also ganz einfach auf den Timereingang und gut is.
Und beim Lesen liest Du den Timer und den Pin ein, Du hast also 
insgesamt einen 17Bit-Wert.


Peter

von Stefan Bergdorf (Gast)


Lesenswert?

Also nach langem Grübeln habe ich mich fast für die quick & dirty Lösung 
mit nem einfachen EXOR entschieden.
Und obwohl es nicht mehr zum Titel passt möchte ich doch nicht einen 
weiteren Threat für meine Frage, welche mich quält, aufmachen, da es ja 
doch noch irgendwie hierzu gehört.

Ein 74xx86 Gatter sei so beschalten, dass das Taktsignal einmal direkt 
und einmal über ein RC-Glied "verzögert" in das Gatter geführt wird.
Aus dem Datenblatt entnehme ich folgende Werte:
High Input Voltage: 0.7 * VCC
Low Input Voltage:  0.3 * VCC
Der Bereich dazwischen scheint undefiniert da nichts von einem 
Schmitt-Trigger am Eingang geschrieben steht. Kann das dazu führen, dass 
am Ausgang ungewollte Flanken auftauchen? Oder wird das Gatter nur bei 
einem nicht näher spezifizierten Pegel am Eingang umschalten?




Peter Dannegger schrieb:
> Beide Flanken heißt, das Signal ist bereits das 1.Bit.
> Du gibst es also ganz einfach auf den Timereingang und gut is.
> Und beim Lesen liest Du den Timer und den Pin ein, Du hast also
> insgesamt einen 17Bit-Wert.
das ist richtig, ich möchte aber einen Comparematch mit dem 
entsprechenden Zähler ausführen. Ich könnte zwar bestimmt in einem 
Interrupt auch noch das "externe" LSB prüfen und ggf. warten, lieber ist 
mir aber eine Möglichkeit mit Taktverdopplung, da ich ein wenig Angst 
habe bei niederen Frequenzen des Taktsignals Daten von meinem SPI-Bus zu 
verlieren, der ebenfalls Interruptgesteuert ist.

von Falk B. (falk)


Lesenswert?

@Stefan Bergdorf (Gast)

>Der Bereich dazwischen scheint undefiniert da nichts von einem
>Schmitt-Trigger am Eingang geschrieben steht. Kann das dazu führen, dass
>am Ausgang ungewollte Flanken auftauchen?

Ja.

> Oder wird das Gatter nur bei
>einem nicht näher spezifizierten Pegel am Eingang umschalten?

Jain. Aber ohne Hysteres geht das nicht solide.

>Interrupt auch noch das "externe" LSB prüfen und ggf. warten, lieber ist
>mir aber eine Möglichkeit mit Taktverdopplung, da ich ein wenig Angst
>habe bei niederen Frequenzen des Taktsignals Daten von meinem SPI-Bus zu
>verlieren, der ebenfalls Interruptgesteuert ist.

Über welche Bitraten reden wir denn? Ich glaub das kann man rein is 
Software besser lösen.

MfgG
Falk

von Stefan Bergdorf (Gast)


Lesenswert?

Falk Brunner schrieb:
> Über welche Bitraten reden wir denn? Ich glaub das kann man rein is
> Software besser lösen.

Bitraten? du meinst die Frequenz? ich erwarte zwischen 0 und 26kHz.


Aufgabenstellung, die dahinter steckt:
Eine Motorposition soll mit 10bit Auflösung gemessen werden und an 
bestimmten Positionen sollen zeitnah Funktionen ausgeführt werden! 
(Erstmal sollen LEDs eine Scheibe Papier anblinken)

Einen Sensor, welcher mit 10bit Auflösung die Position absolut messen 
kann, habe ich bereits. Dieser lässt sich aber über sein Synchronous 
Serial Interface (SSI; Ähnlich SPI nur mit 16 bit) nicht schnell genug 
auslesen, um bei 3000 U/min die Position exakt bestimmen zu können. 
Deshalb wird das LSB noch direkt heraus geführt. Ich möchte nun das LSB 
"interpolieren" um den Zähler exakt in meinem ATMEGA abbilden zu können 
und so Interrupts an den gewünschten Positionen ausführen zu können.

Wie groß die Prozessorauslastung durch andere Anwendungen noch werden 
kann, kann ich aktuell noch nicht abschätzen, ich möchte mir allerdings 
möglichst viel Resourcen freihalten.

von Falk B. (falk)


Lesenswert?

@  Stefan Bergdorf (Gast)

>Eine Motorposition soll mit 10bit Auflösung gemessen werden und an
>bestimmten Positionen sollen zeitnah Funktionen ausgeführt werden!

Hmmm.

>Einen Sensor, welcher mit 10bit Auflösung die Position absolut messen
>kann, habe ich bereits. Dieser lässt sich aber über sein Synchronous
>Serial Interface (SSI; Ähnlich SPI nur mit 16 bit)

Ist mir bekannt.

> nicht schnell genug
>auslesen, um bei 3000 U/min die Position exakt bestimmen zu können.
>Deshalb wird das LSB noch direkt heraus geführt. Ich möchte nun das LSB
>"interpolieren" um den Zähler exakt in meinem ATMEGA abbilden zu können
>und so Interrupts an den gewünschten Positionen ausführen zu können.

Ob das so eine gute Idee ist? Ich würde lieber nach einem schnellen 
Sensor suchen.

>Wie groß die Prozessorauslastung durch andere Anwendungen noch werden
>kann, kann ich aktuell noch nicht abschätzen, ich möchte mir allerdings
>möglichst viel Resourcen freihalten.

Und wozu brauchst du dann die Taktverdopplung?

MfG
Falk

von Stefan Bergdorf (Gast)


Lesenswert?

Falk Brunner schrieb:
> Ob das so eine gute Idee ist? Ich würde lieber nach einem schnellen
> Sensor suchen.

Der Sensor ist schon fix. Aufgrund seines Preis-Eignung-Verhältnis wurde 
er schnell ausgewählt und beschlossen (nicht von mir allein).
Nungut, ich hab jetzt eine Lösung mit einem 74xx1G86 und einem 74xx2G14 
gebastelt. Die kleinen Gatter kosten ein paar Cent und erfüllen den 
zweck.

Das Signal wird jetzt einerseits direkt in das XOR-Gatter andererseits 
über  "Schmitt-trigger - RC-Glied - Schmitt-trigger" ins andere Gate des 
selben XOR geschickt. Das RC-Glied lässt sich berechnen und fertig ist 
der Spaß.
Sollte laufen meine ich!

Trotzdem danke euch!


PS: Hätte nicht erwartet, dass ein simples Takt verdoppeln ohne 
großartige Anforderungen an Symmetrie o.Ä. des Ausgangssignals derart 
schwierig sein kann...

von RTFM (Gast)


Lesenswert?

'm88-Datenblatt
Kapitel 12.1 ff.
"Pin-Change-Interrupt"
der zappelt bei jeder Flanke... ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan Bergdorf schrieb:
> PS: Hätte nicht erwartet, dass ein simples Takt verdoppeln ohne
> großartige Anforderungen an Symmetrie o.Ä. des Ausgangssignals derart
> schwierig sein kann...
Man könnte eine Taktverdoppelung auch in SW lösen wie im 
Beitrag "Re: Frequenzverdopplung" beschrieben.


Bleibt noch die Frage, die
Falk Brunner schrieb:
> Und wozu brauchst du dann die Taktverdopplung?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich meine mich zu erinnern, dass der 74HC4538  (oder sein Vorläufer 
CD4528/4538) die Enable-Logik invers zum 74121/122/123 hat, vielleicht 
geht die ursprünglich angedachte Schaltung damit.

von Wilhelm F. (Gast)


Lesenswert?

Für eine Taktverdopplung mit völlig symmetrischem Ausgangssignal gäbe es 
noch die PLL. Hat aber auch Kniffeligkeiten mit Einschwingzeiten und 
Frequenzbereichen. Ist die Frage, ob das hier Sinn macht.

Die Frequenzverdopplung mit XOR-Gattern sah ich auch schon mal. Und zwar 
machte jemand 24MHz aus 12MHz. Als Verzögerungsglied hatte die aber 
einfache TTL-Glieder, anstatt RC.

von Uwe (Gast)


Lesenswert?

Genau RTFM Fehler !

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.