logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

dziwne zachowanie się programu

karols 21 Lut 2009 21:06 1253 2
REKLAMA
  • #1 6184787
    karols
    Poziom 10  
    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
    
  • REKLAMA
REKLAMA