PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer1-Wert jederzeit abrufbar?



Jaecko
01.03.2007, 16:55
Moin.

Kurze Frage:
Das folgende (Teil-)Programm sollte ja von der Struktur her einen 16-Bit-Timer immer wieder von 0-65535 zählen lassen:

Do
if x>0 then print x
Loop

ISRTimer1:
Timer1=0
Return

ISRInt0:
x = Timer1
Print

Wenn ich nun mit einem Interrupt den aktuellen Timer-Wert abfragen will, erhalte ich aber immer 0. Dass der Zufall es so will und ich immer exakt bei 0 drücke, glaub ich nicht. Woran kann das noch liegen?

MfG

Vitis
01.03.2007, 20:07
timer auch richtig konfiguriert, dass er auch läuft? die Configs haste nämlich nicht mitgepostet

Jaecko
01.03.2007, 21:28
die sind konfiguriert... also der ganzen Config/DIM/Declare-Teil sei mal als korrekt vorausgesetzt, ebenso dass die Interrupts und Timer alle enabled sind...

Enable Interrupts
Config Timer1 = Timer, Prescale = 8
On Timer1 ISRTimer1
Enable Timer1
Config Int0 = Rising
On Int0 ISRInt0
Enable Int0

CR-Racing
02.03.2007, 07:50
Ich würde anstelle von Print mal Print X versuchen.

Das Timer=0 im Timer-Interuppt kannst Du dir sparen, da er beim Überlauf sowieso 0 ist.

MfG

Jaecko
02.03.2007, 09:37
Also hab die ganze nacht lang probiert (das fehlende X hab ich dann auch noch gefunden)
Dabei hab ich dann den "Header" auch nochmal neu geschrieben bzw. aus einem alten Programm kopiert... und schon kommen Ergebnisse an.

Der alte Header war:
$regfile = "m8def.dat"
$crystal = 8000000
$framesize = 32
$swstack = 32
$hwstack = 32

Der neue:
$regfile = "m8def.dat"
$crystal = 8000000
$framesize = 40
$swstack = 10
$hwstack = 32

Macht das nun wirklich so viel aus?