Hallo Forum Gemeinde
Ich habe ein Problem mit einer Timer Überwachung, es wird immer wieder überprüft ob der timer0 läuft, altertakt wird mit takt vergleichen und eine Wartezeit von 2ms am ende ist eingefügta . Es passiert, aber ab und zu dass das Programm gleich in Stoerung 2 geht, ohne das überhaupt was am Vorschub voran geht. Kann es sein das der Start des timer0 eine gewisse Zeit braucht, um diesen zu starten. MfG
$regfile = "m328pdef.dat"
$crystal = 2000000
$hwstack = 32
$swstack = 32
$framesize = 32
Config Timer0 = Timer , Prescale = 8 '0,001024s
Enable Timer0
On Timer0 Isr_timer0
Start Timer0
do
….
gosub automatik
…
loop
Automatik:
...
start timer0
vorschub = 1: altertakt=0 : takt =1
If Freigabe = 1 Then
While Takt < Messen
If Tasterrot = 0 Then : Freigabe = 0 : Automatikstart = 0 : : Ledrot = 1 : Ledweiss = 0 : Stoerung = 4 : Exit While : End If
If Takt > Taktzaehler Then
If Klappe = 0 Then
Else
Freigabe = 0 : Automatikstart = 0 : Ledrot = 1 : Ledweiss = 0 : Stoerung = 1 : Exit While
End If
End If
If Altertakt < Takt Then 'hier liegt das Problem
Altertakt = Takt
Else
Freigabe = 0 : Ledrot = 1 : Ledweiss = 0 : Stoerung = 2 : Exit While : End If
Waitms 2
Wend
End If
…...
return
Isr_timer0:
Incr Takt
Return
Ich habe ein Problem mit einer Timer Überwachung, es wird immer wieder überprüft ob der timer0 läuft, altertakt wird mit takt vergleichen und eine Wartezeit von 2ms am ende ist eingefügta . Es passiert, aber ab und zu dass das Programm gleich in Stoerung 2 geht, ohne das überhaupt was am Vorschub voran geht. Kann es sein das der Start des timer0 eine gewisse Zeit braucht, um diesen zu starten. MfG
$regfile = "m328pdef.dat"
$crystal = 2000000
$hwstack = 32
$swstack = 32
$framesize = 32
Config Timer0 = Timer , Prescale = 8 '0,001024s
Enable Timer0
On Timer0 Isr_timer0
Start Timer0
do
….
gosub automatik
…
loop
Automatik:
...
start timer0
vorschub = 1: altertakt=0 : takt =1
If Freigabe = 1 Then
While Takt < Messen
If Tasterrot = 0 Then : Freigabe = 0 : Automatikstart = 0 : : Ledrot = 1 : Ledweiss = 0 : Stoerung = 4 : Exit While : End If
If Takt > Taktzaehler Then
If Klappe = 0 Then
Else
Freigabe = 0 : Automatikstart = 0 : Ledrot = 1 : Ledweiss = 0 : Stoerung = 1 : Exit While
End If
End If
If Altertakt < Takt Then 'hier liegt das Problem
Altertakt = Takt
Else
Freigabe = 0 : Ledrot = 1 : Ledweiss = 0 : Stoerung = 2 : Exit While : End If
Waitms 2
Wend
End If
…...
return
Isr_timer0:
Incr Takt
Return