Vestavěné systémy
Vestavěný systém je kombinace hardwaru a softwaru, jejímž smyslem je řídit externí proces, zařízení nebo systém. Jedná se vlastně o počítač, který je zabudován do systému, ale pro uživatele niní jako počítač viditelný. Často jsou navrženy tak, aby fungovaly i bez zásahu člověka. Důraz je kladen na:
reaktivnost, odezva na podněty v reálném čase
autonomie - činnost bez lidského zásahu
kritičnost - vliv odchylek od normálního chování na bezpečné plnění úlohy
Vlastnosti E.S. (Embedded System):
většinou omezená množina aplikačních systémů
typicky čtení, zpracování a řízení fyzikálních veličin
musí být spolehlivé, bezpečné a zabezpečené
musí být efektivní
Oproti univerzálním počítačů se u E.S. setkáváme s:
jeden program po celý život (VS je specifický pro aplikaci)
uživatel by neměl tušit, že pracuje s počítačem
hlavní interakce nemusí být s člověkem (např. čidla pro snímání prostředí, ovládání akčních členů)
startuje sám bez lidského zásahu
Proč jsou vestavěné systémy v součastnosti tak oblíbené?
nyní vládne trend, kdy se snažíme co nejvíce věcí implementovat na jeden čip
vychází i z ekonomického pohledu: méně čipů = méně nákladů na výrobu
jsou všude kolem nás (od hodinek, přes pračky, ledničky, auta …)
Typická struktura E. S.
Microprocesory μPs
Mikropočítače μC
μP plus příslušné podpůrné obvody (periferní I/O komponenty a pamět)
při malém počtu V/V obvodů ho nazýváma mikrokontrolér
vhodné k řízení vnějších zařízení v aplikacích vyžadujících minimum komponent
dělí se podle architektur
Procesor počítače se skládá z řídící a výkonné (aritmeticko-logické) jednotky. Řídící jednotka zpracovává jednotlivé instrukce uložené v paměti, přičemž jejich vlastní provádění nad daty má na starosti aritmeticko-logická jednotka. Vstup a výstup dat zajišťují vstupní a výstupní jednotky.
Programovací model HCS08
CPU
Von Neumannovská architektura
sběrnice: 8b data + 16b adresa
instrukční sada: CISC, střadačová architektura
registry
instrukční sada
adresovací režimy
typy instrukcí
pro přenos dat (load/store): LDA #5; MOV #5, 100
pro práci s daty (aritmetické, logické …): AND op, ADD op
pro řízení toku programu (skokové): JMP op
speciální: NOP, WAIT
Režimy činnosti
RUN
Active background
ladění aplikace, bootloader
aktivace více způsoby: např.log. 0 při nástupní hraně hodin RESET*
užití např. k (pře)programování aplikace před vstupem do Run
zastavenie do obrdržania príkazu BKGD
Wait
CPU prepnurý do nízkopríkonového režimu
Systémové hodiny bežia
Plná funkcia napäťového regulátora
Podpora podmnožiny BKGD príkazov
aktivován instrukcí WAIT
ukončení při vzniku přerušení
Stop
Zastavené CPU a BCLK
Zapnutie bytom STOPE=1
Stop 3
obmedzenie spotreby vnútorných obvodov a rýchle prebudenie
ram, usb ram a registre sú aj naďalej napájané
garancia zachovania stavov, registrov, ram, IO výstupov
vyskočenie prerušením alebo resetom
Stop 2
odpojenie napájania vnútrorných obvodov
uchovanie obsahu ram a usb ram
vyskočenie resetom, signálom na vývode IRQ-TMPCLK, prerušením od RTC
akcie rovnaké ako pri power on reset
automaticky sa nadstavý bit PPDF pre aplikačné špec. zotavenie
je nutné z ram obnoviť nadstavenia
Paměť
Direct Page - Registre
High Page - Špeciálne registre
Non voltaile - Uloženie zapezpeč. klúčov napríklad
Chvost - Obsahuje vektory prerušenia
Ram
statická, napájena ve všech režimech činnosti MCU
Od 0x0000 po 0x00FF
Jednobytová adresa s rýchlim prístupom
Pre často používané premenné
Od 0x0100 a viac
Datá s občasným prístupom
Možnosť secure
USB RAM
256B, CLK 2x
prístup do SIE čo je USB serial interface
určená pre alok. priestoru pre uloženie BDT, Buffer desc. table a endpoint bufferov
inak sa dá tiež využiť ako non-secure RAM
Flash
Uloženie programu s podporou In-Circuit a In-Application programming
64KB, 119 stránok po 512 B
Stránka je najmenšia mazatelná jednotka
Možnosť security, príkazové rozhranie
Automatický prechod do úsporného režimu
po resetu MCU je možno zapsat nejvýše 1x
Burst programovanie
Rýchlejšie vykonávanie programovania postupnosti bytov
Nábojová pumpa je zapnutá po celú dobu, zapínanie a vipínanie pri každom riadku flash
Ochrana pamäte
Znemožnuje zmeny v chránených blokoch
Určujeme hranicu tak že určíme najvyššiu nechránenú adresu
Pretože vektory prerušenia sú na konci presmerujeme ich
Zabezpečenie
Taktiež zapnutím security je možno predísť neaut. prístupu k obsahu pamäti
Bitom KEYEN zapneme či vipneme 8bitový klúč
Vipneme len zmazaním celej FLASH
Podprogram vs. přerušení
Standratní programová smyčka:
pokud je volán podprogram, je předáno řízení hlavnímu programu až po provedení celého podprogramu (voláním return)
při přerušení je podprogram volán instrukcí a podgram obsluhy přerušení je zase vyvolán hardwarově
probíhá nesynchronizovaně → nelze přesně určit, kdy se předá řízení
zdroj přerušení se prezentuje aktivní úrovní
Maskovatlené: dajú sa blokovať
Nemaskovatelné: nedajú sa zablokovať ako napríklad reset
Priebeh
Detekcia: po detekcii požiadavku na prerušenie CPU dokončí vykonávanú inštrukciu, okrem reset
Uloženie kontextu CPU na zásobník
Zakázanie prerušení, zabraňuje opakovanému obsluhovaniu prerušovania
Arbitráž a výber vektoru prerušenia, vyberáme vektor nezpravovaného prerušenia s najvyššou prioritou
Uloženie do PC a zahájenie obsluhy
Základní princip sériové komunikace
bity jsou přenášeny po jediném vodiči postupně jeden za druhým
u paralelního přenosu je v jediném okamžiku k dispozici více bitů (každý na vlasním vodiči)
protože se bity objevují na jediném datovém vodiči postupně, je potřeba jednoznačně určit, v kterém okamžiku je na datovém vodiči hodnota kterého bitu
existují 2 základní přístupy
SCI = Serial Communication Interface
Info
sériové a asynchrónne rozhranie a plne duplexný systém
skladá sa z: gen. hod. sig, modulu vysielača a prijímača a podporných obvodov
výstup vysielača je vyvedený na TxD a vstup prijámača na ExD
registry: datové, konfiguračné a stavové
Hodiny
spoločné pre vysielač a prijímač
prenosová rýchlosť sa dá nadstaviť
zdrojom frekvencie generátora je hodinový signál vnútornej zbernice BUSCLK
prenosovú rýchlosť nadstavuje programátor cez hodnotu v registri SCIxBD ako delička
Odosielanie znaku
data sa zapíšu do datového registra SCIxD
vysielač skompletuje rámec a postupne ho posiela na výstup TxD s taktom gen.hod.sig
pred zápisom otestujeme či je datový register prázdny
pred zápis tiež skontrolujeme príznak prázdneho registra ako 7bit TDRE v SCIxS1 a musí byť 1
potom je znak prenesený do TSR - posuvný register
vysielanie je možné sledovať stavovým bytom TC v SCIxS1
TC hovorí o tom že datá boli úspečne vyslané
Prijem znaku
automaticky zaisťovaný obvodmi prijímača, tie riadia a vyhodnocujú priebeh
spracovaný znak sa pripravá do datového registra SCIxD
okamžik dokončenia prijímania je indikované bitom RDRF - receive data register full v SCIxS1
pred čítaním musíme otesotvať tento bit na 1 a až potom čítať
v priebehu sú jednotlivé bity rámca ukladané do RSR posuvného registra
prijímané data sú vzorkované 16x vyššou frekvenciou než frekvencia generované podľa SCIxBD
SPI = Serial Peripheral Interface
Info
synchrónne sériové rozhranie, plný duplex
rozhraní původně určené k připojování a komikaci s prefireními zařízeními (lze ho ale využí i ke komunikaci mezi mikrokontroléry)
umožňuje spojení point-to-point i vytvoření SPI sběrnice (k propojení více komponent)
moznost komparatora
master
generuje synchronizační hodinový signál
inicializuje a řídí komunikaci přes SPI
na sběrnici SPI může být pouze jedno zařízení tohoto typu
zpravidla se jedná o mikrokontrolér
slave
Komunikace
Datové vodiče označujeme ako MISO a MOSI podla vzťahu
Master in a slave out, master out a slave in
Hodinový signál tvorí master a je na vodiči SPSCK
SS signál je výberový a slúži k aktivácii zariadenia pre komunikáciu
Na strane slave je SS vstupom ktorý v aktívnej úrovni posiela obsah posuvného registra na stranu mastera
Vysielajú sa na MOSI datové bity zo svojho posuvného registra a zároveň z registru druhej strany sa prijíma cez MISO data z posuvného registra slave. Vzájomná výmena dát.
Po osmich taktoch môže master a slave čítať prijaté data a zapísať data pre vysielanie
Jednostranny prenos cez SPI je spojený odoslaním alebo prijímaním bezvýznamného znaku druhej strane
Rozhraní IIC (I^2C)
Info
synchrónne sériové a jednoduché s halfduplex
jeden datový vodič a jeden vodič na synch. signál
možnosť pripojiť až 127 slave
hlavním cílem je jednoduchost a levná implementace
Komunikace
Ak nie je komunikácia potom master ani slave neovlivňuje vodiče
komunikácia sa začne master hranou z 1 na 0
master generuje adresový rámec
podľa hodnoty bitu RW rozhodne buď zasiela data modulu slave alebo číta
po ukončení generuje master hranu 0 na 1
nemusí sa vždy generovať ukončovanie až na úplnom samom konci stačí
Datovy ramec
Sériovo prenášané data po bitoch
skladá sa zo štart hrany, datové bloky po 8 bit a potvrdením zo slave o rozpoznaní, a ukončeniu
Adresovanie
Pri viac master konflikte je riešenie datovou arbitrážov
aby sme mohli jednoz. identifikovať zariadenie pre kom. musíme zaviesť unikátne adresy modulov
zahájanie komunikácie spočíva v odoslaní 8bit v prvom adresovom rámci ako adresa
Porty
Mikrokontroler
Vnímajú okolie cez jednoduché dvojstavové rozhranie, ktoré sa združené do portov po ôsmich
Porty sú vedené na púzdro MCU
Veľa z nich je zdielaných s inými perifériami
Pomenované sú písmenami abecedy
Vystupne porty
Vedia urobiť logickú jedna alebo nulu na vývode púzdra MCU
Ide o pripojenie určitého napätia na vývody
log. 0 je napětí na úrovni země, log. 1 pak napětí na úrovni napájecího napětí
Môžeme použiť buď jeden pin alebo celý port
Výstup môže dodávať prúd okolo 25 mA a celkovo čepať 120
Ganged output
Prechodny dej
Pri prechode napríklad z log 0 na 1 nastane určitá špička
Môžeme ju redukovať tým že spomalýme buď nábeh
Na obmedzenie môžeme použiť aj redukciu výšky skoku ako drive strenght
Ovladanie
Data: datový register
Data direction: rozhodnutie či zápis alebo čítanie
Pul-Up Enable: rozhodnutie či sa bude používať pulup rezistor
Slew Enable: spomalenie prechodu
Drive Strength: zníženie sily skoku
Pull up rezistor
rezistor, který definuje úroveň v případě, kdy je pin jinak „ve vzduchu“
lze jej zapnout uvnitř MCU
Modul KBI
Podpora generovanie prerušení od pinov
Možnosť reagovať na hranu alebo úroveň
Len na niektorých portoch
KBI má prioritu pred bežnou funkciou portov
Analogově-číslicový převodník (ADC)
analogový vstup představují signály ze spojitých snímačů (teplota, tlak, osvětlení, odpor, napětí/proud)
důležitá je zpětná vazba
předvod aproximačním AD převodníkem je děj, který trvá určitou dobu; proto lze vysledovat fáze
AD převodník
Info
typicky má 3 části: dolnopropusní filtr, Track/Hold, AD převodník
převádí anslogový vstup na číslicový výstup
Používa sa aproximačný model
Ideme od MSB a postupne generujeme nižšie bity
Vždy porovnáme hodnotu a upravíme ďalší byt a tak iterujeme
Viacej kanálov ADC
Vyberáme ich cez multiplexor
Používame len jeden prevodník
SH je nejaký kondík aby na chvílu uskoval hodnotu analog. sig. aby sa nemenila
Napajanie
Prevod
Prevod u AD prevodníka trvá určitú dobu
Zahájenie: nadstavíme konfiguráciu
Vykonanie: aproximačné vkonávanie
Ukončenie: buď uloženie výsledku alebo násilné prerušenie
Zahajenie
Softvérové: zápisom do ADCSC1
Hardwarové: príde k dosiahnutí hodnoty module reg. RTCMOD pri čítači real. času
Pri hardwarovom môžeme nadstaviť periódu vzorkovanie vstupného signálu
Pri soft. sa ďaľší prevod realizuje okamžide ako je ukončený predchádzajúci prevod
Vysledok
K dispozícii v registroch ADCRH a L
Ukončenie v COCO
Možnosť generovania prerušení
Možnosť nadstaviť aby bol výsledok indikovaný len ak je nehajá hodnota presiahnutá
Časovač/čítač
čítač je speciální registr, který kromě funkcí jako je čtení a zápis hodnoty zvyšuje a snižuje svoji hodnotu o jedničku při každé periodě hodinového signálu; používán je pro čítání událostí
časovač je čítač, jehož čas je zvyšován o jedničku hodinovým signálem mikropočítače; účelem je odměřovat čas
-
čítač/časovač realizuje časovou základnu a je jádrem systému časování
cyklus čítače je dán periodou budícího signálu a počtem bitů čítače - při přetečení je generován příznak, který lze využít při generování periody impulsního signálu
často je třeba určit čas, kdy došlo k nějaké události - přečteme si aktuální hodnotu běžícího čítače a vypočteme časový údaj
výstupem jednotky záchytu hrany je vývod MCU, kde je přiveden signál s logickými úrovněmi. Lze ji nastavit na detekci nástupné nebo sestupné hrany
PWM modul lze využít jako jednoduchý Č/A převodník
Generátor hodin
vestavěný systém je soustava vzájemně propojených bloků, ty musí být v zájemné součinnosti - k synchronizaci slouží generátor hodinového signálu (v jeho rytmu běží komunikace mezi jednotlivými moduly, jádro provádí instrukci za instrukcí)
u MCU Motorola HC08 má hodinový signál na starosti modul CGM (Clock Generation Module) - jako zdroj signálu se využívá oscilátor
Zdroje
05 |
Celé jméno | OK | !!! |
Tom Ofeig | | |
Martin Pavelka | | |
| 2 | |
Diskuze
–mikrokontroler–
architektura mikrokontroleru (na prikladu HCS08, strucne registry, typy operaci, adresovaci rezimy + jednoduchy priklad pro kazdy rezim, typy instrukci) rezimy mikrokontroleru (duvod zavedeni + strucny popis jednotlivych rezimu (kdy se pouziva?) strucne o pameti (rozdeleni + adresovy prostor, FLASH/RAM - neco malo ze skript (nejzakladnejsi body) ) podsystem preruseni (preruseni vs podprogram, vektory preruseni, obsluha PZ, druhy preruseni(soft/hardw) + neco malo o nich)
–rozhrani–
sbernice SCI/SPI/IIC strucne, uvest zakladni princip porty - k cemu slouzi + kratce o nich, pull-up rezistory, sdileni, preruseni pri zmene, …
–prevodniky–
AD prevodnik (jak funguje), casovac (citac/casovac, PWM, zachyt hran), zdroje hodin, popsat PLL strucna zminka o OS pro miktrokontrolery
Pozn. o periferiich jsme se moc nezminovali, spise ma na mysli klavesnici, display, externi Flash pamet, … Tady bych spis jenom kratce shrnul zakladni periferii, co lze pripojit, popr. mozno jeste o nich neco napsat, jak je pripojit, jak funguji, pokud to pujde, ale nezabyhal moc do detailu