Mam kłopot z obsługą impulsatora. Napisałem taki oto program który generalnie działa prawidłowo:
Sub Power_on
Do
Portb = Wejscie
Loop
End Sub
Sub Encoder:
Disable Int1
Enable Interrupts
If Pind.4 = 0 Then Incr Chanel
If Pind.4 = 1 Then Decr Chanel
If Chanel >= 7 Then Chanel = 1
If Chanel <= 0 Then Chanel = 6
In_encoder:
Select Case Chanel
Case 1 : Wejscie = 1
Case 2 : Wejscie = 2
Case 3 : Wejscie = 4
Case 4 : Wejscie = 8
Case 5 : Wejscie = 16
Case 6 : Wejscie = 32
Case Else : Wejscie = 1
End Select
Waitms 50
Enable Int1
Goto Power_on
End Sub
Wszytkie zmienne zadeklarowałem jako Byte, procedura Encoder wywoływana jest na przerwanie INT1. Problem jest taki: po wykonaniu 60 impulsów obojętnie w którą stronę na porcie pojawia się najpierw liczba 81 (61 impuls) potem 54 (62 impuls) a następnie 1 (63 impuls). Dalej sytuacja się powtarza co 60 impulsów.
Co może być przyczyną takiego zachowania programu
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięImpulsator, przerwania, zmienne - problem
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 25 gości