Implementácia protokolu RC5 na platforme procesora Cypress
![]() |
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky |
![]() |
Autor: | Július Jančo |
Pedagogický vedúci: | RNDr Peter Fabo PhD. |
Študijný odbor: | Mechatronika |
Akademický rok |
2009/2010
|
1. | Protokol RC-5 |
2. | Návrh hardvérovej časti dekodéra RC5-BIN |
3. | Implementácia dekodéra RC5-BIN v mikroprocesore Cypress
|
Abstrakt
Práca sa zaoberá návrhom a realizáciou softvérovej a hardvérovej časti implementácie protokolu RC-5 na platforme procesora Cypress. V prvej časti je opísaný protokol RC-5, jeho vlastnosti, opis a možnosti dekódovania signálu. Ďalšia časť práce popisuje všetky hardvérové časti, ktoré boli priamo využité pri implementácii. Opisuje novú generáciu procesorov PSoC od spoločnosti Cypress, jednotlivé bloky a časti procesora, ktoré boli pri práci využité. Taktiež sú opísané ďalšie hardvérové súčasti ako prijímač infračerveného signálu či komunikačné rozhranie RS232. V ďalšej časti sa práca zaoberá návrhom algoritmu na dekódovanie signálu, vývojom programu pre dekódovanie signálu v programovacom jazyku assembler. Vyvinutý zdrojový kód je dobre opísaný a nadväzuje na každý krok skôr navrhovaného dekódovacieho algoritmu. |
Abstract
The work deals with the design and implementation of software and hardware implementation of the Protocol on the RC-5 platform of Cypress Processor. The first part describes the RC-5 protocol, its characteristics and describes possible signal decoding. The next section describes all the hardware parts that were used for implementation. It describes the new generation of PSoC processors from Cypress, individual blocks and the parts of processor which were used at work. It also describes other hardware components such as an infrared signal receiver or RS232 communication interface. The next part deals with design algorithm to decode the signal, the development program to decode the signal in the assembler programming language. Developed source code is well described, and each step builds on the earlier proposed decoding algorithm. |
Úvod
V súčasnej dobe si už nedokážeme predstaviť život bez rôznych spotrebičov, zariadení či mechanizmov. Uľahčujú nám život, vykonávajú rôzne špecifické funkcie, na ktoré by sme inak museli vynaložiť veľa úsilia. Vyvstáva však potreba tieto zariadenia ovládať, zapínať, vypínať, prepínať na inú funkciu. Prvými riešeniami bolo ovládanie priamo na spotrebiči ako je napríklad televízor či rádio. Na zariadení respektíve spotrebiči bol panel s tlačidlami, ktoré mali rozličnú funkciu. Nevýhodou však očividne bolo nepohodlie, keď pri každej želanej zmene programu alebo hlasitosti musela dotyčná osoba ísť k televízoru či rádiu a prepnúť ho. Prvými takzvanými diaľkovými ovládaniami boli ovládače, ktoré mali niekoľko základných funkcií a viedol k nim viacžilový kábel z televízora. Iste, na tú dobu možno pokrokové riešenie avšak veľmi nepraktické pri predstave použitia na viacero zariadení. V 80.tych rokoch minulého storočia prišli prvé diaľkové ovládače, ktoré realizovali prenos signálu už nie tzv. „po drôte“ ale prostredníctvom infračerveného svetla. V tom momente už sa dalo hovoriť a praktickom diaľkovom ovládaní a rozširovali sa možnosti jeho využitia. Infračervené svetlo, ktoré diaľkové ovládanie vysielalo však bolo potrebné istým spôsobom modulovať aby sa doňho dala zakódovať funkcia, ktorú si užívateľ vybral stlačením príslušného tlačidla na diaľkovom ovládači. V prvých rokoch sa snažilo mnoho firiem a spoločností vytvoriť svoj vlastný mechanizmus kódovania signálu, avšak neskôr prišla myšlienka zjednocovania. Náhodou sa takýmto všeobecne uznávaným zjednotením stal protokol RC-80 od spoločnosti Philips. Kódovanie podľa tohto protokolu však nebolo spoľahlivé a preto firma vyvinula protokol RC-5, ktorý disponoval vysokou mierou možností využitia a aj spoľahlivosti. I napriek tomu, že firma Philips vydala len jednu publikáciu o tomto protokole a dá sa povedať, že sa dlho snažila uchovať čo najviac pre seba, ostatní výrobcovia kód dekódovali a protokol popísali. Touto etapou sa otvorili dvere výrobcom spotrebičov najrozličnejších funkcií. Už nemusíme hovoriť len o televízoroch čí rádiách. Množstvo zmysluplných využití môžeme napríklad nájsť aj v obyčajnej domácnosti. To môže predstavovať ovládanie intenzity svetla, ovládanie roliet či žalúzií, ovládanie strešných okien, ku ktorým býva problematický prístup. Našou úlohou bolo tento protokol pomocou technologickej novinky od spoločnosti Cypress nazvanou PSoC (programovateľný systém na čipe) dekódovať a implementovať program, ktorý bude schopný pracovať s týmto protokolom. Tým by sa naskytli nové možnosti použitia diaľkového ovládania či už v domácnosti alebo v akomkoľvek inom prostredí.
Protokol RC 5
Prenos signálu pomocou infračerveného svetla je jedným z najpoužívanejších v spotrebnej elektronike. Typickým príkladom je diaľkové ovládanie televízora, rádia a pod. Povely, ktoré vysiela diaľkový ovládač sú vysielané LED diódou s infračerveným žiarením. Toto žiarenie sprostredkuje informáciu logickej nuly – v prípade ak LED dióda nesvieti a opačne, logickej jednotky – v prípade ak svieti. Vysielaný signál musel byť modulovaný podľa istého predpisu resp. istým spôsobom – protokolom. Koncom 80.-tych rokov 20. storočia, sa protokoly RC-80 a RC-5 spoločnosti Philips, náhodne stali medzinárodnými štandardmi. Nakoľko však protokol RC-80 nebol spoľahlivý, rýchlo ho nahradil v 90.tych rokoch protokol RC-5. Protokol sa veľmi rýchlo šíril a s istými obmenami sa využíval vo veľkej väčšine Európy a Spojených štátoch amerických. Naproti tomu, však bol v Japonsku rozšírený protokol NEC. Protokol RC-5 bol vyvinutý firmou Philips, konkrétne profesorom Ronaldom Rivestom. Bol navrhnutý pre diaľkové ovládanie prístrojov spotrebnej elektroniky. Je jedným z najpoužívanejších protokolov vďaka jeho dostupnosti a cenovej výhodnosti diaľkových ovládačov[1]
Opis protokolu
Prenos signálu je realizovaný infračerveným svetlom, ktoré je nositeľom informácie a je vysielané diaľkovým ovládačom. Nosná frekvencia je 36 kHz. Jeden impulz má dĺžku 27,8 µs. Z tejto dĺžky LED dióda svieti 25 až 33 %, čo je približne 6,944 µs. Zostatok LED dióda nesvieti. Impulz je znázornený na Obr.1.1 V protokole reprezentuje dávku 32 impulzov nosnej frekvencie a medzeru čas, zodpovedajúci 32 impulzom nosnej frekvencie. V tom prípade má dávka(pozn. z angl „burst“) alebo pauza podľa vzťahu 1.1 trvanie:
[math]\frac{n_i}{T_i}=\frac{n_i}{\frac{1}{f_n}}=T_d [/math]
kde, ni - je počet impulzov, Ti - perióda jedného impulzu, fn -nosná frekvencia a Td - perióda jednej dávky.
Uvedieme príklad podľa 1.2 pre protokol RC-5, kde ni=32, fn=36kHz, [math]T_d=\frac{32}{1/36000}=0,889.10^-3s=889 us[/math] Ako vidieť, trvanie jednej dávky alebo pauzy trvá .Jeden bit je tvorený vždy značkou a medzerou, čiže jeden bit potom trvá 2.Td=Tb. Tb je perióda jedného bitu. Tb=2.Td=2.889µs=1,78ms. V protokole sa využíva dvoj fázová modulácia tzv. Manchester coding , infračerveného svetla s nosnou frekvenciou 36 kHz. Všetky bity majú rovnakú dĺžku 1,78 ms. Polovica bitu je vyplnená dávkou 32 impulzov nosnej frekvencie a druhá polovica neaktívnym stavom taktiež s dĺžkou 32 impulzov. Logická jednotka je reprezentovaná dávkou v druhej polovici bitu a logická nula dávkou v prvej polovici bitu ako je možné vidieť z Obr.1.2.
Obrázok Obr.1.3 znázorňuje typický priebeh signálu protokolu RC 5. Celá správa sa skladá zo 14 bitov, takže celkovo jej prenos trvá 24,92 ms. Pokiaľ je tlačidlo na ovládači stlačené, odosielanie správy sa opakuje každých 113,792 ms.
Kódovanie protokolu
Vysielaný povel z diaľkového ovládača obsahuje 14 informačných bitov Obr.1.3 v Manchester code. Bližšiu špecifikáciu Manchester code je možné nájsť v [2]. Každý z bitov predstavuje špecifickú informáciu. Vysielaný povel vždy začína dvoma bitmi nazvanými štart bit. Používajú sa na aktivovanie a správne zosilnenie prijímača. Ďalej nasleduje Toggle bit, ktorý zmení svoju hodnotu vždy pri opätovnom zatlačení tlačidla na diaľkovom ovládači. Toggle bit sa vyskytuje v kóde preto, aby pri podržaní tlačidla nedošlo k vyslaniu viacerých povelov toho istého tlačidla veľmi rýchlo za sebou. Nasleduje 5 adresných bitov, ktorých súčet alebo kombinácia udáva, ktoré zariadenie má na povel reagovať, nakoľko môžeme mať v jednej miestnosti viac prijímačov napr. televízor, video, domáce kino, ovládanie svetiel, žalúzií a pod. Za nimi nasleduje 6 príkazových bitov, ktoré určujú aký príkaz sa má vykonať, t.j. prepnúť kanál na TV, spustiť DVD prehrávač a pod. Obsiahlejšiu sadu adries a príkazov je možné nájsť v [3]. Aj napriek tomu, že samotný protokol je dobre popísaný, jediná dokumentácia od firmy Philips [4]. bola vydaná v roku 1992 a nenachádza sa dokonca ani v elektronickej forme. V tejto dokumentácii však neboli popísané všetky adresy a príkazy a firma Philips ich ani neaktualizovala a ani neskôr nezverejnila. Napríklad v dobe vydania, sa medzi adresami vyskytovali hodnoty pre zariadenia „CD-Video, CD-Photo, Compact Disc Recorder “, ktoré za pár rokov stratili opodstatnenie. Naproti tomu neboli pridané adresy pre DVD prehrávače, domáce kiná, DVD rekordéry a zariadenia, ktoré sa objavili neskôr. Nakoľko protokol využívalo viacero výrobcov spotrebnej elektroniky, počas rokov začalo dochádzať k chybám, pretože zariadenia rôznych značiek už mali rôznu funkciu pre ten istý povel v protokole RC-5. Podobná situácia nastala aj s adresami zariadení [5]. Ako nosná frekvencia sa štandardne udáva hodnota 36 kHz. Avšak v praxi Philips využíva aj frekvenciu s hodnotou 38 kHz a 40 kHz. Preto treba brať do úvahy aj rôzne periódy bitov a výsledného povelu, čo naznačuje, že dekódujúci algoritmus respektíve program musí byť flexibilný.
Spôsoby dekódovania
Na dekódovanie signálu bolo vytvorených viacero algoritmov. Najjednoduchším dekódovaním je postup, pri ktorom čakáme na prvú vzostupnú hranu signálu a spustíme vzorkovanie. Vzorkovanie sa uskutoční tak, že budeme merať každú druhú polovicu bitu na prítomnosť logickej jednotky alebo nuly. Na to však musíme poznať periódu a tú udáva špecifikácia protokolu RC-5 ako 1,78 ms. Ukážka dekódovania je na Obr.1.4.
Pri tomto type dekódovania však nastávajú značné problémy, pretože vysielač (v bežnom prípade diaľkové ovládanie) by musel odosielať povel so značnou časovou presnosťou. Pri bežných diaľkových ovládačoch sú však používané lacné oscilátory, ktoré sú riadené nekvalitnými rezonátormi, ktoré sú v praxi nespoľahlive zapríčinenou lacnou a nekvalitnou výrobou, čo má za následok nespoľahlivý referenčný zdroj frekvencie. Ak by sme chceli s istotou používať takýto algoritmus, časovač v diaľkovom ovládaní by mohol mať odchýlku maximálne 1,96 %. V praxi sa však stretávame s bežnou odchýlkou podľa [6] až 5 %. Do úvahy treba brať aj to, že samotná firma Philips používa pre protokol RC-5 rôzne nosné frekvencie a to 36 kHz, 38 kHz a 40 kHz. Z týchto dôvodov bolo treba hľadať spôsob ako korektne dekódovať prijatý povel. Bolo potrebné navrhnúť algoritmus, ktorý bude schopný dynamicky reagovať na zmenu nosnej frekvencie a tým aj zmeny v perióde dĺžky jednotlivých bitov. Riešením tohto problému bolo odmeranie periódy trvania prvého štart bitu, pretože môžeme vychádzať z predpokladu, že prvé dva štart bity sú v kódovaní logické jednotky. Dekódovací algoritmus čaká na prvú vzostupnú hranu. Ak ju zdeteguje, spustí meranie času. Meranie času trvá pokiaľ nezaznamenáme ďalšiu vzostupnú hranu, pretože to je miesto, kde už začína ďalší bit. Táto doba predstavuje periódu jedného bitu. V prípade, že sme odmerali periódu prvého bitu, môžeme postupovať ako v predchádzajúcej metóde a to opakovane s posunutím o periódu bitu zisťovať stav na prijímači – či sa v danom mieste vyskytuje logická nula alebo jednotka a následne potom určiť hodnotu bitu 0 alebo 1. Toto je potrebné opakovať 13 krát, pretože i keď v povele sa vyskytuje 14 bitov, počas prvého bitu odmeriame periódu a preto neuvažujeme s meraním všetkých 14 ale len ostávajúcich 13 bitov. Na Obr.1.5 je uvedený vývojový algoritmus tohto riešenia.
- ↑ http://en.wikipedia.org/wiki/Consumer_IR
- ↑ http://en.wikipedia.org/wiki/Manchester_code
- ↑ http://en.wikipedia.org/wiki/RC-5
- ↑ Philips Semiconductors. Remote Control System RC-5 including Command Tables. December, 1992
- ↑ http://en.wikipedia.org/wiki/RC-5
- ↑ http://www.za.gaya.sk/~sinkom/konstrukcie/RC5_dekoder/RC5_I.html