|
Zaujal mne osmibitový mikrokontrolér STM8S103 od ST Microelectronics,
stejně jako programování v assembleru. To je taková ta výzva, kdy se z minima, snažíte vymáčknout maximum. Podle mne je tento čip ideální pro
stavbu jednoúčelových zařízení jako jsou různá čidla a podobně. Snažil jsem se vytvořit několik více, nebo méně povedených příkladů a návodů, viz seznam níže,
který budu postupně doplňovat nejen návody a ukázkami, ale i hotovými projekty.
Pro názornost uvádím velmi jednoduchý ukázkový projekt "spínání relé pohybovým čidlem", kde se snažím ukázat i práci s
přerušením (interrupt).
Assembler je asi jen takové okrajové téma, vypadá to, že dnes se jím zabývá málokdo. Nejspíše proto, že existují pohodlnější vývojové nástroje, a to i pro tento typ kontroléru.
Je to například Cosmic, nebo Arduino IDE s doinstalovanou knihovnou SDuino oba pro jazyk "C".
Kdyby přece jen někoho zajímalo, jak to funguje na té nejnižší úrovni, kde máte fakticky úplnou kontrolu nad daným zařízením/čipem, tak se zde může mrknout.
Co se mi však na assembleru líbí nejvíce, je jeho úspornost. Zde publikované příklady a projekty zabírají řádově stovky bajtů, sotva dosáhnou jediného kB.
Pro editaci, kompilaci a ladění jsem použil ST Visual develop, který by se měl dát stáhnout
odtud. Deska STM8 neposkytuje možnost nahrávání, k tomu
slouží programátor ST-Link. Ovladač k němu, pro Windows by měl být
ke stažení v obchodě (na eShopu), kde se prodává. Výhodou je, že pomocí něj se program nejen nahrává, ale umožňuje i plnohodnotné ladění. To je krokování a sledování obsahu paměti
i registrů.
Seznam miniprojektů, návodů a modulů
Displeje LCD, 7-seg, indikátory
Rádia, VKV přijímače, čtení RDS
Přehrávače MP3, ovládáné přes UART
Čidla, snímače a jiné
Samostatné moduly
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.
- 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:
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.
Assembler byl vlastně první jazyk, na který jsem si v počítačovém šerém dávnověku "sáhnul", protože na sálovém stroji EC8540 (alias KA-10) jsme k
dispozici nic jiného neměli.
|