www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Takt modulieren via OSCCAL


Autor: Heiko Nocon (c-hater)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Diensthabender Troll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> mal mit dem internen Oszillator intensiver beschäftigt

ja.....

der AVR ist kein PLL-IC. OSCCAL dient lediglich zum kompensieren der 
herstellungsbedingten toleranzen. siehe auch appnote AVR053 von atmel.

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin kein AVRer. Du meinst den internen Oszillator oder externes Quarz? 
Der interne wird nicht stabil genug sein, so daß die Schleife 
immerwieder ausrastet.


Gruß -
Abdul

Autor: Heiko Nocon (c-hater)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Phasenrauschen wird trotzdem beschissen sein, weil das meist einfach 
Ringoszillatoren ohne Induktivitäten sind. Aber wenns für deine 
Anwendung reicht, warum nicht!


Gruß -
Abdul

Autor: GvTT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GvTT schrieb:
> Ich wäre an Deinem PLL Code interessiert.
Such mal nach 'OSCCAL calibration'. Das wird auf jeden Fall in der 
AVR-Butterfly Demoapplikation verwendet. Wenn Du die Funktion etwas 
abwandelst und öfters mal aufrufst, hast Du Deine (Soft-)PLL.

Gruß,
Gunter

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.