Forum: Mikrocontroller und Digitale Elektronik Sekundentakt aus 4MHz Quarz


von C. H. (hedie)


Lesenswert?

Hallo

Ich habe vor etwa einem Halben jahr mal eine Uhr gebaut...

Damals hatte ich vor einen DS1302 als Sekundengeber zu verwenden.
Da dieses vorhaben jedoch unter mangelnder I2C Kommunikation scheiterte, 
habe ich mir heute ein halbes jahr später etwas anderes überlegt.

Es muss doch möglich sein, von einem Standard 4MHz Quarz einen genauen 
1Sekunden Interrupt zu erzeugen oder?

Mein Bisheriger Code:
1
void init_timer(void)
2
{
3
  TCCR1A = 0;
4
  TCCR1B = 0;                  
5
  TCCR1B |= (1<<CS10) + (1<<CS11)+ (1<<WGM12);  // Prescaler 64, IC an,Noice Cancel an
6
                      
7
  TIMSK |= (1<<OCIE1A); // Compare Interrupt, IC interrupt
8
  OCR1A = 62500-1;   // Compare grenzwert setzten
9
  //sei();    // Interrupts aktivieren erst nach stellen der uhr
10
}
11
12
ISR(TIMER1_COMPA_vect)
13
{
14
  if(ucSecond_state == 0)
15
  {
16
    ucSecond_state = 1;
17
    SEKUNDE_ON;
18
  }
19
  else
20
  {
21
    ucSecond_state = 0;
22
    SEKUNDE_OFF;
23
  }
24
  update_time(); 
25
}


Ist dieser Code genau genug?

Ich habe nach 5 Stunden bereits verzögerungen vo ca 200ms Festgestellt.
Also das glaube ich zumindest... :)

Grüsse

von Edi R. (edi_r)


Lesenswert?

Das sind 11 ppm. Ist doch nicht schlecht, oder was erwartest Du von 
einem Quarz?

Die (unjustierte) Abweichung vom Nennwert ist die eine Sache. Viel 
wichtiger ist die Stabilität. Wenn die Frequenz konstant ist, d. h. 
wenn die Abweichung nach 5 Stunden immer 200 ms ist, dann kannst Du in 
der Software Korrekturen vornehmen.

von C. H. (hedie)


Lesenswert?

Edi R. schrieb:
> Das sind 11 ppm. Ist doch nicht schlecht, oder was erwartest Du von
> einem Quarz?

hmmm

hast du eigentlich recht... hab ich mir so noch gar nicht überlegt :)

Ja das mit der Stabilität ist einleuchtend... also Codemässig sieht 
alles gut aus?

von Falk B. (falk)


Lesenswert?

@  Claudio Hediger (hedie)

>hast du eigentlich recht... hab ich mir so noch gar nicht überlegt :)

Wäre ja auch vollkommen unzeitgemäß, erst denken und dann schreiben . . 
.

>Ja das mit der Stabilität ist einleuchtend... also Codemässig sieht
>alles gut aus?

Dein Code sagt nicht wirklich viel aus. Zum Thema allgemein.

AVR - Die genaue Sekunde / RTC

MfG
Falk

von HildeK (Gast)


Lesenswert?

Claudio Hediger schrieb:
> Ich habe nach 5 Stunden bereits verzögerungen vo ca 200ms Festgestellt.

Wie hast du das gemessen?
Mit einer normalen DCF-Uhr vergleichen reicht nicht! Diese werden nur 
einmal nachts synchronisiert und können in der Zwischenzeit leicht diese 
Abweichung produzieren, da sie dann mit einem mehr oder weniger gut 
kalibrierten Quarz frei laufen.

Mir ist das aufgefallen, als ich mal die von Falk zitierte 'Genaue 
Sekunde' ausprobiert hatte und die festgestellten Abweichungen zu einem 
handelsüblichen DCF-Empfänger unklar waren: tagsüber auf Minimum 
korrigiert, dann ein Test über Nacht brachte deutliche Abweichungen.

Erst als ich meine uralte Selbstbau-DCF-Uhr zum Vergleich heranzog, war 
klar, woran das lag. Diese empfängt nämlich das Telegramm von Minute zu 
Minute und zeigt es direkt an. Die DCF-Pulse takten direkt die 
angezeigten Sekunden.
Mit den Vorschlägen von Peter Dannegger konnte dann eine sehr gute 
Kalibrierung erreicht werden.

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.