krok za krokem průvodce programováním mikrokontrolérů
Toto je průvodce krok za krokem pro ty, kteří chtějí začít s programováním mikrokontrolérů. Článek začíná představením několika základních pojmů, které budou použity v příručce, seznam nástrojů, programovací jazyky a na konci příklad kódu ke stažení s průvodcem krok za krokem, který byste mohli použít k procvičování programování mikrokontrolérů.
ale předtím, než se ponoříte do programování mikrokontrolérů. Definujme první dva základní pojmy: Hardware a Software.
Hardware se skládá z fyzických komponent v systému, jako jsou čipy, klávesnice, myš, monitor, paměti, I/o zařízení. Hardware je těžší vyvíjet ve srovnání se softwarem, musí být navržen pro velmi specifické aplikace a je to velmi efektivní a dokonalé řešení ve vysokorychlostních systémech.
Software je nefyzické komponenty nebo aplikace, které běží na hardwaru, jako jsou operační systémy, Počítačové Hry a síťové aplikace. Software je vysoce konfigurovatelný, snadno a rychleji se vyvíjí, také velmi levný ve srovnání s hardwarem.
co je mikrokontrolér
abychom pochopili, co je mikrokontrolér, musíme nejprve pochopit, co je mikroprocesor nebo CPU (centrální procesorová jednotka). CPU je srdcem každého počítačového systému, je to jako lidský mozek při provádění úkolu. V zásadě ji můžeme rozdělit na dvě základní části:
řídicí jednotka: Tato jednotka se používá k načtení dat z paměti.
prováděcí jednotka: Tato jednotka se používá ke spuštění nebo spuštění dat.
typy procesorů
existuje mnoho kategorií procesorů, jako jsou univerzální procesory, aplikační systémový procesor a víceprocesorový systém. Univerzální procesor má mnoho typů:
mikroprocesor
mikrokontrolér
vestavěný procesor
procesor digitálního signálu
mikroprocesor je polovodičové zařízení nebo počítač na čipu, ale ne plně funkční počítač. Jeho centrální procesorová jednotka obsahuje
ALU
čítače programů
Registry
Other Ostatní obvody (čas taktování, přerušení)

mikrokontrolér je IC, který obsahuje mikroprocesor a některé periferie jako kompletní funkční počítač, periferie např.

historie mikrokontroléru
společnost Intel byla původně první výrobou mikrokontrolérů. První mikrokontrolér byl vyroben v roce 1971 v USA. Byl to 4bitový mikrokontrolér s názvem i4004. Intel v té době vyráběl sofistikovanější modely s 8bitovým mikrokontrolérem a poté byl 12bitový mikrokontrolér vyvinut společností Toshiba.
aplikace mikrokontrolérů
mikrokontroléry mají mnoho aplikací v mnoha průmyslových odvětvích, např.
v automobilovém průmyslu mají například moderní automobily v dnešní době více než 100 mikroprocesorů pro systémy jako klimatizace, ABS, EBD a také ADAS nebo pokročilé asistenční systémy řízení, jako je adaptivní curies controller a lane assist, následuje obrázek ECU nebo elektronické řídicí jednotky.
v lékařské oblasti existují zdravotnické prostředky, které zahrnují mikrokontroléry, jako je MRI, glukózová testovací sada, přenosné EKG. Následující obrázek je zařízení pro testování glukózy.
v letectví byla většina letadel navržena s novými avionickými systémy pomocí mikrokontrolérů. Kromě toho existují systém řízení letu, systém řízení letového provozu, navigační a meteorologické systémy, které jsou založeny na mikrokontrolérech.
populární mikrokontroléry
existuje mnoho typů a platforem mikrokontrolérů, ale výběr mikrokontroléru závisí na mnoha faktorech:
aplikace
rozpočet
výkon
počet pinů GPIO
velikost paměti
Temperature teplota pracovního prostředí
spotřeba energie
AVR mikrokontrolér
následující obrázek obsahuje blokové schéma AVE12DA, jednoho z nejpopulárnějších mikrokontrolérů famlily — mikrokontrolér AVR:

