Piszę program do obsługi pilota RC5 i nie działa jak powinien.
Mam podłączony TSOP1836 pod PD2(INT0) zgodnie z notą katalogową.
Kiedy następuje zbocze opadające na wejściu PD2 wykonuje się przerwanie w którym co odpowiedni czas sprawdzam stan na tym wejściu. Później wyświetlam na wyświetlaczu bit toggle, adres, komende i czekam 2sek. Jakiego przycisku bym nie nacisnął to wyświetlają mi się same "0".
Dodałem więc kilka linijek kodu, żeby zmieniać stan na PD1 kiedy sprawdzam stan na PD2 i po wciśnięciu przycisku na pilocie wyświetla mi się raz "0 10101 010101", a raz " 1 01010 101010".
Kod który wgrywam do mikrokontrolera:
Korzystając z karty dźwiękowej jako oscyloskopu najpierw sprawdziłem przebieg na wyjściu TSOP, a później na PD1. Przebiegi są nałożone. W drugim przebiegu kiedy jest zbocze narastające, albo opadające to sprawdzam stan na PD2. Więc powinny być same zera przy adresie i jedna jedynka przy komendzie, a wyświetlają się przemiennie zera i jedynki.
Już sam nie wiem co jest nie tak. Atmega jest taktowana z wewnętrznego zegara 1Mhz. Sprawdzałem już na dwóch różnych atmegach.
Mam podłączony TSOP1836 pod PD2(INT0) zgodnie z notą katalogową.
Kiedy następuje zbocze opadające na wejściu PD2 wykonuje się przerwanie w którym co odpowiedni czas sprawdzam stan na tym wejściu. Później wyświetlam na wyświetlaczu bit toggle, adres, komende i czekam 2sek. Jakiego przycisku bym nie nacisnął to wyświetlają mi się same "0".
Dodałem więc kilka linijek kodu, żeby zmieniać stan na PD1 kiedy sprawdzam stan na PD2 i po wciśnięciu przycisku na pilocie wyświetla mi się raz "0 10101 010101", a raz " 1 01010 101010".
Kod który wgrywam do mikrokontrolera:
Kod: C / C++
Korzystając z karty dźwiękowej jako oscyloskopu najpierw sprawdziłem przebieg na wyjściu TSOP, a później na PD1. Przebiegi są nałożone. W drugim przebiegu kiedy jest zbocze narastające, albo opadające to sprawdzam stan na PD2. Więc powinny być same zera przy adresie i jedna jedynka przy komendzie, a wyświetlają się przemiennie zera i jedynki.
Już sam nie wiem co jest nie tak. Atmega jest taktowana z wewnętrznego zegara 1Mhz. Sprawdzałem już na dwóch różnych atmegach.