česky english Vítejte, dnes je středa 25. prosinec 2024

Použití nové generace inteligentních mikrokontrolérových periferií

DPS 3/2012 | Články
Autor: Graeme Clark, Renesas Electronics Europe

V následujícím článku si přiblížíme novou generaci inteligentních periferií, které jsou součástí nejnovější generace mikrokontrolérů. Jejich hlavním cílem je nabídka nezávislých, ale libovolně konfigurovatelných periferních systémů, které jsou od CPU schopny převzít celou řadu nízko-úrovňových úloh. V aplikaci takové řešení představuje celou řadu výhod a CPU se může plně soustředit na procesy s vyšší prioritou, nebo může přejít do režimu spánku a tím šetřit energii. Další nezanedbatelnou výhodou je také mnohem nižší a deterministická odezva systému, které se v případě softwarové obsluhy dosahuje jen velice obtížně.

Dokonalým příkladem jsou nejnovější 32bitové mikrokontroléry od Renesas Electronics řady RX210. Obvody RX210 jsou prvním zástupcem nové rodiny 32bitových procesorů, vycházejících z RX200 s architekturou CISC, které na jediném čipu spojují výkonné jádro RX CPU s novou generací integrovaných periferií. Obvody RX210 však nejen že implementují celou řadu moderních periferií s mnoha výkonnými funkcemi, ale rovněž jsou schopny kombinovat dva obvody RX210 do jediného, plně funkčního, avšak autonomně pracujícího subsystému. Výhodou takového uspořádání je schopnost provozu a generování jednoduchých rozhodnutí i zcela bez zásahu CPU, což mnoha funkcím umožňuje pracovat i ve chvíli, kdy je hlavní část procesoru v režimu spánku či snížené spotřeby.

Použití nové generace inteligentních mikrokontrolérových periferií 1.jpg

Obr. 1 Blokové schéma RX210

Díky tomu je možné jednoduše vytvořit například plně automatický systém sběru dat, který bude kombinovat analogově- digitální převodník (ADC), 16bitový časovač či množství jiných speciálních periferií. Takový systém je schopen vykonávat celou řadu funkcí zcela bez zásahu CPU. Konkrétním příkladem může být hlídání analogových úrovní na vstupech ADC a jejich porovnávání s přednastavenou hodnotou a možností vyvolání alarmu či přerušení CPU ve chvíli, kdy dojde k překročení nastavených mezí.

Použití nové generace inteligentních mikrokontrolérových periferií 2.jpg

Obr. 2 Zjednodušené blokové schéma ukázkové aplikace

Každé měření se aktivuje jedním 16bitovým časovačem, s externím IRQ pinem, využívaným k indikaci aktuální skupiny vstupů.

Ovšem i samotné ADC v RX210 má mnoho pokročilých funkcí, jako je například podpora více nezávislých vzorků či programovatelné skenování skupin. My však v naší aplikaci využijeme jinou z pokročilých funkcí ADC v RX210. Obvody RX210 totiž podporují schopnost vzorkování každého vstupního signálu libovolně, podle potřeby konkrétní aplikace. Je zde vidět nejen vnitřní struktura ADC, ale rovněž typický příklad se dvěma vzorky vstupních signálů, které jsou 4× navzorkované a poskytují 14bitový výsledek.

Použití nové generace inteligentních mikrokontrolérových periferií - ZK1a

Použití nové generace inteligentních mikrokontrolérových periferií - ZK1b

Jakmile je ADC nastavené, můžeme přistoupit k vytvoření samotné řídicí funkce. V RX200 máme k tomuto účelu na výběr například řadu časovačů, vybavených vždy širokou škálou užitečných funkcí. V našem příkladě využijeme pouze jeden ze šesti časovačů MTU2, výkonného 16bitového časovače pro řízení motoru, který nám bude pravidelně spouštět měření ADC. Použitím MTU2_0 může MTU2 spustit přímo převod ADC, zcela bez přerušení či jiné asistence procesoru.

Nicméně, i pokud by nebyl MTU2_0 k dispozici, můžeme pro automatické spouštění ADC použít stejně tak dobře jiný MTU2 kanál či další z pokročilých periferních zařízení na čipu, vybavených událostí Link Controller.

Použití nové generace inteligentních mikrokontrolérových periferií 3.jpg

Obr. 3 Blokové schéma ADC obvodu RX210

