Witam
Założenie jest takie.
Czujnik ruchu wyzwala przerwanie INT0 = Falling, powoduje stopniowe zwiększanie PWM1A ( i to działa ). Następnie Timer2 ma odmierzyć czas i uruchomić stopniowe zmniejszanie PWM1A - i z tym jest problem.
Tzn. wartość PWM1A się zmniejsza, ale nie tak szybko jak przy zwiększaniu, tylko co zadany czas timer2/Licznik2, czyli 5 sekund.
Nie wiem, czy dobrze zrobiłem pętlę dla zmniejszania wartości PWM1A - w helpie jest, że powinien być minus przy odliczaniu w dół
Sprawdziłem jest dobrze zrobiona pętla - zamieniłem UP1 z DN1 i po wyzwoleniu przez INT0 ładnie się zmniejsza.
Założenie jest takie.
Czujnik ruchu wyzwala przerwanie INT0 = Falling, powoduje stopniowe zwiększanie PWM1A ( i to działa ). Następnie Timer2 ma odmierzyć czas i uruchomić stopniowe zmniejszanie PWM1A - i z tym jest problem.
Tzn. wartość PWM1A się zmniejsza, ale nie tak szybko jak przy zwiększaniu, tylko co zadany czas timer2/Licznik2, czyli 5 sekund.
Nie wiem, czy dobrze zrobiłem pętlę dla zmniejszania wartości PWM1A - w helpie jest, że powinien być minus przy odliczaniu w dół
Sprawdziłem jest dobrze zrobiona pętla - zamieniłem UP1 z DN1 i po wyzwoleniu przez INT0 ładnie się zmniejsza.
Dim D as Byte
Dim Licznik2 as Integer
If Flaga_int0 = 1 Then
Flaga_pwm1 = 1
Licznik2 = 0
Gosub Up1
Flaga_int0 = 0
End If
If Flaga_pwm2 = 1 Then
Gosub Dn1
Flaga_pwm2 = 0
End If
End
Loop
'*********************** Rozjaśnianie wyjścia 1
Up1:
If Flaga_pwm1 = 1 Then
For D = 0 To 50 Step 5
If Pwm1a < 255 Then
Incr Pwm1a
Next D
End If
End If
Flaga_pwm1 = 0
Licznik2 = 0
Return
'*********************** Ściemnianie wyjścia 1
Dn1:
'If Flaga_pwm2 = 1 Then
For D = 50 To 0 Step -5
If Pwm1a > 0 Then
Decr Pwm1a
Next D
End If
'End If
Flaga_pwm2 = 0
Return
'*********************** Podprogram Timer2 2 ms
Czas:
Timer2 = Timer2 + 6
Incr Licznik2
If Licznik2 = 2500 Then ' 5 sekund
Flaga_pwm2 = 1
Licznik2 = 0
End If
Return
'**************** Podprogram Przerwanie INT0 **********
Przerwanie0:
Flaga_int0 = 1
Return
