Elektronika, ukázky pro STM8S103F3, plus programování v assembleru.


Infra přijímač VS1838B

s ovladačem

infra

Dálkových ovladačů je plno verzí a řada výrobců je řeší po svém. Existuje však jakýsi standart podle japonské firmy NEC Corporation. Příklad níže je právě podle něj, i když s určitým omezením fuguje i na ostatní infra ovladače.
Dálkový infračervený (IR) ovladač přenáší povely pomocí infračerveného světla. Funguje podobně jako malá svítilna, která velmi rychle bliká podle přesně definovaného vzoru.

Průběh signálu vypadá přibližně takto:
  • úvodní (startovací) impuls - ovladač nejprve vyšle delší záblesk, kterým přijímači oznámí, že začíná přenos nové zprávy
  • krátká mezera po úvodním impulsu - krátká pauza.
  • přenos jednotlivých bitů - data jsou přenášena po jednotlivých bitech (0=kratší impuls a 1=delší impuls)
  • mezi každým bitem je krátká mezera bez vysílání
  • konec zprávy, krátký impuls

Celá zpráva trvá obvykle jen 20 až 70 milisekund, takže uživatel ji vnímá jako okamžitou reakci zařízení. Vysílaný signál je tedy časově uspořádaná posloupnost impulsů infračerveného světla a mezer mezi nimi, která nese zakódovanou informaci o stisknutém tlačítku.

Popis pinů
  • OUT výstup, připojit na GPIO STM8 s možností externího přerušení, zde je připojen k portu A pin 1 (PA1)
  • GND zem, spojit s GND mikrokontroléru
  • VCC napájení 3.3 V nebo 5 V (většinou 5 V)

Kód níže je nastaven na rychlost CPU 16MHz. Pokud potřebujete nastavit nižší, bude třeba upravit konstantu pro rozlišení nuly a jedničky (viz konstanta HRANICE_0_1) a také délku úvodního low impulzu (viz konstanta INFRA_START). V tomto příkladu se neměří délky impulzů v mikrosekunách, ale pouze se zjistí, jaká hodnota se stihne naplnit do čítače, během daného stavu (zde do registru "Y"):

mereniX ;zmeri pocet taktu HIGH (LOW)
         clrw    y                    ; vynuluj citac
pricti   incw    y                    ; pricti +1
         jrv     ven                  ; pokud pretece, jde o chybu, ven s overflow
         btjt    PA_IDR, #PIN, pricti ; opakuj, pokud stav trva 
ven      ret

Hranici mezi krátkým impulzem a dlouhým impulzem určuje konstanta HRANICE_0_1. Pokud čítač přeteče (overflow), jde o chybné čtení, měření se ukončí a čeká se na další startovací impulz (stisk na ovladači). Správnost přečteného kódu se dá ověřit, v této ukázce je ověření podle standarů NEC. Ne všechny ovladače jej akceptují, mám ověřeno, že běžně prodáváné ovladače a infračidla pro obecné použití( například tento ) podle něj fungují.
V příkladu je datový pin (výstup) infra přijímače připojen k portu PA3 (D2). Stisk tlačítka vyvolá přerušení, kde se přečte a uloží jeho hodnota. V hlavní smyčce se pak vyhodnocuje zda něco bylo stisnuto a pak by zde měl být nějaký uživatelský kod, který provede nějakou akci, obvykle nahazování/shazování GPIO pinů.


všeobecné informace

Všechny zde uváděné zdrojáky mají stejnou strukturu, jsou vytvořeny podle stejné šablony. Na prvním řádku každého zdrojáku musí být direktiva stm8/, jinak překlad skončí chybou. Program má inicializační část (SETUP), kde je nastaven vrchol zásobníku, je vynulována paměť ram, nastaví se rychlost CPU a proběhne základní nastavení použitého hardware, například UART, CPI, I2C, GPIO, atd. Vyhrazené piny pro UART, SPI, I2C a analogy jsou v této tabulce:
STM8S103F3P6

určení jednotlivých pinů
Napájení5V, 3V3 a zem GND
GPIOvšechny piny An, Bn, Cn, Dn
UARTTX=pin D5, RX=pin D6
SPIMISO=pin C7, MOSI=pin C6, SCK=C5, CS/SS=pin A3
I2CSCL=pin B4, SDA=pin B5
ANALOGA0=pin C4, A1=pin D2, A2=pin D3, A3=pin D5, A4=pin D6
ST-LINKpiny pro programátor SWIM a NRST

V nekonečné smyčce (LOOP) se pak provádi samotná činnost. Úplně na konci je tabulka vektorů přerušení v segmentu vectit s popisy, které zařízení může přerušení vyvolat.
U modulů, které jsem v rámci svých možností odladil a otestoval, jsem vytvořil prográmek, který lze formou copy-paste vytáhnout (buď celý, nebo pouze potřebné kusy kódu) a použít jej v nějaké Vaší aplikaci. Zkopírovat se musí potřebný kód, proměnné v paměti a deklarace konstant (equ).

Na stránkách výrobce ST Microelectronics je ke stažení vývojové prostředí ST Visual develop, utilita ST Visual Programmer a dále jsou zde velmí podrobné manuály v PDF (v angličtině) odledně popisu mikrokontroléru a jeho instrukčního souboru.

Dúležité upozornění: Zde presentovaný modul mikrokontroléru má výstupy 5V, 3V3 a GND. Na výstupu 5V ve skutečnosti není 5 voltů, ale vstupní napětí, kterým celý tento modul napájíte, buď přes piny +/-, nebo přes konektor mikroUSB, což může být 4.5 - 15V. Buďte opatrní, co k tomu pinu (5V) připojíte, připojovaný modul můžete tímto zničit. Doporučuji modul napájet výhradně z 5V zdroje.

Vzkazník - dotazy, názory, připominky, hlášení chyb, atd:
případný E-mail nebude nikde zveřejněn, uveďte jej, pouze pokud si přejete odpověď.

Elektronika, ukázky pro Arduino a STM8, plus programování v Delphi (Lazarusu).
Všechna zapojení modulů v ukázkách (viz elektrická schémata) pracují s velmi malým napětím 3.3V až 12V a neobsahují návod na napájecí zdroj. Pokud se rozhodnete některé z těchto zařízení postavit, důrazně doporučuji používat zdroje s výstupním napětím maximálně 12V, podle schválených norem platných v ČR. Autor návodů za případné škody nepřebírá žádnou odpovědnost.
nahoru
tyto stránky jsou provozovány jako hobby, bez reklam a bez sběru osobních dat (c) 2026 iisivak.xf.cz