Wróciłem do tematu sterowania po paru dniach i postanowiłem troszkę algorytm czytnika pilotów IR zmodyfikować. W tiny13 program miał tylko włączać i wyłączać konkretne wyjścia przez co nawet nie starałem się robić odczytu przelotowego. Funkcja nie była też wyzwalana przerwaniem z racji, że to mały ubogi procek i jednorazowy projekt, a timer też był potrzebny do innych rzeczy w algorytmie.
Kiedy podliczyłem wszystkie poniewierające się w domu piloty to pomyślałem, że może by jednak coś w kierunku bardziej uniwersalnym pójść i wykorzystać część tego elektrozłomu w przyszłości

Tak oto zrobiłem dziś (na razie wersja testowa) programik, a właściwie funkcję (nawet jej w bibliotekę nie ubierałem jeszcze) z jak mi się wydaje poprawionym algorytmem odczytu większości popularnych pilotów, które udało mi się zidentyfikować między innymi NEC, X-Sat, Sony SIRC, JVC, Denon i oczywiście RC5 bez bitu toggle, które to ku mojej uciesze usunęło się przez przypadek przy tworzeniu nowego algorytmu

Niektóre bardziej egzotyczne piloty dają z kolei tylko jeden kod, albo wcale... Zaznaczę tu od razu, że NIE jest to dekoder tylko jak już go nazwałem wcześniej CZYTNIK pilotów podczerwieni. Wynik, który otrzymujemy jest 16-bitową liczbą nie mającą NIC wspólnego z oryginalnym kodem pilota opartą o mój algorytm napisany tak, aby były jak najmniejsze szanse powtórki. Ze względu na prostotę jego transmisji znowu pokrzywdzony jest RC5 - co udało mi się znaleźć to, np. wspólny kod dla klawiszy CH- i [kursor w dół] oraz jeszcze jakaś inna para. W każdym razie gdyby komuś na tym zależało to bibliotek do pilotów RC5 jest mnóstwo w sieci, a mnie akurat na nim najmniej zależy, bo nie posiadam (oprócz pilota uniwersalnego, który do testów wykorzystałem) żadnych urządzeń pod ten standard.
Zależało mi przede wszystkim na objętości programu i aby bez przeszkód można było wykorzystać w KAŻDYM procku. Cała funkcja odczytu zajmuje 254 bajty i wywoływana jest cyklicznie w przerwaniach (na Atmega32 16Mhz zabiera w porywach 1-3us czasu). Ten sposób pracy ma swoje wady, ale też i zalety - z Attiny13 można cuda robić

Dziś chciałbym wam dać do testowania programik i prosić o opinie jak wam się takie rozwiązanie podoba i czy algorytm daje radę. Może trzeba go będzie jeszcze zmodyfikować nieco.
Do uruchomienia potrzebna Atmega32 z kwarcem 16MHz. Na PB0 wpinamy się z czujnikiem IR, PB1 wyjście na LED kontrolny (względem masy). Wyświetlacz pod portem C. Dane z nagłówka LCD poniżej:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
