Učící se, univerzální IR přijímač (AtMega16)

Zdravím, pracuji na své semestrální práci a narazil jsem na problém.Potřeboval bych dekódovat tlačítka různých ovladačů tj. nedekódovat je podle protolů (to by bylo složité) ale nejspíše snímat v určitých časových intervalech stav na výstupu dekodéru (používám TSOP4836) Nemá s tím někdo zkušenost ? . . .v jakých časových intarvalech snímat, kolik bitů sejmout a jak ošetřit chybové načtení. Následně totiž budu muset zařízení naučit používat 10 tlačítek (z “jakéhokoliv” ovladače) a pomocí nich ovládat - v mém případě led diody. Budu rád za každý dobrý nápad :wink:

dhservis.cz/dalsi_1/stmivac_ … /infra.htm
som zvedavy to bude tazka obhajoba ked uvedies ako zdroj toto :smiley:

jo jo měl jsem čest zavítat i na tuhle stránku.Nevím jestli jsem to přehlédl ale nenašel jsem ani načasování ani počet přijatých bitů. A taky by mě zajímalo když sejmu 10 kodů z jednoho ovladače a deset z duhého jakým způsoben jim budu přiřazovat jednotlivé funkce (tj když vytvořím pole ktereé bude mít 20 prvků tak aby 1.prvek což je 1.tlačítko 1.ovladače dělalo to samé jako 11.prvek což bude 1. tlačítko 2.ovladače)

no ked budes davat pozor najdez dokonca zdrojak na stranke co viac si priat… nacitaj do MPlabu odkrokuj a zistis vsetko co potrebujes vediet pozbiera caa 64 vzoriek, A napr zo signalu RC5 ktory pouziva 1,78ms na bit na cely jeden prizkaz sa prenesie za caa 24ms ale napr kodovanie panasonic prenasa 48bit…a ine.

Cau, to z “jakéhokoliv” ovladace bude trochu problem, tady sbprojects.com/knowledge/ir/ir.htm je par protokolu na ukazku, bude to chtit asi trochu trpelivosti,
pokud budes vzorkovat po cca 100mS - budes mit malo vzorku / mala presnost / moznost ruseni
kdyz budes vzorkovat po cca 10uS - bude vzorku ze se ti do pokoje nevejdou :laughing: / ale bude to presnejsi / da se tim odstranit ruseni,
u nekterych protokolu muze bejt prikaz dlouhej 40-50mS,nekde se budou pouzivat tzv. toggle bity, v ovladacich se pouzivaj RC oscilatory (nepresnost),
mozna by stalo za to vzit nakej univ.ovladac a kouknout se jak vypadaj protokoly nekolika vyrobcu,

No to z jakéhokoliv je myšleno obrazně (cca tak 80-90%) proste ty co mají standartní protokoly a né žádné obludnosti. Hádám že vzorkování po 100ms byl jen překlep. zatím jsem dospěl k názoru že by stačilo sejmout tak rámec o velikosti 50ms (to by mělo snad stačit) a rozdělit ho na cca 32 vzorku. Nemusí to načíst ani celý signál z ovladače jde o to abych při zmáčknutí toho samého tlačítka získal ten samý kod a aby dvě tlačitka neměly ten kod stejny

ehm jo preklep , melo bejt 100us ,
pokud sejmes 32vzorku / 50mS = 1.5mS, takle budes mit problemy mozna i s RC5 :wink: , a nemas ani moznost rozpoznat jestly jde o ruseni ci vysilani , klidne bych to testoval kazdejch 10-20uS a ukladal ale kazdej 10 treba, pak zjistis ze jde o ruseni ci signal, kdyz bude uroven stejna po dobu treba 100-300uS je signal, kratsi ruseni, pak poznas i konec ramce a nemusis vzorkovat dal
skus neco udealt a otestovat , pak uvidis …

jo to by šlo. A když budu mít zase hodně vzorků tak jak je uložím, tak aby v tom šlo zpětně vyhledávat ? původně jsem chtěl ukládat hodnotu vzorku do long intu a ty ukladat do pole. A následně při porovnávání tlačítka s hodnotou v poli by mi to při shodě vyhodilo index toho nalezeného tlačítka v poli a podle indexu bych přiřadil funkci.

muzes mit 1 vzorek rozdelenej do vice int32, prvnich 32vzorku v poli1, druhejch 32 v poli2…, porovnavat budes jen v pole1 pri schode pak porovnavat v pole2…

jen doufám že to nebude moc pomalé ale jinak dík :wink: . . . no vyzkouším a uvidím ale kdyby ještě něco někoho napadlo tak se novým nápadům bránit nebudu