PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer0... und ich komm garnicht mit klar



Looser
16.11.2005, 16:13
Ich möchte den Timer0 starten der dann nach einer Sekunde den Wert einer Variable setzt.(zB. B= 0) Dann soll der Timer anhalten, bis ich ihn ein weiteres mal starte. Leider komme ich mit den Einstellungen für 1 Sekunde überhaupt nicht klar. Kann mir vielleicht jemand einen Tip geben oder ein einfaches Beispiel ? Danke vorab !!!

Guy
16.11.2005, 16:38
So ungefähr könnte das gehen.

Die Timervorgabe und Prescale = 256 hängen natürlich von der Frequenz ab.



$crystal = 8000000
Config Timer1 = Timer, Prescale = 256
Const Timervorgabe = 34286
On Timer1 Timer_irq

Enable Timer1
Enable Interrupts

'Hauptprogramm
Do

If x=y
Timer1 = Timervorgabe
Start Timer
Endif

Loop


Timer_irq:
Stop Timer1
Toggle Led1
Return

hrei
16.11.2005, 17:11
Ich möchte den Timer0 starten der dann nach einer Sekunde den Wert einer Variable setzt.(zB. B= 0) Dann soll der Timer anhalten, bis ich ihn ein weiteres mal starte. Leider komme ich mit den Einstellungen für 1 Sekunde überhaupt nicht klar.

Das wundert mich nicht. Timer0 ist ein 8 Bit Timer. Um da tatsächlich auf eine Sekunde in einem Rutsch zu kommen, müsstest Du den µC mit höchstens 250kHz betreiben.

Schnappe Dir das Timerberechnungstool...

https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169

... dann fällt das sofort auf.

Selbstverständlich kannst Du in in der ISR eine Variable inkrementieren, damit Du bei zb.B. 100 Hz Interruptfrequenz auf eine Sekunde kommst.

Frisch ans Werk :-)

Henrik