Napisałem w Bascom AVR kawałek programu na Attiny2313 (sterowanie silnikiem za pomocą PWM) i się zapętliłem - program ogólnie działa tylko nie wiem dlaczego kolejne naciskanie przycisku S1 (pind.1) powoduje cykliczną zmianę Pk (pinb.2) - pierwsze nacisnięcie S1 powoduje ustawienie Pk na 1, a kolejne na 0. (sprawdzałem bez wykonawczej części układu - bezpośrednio na nodze procka). Według mnie tak nie powinno być - gdzie leży błąd.
$regfile = "attiny2313.dat"
$crystal = 12000000
Config Pind.0 = Output
Config Pind.1 = Input
Config Pind.5 = Input
Config Pind.6 = Input
Config Pind.4 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.6 = Input
Config Pinb.7 = Input
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64
Declare Sub Rozkladanie
Dim Licznik As Byte
S1 Alias Pind.1
Kp Alias Pind.5
Kt Alias Pind.6
Pk Alias Pinb.2
Led Alias Pind.0
Beep Alias Pind.4
Set Portd.1
Set Portd.5
Set Portd.6
Set Portb.6
Set Portb.7
Set Beep
Set Led
Pwm1a = 0
Licznik = 0
Do
If S1 = 0 Then
Waitms 25
If S1 = 0 Then
Licznik = 1
Reset Led
End If
End If
If S1 = 0 And Licznik = 1 Then
Waitms 25
If S1 = 0 And Licznik = 1 Then
Licznik = 0
Set Led
Call Rozkladanie
End If
End If
If Kp = 0 Then
Waitms 25
If Kp = 0 Then
Pwm1a = 0
End If
End If
Loop
End
Sub Rozkladanie
Set Pk
Waitms 25
Pwm1a = 255
End Sub