www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Genaue Torzeit für Frequenzzähler


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich benutze den Timer 1 eines ATmega128, um mittels "output compare" 
einen Impuls definierter Länge zu erzeugen, welcher über den OC-Pin an 
einen externen Frequenzzähler geht. Nun ist es so, dass die 
Frequenzanzeige sehr stark schwankt und ich vermute, dass da evtl. im µC 
ein Takt oder so fehlt.

Der relevante Codeauszug:
  #define XTAL  7372800L

  //TIMER1 initialize - prescale:256
  // WGM: 4) CTC, TOP=OCRnA
  // desired value: 1Sec
  // actual value:  1,000Sec (0,0%)

  TCCR1B = 0x00; // stop
  TCNT1H = 0x8F; // setup
  TCNT1L = 0x82;
   
  // Torzeit 1s
  OCR1AL = 0x7E; // theoretischer Wert
  TCCR1A = 0x40;
  TCCR1B = 0x0C; // start Timer

  TIMSK |= 1<<OCIE1A;   

  SEI();

  while(1)

Ist es so, dass da mal ein Takt mehr oder weniger vergeht, bis zum 
Interrupt oder kommt dieser wirklich stets exakt nach der gleichen 
Anzahl Takte?

Tom

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke ein per Timer Hardware erzeugter Timingpuls sollte immer 
gleich lang sein. Das kann man von einem per Interrupt Erzeugten nicht 
mehr sagen. Wie waer's mit Nachmessen mit einem Scope. Das sollte 
schneller zu sehen sein als hier zu fragen.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die zu messende Frequenz liegt im Bereich von 80 MHz, die 
Frequenzschwankeungen im Bereich von ca. +- 200 Hz. Die Schwankung der 
Torzeit lässt sich daher mit einem Scope leider nicht messen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tom (Gast)

>Frequenzanzeige sehr stark schwankt und ich vermute, dass da evtl. im µC
>ein Takt oder so fehlt.

Welche Taktquelle misst du? Läuft dein AVR wirklich mit dem Quarz? [[AVR 
Fuses]] richtiggesetzt?

>Ist es so, dass da mal ein Takt mehr oder weniger vergeht, bis zum
>Interrupt oder kommt dieser wirklich stets exakt nach der gleichen
>Anzahl Takte?

Wenn du das mit Output Compare machst, dann ist der Interrupt egal, die 
Hardware macht das alleine. Und das ist immer auf den Takt genau gleich 
(wenn du nicht zwischendurch am Timer oder Prescaler rumfummelst).

MfG
Falk

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fuses sind definitiv korrekt. Für Debuggingzwecke nutze ich auch die 
UART bei 38K4 und die läuft fehlerfrei.

Kleine Korrektur: die Schwankung der Torzeit lässt sich mit MEINEM Oszi 
leider nicht mehr messen :)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tom (Gast)

>Die zu messende Frequenz liegt im Bereich von 80 MHz, die
>Frequenzschwankeungen im Bereich von ca. +- 200 Hz. Die Schwankung der
>Torzeit lässt sich daher mit einem Scope leider nicht messen.

Logisch, die Schwankung sind 2,5 ppm!!! Das ist fast gar nix! Woher 
kommt das Messignal? Kann auch Jitter sein, in der Torzeit oder im 
Messignal.

MfG
Falk

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Messignal stammt von einem herkömmlichen Quarzoszillator, wie er in 
z. B. in PCs eingesetzt wird. Wie hoch ist denn der Jitter bei 
handelsüblichen Oszillatoren?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tom (Gast)

>Das Messignal stammt von einem herkömmlichen Quarzoszillator, wie er in
>z. B. in PCs eingesetzt wird.

Sollte passen. Hast du auch 100nF an Vcc/Gnd?

> Wie hoch ist denn der Jitter bei handelsüblichen Oszillatoren?

Kann du nicht messen, liegt im Sub-Nanosekundenbereich (typisch 40ps).

Mfg
Falk

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>sehr stark schwankt
:-))

witzig, das sind rund 2 ppm;
in dem bereich liegt die genauigkeit, die ein standard quarz überhaupt 
hat!

geht also perfekt.

für etwas (!) mehr genauigkeit brauchste low-jitter oszillator + ofen
für deutlich mehr...atomuhr.

wozu soll das denn sein?

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da die 80MHz ja nicht synchron zum AVR laufen denke ich die 2.5ppm sind 
ein sehr guter Wert.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Düsentrieb (Gast)

