Gast
#63603
Hallo! Ich möchte eine Softwareuhr realisieren. Ich benutze einen ATMEGA128 mit einem 16MHZ Quarz. Ich möchte den Timer so initialisieren, dass genau alle 100ms ein IRQ ausgelöst wird. Dazu beutze ich einen 16-Bit Timer den Timer 1. Die Initialisierung des Timers ist im Prinzip kein Problem. Der Teiler des Timers liegt bei 256. Ich benutze die Compare-Einheit, da diese den Timerwert (bei einem Vergleich der zutrifft) wieder auf 0 setzt. Alle 6250 Takte muss der Timer den Compare-IRQ auslösen. (256/16000000)*6250=100ms Soweit sogut, doch ich weiß nicht, was ich in das Compare-Register reinschreiben soll. Soll ich den Wert 6250 hineinschreiben, oder 6249... Meine Bedenken: Der Zähler beginnt ja bei 0 zum Zählen. Also müsste ich den Wert, den ich in das Register eintrage um 1 kleiner sein. Dann besteht noch die Frage: Wann löst der Compare-IRQ aus? Ich habe den Timer heruntergeteilt. Löst der Timer jetzt bei sofortiger Gleichheit aus oder erst dann, wenn der Timerwert um eins größer werden würde als der Compare-Wert (Also, wenn bei Gleichhiet die aktuelle Periode (256/16MHZ) des Timers abgelaufen ist?)? Danke für eure Antworten Tschüss Martin