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


Svítilna spínaná pohybovým čidlem

pomocí čidla PIR-SB00312A-1

Velmi jednoduchý projekt LED osvětlení, které je spínané pohybovým čidlem. Základem je vývojová deska STM8S103F3 K ní je připojem modul relé KY-019 (viz obrázek vlevo), který je spínán logickou jedničkou, na základě signálu z pohybového čidla PIR-SB00312A-1. Na obrázku vpravo je jeho vzhled a popis zapojení, pozor na správnou polaritu. pir. Toto pohybové čidlo je aktivní, to znamená, že reaguje na pohyb, asi až po třiceti vteřinách po zapnutí. V kódu je kvůli tomu malá zpožďovací smyčka (stabilizace).
Pro osvětlení jsem použil krátký LED pásek napájený stejnosměrným napětím 12V. Pro KY-019 napájení jsou tedy potřebná dvě napětí, 5V pro řídící obvod s vývojovou deskou a 12V pro obvod LED osvětlení.
Odběr řídícího obvodu v rozepnutém stavu (čekání na pohyb) je 6mA. Odběr v sepnutém stavu záleží na připojeném osvětlovacím LED pásku. V mém případě (asi 30-40 cm dlouhý pásek) byl odběr 150mA. Pokud by toto zařízení mělo být napájeno z baterií, bylo by nutné pro osvětlení použít nějaké úspornější LEDky pokudmožno napájené max 5V, viz výkonové LED. Pak by stačilo jedno napájecí napětí 5 voltů.
Řídící obvod by bylo možné doplnit o nějaké čidlo citlivé na světlo tak, aby relé spínalo pouze pokud je tma. Já jsem se však snažil o co největší jednoduchost.
Celkové schéma zapojení je jednoduché, pro relé i čidlo je použit port A, a to pin 1 pro čidlo a pin 3 pro relé. Pin pro čidlo je v módu input a pin pro relé v módu output v režimu "push-pool".
V tomto projektíku jsem se snažil ukázat, že programování v assembleru není až "taková hrůza", zvláště, když samotný kód zabírá pouhých 146 byte (sto čtyřicet šest bajtů).


Propojení modulů
schema

Jednoduchý je i kód v assembleru. Demonstruje nahazování a shazování pinu A3, a použití přerušení, aktivované pinem A1 při náběžné hraně (rising). Při příchodu logické 1 z výstupu čidla se aktivuje přerušení, které nahodí příznak pro sepnutí relé a vynuluje 24-bitový čítač zpožďovací smyčky (asi 20 vteřin při 2 MHz CPU), pro rozepnutí. Čítač je však zároveň nulován s každým dalším přerušením, takže relé rezepne, až když se oněch 20 vteřin nic nehýbe. Pro co nejmenší spotřebu je v hlavní smyčce instrukce WFI, která uspí procesor a čeká na přerušení (od čidla). Bližší upřesnění viz komentáře v kódu.


všeobecné informace

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 a dále jsou zde velmí podrobné manuály v PDF (v angličtině) odledně popisu mikrokontroléru a jeho instrukčního souboru.

Každý zde uváděný zdroják má stejnou strukturu. Na začátku jsou deklarace adres použitých systémových registrů (UART, I2C, GPIO...), což je klíčové. Tyto adresy jsou popsány jednak v datasheetu STM8, a také jsou k dispozici ve zdrojovém kódu, který je nainstalován spolu s prostředím ST Visual develop ve složce [Program Files]\ STMicroelectronics\ st_toolset\ asm\ include\ STM8S103F.asm). Asi je možné ji deklarovat jako include, ale zde jsou ve zdrojáku definovány pouze ty, které jsou použity.
Dále je inicializační část, kde je vynulována paměť ram, nastaví se rychost CPU a proběhne základní nastavení použitého hardware, například rychlost UARTu, GPIO input/output, atd. Pak už následují rutiny pro konkrétní modul.V nekonečné smyčce infinite_loop je ukázka činnosti. Samotné rutiny lze podle potřeby vykopírovat do jiného projektu. Úplně na konci je tabulka vektorů přerušení v segmentu vectit s popisy, které zařízení může přerušení vyvolat.

Rychlý návod jak vytvořit nový projekt v prostředí ST Visual Dvelop:
  • V Hlavním menu vybrat File a New workspace.
  • Zvolit položku Create workspace and project
  • Objeví se dialog pro zadání skupiny projektů.
  • Vyplňte pole workspace filename (název skupiny projektů)
  • Vyyplňte pole workspace location (složka pro umístění)
  • Naskočí další okno pro projekt.
  • Vyplňte pole project filename (název projektu)
  • Vyplňte pole project location (složka pro umístěni projektu, zde doporučuji vybrat podsložku skupiny projektů).
  • Do pole toolchain vyberte ST Assembler Linker.
  • Pole toolchain root ponechte nezměněno.
  • Naběhne výběr pro konkrétní CPU.
  • Vyberte v něm STM8S103F3P.

Tím se vytvoří projekt. Na levé straně se objeví strom Workspace, kde ve větvi source files otevřete main.asm, které je hlavní zdroják projektu. Je předvyplněn o počáteční definici segmentů a tabulku přerušení. Můžete jej vyčistit a pak do něj přes copy-paste (CTRL+A - CTRL+C -> CTRL+V) vložit některé s zde uváděných mých (nebo Vašich) zdrojáků. Soubory mapping.asm a mapping.inc systém vytvořil automaticky a není doporučeno do nich zasahovat, protože systém je interně přepisuje. Do téhož workspace můžete vkládat více projektů, každý však musí mít svou složku.
Do existujícího workspace pak lze přidávat libovolný počet projektů, pomocí pravého tlačítka myši na kořenové (nejvyšší) větvi stromu "workspace". Podmínkou je, aby každý projekt byl v samostatné složce (adresáři). Do podvětví source files, nebo include files, každého projektu se mohou přidávat další moduly. Další podrobnosti ohledně práce v prostředí ST Visual develop je v tomto manuálu (anglicky).

Nahrání (vypálení) programu do modulu:

RTC Především připojte k modulu vývojové desky STM8S103F3 programátor ST-Link. K tomu jsou určeny čtyři piny na desce vpravo: 3V3, SWIM, GND a NRST (viz obrázek vlevo).
Program lze vypálit přímo z prostředí "ST Visual Dvelopu" takto: v hlavním menu vyberte Build - Build (F7). Pokud překlad a sestavení proběhhne bez chyb, spusťte Debug - Start debugging. Tím se projekt nahraje (vypálí), naskočí okno debuggeru a případně můžete projekt spustit (F5), nebo krokovat (F10).
Vypálit program do STM8 se dá i jednodušeji pomocí ST Visual Programmer, pokud máte k dispozici již "visual developem" přeložený soubor (F7-build, viz výše) *.s19. Tento vznikne v podsložce projektu DEBUG, nebo RELEASE. Otevřete jej přes hlavní menu-File-Open a přes hlavní menu-Program-Current tab program vypálíte. Případně ještě můžete správnost vypálení ověřit pomocí hlavní menu-Verify-Current tab. Další podobnosti odhledně používání ST Visual Programmeru jsou v jeho nápovědě: hlavní menu-Help-Index.

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

(c) 2026 iisivak.xf.cz