podczerwień NEC
Masz problem? Zapytaj na forum elektroda.pl
From: "szumi" <master_szumi_at_nospam_o2.pl>
Subject: podczerwień NEC
Date: Mon, 17 Oct 2005 00:28:35 +0200
Witam!
Od dłuższego czasu próbuje napisać program pod atmelka 89cx2051 który by
rozkodowywał system nadawany przez piloty NECa. (poprzez dołączony scalony
odbiornik ir - sfh...) Niestety dotychaczas nie udało mi się tak stworzyć
programu aby poprawnie rozkodować tą transmisję. Jeżelu ktoś ma pomysł jak
się do tego zabrać i mógłby podsunąć kilka pomocnych wskazówek - bede
wdzięczny.
załączam stronę ze schematem kodu nadawanego przez piloty neca:
http://www.xs4all.nl/~sbp/knowledge/ir/nec.htm
Dodam że piszę w Bascomie ale za rady czysto assemblerowe też będe
wdzięczny.
pozdrawiam
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: =?ISO-8859-2?Q?podczerwie=F1_NEC?=
Date: Mon, 17 Oct 2005 01:06:22 +0200
szumi wrote:
Od dłuższego czasu próbuje napisać program pod atmelka 89cx2051 który by
rozkodowywał system nadawany przez piloty NECa. (poprzez dołączony scalony
odbiornik ir - sfh...)
załączam stronę ze schematem kodu nadawanego przez piloty neca:
http://www.xs4all.nl/~sbp/knowledge/ir/nec.htm
Najpierw stwórz funkcję dekodującą jeden bit, potem będzie już z górki.
Potrzebujesz mierzyć czas trwania przerwy między impulsami 560 us, ale
łatwiej będzie regularnie próbkować sygnał (np. co 140 us) i dekodować
sygnał automatem osadzonym w przerwaniu timera wyzwalanym co te 140 us
(140 us * 4 = 560 us). Mogłoby być jeszcze rzadziej ale wtedy nie
odfiltrujesz krótkich śmieci. Inne podejście jeszcze mniej obciążające
procesor to odpalenie szybkiego timera nie generującego przerwań, a w
przerwaniu wyzwalanym dowolnym zboczem sygnału IR odczytywanie i
zerowanie licznika timera (przez to znasz długości sygnału IR i przerwy
czyli to co pokazano w punkcie "Modulation" opisu protokołu). Nośną 38
kHz zdejmie sam odbiornik IR (na wyjściu da obwiednię). Ostatnia rzecz
to wykrycie w podobny sposób "rozbiegówki" sygnału długości 9 ms,
wykorzystywanej też przy wysyłaniu powtórek kodu.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: Jack Houseman <KILLSPAMjado_at_nospam_chello.pl>
Subject: Re: =?ISO-8859-2?Q?podczerwie=F1?= NEC
Date: Mon, 17 Oct 2005 16:21:05 +0200
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.
--
Pozdrawiam
Jado
>> Otwarty Projekt Automatyki Domowej [HA] http://zegaruz.republika.pl <<