mikrokontroléry AVR vyrábí společnost Atmel corporation (dnes: Microchip), Atmel má 6 rodin mikrokontrolérů AVR, 4 rodiny jako univerzální mikrokontroléry a 2 jako specifické účelové mikrokontroléry. Univerzální mikrokontroléry jsou:
8 bit-mega AVR
8 bit-AT Tiny
8 & 16 bit-AVR Xmega
32 32 bit-AVR
specifické účelové mikrokontroléry jsou:
Automotive Automotive AVR
správa baterií
Automotive AVR, od svého názvu byl vyvinut pro automobilové aplikace. Může pracovat při velmi vysokých teplotách až do 150 stupňů Celsia a zahrnuje ochranné systémy pro problémy se zkratem.
mikrokontrolér pro správu baterií je vyvinut pro systémy správy baterií pro zajištění nabíjení a vybíjení.
příklady platforem AVR
Arduino Uno
Adafruit Blue fruit Micro
Raspduino
Digispark pro
ARM mikroprocesor/mikrokontrolér
arm mikroprocesor je nejoblíbenějším procesorem na světě, zejména ve spotřebitelských aplikacích. Možná máte zařízení založené na procesoru ARM, ale nevíte! ARM je většinou klíčovou součástí všech úspěšných 32bitových vestavěných systémů. První rameno bylo vyvinuto v roce 1985.
RISC technologie
ARM se používá RISC technologie, RISC je zkratka pro sníženou instrukční sadu počítače, je to filozofie designu dodávat jednoduché pokyny v rámci jednoho cyklu. Spoléhá se více na software. Na druhé straně se technologie CISC spoléhá více na hardware.

technologie RISC se zaměřuje na snížení instrukční sady procesoru. Na druhé straně má procesor CISC nefixované číslo instrukční sady.
funkce ARM
Arm má mnoho funkcí pro každého návrháře vestavěného systému, který hledá, např. nízká spotřeba energie díky své kompaktní velikosti, také vysoká hustota kódu je další funkcí, protože vyvíjíme vestavěné systémy, ve většině případů budeme mít omezené zdroje.
vnitřní struktura mikrokontroléru založeného na ARM
tento obrázek ukazuje vnitřní strukturu většiny zařízení založených na ARM:
krabice představují funkce, linky představují autobusy. Promluvme si více o každé součásti v detailech:
procesor ARM je základní složkou, kterou odpovídá za operace zpracování
regulátory se používají ke koordinaci funkcí systému jako řadiče paměti a přerušení
periferie se používají k zajištění vstupů a výstupů systému
sběrnice se používá k výměně dat mezi různými součástmi systému
příklady platforem ARM
existuje mnoho zařízení a vestavěných platforem, které mají mikroprocesor arm, např.
Arduino Due
Raspberry Pi
STM32F103C8T6
NXP LPC1768
Ostatní mikrokontroléry a platformy
jak jsme řekli před výběrem mikrokontroléru nebo platformy závisí na mnoha faktorech (rozpočet, počet pinů atd.…). Existují také další mikrokontroléry a platformy např.
PIC mikrokontroléry
8051
ESP32
mikrokontroléry Motorola
softwarové a hardwarové nástroje mikrokontroléru
od vytvoření mikrokontroléru existuje mnoho typů nástrojů pro vývoj softwaru a hardwaru. Samozřejmě, některé nástroje mohou být použity v různých typech mikrokontrolérů, ale některé jsou velmi specifické pro mikrokontrolér. Než začnete s programováním mikrokontrolérů, možná se budete chtít seznámit s programovacími nástroji mikrokontroléru a v neposlední řadě s vývojovým procesem.
pomocí vestavěných vývojových nástrojů můžeme potřebovat následující nástroje:
Assembler
jedná se o softwarový nástroj, který převádí zdrojový kód v sestavě na strojový kód, například (GNU assembler).
kompilátor
jedná se o softwarový program, který zakrývá zdrojový kód v programovacím jazyce na vysoké úrovni do jazyka sestavení nebo strojového kódu. Kompilace může být:
nativní: to znamená, že spustíte kompilátor a vygenerovaný kód na stejném počítači
kříž: to znamená, že spustíte kompilátor na stroji a vygenerovaný kód běží na jiném počítači (architektura procesoru).
Linker a lokátor
linker je program, který shromažďuje a propojuje kompilace a sestavuje operace a vytváří jeden exe.
lokátor je programový nástroj, který lze použít ke změně paměťové mapy výstupu linker.
simulátor
Jedná se o program, který napodobuje reálný scénář, vytváří aproximaci systémů v reálném čase. Simulátor se používá:
pokud skutečný hardware není k dispozici
v nebezpečných testovacích prostředích a scénářích
Debugger
jedná se o softwarový program a hardwarové zařízení, které lze propojit s mým PC k mému vloženému cíli. Používá se debugger:
nastavit zarážky
sledovat provádění
vypsat paměť
Hardware debugger může být
in-circuit debugger
debug agent software na palubě
Flash loader
Jedná se o program a hardwarové zařízení, které lze použít k:
Program ROM / Flash
sledovat proměnné
vymazat ROM / Flash
Profiler
Profiler je nástroj pro sledování výkonu softwarového kódu
integrované vývojové prostředí
jedná se o softwarový program, který má většinu nástrojů v jednom. Může zahrnovat
textové editory
kompilátory
debuggery
profilery
simulátory
linkery
jazyky softwaru mikrokontrolérů
můžeme je klasifikovat do dvou typů:
High-level
C/C++
Java Java
Ada
použití tohoto typu poskytne abstrakci z hardwarové úrovně
Low-level
strojový kód
je 0 a 1 a je těžké být napsán lidmi, ale pro počítače je snadné pochopit
montáž
jedná se o mnemotechnický kód a pseudo instrukce ke zlepšení čitelnosti
příklady:
instrukce se skládá z mnemotechnických (opcode) + operandy
Opcode je operace pořízená strojním procesorem
operandy jsou konečným cílem; opcode musí provést operaci.
jazyk sestavení je čitelný a srozumitelný více než strojový kód, ale musíte jej použít na konkrétním procesoru a mít znalosti o jeho architektuře.
programovací jazyky C / C++
jazyky na vysoké úrovni mají následující vlastnosti
snadné psaní
Flexible Flexibilní
nezávislý na procesoru
vysoká produktivita
příklad programování mikrokontrolérů pomocí AVR ATMEGA16
ATmega 16 má následující vlastnosti:
16 16 Kb vlastní programovatelné paměti flash v systému
512 bajtů EEPROM
1 Kbyte interní SRAM
programovací zámek pro zabezpečení
periferní funkce
počítadlo v reálném čase se samostatným oscilátorem
programovatelný sériový USART
čtyři kanály PWM
8kanálový, 10-bit ADC
on-chip oscilátor
power-on REST a brown-out detekce
interní RC oscilátor a zdroje přerušení
napětí (od 2.7 V do 5.5v)
LED blikající Program příklad použití ATmeg16 a Proteus
LED blikající program ve vestavěných systémech, jako je program „hello world“ ve vývoji aplikací. V následujícím příkladu se naučíte a použijete simulátor Proteus ke spuštění prvního programu. Chcete-li stáhnout zdrojové soubory, přejděte do této složky.
Napište svůj program pomocí Atmel studio
Po stažení IDE,
otevřete jej a vyberte nový projekt a vyberte umístění souboru hex jako na následujícím obrázku
dalším krokem je výběr rodiny mikrokontrolérů
poté získáte následující okno se spouštěcím kódem
a nyní prosím napište následující kód
dalším krokem je vytvoření programu stisknutím klávesy F7
poté najdete soubor hex na zvoleném místě
dalším krokem je použití simulátoru Proteus
a nyní vytvořte schéma z vybrané šablony
a zvolte nevytvářejte rozvržení PCB
nakonec jsme hotovi, ale musíme přidat soubor hex jako na následujícím obrázku
nyní upravte pojistky CKSEL
Uložte a klikněte na play
a můžete si vybrat, zda je vidět, že LED dioda je vypnutá pro 500ms (levá strana) a zapnutá pro 500ms (pravá strana)

