Program sterujący wyjściem uC - problem z kodem


Witam wszystkich, mam problem potrzebuję sterować stanem pinu lecz nie potrafię rozgryźć co jest nie tak w kodzie. Poniżej kod w BASCOMIE :

$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.1 = 1
Portb.1 = 0
Config Portd = &B11110000   
        Portd = &B11011111                                
 
Config Portc = &B11111110                                
        Portc = &B11111001                               
 
Tccr1a = &B11110010                                         
Tccr1b = &B00011011
 
 
 
Do                                                          
 
While Pinc.0 = 0                                            
Pind.5 = 1
Wait 1
Wend
 
 
If Pind.0 = 0 Then Icr1 = 15625                             
If Pind.0 = 0 Then Ocr1a = 20000
If Pind.0 = 0 Then Pind.5 = 0
 
If Pind.1 = 0 Then Icr1 = 18825                             
If Pind.1 = 0 Then Ocr1a = 14925
If Pind.1 = 0 Then Pind.5 = 1
 
If Pind.2 = 0 Then Icr1 = 13354                             
If Pind.2 = 0 Then Ocr1a = 9454
If Pind.2 = 0 Then Pind.5 = 1
 
If Pind.3 = 0 Then Icr1 = 9412                              
If Pind.3 = 0 Then Ocr1a = 5512
If Pind.3 = 0 Then Pind.5 = 1
 
 
 
Loop
End

Po uruchomieniu układu stan na wyjściu D5 atmegi ma się zmieniać gdy pin C0 jest zwarty z masą. A dokładniej zmiana stanu portu D5 ma trwać tak długo aż zostanie zwolniony przycisk na pinie C0. Oprócz tego podczas spełnienia 3 instrukcji warunkowych również powinien zostać zmieniony stan pinu D5. Program w rzeczywistości ustawia tylko początkowy stan pinu D5 na niski i nie reaguje ani na pętle ani na instrukcje warunkowe. Czy problem może być związany z Timerem1 który wykorzystuje ? Proszę o ewentualne wskazówki co do rozwiązania problemu.




Portret użytkownika mirley

Re: Pin/port

Problem jest w tym że chcesz ustawiać stan pinu ustawiając stan w rejestrze wejściowym a nie wyjściowym. Rejestr wejściowy do odczytu nazywa się pinx.y lub jak chcesz cały to pinx. Jak natomaist chcesz ustawić coś na porcie zewnętrznym to wpisujesz to do portx.y lub dla całego portx. Zatem poprawiony fragment będzie wyglądał tak:

While Pinc.0 = 0                                            
Portd.5 = 1
Wait 1
Wend
 
 
If Pind.0 = 0 Then Icr1 = 15625                             
If Pind.0 = 0 Then Ocr1a = 20000
If Pind.0 = 0 Then Portd.5 = 0

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Re: Wniosek o zakup reduktora

No rzeczywiście ale się zgapiłem :D Dzięki wielkie za pomoc.