Witam
Mam taki programik opiszę tylko najważniesze elementy
Więc sprawa się ma tak
Odbieram informacie po rs485 następnie w głównej pętli reguluje wypełnienie Timer Pwm1a
W tej pętli odliczam też odcinki czasu i steruje jednym pinem załacz wyłacz(niepokazane w kodzie)
i w tej samej pętli skacze do procedury odczytu znaków z rs 485
Problem wygląda tak że zupełnie losowo następuje reset zliczania odcinka czasu (jest np 19s i kasuje się na zero a ma trwać 30s)
Pwm wówczas na ułamek sekundy tak jakby się wyłaczał brak napięcia na wyjściu.
Niewiem ale podejrzewam że występuje konflikt przerwań ,wydaje mi się jakby jedno przerwanie przerywało drugie.
Niemogę tego zabardzo zrozumieć którego przerwania używa instrukcja serialin?
Czy używa tego samego co licznik odliczający sekunde .W jaki sposób mogę to sprawdzić i jak ewentualnie rozwiązać ten problem.
Dodam że jak wpisze w instrukcji odbierającej dane z Uart wartości t1 t2 t3 na sztywno wówczas niema tego problemu.
Dziękuje za każdą pomoc.
Mam taki programik opiszę tylko najważniesze elementy
# konfiguracja timerów
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm Disconnect , Prescale = 8
Config Serialin = Buffered , Size = 6
Enable Interrupts
Enable Timer0
Timer0 = 61
On Timer0 Sekunda
#główna petla programu
do
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm Disconnect , Prescale = 8
pwm1a=T1
incr sek
gosub uart
if sek >h then
sek=0
# tu jeszcze pare skoków do innych procedur bez użycia przerwań i uart
loop
#odliczanie sekundy
Sekunda:
Timer0 = 61
Incr Licz
If Licz = 40 Then
Licz = 0
End If
Return
sub uart:
If Sek1 = 0 Then
Bufor = Ischarwaiting()
If Bufor = 1 Then
Znak = Inkey()
If Znak = "n" Then
Odbierz = ""
Do
Znak = Inkey()
Odbierz = Odbierz + Znak
If Znak = "k" Then Goto Lcdd
Loop
End If
End If
Lcdd:
T11 = Mid(odbierz , 1 , 1)
T1 = Val(t11)
T11 = Mid(odbierz , 2 , 1)
T2 = Val(t11)
T11 = Mid(odbierz , 3 , 1)
T3 = Val(t11)
End If
Return
End Sub
Więc sprawa się ma tak
Odbieram informacie po rs485 następnie w głównej pętli reguluje wypełnienie Timer Pwm1a
W tej pętli odliczam też odcinki czasu i steruje jednym pinem załacz wyłacz(niepokazane w kodzie)
i w tej samej pętli skacze do procedury odczytu znaków z rs 485
Problem wygląda tak że zupełnie losowo następuje reset zliczania odcinka czasu (jest np 19s i kasuje się na zero a ma trwać 30s)
Pwm wówczas na ułamek sekundy tak jakby się wyłaczał brak napięcia na wyjściu.
Niewiem ale podejrzewam że występuje konflikt przerwań ,wydaje mi się jakby jedno przerwanie przerywało drugie.
Niemogę tego zabardzo zrozumieć którego przerwania używa instrukcja serialin?
Czy używa tego samego co licznik odliczający sekunde .W jaki sposób mogę to sprawdzić i jak ewentualnie rozwiązać ten problem.
Dodam że jak wpisze w instrukcji odbierającej dane z Uart wartości t1 t2 t3 na sztywno wówczas niema tego problemu.
Dziękuje za każdą pomoc.