vysvětlení programu řádek po řádku
Chcete-li stáhnout zdrojové soubory, přejděte do této složky.
# definujte f_CPU 100000UL / / pro vytvoření konstanty a zvolte rychlost procesoru
#include < avr/io.h> / /Chcete-li vyvolat některé soubory pro vstupy a výstupy
#zahrnout <avr / delay.h> // vyvolání tohoto souboru pro použití funkcí zpoždění
int main(void){ // počáteční funkce a hlavní program
DDRA = 0b0000001; // pro konfiguraci pin a jako výstupu / směru
zatímco(1){ // navždy smyčka
PORTA = 0b00000001; // pro vytvoření PA0 = 1 a výstupu 5v (LED svítí)
_delay_ms(500); // zpoždění na půl sekundy
PORTA = 0b0000000; / / aby PA0 = 0 a výstup 0v (LED je vypnutá)
_delay_ms (500); / / zpoždění na půl sekundy
}
návrat 0;
} //konec programu
závěr
v současné době se vestavěné systémy používají v životně důležitých produktech a mohou být použity k zabezpečení a záchraně mnoha lidí, stejně jako v lékařské oblasti a dalších aplikacích. Měli byste se dál učit po získání přehledu a úvodu o programování mikrokontrolérů. Dalším krokem by mělo být učení vestavěného návrhu softwaru a systémů spuštěných v reálném čase.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
AVR mikrokontrolér a vestavěné systémy: Pearson New International Edition: Using Assembly and C, Muhammad Ali Mazidi, DeVry University
ARM System Developer ‚ s Guide navrhování a optimalizace systémového softwaru svazek v Morgan Kaufmann Series v počítačové architektuře a designu knihy * 2004