RC5 Protokol

RC5 používá bifázový protokol, kde je každý bit zakódován pomocí změny fáze jak je vidět na obrázku ( zde je zobrazen průběh signálu na výstupu IR přijímače SFH506/SFH5110 ). Jednotlivé bity se kódují fází a to log.1 spádovou hranou v půli bitu a log.0 hranou náběžnou v půli bitu.

Dešifrovat tento průběh, který je přímo v tomto tvaru na výstupu IR přijímače ( je odstraněna nosná frekvence 36kHz ) je možnu minimálně dvěma způsoby:

  • Sledováním fáze
  • Zjišťováním log. hodnoty v 1/4 nebo 3/4 délky bitu

Osobně jsem dal přednost druhé možnosti. Vždy v 1/4 délky bitu se zjistí logická hodnota, která je totožná z hodnotou daného bitu. Pokud je přijíman bit s log.1 je v 1/4=1, 2/4=spadová hrana a v 3/4=0. Pokud by se bralo hodnotu z 3/4 tak se musí negovat.

RC5 obsahuje tyto bity:

2 x Start Bit - Slouží pro synchronizaci (proto jsou dva)

Toggle Bit - Jeho hodnota se mění při každém stisku tlačítka (On Key Down). Tak se pozná jestli tlačítko držíte - vysílá se po sobě jdoucí kódy se stejným Toggle Bitem, po uvolnění a opětovném stisku jakéhoko-li tlačítka se Toggle neguje.

5 x Adress Bit - Jedná se o adresu zařízení ( Teslacké TV mají adresu 00h )

6 x Data Bit - Hodnota stisknuté klávesy ( 0 - 00h, 5 - 05h, MUTE - 0Dh... )

Problém nastává s rušením, jelikož denní spektrum světla obsahuje i vlnové délky na, které je citlivý IR přijímač. Zvláště pak rád reaguje na "mrkající" zářivku. Proto je nutno vlastnit algorytmus na přesnou detekci rámce RC5.

Já používám sledování klidové úrovně log.1 na výstupu IR příjímače a když dojde spádová hrana ( 1/2 prvního start bitu) tak časuji 1/4 délky bitu a po uplynutí 1., 3. a 5. intervalu vždy sejmu hodnotu na výstupu IR přijímače, což odpovídá 3/4 prvního start bitu, 1/4 druhého SB a 3/4 druhého SB. Pokud přijmuté vzorky jsou 0, 1 a 0 tak se jedná o rámec RC5 s cca 99% jistotou. Načíst pak zbytek kódu je hračka.

Problém však nastává z timingem, jelikož keramické rezonátory použité v dálkových ovladačích jsou pofiderné kvality. Např. můj ovladač televize TESLA CK-3366XT má délku bitu 1,677ms ( a měl by mít 1,78ms ). Dlouho mi to nechtělo fungovat než mě napadlo zjistit periodu signálu. Proto doporučuji vždy změřit nejprv periodu start bitu a poté teprve stanovit timing.

Pokusy jsem kutil na tomhle zapojení:

Výpis z C - Firmware

Příloha

Adresy jednotlivých přístrojů a jejich dálkových ovladačů:

Data jednotlivých kláves:

Příloha je převzata z: Amatérské radio řada A (původní), ročník 2002, číslo 12, strana 25.

Aktualizováno 26.06.2006