enzo
16.11.2004, 17:06
Hallo zusammen,
es ist nicht so, daß ich nicht selber dran gesessen wäre.
Wahrscheinlich haltet ihr mich für bekloppt aber da gingen schon viele
Stunden drauf um zu recherchieren.
Im unteren Code komme ich trotzdem nicht auf mein gewünschtes Ergebnis
der Millisekundenzählung.
Timer0 setzt bei Erreichung von 255 den Interrupt. Bei einem Prescale
von 64 bei 4MHz, ergibt sich ein Reload von 4000/64 = 63 damit er
alle 1ms einen Interrupt erzeugt, und die Variable 'Millisekunden'
inkrementiert.
Achtung: Load Timer0, Relaod zählt dann von 192 auf 255 rauf, also 63 mal, dann efolgt der Interrupt.
In der Do/Loop Schleife sollte ich dann alle
Millisekunden einen Wert angezeigt bekommen, durch die Verzögerung der
Darstellung natürlich nicht notwenig, aber die dargestellten Zeiten
sollten in ms dargestellt analog der Realzeit sein.
Nur die Zeit bzw die Werte die dargestellt werden zählen viel zu
langsam. Dafür das es Milliskeunden sind, müßte pro Sekunde der Wert um 1000 steigen. Tut er aber nicht, ca um den Faktor 100 zu langsam.
Was mache ich falsch ?
$regfile = "m8def.dat"
$crystal = 4000000
Dim Millisekunden As Long
Dim K As Long
Const Reload = 63
Config Timer0 = Timer , Prescale = 64
On Timer0 Timer1int
Enable Interrupts
Enable Timer0
Do
Print Millisekunden
End If
Loop
Timer1int:
Load Timer0 , Reload
Incr Millisekunden
Return
es ist nicht so, daß ich nicht selber dran gesessen wäre.
Wahrscheinlich haltet ihr mich für bekloppt aber da gingen schon viele
Stunden drauf um zu recherchieren.
Im unteren Code komme ich trotzdem nicht auf mein gewünschtes Ergebnis
der Millisekundenzählung.
Timer0 setzt bei Erreichung von 255 den Interrupt. Bei einem Prescale
von 64 bei 4MHz, ergibt sich ein Reload von 4000/64 = 63 damit er
alle 1ms einen Interrupt erzeugt, und die Variable 'Millisekunden'
inkrementiert.
Achtung: Load Timer0, Relaod zählt dann von 192 auf 255 rauf, also 63 mal, dann efolgt der Interrupt.
In der Do/Loop Schleife sollte ich dann alle
Millisekunden einen Wert angezeigt bekommen, durch die Verzögerung der
Darstellung natürlich nicht notwenig, aber die dargestellten Zeiten
sollten in ms dargestellt analog der Realzeit sein.
Nur die Zeit bzw die Werte die dargestellt werden zählen viel zu
langsam. Dafür das es Milliskeunden sind, müßte pro Sekunde der Wert um 1000 steigen. Tut er aber nicht, ca um den Faktor 100 zu langsam.
Was mache ich falsch ?
$regfile = "m8def.dat"
$crystal = 4000000
Dim Millisekunden As Long
Dim K As Long
Const Reload = 63
Config Timer0 = Timer , Prescale = 64
On Timer0 Timer1int
Enable Interrupts
Enable Timer0
Do
Print Millisekunden
End If
Loop
Timer1int:
Load Timer0 , Reload
Incr Millisekunden
Return