PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer Interrupt unter 1.11.9.1 fehlerhaft --> count<&a



hdtvfreak
12.12.2008, 22:26
Hallo,

ich bekomme das Timer Interrupt unter der Bascom Version 1.11.9.1 nicht gebacken. Komischerweise hat dies bei der älteren Version wunderbar funktioniert.

Der Code wird zwar fehlerfrei compiliert, ein Interrupt aber nie ausgführt.

Quarz ist intern auf 8Mhz.

Hier der Code:

$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 256
$swstack = 256
$framesize = 256

Config Graphlcd = 240 * 128 , Dataport = Portd , Controlport = Portc , Wr = 6 , Rd = 7 , Ce = 2 , Cd = 3 , Reset = 4 , Fs = 5 , Mode = 6

Config Timer1 = Timer , Prescale = 256
On Timer1 Timer_irq
Start Timer1
Enable Interrupts

Cls

Const Timervorgabe = 34286
Locate 1 , 1 : Lcd "Interrupts"


Do
Loop


Timer_irq:

Timer1 = Timervorgabe
Locate 2 , 1 : Lcd "test"
Cls



Das Benutzerhandbuch besagt, dass man statt Start Timer1 auch Enable Timer1 schreiben kann/muss.

Dies bring aber immer folgende Fehlermeldung mit sich:

Unknown interrupt source [COUNT<>3]

Habt ihr evtl. noch eine Idee woran das liegen könnte?

Grüße

Thomas

linux_80
12.12.2008, 23:31
Hallo,

mit Enable Timer1 wird der IRQ des Timers aktiviert,
mit Start Timer1 wird er gestartet, also das der Timer auch timed ;-)
was nach dem Config Timer auch schon so sein sollte.

Am Ende der ISR gehört noch ein Return, damits wieder zurück geht.

Und die ISR ist auch ein klein wenig lang, günstigerweise setzt man dort nur eine Variable, die im Hauptprogramm ausgewertet wird, und dann solche Sachen wie LCD ansprechen usw. erledigt werden. sonst kanns mal passieren, daß sich LCD-Ausgabe aus dem Hauptprogramm und der ISR kreuzen, und dann macht das LCD nix mehr ab da, bis zum nächsten Reset.

hdtvfreak
16.12.2008, 23:32
Danke für deine Hilfe.

Es lag anscheinend an Bascom direkt. Nach einer Neuinstallation tritt die Fehlermeldung nicht mehr auf.