Vytvořeno: 2010-09-27 17:30:41
Tato kapitola poskytuje rychlé seznámení s hardwarem mikrokontrolérů MC9S08QG. Trochu detailněji bude popsáno jádro HCS08 a ve zkratce všechny ostatní periférie, kterými mikrokontroléry řady QG disponují. Hlubší popis a postupy pro správnou konfiguraci a plné využití všech periférií bude popsáno až v následujících kapitolách.
Mikrokontroléry MC9S08QG kombinují výhody starší rodiny HC908Q s novým jádrem HCS08, které má mimo jiné i nižší spotřebu. Díky množství integrovaných periférii jsou vhodné pro použití v celé škále aplikací, které vyžadují různá komunikační rozhraní, měření analogových veličin, řízení pomocí PWM apod. Proto se s nimi můžeme setkat v mnoha různých zařízeních pro domácnosti a zabezpečovací techniku, inteligentních regulátorech určených pro řízení motorů nebo v hračkách apod.
Na blokovém schématu mikrokontroléru je naznačeno připojení jednotlivých celků k vnějším pinům nebo k vstupně-výstupním branám mikrokontroléru.
Jádro HCS08 vychází ze staršího jádra M68HC08 se kterým má plně kompatibilní objektový kód, který byl však doplněn o několik instrukcí a adresovacích módů, tak aby bylo možné dosáhnout větší efektivity zdrojových kodů zkompilovaných z jazyka C. Dále byl nahrazen "monitorovací mód" pokročilejším "background debug" systémem, který poskytuje velice pohodlné ladění zdrojových kódů. Architektura jádra je typu "von Neumann" a instrukční soubor typu CISC.
Paměť zabudovaná v mikrokontrolérech MC9S08QG obsahuje RAM pro data, FLASH pro paměť programu a konstantních dat a registry pro vstupně-výstupní brány a stavové a řídící registry.
Z obrázku je patrné, že registry jsou rozděleny na dvě části, ještě však existuje třetí skupina registrů umístěna v paměti FLASH. Přesné rozdělení registrů je následující:
Tento blok zajišťuje restartování mikrokontroléru, watchdog (COP), správu vnějšího zdroje přerušení (IRQ), detekci pokleesu napětí (LVD) a časovač pro periodické generování přerušení (RTI).
Jako zdroje resetu může sloužit vnější vstup, detektor nízkého napětí (LVD), watchdog (COP) a debugovací rozhraní (BDM). Reset může být také vyvolán při přístupu na ilegální adresu, nebo při volání neplatného příkazu. Reset uvede všechny stavové a řídící registry do počátečního stavu a nastaví programový čítač na adresu 0xFFFE:0xFFFF.
Watchdog slouží pro provedení restartu mikrokontroléru v případě, že daný software není vykonáván správně, tak jak je předpokládáno, neboli pokud se aplikace dostane do takového stavu, že není schopna provádět nulování COP čítače. To tedy způsobí, že dojde k přetečení čítače a k restartu. Čítač je možné taktovat buď frekvencí 1 kHz nebo frekvencí sběrnice. Dále je možné zvolit velikost čítače. Při 1 kHz taktu 2^5 nebo 2^8 a při při taktování frekvencí sběrnice 2^13 nebo 2^18 .
Přerušovací systém zprostředkovává uložení hodnot stavového a indexovacího registru, akumulátoru a programového čítače do zásobníku a zavolání obslužné rutiny pro daný zdroj přerušení. Mimo vnitřních zdrojů přerušení je možné obsluhovat vnější přerušení prostřednictvím IRQ pinu a je možné zvolit zda bude obsluha přerušení zavolána při spádové hraně nebo i při trvalé nízké úrovni na IRQ pinu. Přerušení je možné maskovat I bitem ve stavovém registru. Zdroje, vektory přerušení a bity, které povolují a vyvolávají daná přerušení jsou následující:
Detektor poklesu napětí LVD se využívá při potenciální možnosti kolísání napájecího napěti. LVD může být nakonfigurováno tak, že při detekci poklesu napětí může buď restartovat mikrokontrolér a v restartovaném stavu jej udržovat, dokud napětí nestoupne nebo vyvolat přerušení. Dále je možné využít Low-Voltage Warning (LVW) flag, kterým je indikováno, že napájecí napětí je blízko, ale ještě ne pod nastavenou minimální úrovní.
Časovač pro periodické generování přerušení RTI muže být taktován buď z externího nebo z interního 1 kHz zdroje. Je vhodné jej používat pro úkoly, které mají malou prioritu, jelikož přerušení vyvolané RTI má nejnižší prioritu. Dále je ho možné využít pro spouštění převodu integrovaného AD převodníku.
Jako zdroj taktu může být zvolen nastavitelný interní oscilátor s rozsahem 31.25 kHz až 38.4 kHz s možností kalibrace, externí krystal 1 MHz až 16 MHz a nebo externí oscilátor až 20 MHz. Takt mikrokontroléru může tedy být až 20 MHz, takt sběrnice je však vždy dělen dvěma. Což znamená, že maximální frekvence sběrnice může být až 10 MHz. Dále je možné využít FLL násobičku pro násobení kmitočtu sběrnice. Ta však dokáže pracovat jen s vstupními frekvencemi do 5 MHz (externím krystalem do 10 MHz). Hodinový signál nakonec ještě prochází nastavitelnou 2 bitovou děličkou (BDIV).
Jedna z výhod ICS oproti taktovacím modulům u konkurenčních mikrokontrolérů je, že není konfigurován prostřednictvím "fuses", ale registry a to tak, že po resetu je defaultně zvoleno interní taktování a k přepnutí na zvolený zdroj taktu dojde až poté, co jak takt zvoleného zdroje stabilní.
MC9S08QG8 má k dispozici 12 vstupně výstupních pinů, jeden výstupní a jeden vstupní pin. Každý z těchto pinů je sdílen s dalšími perifériemi. Vstupně-výstupní operace však mají větší prioritu. Jsou-li tedy povoleny ostatní periférie nemají k používanému pinu přístup. Prostřednictvím registrů se nastavuje směr dat a interní pull-up odpor. Pokud je pin nastaven jako výstup, je možné také přepínat mezi pomalou a rychlou dobou přeběhu (Využívá se pokud je zařízení testováno na EMC) a přepínat "sílu" pinu (Povolovat větší proudový odběr než 2 mA).
8 bitový časovač MTIM disponuje pouze předděličkou taktovacího signálu a modulo registrem pro nastavení periody přetečení. Jako zdroje taktu může být využit externí vstup TCLK, takt sběrnice a nebo pevný kmitočet 1 kHz. Využívá se tedy jen pro jednoduché časovaní, které si vystačí s hrubě nastavitelnou periodou přetečení.
16 bitový čítač/časovač TPM má obdobně nastavitelnou předděličku a zdroj taktu jako MTIM. Navíc však disponuje dvěma, na sobě nezávislými, časovacími kanály, které je možné nakonfigurovat jako PWM výstupy, vstupní komparátory a nebo jen jako další zdroje pro generování přerušení.
Pro měření analogových veličin je MC9S08QG8 vybaven 8 kanálovým 10 bitovým (s možností přepnout na 8 bitový převod) převodníkem s postupnou aproximací. Převádět může buď kontinuálně maximální možnou vzorkovací frekvencí, která je daná zvolenou rychlostí převodu, nebo je možné po spuštění převést jen jednu hodnotu. Spouštění časovače je možné provádět softwarově nebo přímo RTI časovačem.
Pro porovnávání analogových hodnot je možné využít integrovaný komparátor. A to buď na komparaci dvou vstupních napětí nebo jednoho vstupního napětí s napětím vnitřního zdroje referenčního napětí 1.2 V.
SCI (neboli jinak označovaný UART) je klasické asynchronní komunikační rozhraní. SCI podporuje dvou ale i jednovodičovou "half-duplex" komunikaci. Baudrate je možné zvolit pomocí 13 bitové děličky. Podporovány jsou 8 i 9 bitů dlouhé zprávy. Také je možné využít hardwarového generování paritního bitu a dalších kontrolních mechanizmů jako je kontrola datového rámce atd.
SPI vybavené 8 bitovými posuvnými registry je schopně pracovat jak v master, tak i ve slave režimu. Kromě standardního duplexního režimu je podporována komunikace i po jednom datovém vodiči. Pro nastavení kmitočtu hodinového signálu SPI je možné využít dvou děliček. Dále je možné zvolit polaritu a fázi hodinového signálu.
IIC modul zprostředkovává komunikaci po sběrnici I2C. Modul byl navržen pro 100 kHz takt sběrnice avšak opravdová maximální rychlost je omezená jen hodinovým signálem a parametry SDA a SCL vodičů (vedení). Možné je přepínat mezi master a slave režimem a to i "za běhu" jelikož IIC podporuje "multi-master" provozování sběrnice.
Pokud je třeba vyvolávat přerušení např. tlačítky, připojenými na piny mikrokontroléru, je nejvhodnější využít modul KBI. Ten je schopný pohodlně obsluhovat až 8 vstupů. Je možné zvolit při jaké hraně nebo úrovni na zvoleném pinu se bude reagovat. Často se využívá pro "vzbuzení" z úsporných režimů.
Běh mikrokontroléru s nižší spotřebou je realizován pomocí tří odlišných "Stop" módů. Každý z nich integrované periférie buď neovlivní, pozastaví nebo úplně vypne. A to následovně:
Při běhu mikrokontroléru (při nezatížených pinech) je jeho spotřeba maximálně 5 mA při kmitočtu sběrnice 8 MHz, při režimu Stop3 6 uA, při Stop2 2 uA a při Stop1 1.2 uA.
Mikrokontroléry řady QG jsou k dostání v 16 a 8 pinovém provedení. 16 pinové provedení je k dostání v pouzdru DIP16, TSSOP16 (podobné SOIC) a nebo v "bezvývodovém" pouzdře QFN16. 8 pinová verze se vyrábí v provedení DIP8, SOIC8 a DFN8 což je obdoba QFN s vývody pouze na dvou stranách čipu. V dalších částech seriálu bude využíváno pouzdro DIP16.
Myslím si, že jako rychlý přehled je tento článek dostatečný, a proto bude hned v další kapitole popsána konstrukce vývojové desky pro mikrokontrolér MC9S08QG8.
Tweet |