Kompletní popis funkce jednotky Event Link Controller (ELC) je však nad rámec tohoto článku. Jen ve stručnosti, jedná se o neuvěřitelně flexibilní a účinný způsob, umožňující jednou integrovanou periferií spouštět a ovládat jiný hardware, zcela bez účasti CPU.

Oproti tradičnímu způsobu obsluhy událostí pomocí přerušení má ELC hned celou řadu výhod:

1. CPU není přerušován kvůli obsluze události (přerušení), takže se může více času věnovat běhu hlavního programu.

2. Systém umožňuje deterministický provoz, neboť ELC pro události jiného zařízení vyžaduje vždy přesně 3 cykly. Pokud se pro obsluhu použije přerušení CPU, musí procesor nejprve dokončit zpracování aktuální instrukce, které se však svou délkou mohou i značně lišit, a až poté může přejít k obsluze přerušení. ELC je tedy nejen deterministické, ale rovněž redukuje velikosti zdrojového kódu.

3. Jelikož CPU není využíván pro zpracování události (obsluhu přerušení), může se po celou dobu nacházet v režimu nízké spotřeby a tedy šetřit energii.

Použití nové generace inteligentních mikrokontrolérových periferií 4.jpg

Obr. 4 Základní struktura ELC

Navíc propojení jedné integrované periferie s druhou je neuvěřitelně jednoduchý proces. Slouží k tomu jednoduché systémové tabulky, takže výsledný zdrojový kód je skutečně velice kompaktní.

Nyní máme již plně nakonfigurované a funkční ADC a zbývá poslední část úkolu – zpracování navzorkovaných dat. K tomuto účelu můžeme rovněž s výhodou použít další z integrovaných periferií RX210 a to jednotku pro přenos dat – Transfer Controller (DTC).

Stejně jako jiné integrované periferie, i DTC je, co se konfigurace týče, velice jednoduché. Základem je programovatelný DMA kanál, který může být libovolně konfigurován pro přenos dat od zdrojové do cílové adresy, které jsou ve chvíli aktivace definované rovněž počtem a typem přenášených dat. To je hlavní rozdíl od klasického DMA kanálu, který musí být konfigurován ještě před svou aktivací. Tím, že se tato schopnost přenesla na okamžik aktivace, získáváme rázem značnou flexibilitu, tedy možnost obsluhy mnoha různých akcí pouze jediným DTC kanálem.

Z pohledu samotného obvodu může být k aktivaci DTC použito prakticky jakékoliv přerušení od libovolného zařízení, čímž rázem získáváme téměř neomezený počet DTC kanálů. Ve skutečnosti je však počet kanálů omezen především velikostí paměti SRAM, neboť každý přenosový kanál vyžaduje 32 B paměti SRAM. V této paměti se ukládají veškeré konfigurační informace pro každý jednotlivý přenosový kanál. Takže například 64 kanálů DTC vyžaduje pro konfigurace 2 kB paměti SRAM.

Další velkou výhodou, oproti tradičním DMA jednotkám, je, že jednotlivé akce DTC mohou být navzájem provázané. To znamená, že jediné přerušení od libovolné periferie může spustit proces i několika DTC transferů za sebou. V mnoha aplikacích jde o velice užitečnou funkci, umožňující vytvářet řetězce DTC událostí na každou jednotlivou periferii.

Použití nové generace inteligentních mikrokontrolérových periferií - ZK2

Použití nové generace inteligentních mikrokontrolérových periferií - ZK3

V naší ukázkové aplikaci využijeme celkem 20 DTC transferů, zajišťujících přenos dat od ADC a jejich porovnání v DOC (DOC = Data Operation Circuit shortly). Dále je uveden příklad nastavení 2 událostí pro DTC podle RAM tabulek.

Nyní je možné vytvořit konfiguraci RAM pro DTC. V každé konfiguraci musí být DTC „sděleno“ čti data uložená na adrese „GroupA_CmpValue0“ v okamžiku přerušení S12AD, nebo od adresy „GroupB_CmpValue0“ ve chvíli přerušení GBADI (skupina B).

Veškerá tato konfigurace se provádí jednoduše pomocí tabulky vektorů DTC. V zásadě se jedná o podobný způsob jako v případě standardní tabulky přerušení, ovšem zde dochází k vyvolání požadavku na DTC. Jeho logika zajistí načtení příslušných položek tabulky požadovaného přenosu a následně je aktivován proces přenosu samotných dat.

