Zeitfunktion mit Atmega8

OP #2679278
Hallo Leute,

ich beschäftige mich seit Kurzem mit Mikrocontrollern. Dementsprechend 
habe ich auch nur geringe Kenntnisse. Nun zu meinem eigentlichen 
Problem: Ich möchte einen Atmega8 als Art "Zeitschaltuhr" programmieren. 
Diese soll alle 12 Stunden eine Aktion ausführen. Da ein Delay nur für 
kürzere Verzögerungszeiten funktioniert, brauch ich nun Eure Hilfe....
Delay ist sowieso der falsche Ansatz
(abgesehen davon, dass wenn man 20 mal 1 Sekunde wartet, man in Summe ja 
auch 20 Sekunden gewartet hat. Wie die Arithmetik einer Uhr 
funktioniert, weißt du? 60 Sekunde sind 1 Minute. 60 Minuten sind 1 
Stunde. Du willst 12 Stunden warten.)

Was du brauchst ist: Der Einsatz eines Timers.
http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC
OP
Danke für den Link. Ich hab mir den Timer mal durchgelesen und den 
Beispielcode auf meine Bedürfnisse abgeändert. Leider funktioniert das 
nicht ganz :-(  Hat jemand von euch eventuell noch ein einfaches 
Beispielprogramm (C)?
Gast
was soll das while hier machen?
1
while(1)               
2
 
3
  TCCR1B = (1<<WGM12) | (1<<CS10);                     
4
  OCR1A = XTAL / DEBOUNCE - 1;          
5
  TCNT1 = 0;                            
6
  second = 0;
7
  prescaler = (uchar)DEBOUNCE;          
8
  TIMSK = 1<<OCIE1A;                 
9
 ...
Ich würd sicherheitshalber mal mit dem Taschenrechner die sich daraus 
ergebenden Zahlen nachrechnen, ob sie sich noch so einigermassen im 
Rahmen bewegen.

Allerdings:
Ohne Quarz mit einer halbwegs genau definierten Frequenz, wirst du mit 
deiner Uhr nicht viel Freude haben. Wenn die je nach Tagestemperatur 
unterschiedliche Abweichungen hat, wird sie dir schnell aus dem Ruder 
laufen. Da könnte man sich diesen ganzen Aufwand auch sparen und das 
Schätzeisen tatsächlich auch gleich mit delay_ms betreiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.