Wie funktioniert dieser Timer

Gast #824675
Lesenswert?

Hi,

unter C-Control verwende ich einen Timer, den ich gerne verstehen 
möchte. Er dient dazu, eine LED blinken zu lassen.

Hier ist der Code-Schnipsel:
1
Do While True
2
Timer_T0Time(100,PS0_1024)              ' 69,4 µs*100=6,94 ms
3
Port_WriteBit(PORT_PWM,0)               ' LED2 einschalten
4
BUSY=1
5
Do While BUSY=1 : End While
6
Timer_T0Time(200,PS0_1024)              ' 69,4 µs*200=13,84 ms
7
Port_WriteBit(PORT_PWM,1)               ' LED2 ausschalten
8
BUSY=1
9
Do While BUSY=1 : End While
10
End While

Ich verstehe allerdings nicht die Funktionsweise. Hat jemand eine 
Ahnung?

Sebastian
Gast #824693
Lesenswert?

Vermutlich wird "BUSY" in einer/der Interrupt-Service-Routine (des 
Timers) gleich 0 gesetzt.
Vielleicht wird mit "BUSY=1" auch erst der Timer gestartet.
In der Dokumentation zu "Timer_TOTime" sollte das beschrieben sein.
Allerdinsg ist die Angabe in Millisekunden doch sehr kurz.
Das "PORT_PWM" lässt eine Pulsweitenmodulation vermuten...
#824699
Lesenswert?

Da muss es noch einen Code-Schnipsel geben, einen Interrupt,
der vom Timer aufgerufen wird. In dieser Funktion wird dann BUSY
wieder auf 0 gesetzt.

Das ganze scheint nach dem Muster zu laufen:
Um eine bestimmte Wartezeit zu warten, wird ein Timer mit einem
bestimmten Wert initalisiert. Der Timer läuft los und zählt
vor sich hin (ob er rauf oder runter zählt, kann ich dem
Code Schnipsel nicht entnehmen). Auf jeden Fall: Wenn er an seinem
Endwert angelangt ist, wird ein Interrupt ausgelöst und in dieser
Interrupt Funktion, wird BUSY auf 0 gesetzt.

Daher: Nachdem der Timer gestartet wird, setzt das Programm BUSY auf
1 und wartet, bis die Interrupt Funktion BUSY wieder auf 0 setzt.
Damit 'weiß' dann dass Programm, das die vorbestimmte Zeit abgelaufen
ist.
Gast #824731
Lesenswert?

Vielen, Vielen Dank,

jetzt geht mir ein Licht auf. Der Code der Interrupt-Funktion lautet 
übrigens:
1
Sub Timer0_ISR()
2
    Dim irqcnt As Integer
3
    BUSY=0
4
    irqcnt=Irq_GetCount(INT_TIM0COMP)           ' Interrupt Request Counter
5
End Sub

Grüße

Sebastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren