Witam!
Procesor ziała z wewnętrznym oscylatorem 8MHz.
Cały mój problem zawarłem w temacie, więc po prostu zaprezentuję kod, ew. wyjaśnienia pod kodem.
Struktura danych dla RC5:
Konfiguracja licznika 0:
Konfiguracja przerwania INT0(Przerwanie dowolnym zboczem):
Definicje czasów używanie w przerwaniu:
W oryginalnym kodzie(niestety nie pamiętam skąd go wziąłem)procesor działał z zegarem 1MHz i te wartości nie były dzielone.
Obsługa przerwania INT0:
Na początku obsługi przerwania ustawiam licznik 0 ze względu na to, że normalnie jest on używany do zliczania impulsów z nogi T0.
Po przedarciu się przez ten kod zapewne nie pamiętasz problemu - W około 10-15% odczytów ramka dekodowana jest błędnie.
Mam nadzieję, że niczego nie pominąłem. Problem jest o tyle poważny, że będzie to urządzenie produkcyjne i aż taki błąd jest niedopuszczalny.
Na oscyloskopie sprawdziłem, że przebieg z odbiornika jest wystarczająco czysty, aby być bez problemów dekodowanym przez procesor, tak więc problem jest czysto programowy.
pozdrawiam i z góry dziękuję za pomoc,
Bartek
Procesor ziała z wewnętrznym oscylatorem 8MHz.
Cały mój problem zawarłem w temacie, więc po prostu zaprezentuję kod, ew. wyjaśnienia pod kodem.
Struktura danych dla RC5:
Kod: C / C++
Konfiguracja licznika 0:
Kod: C / C++
Konfiguracja przerwania INT0(Przerwanie dowolnym zboczem):
Kod: C / C++
Definicje czasów używanie w przerwaniu:
Kod: C / C++
W oryginalnym kodzie(niestety nie pamiętam skąd go wziąłem)procesor działał z zegarem 1MHz i te wartości nie były dzielone.
Obsługa przerwania INT0:
Kod: C / C++
Na początku obsługi przerwania ustawiam licznik 0 ze względu na to, że normalnie jest on używany do zliczania impulsów z nogi T0.
Po przedarciu się przez ten kod zapewne nie pamiętasz problemu - W około 10-15% odczytów ramka dekodowana jest błędnie.
Mam nadzieję, że niczego nie pominąłem. Problem jest o tyle poważny, że będzie to urządzenie produkcyjne i aż taki błąd jest niedopuszczalny.
Na oscyloskopie sprawdziłem, że przebieg z odbiornika jest wystarczająco czysty, aby być bez problemów dekodowanym przez procesor, tak więc problem jest czysto programowy.
pozdrawiam i z góry dziękuję za pomoc,
Bartek
