Takt modulieren via OSCCAL

#1378276
Lesenswert?

Ich versuche gerade, ein digitales Software-PLL zu realisieren. D.h. 
Phasenkomparator und Tiefpaß sind in Software realisiert, den "VCO" soll 
der interne Taktgenerator eines ATtiny sein, der über OSCCAL 
entsprechend gesteuert wird.

Tja, wie das immer so ist, bin ich dabei auf Probleme gestoßen. Ganz 
offensichtlich verhält sich der Taktgenerator keinesfalls so, wie man es 
von den zugegebenermaßen nur zarten Andeutungen seiner Funktionsweise im 
Datenblatt erwarten könnte. Nur wenn ich den Tiefpaß ganz furchtbar tief 
lege, funktioniert es wie erwartet. Leider sind nur die synthetischen 
Taktquellen, die ich zum Testen verwende, derart freundlich, daß ich den 
Tiefpaß so sehr tiefstapeln lassen kann. Sobald ich eine Waveform des 
realen Signals meiner Anwendung anlege, kann die PLL entweder nicht mehr 
einrasten oder höchstens mal zufällig. Nach vielem oszilloskpieren bin 
ich mittlerweile zu der (zu überprüfenden) Erkenntnis gelangt, daß 
Änderungen des Wertes in OSCCAL wohl erst eine Auswirkung haben, wenn 
der Taktgenerator sich auf die durch den vorigen Wert gegebene Frequenz 
eingeschwungen hat. Das ist zumindest meine derzeitige Arbeithypothese.

Hat sich jemand schon mal mit dem internen Oszillator intensiver 
beschäftigt und kann meine These bestätigen oder widerlegen? Mit 
beidem wäre mir geholfen.
#1380755
Lesenswert?

Ja, gemeint ist natürlich der interne Oszillator, nur der läßt sich über 
das OSCCAL-Register steuern.

Das Problem hat sich nach einem Tag Programmierabstinenz und danach 
einem nochmaligen kritischen Blick in den Quelltext quasi von allein 
gelöst. Zwei fiese, gut versteckte Fehler in der Software beseitigt und 
schon ging's wie gewünscht.

Wie ich immer sage: Wenn man's richtig macht, dann funktioniert's auch.

Natürlich ist das Konstrukt keine besonders "schöne" PLL. Wegen der nur 
relativ groben möglichen Schritte für die Kalibrierung via 
OSCCAL-Register weist das Ding erwartungsgemäß einen relativ starken 
Phasenjitter auf. Das war mir aber vorher klar und spielt für die 
Zielanwendung keine Rolle. Da reicht es, wenn das Ding überhaupt 
zuverlässig einrastet und auch eingerastet bleibt. Und das tut es (jetzt 
endlich :o)
Gast #3812484
Lesenswert?

Hallo Heiko,

ich stehe gerade vor einem ähnlichen Problem (Tiefpass und PLL im 
ATTiny).
Ich will ihn mit dem DCF77 (77,5kHz) synchronisieren.

Ich könnte den ATtiny frei laufen lassen und alles über Timer 
synchronisieren oder halt den ATtiny via Software PLL in Gleichtakt 
bringen.

Die Basis Frequenz ist also sehr stabil, nur muss die PLL Aussetzer im 
Ref. Signal ausgleichen.

Ich wäre an Deinem PLL Code interessiert. Kannst Du mir diesen eventuell 
schicken (mail(at)tardy.de)?

Danke und Grüße
Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren