Witam,
od wczoraj zmagam się z problemem odbioru kodu RC5 w urządzeniu, w którym mam multipleks dużej ilości wyświetlaczy 7-segmentowych LED.
Przerwania na multipleks przychodzą co około 4ms. Multipleksowanych cyfr jest łącznie 48, ale pogrupowane są one, tak jakby były tylko 4 cyfry. W każdym przerwaniu kody segmentów wysyłane są szeregowo na 3 rejestry zbudowane z układów 4094. Czyli mamy:
- 3 kolumny wyświetlaczy
- w każdej kolumnie po 12 cyfr (4 wiersze)
- każdy wiersz sterowany z innego 4094
- rejestry połączone w szeregu (4x4094=32bity)
Całe wyświetlanie i dekodowanie cyfr na kody 7-segmentowe odbywa się w przerwaniu od Timera1. Multipleks działa świetnie bez żadnego mrugania, ma dużą jasność.
I teraz chciałbym ustawiać wartości na wyświetlaczy za pomocą pilota RC5. Pilot zbudowany także samodzielnie-sprawdzona konstrukcja działa od dawna z innymi urządzeniami.
Problem polega na (próbowałem narazie 2 metody odbioru kodu RC5):
1. Odbiór RC5 w pętli głównej..praktycznie bardzo rzadko odbierany jest kod..prawdopodobnie multipleks go zakłóca.
2. Odbiór RC5 w przerwaniu od INT0. Odbiornik wykrywa każde naciśnięcie pilota, jednak po przerwaniu INT0 procesor ATmega 128 zawiesza się na stałe(odwiesza go tylko watchdog, reset, lub odłączenie zasilania--totalni zwis
)
Poniżej kod odbiornika:
Powyższy kod jest dla odbierania RC5 w przerwaniu, po którym procesor zawiesza się. Po usunięciu "Getrc5(adress , Command)" program działa poprawnie.
Proszę o sugestie i podpowiedzi, gdzie robię błąd.
Pozdrawiam.
od wczoraj zmagam się z problemem odbioru kodu RC5 w urządzeniu, w którym mam multipleks dużej ilości wyświetlaczy 7-segmentowych LED.
Przerwania na multipleks przychodzą co około 4ms. Multipleksowanych cyfr jest łącznie 48, ale pogrupowane są one, tak jakby były tylko 4 cyfry. W każdym przerwaniu kody segmentów wysyłane są szeregowo na 3 rejestry zbudowane z układów 4094. Czyli mamy:
- 3 kolumny wyświetlaczy
- w każdej kolumnie po 12 cyfr (4 wiersze)
- każdy wiersz sterowany z innego 4094
- rejestry połączone w szeregu (4x4094=32bity)
Całe wyświetlanie i dekodowanie cyfr na kody 7-segmentowe odbywa się w przerwaniu od Timera1. Multipleks działa świetnie bez żadnego mrugania, ma dużą jasność.
I teraz chciałbym ustawiać wartości na wyświetlaczy za pomocą pilota RC5. Pilot zbudowany także samodzielnie-sprawdzona konstrukcja działa od dawna z innymi urządzeniami.
Problem polega na (próbowałem narazie 2 metody odbioru kodu RC5):
1. Odbiór RC5 w pętli głównej..praktycznie bardzo rzadko odbierany jest kod..prawdopodobnie multipleks go zakłóca.
2. Odbiór RC5 w przerwaniu od INT0. Odbiornik wykrywa każde naciśnięcie pilota, jednak po przerwaniu INT0 procesor ATmega 128 zawiesza się na stałe(odwiesza go tylko watchdog, reset, lub odłączenie zasilania--totalni zwis
Poniżej kod odbiornika:
Kod: text
Powyższy kod jest dla odbierania RC5 w przerwaniu, po którym procesor zawiesza się. Po usunięciu "Getrc5(adress , Command)" program działa poprawnie.
Proszę o sugestie i podpowiedzi, gdzie robię błąd.
Pozdrawiam.