PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : interrruptproblem Timer 1



Franz_vm
23.02.2007, 14:09
Hallo
ich habe ein Problem mit der Interruptroutine. Das Programm läuft, aber die Variable W_capture1 erhält unterschiedliche Werte, je nach Laufzeit der Interruptroutine obwohl ich doch den Timer1 zurücksetze!
Hat jemand ein tip, was ich falsch mache?

linux_80
23.02.2007, 18:36
Hallo,
ich denke da gibts zwei Probleme,
einmal ist die Variable ein Integer, das kann dann auch negativ werden.
Versuche diese als Word zu Dimensionieren.

Dann ist das eine 2-Byte Variable, evtl. vor der LCD-Ausgabe in eine 2. Tempvariablen kopieren, und da drum die IRQs sperren, damit der Wert während dem kopieren, durch die ISR, nicht verändert werden kann.


Dim W_capture1 As Word
Dim Temp As Word
...
Disable Interrupts
Temp = W_capture1
Enable Interrupts
LCD Temp
...

Stichwort dazu ist "atomarer Code", es gibt da einige Dokumente darüber auch hier im Wiki.