Witam,
Ja bardzo podobna transmisje rozkodowalem za pomoca ukladu CCP jakie sa w procesorach m. in. PIC. Uklad po prostu czeka po kolei na odp. impulsy - najpierw rozbiegowka czyli impuls i przerwa. Jesli czasy sie zgadzaja (z tolerancja ktora ja dalem na poziomie +-30%), to idziemy dalej czyli czekamy na kolejne impulsy (bity danych). I tak dalej - az dojdziemy do konca. Trzeba tylko pamietac, ze na koncu przebiegu jest jeszcze jeden dodatkowy pik, ktory wyznacza czas trwania ostatniej przerwy.
Sam odbior bitow i pomiar ich czasow trwania zrobilem na przerwaniach - po odebraniu kazdego impulsu uklad przestawia sie na oczekiwanie na przeciwne zbocze (wyzwalanie raz opadajacym, raz narastajacym zboczem). Uklad CCP zlicza impulsy do momentu wystapienia przerwania - potem mozna te dlugosci sobie odczytac i wrzucic do pamieci do dalszej analizy (u siebie analize i dekodowanie rozkazow mam juz w programie glownym).
Dla prockow ktore nie posiadaja CCP sposob z szybkim timerem i przerwaniem z jednego z pinów - jak kolega wyzej napisal jest rownie dobry.
Generalnie zasada jest jednak taka, ze system wie czego oczekuje i wie w ktorym momencie powinien nadejsc jaki impuls (pomijajac czy to ma byc jedynka czy zero), wie w ktorym momencie odbioru sie znajduje (kazdy impuls jest zliczany) itd... Jezeli cos sie nie zgadza z tym na co system oczekuje (np. dlugosc trwania impulsu), to odbior powinien zostac przerwany a uklad zresetowany. I znowu czekamy na rozbiegowke.
Kod moge udostepnic, ale jest napisany w ASM na proceorki PIC rodziny 18. Maszyna stanow.
Wykrywanie warunku repeat - czyli rozbiegowki wysylanej przy wcisnietym klawiszu (ktory na szczescie jest inny niz warunek startu wysylany na poczatku nadawania) ja sobie darowalem, bo nie bylo mi to potrzebne. Ale mozna latwo zaimplementowac.