PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer



martin66119
24.03.2007, 21:55
Einen schönen guten Abend!

Kann mir mal bitttte jemand helfen wie man folgende Problem
realisiert. Ich habe das Board myavr mit einem ATMega8 (also nur einen 16-bit Timer und 2 8-bit Timer). Wenn ich nun z.B. alle 6 Sekunden in ein Unterprogramm und alle 30 Sekunden in ein anderes und wiederum alle 60 Sekunden in ein drittes verzweigen will , wie mache ich das am besten.

Eine RealTimeClock habe ich am Controller. Wäre sehr nett wenn mir jemand eine Beispielcode posten könnte.

Danke schonmal
Grüße
Martin

for_ro
24.03.2007, 22:59
Martin,
ein Beispiel Programm kann ich dir nicht geben, aber zumindest das Prinzip erklären.
Du benutzt für das ganze nur einen Timer, und wenn du die Soft-Clock laufen hast, dann den Sectic Interrupt.
Dort zählst du die Sekunden und springst dann entweder nach der entsprechenden Anzahl, z.B. 30 in ein Unterprogramm oder du setzt nur eine Variable, z.B. 30sec_enable und fragst die in deiner Main-Loop ab. Kommt drauf an, was der Controller sonst noch zu tun hat.
Da die alle Vielfache von 6 sec. sind, würde ich sie etwas versetzt laufen lassen, damit die sich nicht ins Gehege kommen.

Gruß Rolf

PICture
25.03.2007, 06:28
Hallo martin66119!

Ich bin zwar PIC benutzer, aber vielleicht könnte ich Dir helfen. :)

Ich würde ein Zähler bis 59 nehmen, der durch Timer interrupt jede Sekunde um 1 erhöht wird und durch das letzte Unterprogramm (nach 60s) gelöscht wird.

Nach jedem interrupt des Timers würde ich den Zählerstand prüfen und entsprechendes Unterprogramm aufrufen.

MfG