PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer1 des Atmega8/16 ausgeben



MarkusH
21.05.2009, 13:11
Hallo und schönen Vatertag euch allen!
Ich habe ein Problem mit dem Timer1, ich möchte dessen aktuellen Wert über die serielle schnittstelle ausgeben. Dafür habe ich diesen kleinen code geschrieben:


$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600

Config Timer1 = Timer , Prescale = 64
Start Timer1

Dim A As Word

Print "<Test>"


Do

A = Timer1
Print A
Print Tcnt1h
Print Tcnt1l

Loop

End

Nun gibt mir der "Print A" Befehl immer eine 0 aus, wobei der Timer offensichtlich läuft, da die direkte ausgabe der Register realistische Werte liefert. Ich habe den selben code mit einem mega8 und mit einem mega16 getestet, jeweils mit gleichem Ergebnis. Kann sich das jemand erklären? Mach ich was grundsätzliches falsch?

Vielen Dank schonmal
Gruß, Markus

for_ro
21.05.2009, 13:21
bei mir im simulator funktioniert es aber.
Die Werte passen nicht exakt zusammen, da zwischen dem Speichern von Timer1 in A und der Ausgabe von Tcnt1L wegen der Prints sehr viel Zeit ins Land geht.

Gruß

Rolf

MarkusH
21.05.2009, 14:16
ja, im simulator funktionierts bei mir auch, aber wenn ichs aufn mega8 berenne, kommt die null raus.

Che Guevara
21.05.2009, 14:48
Hallo Markus,

probiers mal, wenn du noch



enable interrupts
enable timer1


einfügst ..

Gruß
Chris

for_ro
21.05.2009, 18:08
ja, im simulator funktionierts bei mir auch, aber wenn ichs aufn mega8 berenne, kommt die null raus.

Bei mir funktioniert es auf Hardware (Mega8 und Mega16) genauso wie es soll.
Interrupts brauchst du für das Programm oben nicht, der Timer läuft auch so.
Welche Bascom Version hast du denn?

Gruß

Rolf