PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tiny26 Timer Interrupt



g_lock
06.04.2006, 00:38
Hallo,
ich versuche beim Tiny26 den timer Interrupt zu nutze.
Leider springt das Prog nicht in die Interrupt Sub.
Stell ich mich nur blöd an? Was mach ich falsch?

Grüsse Klaus



$regfile = "At26def.dat"
$crystal = 8000000

'----------------Timer config---------------------------
Config Timer0 = Timer , Prescale = 256
Enable Timer0
Enable Interrupts
On Ovf0 Tim0_isr

'----------------- RS232 Config ------------------
Open "coma.5:9600,8,n,1" For Output As #1
Dim Timervar As Integer

Stop Timer0

Do
Print #1 , Timervar
Waitms 500
Loop

Tim0_isr:
Incr Timervar
Return

End

Rainerd
06.04.2006, 14:09
Hi g_lock,

wenn Du den Timer stoppst, läuft er auch nicht.
Schmeiß den Befehl "Stop Timer0" raus.

Gruß.
Rainer

g_lock
06.04.2006, 16:21
Oh, wie peinlich!

Ich hatte das so:



$regfile = "At26def.dat"
$crystal = 8000000
'----------------Timer config---------------------------
Config Timer0 = Timer , Prescale = 256
Enable Timer0
Enable Interrupts
On Ovf0 Tim0_isr
'----------------- RS232 Config ------------------
Open "coma.5:9600,8,n,1" For Output As #1
Dim Timervar As Integer

Stop Timer0
Start Timer0
Do
Print #1 , Timervar
Waitms 500
Loop

Tim0_isr:
Incr Timervar
Return

End

wollte den

Stop Timer0 Löschen
Start Timer0 lassen.
habs genau umgekehrt gemacht.

Es läuft leider trotzdem nicht.[/quote]

Rainerd
06.04.2006, 17:24
Ok, hab's jetzt mal durch den Simulator gejagt.
Der Timerinterrupt lässt dem Software-UART keine Chance mal was auszugeben. Der Timer springt ca. alle 8000 µS in die ISR. Scheint mit dem Software-UART nicht zu gehen. Probier mal mein Beispiel. Nur mal so zum testen.


$regfile = "At26def.dat"
$crystal = 8000000
'----------------Timer config---------------------------
Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Enable Interrupts
On Timer0 Tim0_isr
'----------------- RS232 Config ------------------
Open "coma.5:9600,8,n,1" For Output As #1
Dim Timervar As Integer
Do
Stop Timer0
Print #1 , Timervar
Start Timer0
Waitms 500
Loop

Tim0_isr:
Incr Timervar
Return

End


Bei Timervar > 32767 kriegst Du einen Überlauf und es wird von -32767 bis +32767 gezählt .... also nicht erschrecken ;)
Ist aber zum testen jetzt egal

Gruß.
Rainer