Witam!
Po raz kolejny mam problem którego nie potrafię rozwiązać samodzielnie.
Jeden z portów kontrolera (PORTD3) jest ustawiony jako przerwanie zewnętrzne (INT1) które sterowane jest elektronicznie, więc na pewno nie występuje drganie styków.
Przerwanie ustawione jest aby reagowało na wszelką zmianę stanu logicznego.
W czasie pojawienia się któregoś ze zboczy, w funkcji przerwania sprawdzany jest stan na porcie w celu stwierdzenia czy jest to zbocze opadające czy narastające. Następnie w przypadku zbocza narastającego ma sprawdzić czy bit PD5 w rejestrze PORTD jest ustawiony na "1", jeśli tak, ma zaznaczyć to w specjalnej tablicy, po czym wyłączyć PWM oraz pin 5 na porcie D.
Jeśli jest zbocze opadające, ma sprawdzić czy poprzednio był włączony pin 5 portu D (po to służy owa tablica) i przywrócić jego poprzedni stan oraz włączyć PWM.
Problem jest taki, że w czasie wyłączonego PD5 i pojawienia się zbocza opadającego na PD3, na ułamek sekundy włącza się PD5 (dosłownie mignięcie).
Niestety powoduje to że cała funkcja po prostu źle działa, raz zapisze w pamięci jaki był stan poprzedni pinu, czasem nie.
To normalne że w czasie sprawdzania pinu który ustawiony jest jako wyjście podciąga go do "1"?
Poprawiłem błąd, INT0 na INT1.
Po raz kolejny mam problem którego nie potrafię rozwiązać samodzielnie.
Jeden z portów kontrolera (PORTD3) jest ustawiony jako przerwanie zewnętrzne (INT1) które sterowane jest elektronicznie, więc na pewno nie występuje drganie styków.
Przerwanie ustawione jest aby reagowało na wszelką zmianę stanu logicznego.
W czasie pojawienia się któregoś ze zboczy, w funkcji przerwania sprawdzany jest stan na porcie w celu stwierdzenia czy jest to zbocze opadające czy narastające. Następnie w przypadku zbocza narastającego ma sprawdzić czy bit PD5 w rejestrze PORTD jest ustawiony na "1", jeśli tak, ma zaznaczyć to w specjalnej tablicy, po czym wyłączyć PWM oraz pin 5 na porcie D.
Jeśli jest zbocze opadające, ma sprawdzić czy poprzednio był włączony pin 5 portu D (po to służy owa tablica) i przywrócić jego poprzedni stan oraz włączyć PWM.
Kod: C / C++
Problem jest taki, że w czasie wyłączonego PD5 i pojawienia się zbocza opadającego na PD3, na ułamek sekundy włącza się PD5 (dosłownie mignięcie).
Niestety powoduje to że cała funkcja po prostu źle działa, raz zapisze w pamięci jaki był stan poprzedni pinu, czasem nie.
To normalne że w czasie sprawdzania pinu który ustawiony jest jako wyjście podciąga go do "1"?
Poprawiłem błąd, INT0 na INT1.
