segment 'rom'
ldw X, #stack_start ;do registru X pocatecni adresa
clear_stack clr (X) ;vynuluj byte na adrese X
incw X ;zvys registr X o 1
cpw X, #stack_end ;uz jsme na konci?
jrule clear_stack ; ne, opakuj
ldw X, #stack_end ; ano, pokracuj dal
ldw SP, X ;nastav vrchol zasobniku
Zaujal mne modul s osmibitovým mikrokontrolérem STM8 od ST Microelectronics,
stejně jako programování v assembleru. To je taková ta výzva, kdy se z minima, snažíte vymáčknout maximum.
Pokud by někdo měl zájem naučit se programovat tímto způsobem, myslím, že právě tento modul s tímto čipem může posloužit jako dobrý startovací můstek.
Podle mne je tento mikrokontrolér ideální pro
stavbu jednoúčelových zařízení jako jsou různá čidla a podobně.
Čip není zrovna nejnovější a vývojové prostředí ST Visual develop se jen udržuje a nijak moc (spíš vůbec) se nevyvíjí, nicméně výroba těchto čipů pokračuje dál a výrobce zaručuje dalších
deset let podpory po ukončení výroby. Pro jednoduchá zařízení je asi zbytečně nákladné používat pokročilejší STM32.
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.
Také jsem se pokusil napsat malý návod, jak pracovat s tímto čipem ve vývojovém prostředí výrobce a programovat jej v assembleru.
Assembler je dnes asi jen takové okrajové téma, vypadá to, že již 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 prostředí výrobce ST Visual develop.
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ů
Jak začít
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
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:
| určení jednotlivých pinů |
| Napájení | 5V, 3V3 a zem GND |
| GPIO | všechny piny An, Bn, Cn, Dn |
| UART | TX=pin D5, RX=pin D6 |
| SPI | MISO=pin C7, MOSI=pin C6, SCK=C5, CS/SS=pin A3 |
| I2C | SCL=pin B4, SDA=pin B5 |
| ANALOG | A0=pin C4, A1=pin D2, A2=pin D3, A3=pin D5, A4=pin D6 |
| ST-LINK | piny 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.
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.
|