V naší ukázkové aplikaci, jakmile dojde k vyvolání přerušení S12AD, DTC přerušení „přijme“, na adrese vektoru S12AD DTC si načte konfigurační data, která jsou na adrese „GroupA_CmpValue0“ a odpovídajícím způsobem spustí proces přenosu.

Samozřejmě, ke správné funkci je nutné u DTC přerušení S12AD povolit, což se provádí standardně, zápisem konfiguračního bitu.

V naší aplikaci je tak ADC konfigurován pro práci v režimu skupinového skenování, tedy skenování skupiny GroupA (kanál AN000, 1, 3, 5) nebo GroupB (kanál AN002, 4, 6, 8, 9, 10). Po každém úspěšném převodu analogové hodnoty na digitální dojde k vyvolání události S12AD GBADI nebo generování příslušného přerušení, které již v procesoru řídí jednotku DTC. DTC zajistí načtení připravené hodnoty, její porovnání a uložení výsledku do registru ANxxx v DOC. Díky podpoře řetězení operací DTC jednotky lze takto velice snadno zpracovat všechny výsledky dané skupiny ADC převodníku a to pouze od jediného přerušení.

Na závěr si představíme poslední a pravděpodobně nejunikátnější z periferií, které jsme v našem příkladu použili – DOC (Data Operating Circuit).

DOC si lze představit jako malou a jednoduchou ALU (Arithmetic Logic Unit), která je svým provozem zcela nezávislá na CPU. Pro svůj provoz vyžaduje dvě skupiny dat, referenční hodnotu a data pro porovnání.

Použití nové generace inteligentních mikrokontrolérových periferií - ZK4

Použití nové generace inteligentních mikrokontrolérových periferií 5.jpg

Obr. 5 Blokové schéma obvodu DOC

S těmito daty je DOC schopna provádět tři různé operace:

1. Porovnání dat.

Pokud jsou tyto dvě datové hodnoty shodné, lze vyvolat přerušení, nebo pokud jsou tyto dvě datové hodnoty rozdílné, lze opět vyvolat přerušení.

2. Součet hodnot

Referenční hodnota se přičítá ke vstupní hodnotě. Přerušení může být generováno například při přetečení, které nastane ve chvíli, kdy je výsledek větší než 0xFFFF.

3. Rozdíl hodnoty

Referenční hodnota se odečte od vstupní hodnoty. Rovněž lze generovat přetečení od podtečení výsledné hodnoty. Tedy v okamžiku, kdy výsledek operace je menší než 0×0.

Tím jsme si přiblížili funkci všech integrovaných periferií, použitých v uvedené ukázkové aplikaci.

Použitím jednotek MTU, DTC a DOC jsme v našem projektu docílili plně automatizovaného snímání analogové hodnoty z několika vstupů ADC se zpracováním CPU pouze ve chvíli, kdy DOC detekuje hodnotu mimo definovanou úroveň a generuje přerušení.

Pro přenos dat z ADC do DOC se používá jednotka DTC, čímž jsme opět odstranili nutnost softwarové obsluhy pomocí CPU.

Převod ADC je spouštěn MTU a po jeho dokončení se DTC postará o načtení výsledku a jeho porovnání pomocí DOC.

Řetězcový režim se používá pro všechny výsledky skupiny ADC kanálů a jejich porovnání, které je aktivované jedinou spouštěcí událostí od ADC. Tím lze využít snadné opakování operace pro libovolný počet kanálů ADC a jejich porovnání v DOC s nastavenou hodnotou, která je buď platná pro všechny zvolené kanály ADC, nebo může být pro každý jednotlivý kanál ADC načtena jiná.

Je vidět, že kombinace DOC, DTC a MTU na RX210, spolu s celou řadou dalších výkonných periferií, představuje do té doby neskutečnou úroveň flexibility. Obvody řady RX210 tak pro návrháře embedded aplikací představují obrovský potenciál, využitelný zejména v aplikacích, kde je důležitá celková spotřeba energie. Případně v aplikacích, kde je v reálném čase nutné zajistit deterministickou reakci na vnější události.

Použití nové generace inteligentních mikrokontrolérových periferií - bez názvu.jpg

Kompletní a plně funkční ukázkový kód z uvedené aplikace, který byl laděn na standardním vývojovém kitu RX210, je k dispozici u společnosti Renesas Electronics. Rovněž je zde zájemcům k dispozici celá řada dalších ukázkových aplikací, demonstrujících potenciál nové generace integrovaných periferií této řady procesorů.