Genauigkeit Atmega8

#4026596
Lesenswert?

Hallo!

Ich versuche aktuell eine Uhrensteuerung mittels atmega8 zu realisieren.

Ziel der Software ist es, aktuell jede Minute den Ausgang 0 (LED), und 
den Ausgang 1 (Transistor, der die Uhren schaltet) zu aktivieren. Jede 
zweite Minute sollte das Relais auf Ausgang 2 aktiviert werden, um die 
Umpolung zu erzielen.

Die erste IF Schleife soll einen FF-Modus darstellen, sodass pro Sekunde 
die Uhren eine Minute vorgestellt werden, die nächste while Schleife ist 
die "normale Funktion". Das Relais wird 100ms vorher aktiviert, da das 
Relais langsamer schaltet als der Transistor.

Pro Tag weicht das ganze nun um etwa 8 Minuten ab, der ATMega8 wird per 
internen oszillator betrieben,

Ist die Abweichung vom internen Oszillator wirklich so groß? Oder gibt 
es Softwareseitig eine bessere Möglichkeit dies zu lösen?

Danke!

Gruß
Angehängte Dateien:
#4026932
Lesenswert?

Zwei wesentliche Gründe für die Ungenauigkeit:

Auch wenn sich der interne RC-Oszillator auf weniger als 1% 
justierenlässt, ist er mindestens um den Faktor 100 zu ungenau für eine 
Uhr.

Die Funktion delay wird durch die andren Programmtätigkeiten in der 
Länge verfälscht. Wenn z.B. 100ms vorbei sind, kommen anschließend 1 ms 
oder andernmal 0,5 ms dazu, weil ein Zeiger bewegt werden muss oder 
dergleichen. Für Uhren erzeugt delay zu ungenaue Zeiten.

Für die Uhr muss ein Timer laufen, der unabhängig von der übrigen 
Programmarbeit exakt alle (z.B.) 10ms im Interrupt ein Flag setzt.
Im Hauptprogramm wird dann dieses flag abgefragt, und die anfallenden 
Arbeiten können dann ausgeführt werden.

Sehr gut ist da der thread mit dem Thema "die genaue Zeit".
Es wäre auch ganz gut, unter dem Stichwort Uhrenprogramm einige Zeit 
aufzuwenden. Da gibt es viel zu lesen und zu lernen.

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