>witzig, das sind rund 2 ppm;
>in dem bereich liegt die genauigkeit, die ein standard quarz überhaupt
>hat!

Naja, nicht ganz. Du haust hier Genauigkeit und Stabilität in einen 
Topf, das sind aber zwei verschiedene Paar Schuhe.

>geht also perfekt.

Würde ich nicht so ohne weiteres behaupten. Ich weiss jetzt aber nicht, 
wieviel so ein 0815 Oszillator an niederfrequentem Jitter innerhalb 
einer Sekunde macht. Ich würde da eher den Oszillator vom AVR im 
Verdacht haben, so dolle sind die nicht.

MfG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ sechszweifuenf (Gast)

>Da die 80MHz ja nicht synchron zum AVR laufen denke ich die 2.5ppm sind
>ein sehr guter Wert.

NEIN! Nicht bei einer Torzeit von 1 Sekunde!

Bei 80 MHz misst du in einer Sekunde 80.000.000 Takte. Durch die 
Asynchronität hast du einen systematischen Messfehler von EINEM Takt. 
Das sind hier gerade mal 1 / 80.000.000 = 0,0125 ppm!

Die 2,5 ppm werden erst bei einer Torzeit von 400.000 Takten ereicht, 
sprich 5ms.

Mfg
Falk

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du haust hier Genauigkeit und Stabilität in einen
Topf

jein...

grund-genauigkeit is -ohne abgleich- eher bei 10-20ppm;
kurzzeit-jitter hängt sehr vom kristall+oszillator-typ ab, mit dem 
gatter-oszillator in einem ratternden chip liegt er optimal .... :-)

minimum wäre extra externen osz. bauen...siehe quarzkochbuch
oder low-jitter osz. fertig, zb von valpey-fisher
ala http://www.valpeyfisher.com/Products.aspx?ProductCode=XO

typ VFXO202  , 1ps jitter :-)))

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Gegenprobe : Lass den AVR mit einem Teiler zB 1:10 am 80MHz laufen. 
Dh den AVR auf ext clock umkonfigurieren, die Werte auf 8MHz umrechnen 
und los geht's. Dann darf der Jitter nur noch 1 Takt betragen. Die 
Gating Steuerflanken muessen natuerlich auch steil genug sein.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Düsentrieb (Gast)

>gatter-oszillator in einem ratternden chip liegt er optimal .... :-)

Ja eben.

>typ VFXO202  , 1ps jitter :-)))

Jaja, RMS mit Mogelfaktor. Peak Peak macht der sicher auch so 5..10ps. 
Kostenpunkt? 100Euro++?

@ sechszweifuenf (Gast)

>Also Gegenprobe : Lass den AVR mit einem Teiler zB 1:10 am 80MHz laufen.
>Dh den AVR auf ext clock umkonfigurieren, die Werte auf 8MHz umrechnen
>und los geht's. Dann darf der Jitter nur noch 1 Takt betragen. Die
>Gating Steuerflanken muessen natuerlich auch steil genug sein.

Bringt wenig. Ein eindeutiger Test wäre, mittels eines weiteren 
Oszillators über 74xx Zähler die Torzeit zu generieren und dann nochmal 
zu messen. Ist die Schwankung weniger liegt es am instabilen 
AVR-Oszillator.

MFG
Falk

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab in diesem Frequenzbereich schon hochstabile Oszillatoren wie den 
HP8662 gegegen einen Quarz laufen lassen und mir so angeschaut was die 
denn so machen. Der PLL Synth ist im Minutenrythmus um den Quarz 
rumgewabbert, waehrend der Quarz langsam davonlief.

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
# falk
...RMS mit Mogelfaktor... nee, is ja nur "mittelklasse"
V.F. macht schon coolere dinger...
zb VFTX130 , ±0.28ppm , 0.18ps Jitter RMS
-120 dBc/Hz @ 1KHz

aber die kosten natürlich richtig asche...

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ein eindeutiger Test wäre, mittels eines weiteren Oszillators über
>74xx Zähler die Torzeit zu generieren und dann nochmal zu messen.

Ich habe mir jetzt mal einen 23-Bit Zähler in einem CPLD modeliert und 
den mit einem 10 MHz Takt gefüttert. Ja und Falk scheint recht zu haben, 
ich habe  nur noch Schwankungen im einstelligen Bereich. Das sieht jetzt 
jedenfalls ziemlich gut aus.

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.