PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer1 Capture im BASCOM Simulator



Werner_Just
16.02.2005, 14:41
Hallo,

vermutlich bin ich einfach zu ....
Ich spiele ein bisschen mit dem Timer 1 und dem Bascom Simulator rum und will mit ICP1 den aktuellen Timerwert aus Timer1 auslesen, also



$regfile = "M32def.dat"

'Disable Jtag
Mcusr = &H80
Mcusr = &H80

'Timervariablen
Dim Timer_capture As Word

'Capture Interrupt
On Capture1 Cap_int

'Timer Config
Config Timer1 = Timer , Capture Edge = Falling , Prescale = 1


' Interrupts starten und freigeben
Enable Capture1
Enable Interrupts

'Testroutine
Do
Print "testroutine"
Loop
End

' Timer1 Capture Interrupt Routine
Cap_int:
Timer_capture = Capture1
Print Timer_capture
Return


Problem:
Timer1 zählt so wie gewollt,
beim ICP1 Interrupt wird in die Routine gesprungen,
aber die BASCOM Variable CAPTURE1 ist und bleibt immer NULL.

Ausprobiert hab ich es mit V1.11.7.4 und V1.11.7.7.

Fehlt was oder ist es ein BUG im BASCOM Simulator?
Das Capture Beispiel aus dem ROWALT Buch zeigt den gleichen Effekt.

Ciao,
Werner

RCO
16.02.2005, 14:46
Ich weiß nicht, ob ich das jetzt richtig sehe, aber wo schreibst du irgendwas vom Timer in caputre1?
Du definierst zwar:
Dim Timer_capture As Word
aber woher erhält Timer_capture irgendeinen Wert?

Und ein Frage, ist beim Interrupt der Timer nicht immer 0?
Oder was genau ist Capture? ist das einfach ein Timer der Intern mit Prescale1 hochläuft? Vermutlich ja, aber mir ist Capture nicht bekannt, ich arbeite mit:
On Timer1 Timer1_int
oder so.
Der Wert vom Timer steht in Timer1.

MFG Moritz

Werner_Just
16.02.2005, 15:20
Hallo Moritz,


Dim Timer_capture As Word
aber woher erhält Timer_capture irgendeinen Wert?

Aus der Pseydovariablen Capture1. Capture1 sind in BASCOM die beiden Capture Register ICR1L und ICR1H des Atmel.


Und ein Frage, ist beim Interrupt der Timer nicht immer 0?
Du bist gedanklich beim Overflow Interrupt.

Capture ist das Auslesen des aktuellen Timerwertes durch einen hardware Interrupt. Es gibt zwei mögliche Quellen für den Capture Interrupt, die eine ist der Analogkomparator, die andere der ICP-Pin. Der Timer wird dabei nicht gestoppt, er läuft weiter.

Ciao,
Werner

Werner_Just
17.02.2005, 10:52
Hallo,
ich hab den erzeugten Code jetzt mal im Simulator des Studio4 laufen lassen. Da scheint es zu gehen. ICR1L und ICR1H werden beim auftreten des ICP Interrupt gesetzt.

Ciao,
Werner