Cześć forumowicze

,
boryka się z problemem odbioru danych z pilota firmy LG. Nie mając pojęcia jakiego kodowania używa, chciałem sam do tego dojść, sprawdzając czasy trwania sygnałów niskich wysyłanych przez odbiornik oraz orientacyjną ilość bitów. W tym celu napisałem poniższy program.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Program działa b. prosto. Do pinu PB0 (ICP1 - ten reagujący na zbocza) podłączony jest odbiornik TSOP31236. Włączam 16 bitowy Timer1, który jest taktowany częstotliwością 1MHz (8MHz ATMega oraz preskaler=8). Spójrzmy na przerwanie. Widzimy, że w przypadku zbocza opadającego licznik jest zerowany. Natomiast jeśli pin wykrył zbocze narastające to:
- inkrementujemy zmienną ilość_bitów, która orientacyjnie mówi o ilości bitów przesyłanych przez pilota,
- odczytujemy wartość rejestru ICR1, który przechowuje wartość Timera1 w chwili pojawienia się zbocza, i wpisujemy tę wartość do tablicy bity, na którą jak widać nie żałowałem pamięci

- ustawiamy zbocza powodujące przerwanie na przeciwne.
Na LCD wyświetlany jest napis "Zacznij pomiar" i mamy 2s na naciśnięcie przycisku na pilocie. Następnie na ekranie LCD wyświetlane są czasy stanu niskiego na odbiorniku oraz na końcu orientacyjna liczba bitów. Niestety te czasy nie odpowiadają żadnemu znanemu mi standardowi kodowania (odbierane wartości stanu niskiego są 2 : ok. 75us oraz ok. 130 us, przy czym ok. 130 us występuje na końcu i na początku, przez "środek" odbieranych danych wartość stanu niskiego wynosi ok. 75us - czyżby modulacja odległości impulsu?), a liczba bitów, czy też precyzyjnie zmian na stan niski wynosi 37-41 ( nie sprawdzałem wszystkich przycisków). I tu moja prośba: pomoże mi ktoś ustalić co to za kodowanie? Czy mam gdzieś błędy w rozumowaniu/programie? Dlaczego stany niskie są tak krótkie?