Hallo mal wieder. Ich suche seit Tagen nach einer Lösung für ein merkwürdiges Problem. Zur Beschreibung (siehe Anhang): Bei Schaltung A wird der 8Mhz Takt für 1 Sekunde an die Counter (zu Testzwecken beide Eingänge pararallel) weitergereicht. Nach dieser Sekunde werden die Counter ausgelesen zu zeigem beide identische Zählwerte in der Grössenordnung von 8 Megatakten Die Betonung liegt hier auf identisch, was ja auch zu erwarten wäre. Bei Schaltung B kommt nun ein weiterer Takt hinzu. Nun erwarte ich in den Countern ja nur den Zählwert der H-Zeiten. Hier also 50 % vom Sysclock. Tatsächlich klappt das und die Zähler zeigen beide einen Zählwert in der Grössenordnung von 4 Megatakten. Allerding sind die Zählerstände nicht bei jeder Messung identisch. Mal zeigt Zähler A etwas mehr an , mal Zähler B. Die Abweichung liegt im Bereich von 1 - ca. 70 Takten und weist keine Regelmässigkeit auf. Mein Problim ist hier nicht der absolute Messwert sondern der Grund, warum die parallel gespeisten Zähler unterschiedlich zählen. Ich habe statt der AC08 auch HC08 und HCT sowie LS ausprobiert. Ebenso bringt der Ersatz der beiden Dual-In-And durch einen Triple And (AC10) keinen Unterschied. Mir leuchtet nix ein, woher dieser Schlupf kommen kann. Hat vielleicht einer einen Tipp für mich ? Gruss Klaus
Da werden vermutlich Spikes generiert, die der eine Zähler gerade noch erkennen kann und der andere nicht. Nimm ein Scope und untersuche das Signal direkt an den Zählereingängen nach zu kurzen Impulsen.
nun ja .. mit meinem analoge Scope kann ich das nicht messen. Da sehe ich nicht ob von 4 Megapulsen evt. 10 zu schmal sind. und es ist ja auch so, daß mancher Durchlauf Zähler A bevorzugt, mancher aber auch Zähler B. Gruss Klaus
Mit einem analogen Scope wird das schwierig. Dafür benötigt man ein DSO mit Pulsbreitentrigger.
Dann mach es anders herum. Spendier dem betreffenden ..08 ein D-FF zur Synchronisierung oder verlänge den Impuls zu den Zählern.
Hmm, D-FF für den 08er .. wohin sollte der dann deiner Meinung nach ? meinst nen 7474 ? Gruss Klaus p.s. Ich hatte auch schon 7414ern an den Ein und Ausgängen des 08er experimentiert, was auch nix nutzt.
Hallo Deine Generatoren sind wahrscheinlich asynchron. Das UND-Gatter macht bei Änderung beider Eingangssignale Ausgangssignale die der Überlappung beider Signale entspricht. Das können auch sehr kurze Pulse werden. Die Synchronisierung mit D-FFs löst das Problem.
Takte das D-Flipflop mit deinen 8MHz und übernehme damit das Signal des 08.
>D-FF für den 08er .. wohin sollte der dann deiner Meinung nach ?
Überall, wo asynchrone Impulse aufeinandertreffen: an U2, an U4 und U5.
Das ist doch sein Problem: > Mein Problim ist hier nicht der absolute Messwert > sondern der Grund, warum die parallel gespeisten Zähler > unterschiedlich zählen. und nicht die Syncronisierung der Generatoren.
Jetzt können immer noch die 1kHz und der 0,5Hz Puls Spitzen erzeugen, aber deine Zähler sollten so gleich Zählen.
Pin 1 von U5 an Pin 5 vom D-FF und Pin 2 vom D-FF an Pin 3 von U4, wenn ich nicht irre. @Aufpasser: Das Problem ist, dass die Zähler nur gleich aber nicht identisch funktionieren :-) Um das zu beheben, muß man synchronisieren oder "stretschen".
... und den clk vom FF dann an den sysclock 8Mhz ? Ich werde es nachher mal probieren. Wie könnte ich denn als Alternative das Stretching machen. Monoflop ist klar .. aber so schnell ? Als Pulsdauer stelle ich mir dann sowas in der Grössenordnung von 15nS vor um den Counter dann später auch voll auszunutzen. (Die 8Mhz sind jetzt nur für die Testphase. Später will ich so auf 40-50Mhz hoch)
@Entwickler > Allerding sind die Zählerstände nicht bei jeder Messung identisch. Versteh ich immer noch nicht: > Mal zeigt Zähler A etwas mehr an , mal Zähler B. Heißt für mich: jeder der beiden Zähler hat nach jeder Messung einen anderen Displayinhalt. Die Zähler differieren untereinander, obwohl sie den SELBEN Input bekommen (verschliffen oder nicht).
@ Aufpasser >Heißt für mich: jeder der beiden Zähler hat nach jeder Messung einen >anderen Displayinhalt. Die Zähler differieren untereinander, obwohl sie >den SELBEN Input bekommen (verschliffen oder nicht). Ja, exact das meine ich. Beide Zähler IC sitzen an einem Atmega und werden von diesem nach Beendigung eines Messzyklus ausgelesen. (gleiche Softwareroutine) Wenn ich über einen anderen Mega eine definierte Pulsanzahl in die Zähler jage, kann ich beweisen, dass diese sich nicht grundsätzlich verzählen. Alle IC sind bestens gepuffert. 10u tanto, 2,2u Smd und 100nF Ker je IC. Leitungen vom AND zum Zähler mitlerweile exact gleiche Länge (2cm). Und wie gesagt (Bild erster Post) : der Fehler tritt erst auf, wenn der dritte Takt ins Spiel kommt. Selbst, wenn ich eine z-B. eine Tendenz erkenne, dass z.B. Zähler B eher etwas mehr als weniger Zählt ändert das vertauschen der beiden Chips in den Sockeln nicht die Richtung der Tendenz. Also wirklich mirakulös Gruss Klaus
Synchronisier mal den 0,5Hz Takt und den 1kHz Takt mit den 8MHz und mach dann deine Verknüpfung.
Anbei noch eine Messreihe. SYS takt = 8Mhz Dil Quarzosc. Gemessen wird 1 Sekunde lang die oberen Periodenzeiten. (Gate Tim ing abgeleitet von Quarzoscillator) Der dritte Takt (ext. Clck) wird auch aus einem Quarzoscliattor erzeugt. Es sind also 3 Stck. Dil Osc. in der Schaltung (also asynchron) Problem ist derzeit wirklich nicht der Absolutwert der Messung sondern ausschliesslich die Abweichung von A zu B, obwohl diese parallel gespeist werden. Gruss k
>... und den clk vom FF dann an den sysclock 8Mhz ? So hattest Du es schon gezeichnet. >Ich werde es nachher mal probieren. Dann wirst Du feststellen, dass es funktioniert und keinen Sinn mehr darin sehen, es jemals wieder anders zu machen. Durch die asynchronen Taktsignale, insbesondere 1kHz zu 8MHz, entstehen am betrefenden ..08-Ausgang Impulse mit Längen von 0 - 125ns. Die Zähler brauchen eine tw von min. 10ns (siehe Datenblatt). Da es sich bei den Zählern nicht um exakte mathematische Modelle handelt, zählt der eine noch 9,1ns und der andere, sogar 8,7ns. Folglich weichen die Zählerstände am Ende voneinander ab. Oder anders ausgedrückt, der eine Zähler schafft 43MHz und der andere macht bei 41,5MHz schon schlapp. Anderes Beispiel: es wurde ein ATmega angesprochen. Bei diesem und allen anderen µCs werden die Zähleingänge grundsätzlich mit dem internen Takt synchronisiert. Daher liegt die max. Zählfrequenz zumeist bei 1/2 oder 1/4 des CPU-Taktes.
> Wenn ich über einen anderen Mega eine definierte Pulsanzahl
> in die Zähler jage, kann ich beweisen, dass diese sich nicht
> grundsätzlich verzählen.
Somit müssen beide Zähler auch gesund sein.
Allerdings hat bei diesem Test der Ersatz-Impulsgeber einen anderen
Ausgangwiderstand.
Der Output des Gatters hat einen Totem-Pole.
Das passt möglicherweise den Zählern nicht so recht.
Oft hilft einfach 100 Ohm vor den Eingang jedes Zählers (probieren).
... und ich dachte, ich hätte das Problem und auch seine Lösung hinreichend verständlich erklärt.
@ Entwickler Jo .. hast Du ja. Ich habe halt nur noch mal weiter erklärt. @ All Ich werde aufgrund der neuen Tipps einfach mal weiter testen und nachdenken. Dann melde ich mich wieder zum Thema Danke soweit Klaus p.s. Wenn ich es jedoch richtig verstanden habe, würde auch ein Streching am Eingang des Counters helfen. Also eine garantierte Mindestpulslänge von sagen wir 15nS. Wie sollte man das machen ? Zudem sind ja die dafür verwendeten Chips auch nicht unendlich präzise und schnell. Das gäbe dann wohl nur ein Verschieben des Problems, oder ?
Hallo Leute, um diesen Beitrag nun mal zu vollenden schreibe ich hier mal die Schlussinformationen: Zunächst einmal die Bestätigung, dass ihr recht hattet und das Problem die fehlende Synchronisation und die dadurch entstehenden "superkurzen" Impulse waren. Es fehlte also noch ein extra FF. Da ich die Problematik mit einem analog Osci nicht messen konnte und auch ein Simmulator natürlich keine Ergebnisse liefert (da sind ja alle Bauteile gleich), war es etwas zwickelig die richtige Position für das extra FF zu finden. Im Anhang nun also die endgültige Schaltung und das Oscillogramm. Nun zur Sinn- und Funktionsbeschreibung: A) Sinn: gebaut wurde ein spezieller Frequenzzähler (mit Hardwarecountern 74LV8154), der eine kombinierte Messung von F und reziprok F durchführt. Zudem wird durch die getrennte Erfassung der Pulspakete für H-Periode und L-Periode auch gleich noch der Tastgrad von Fmess erfasst. Die Ablaufsteuerung erfolgt über Atmega. B)Funktion: Am Eingang Fmess liegt die zu messende Frequenz an. Vor einer Messung werden die FF und auch die Counter IC über ein L am Eingang "clear Signa" zurückgesetzt. nun erzeugt die CPU ein H am Eingang Gate Timing. Hier bestimmt die CPU in etwa die Länge der Messung z.B. 1 sekunde. Der FF U1B wartet nun auf die nächste steigende Flanke von Fmess und aktiviert durch H am Ausgang Q des FF die eigentliche Messung. Nach der Vorgabe von z.B. 1 sekunde setzt CPU das Gate Signal wieder auf L. Dies beendet jedoch nicht die eigentliche Messung, da das FF noch auf die nächst folgende steigende Flanke von Fmess wartet. die eigentliche Messung wird also meistens etwas länger dauern als die Vorgabe von 1 Sek. Dies stellt aber sicher, dass immer nur ganze Perioden gemessen wurden. Zudem erfassen die Zähler für Periode L + H die Systemtakt (25Mhz) Pulspakete für die eigentlichen Perioden. Es ist also eine Perioden- messung über soviele Perioden wie sie in etwa 1 Sekunde hereinpassen. Nun haben wir in den Zählern einige Daten gesammelt, wissen aber nicht genau wie lang die Messung eigentlich real gedauert hat. Dies kann jedoch einfach ermiitelt werden, da ja der Systemtakt (25Mhz) bekannt ist un d die Addition von periode-L und Periode-H die Anzahl Takte kennt. wenn also Systemtick = 1 / 25Mhz ist Peri_low = die Pulspakete für Low Peri_High = die Pulspakete für High Perigesamt_a = Peri_low + Peri_high (aus Korrekturgründen muss jeweils von Perihigh und Perilow 1 mal Freqcounts_a abgezogen werden .. siehe Nadelimpuls Oscillogramm) ergibt sich die Messzeit aus: Messzeit_a = Perigesamt_a * Systemtick Für die Anzeige der gemessenen Frequenz wird nun nicht der Zähler Fmess angezeigt (der hat ja keine Kommastellen) sondern ein wert aus Fmess und Periodenzeit gebildet. reale Frequenz = Freqcounts_a / Messzeit_a Insofern haben wir jetzt einen recht genauen Frequenzzähler mit kombinierter Periodenmessung, der keine Bereichsumschaltung benötigt, da der Einfluss der Priodenmessung zu kleineren FMess automatisch zunimmt und zu steigender Fmess abnimmt. Ich hoffe, ihr könnt mit den Infos was anfangen. Ich habe diese Schaltung nun gleich 2 mal aufgebaut (2-Kanal Zähler = 6 Stück 74LV8154) und diese beiden Kanäle dann wieder über FF so gekoppelt, dass die Zeitdifferenz der steigenden Flanke von Kanal A und B auf einen 7ten 74LV8154 geschickt wird (in 1/25Mhz). Dadurch kann man ggf. auch noch eine Phasenmessung durchführen oder hat eine recht genaue Stoppuhr. Leider ist die Grenzfrequenz der 74LV8154 recht niedrig. 50mhz geht noch durch. Deshalb habe ich vor dem Zähler für Fmess noch einen /2 Prescaler mit 74F74 gesetzt, der dann auch ausgewertet wird. Gruss Klaus Ergänzung: Der FF U4B mit der Led wird vom CPU abgefragt ob die letzte Messung auch tatsächlich schon beendet ist
Ich sehe da 2 Probleme: Beim 74HC74 wird auf die steigende Flanke getriggert. Das heißt die Änderung am Ausgang des FF kommt genau in der H Phase des Taktes an. An den Zählerausgänngen bekommt man so beim Umschalten des FF U16A gerade kurze Pulse von etwa 2 Gatterlaufzeiten - das sind genau solche Pulse die man vermeiden sollte weil die eventuell aureichen, um den Zähler zu triggern oder auch nicht. Wenn das Eingangssignal hart an der Grenze ist, kann das FF auch mal länger brauchen (Grenze zum metastabilen Zustand) - dann wird er Puls auch länger. Der Takt zum FF sollte da besser noch einmal invertiert werden. Das Signal vom Gate ist auch gerade falsch synchronisiert. Das FF U1B macht das Signal Synchron zum Eingangssignal - nicht mit dem Takt. Bei den UND gatter U7C und U7D gibt es dann ggf. Probleme, wenn die Flanken dicht zusammen fallen. Das wird nicht so oft passieren (maximal 2 mal bei einer Messung), ist aber nicht gut. Eine Lösung könnte es sein - an FF U1B nicht direkt das Eingangssignal, sondern einen Ausgang vom FF U16A zu nutzen das ist dann mit dem Takt synchron. Welche Polung ist Geschmackssache. Vom Timing kommen da aber einige Verzögerungen zusammen. Das könnte kritischer als die 50 MHz des Zählers werden - eventuell lieber auch hier ein 74F74.
Hallo Ulrich, danke für die Einlassung. Es liest sich gut und ich werde die ganze Sache nochmal unter diesen Aspekten durchdenken. Das mache ich aber eher morgen als heute, da hier einige Konzentration nötig sein wird. Vielleicht sind die von dir erwähnten Problemchen ja auch der Grund, warum ich meine angepeilten 50Mhz Sysclock nicht verwenden kann (Fehlmessungen) und daher auch mit den jetzigen 25 Mhz glücklich bin, da es prima klappt . Anbei noch ein Extrafoto von einem Quarzofen nebst Schaltung , der sozusagen als Abfallprodukt entstanden ist. Als Testreferenz verwende ich übrigens den Langwellensender Monaco, Roumoules, 2x 1000 Kilowatt in etwa 500km Entfernung. Also bis denne .. ich gehe wieder in Klausur bis weisser Rauch aufsteigt. Gruss Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.