Pri tvorbe vzorových programov boli použité vývojové dosky ADuC836EB, ADuC836_ANALOG a ADuC836_DIGITAL (vyvinuté na KEMT FEI TU) osadené mikrokontrolérom ADuC836 a vývojové prostredie Keil.
Jadrom
vývojovej dosky AD
Obr. 2.1: Bloková schéma mikropočítača ADuC836
Na základe blokovej schémy sú zrejmé základné odlišnosti ADuC836 oproti mikropočítaču 8051 [3], [4]. Jednotlivé odlišnosti a vylepšenia sú uvedené v nasledujúcich kapitolách.
ADuC836 oproti pôvodnému mikropočítaču 8051 disponuje dodatočnými typmi pamätí so zväčšenou kapacitou.
Priamo na čipe je umiestnená programová pamäť typu Flash/EE s kapacitou 64 kB. Eliminujeme tak nutnosť pripojenia externej pamäte, keďže daná kapacita je dostatočná pre väčšinu bežných aplikácií. Užívateľovi je prístupných iba dolných 62 kB, horné 2 kB obsahujú výrobcom uložený „firmware“, čo je programové vybavenie umožňujúce programovanie ADuC836 priamo v systéme v ktorom sa nachádza, ladenie aplikácie (cez UART – sériovú linku) a „Single-pin“ emulačný mód pomocou EA vývodu mikropočítača. Opis emulačného módu nie je dostupný. Single-pin emulácia je možná napríklad pomocou emulátora POD od firmy ACCUTRON.
Dátová pamäť ADuC836 je rozdelená na internú RAM, oblasť SFR, XRAM a dátovú Flash/EE pamäť.
RAM – od adresy 000h do 127H je to klasická priamo adresovateľná RAM ako u 8051, od adresy 128H do 255H je to nepriamo adresovateľná RAM
SFR – rovnako ako pri 8051 je od adresy 128H po adresu 255H oblasť priamo adresovateľnej RAM v ktorej sú umiestnené registre súvisiace s konfiguráciou mikropočítača, jeho periférií, prípadne slúžiace na indikáciu stavov periférií a podobne
XRAM – od adresy 256H po adresu 007FFH je ďalších 2 kB na čipe umiestnenej „externej“ RAM. XRAM je použitá v prípade nastavenia bitu 0 v registri CFG836 (adresa registra je AFH) a je prístupná pomocou inštrukcie MOVX. V tomto prípade nie sú použité porty P0 a P2 a ani signály ALE, RD, WR. Ďalšou odlišnosťou od 8051 je možnosť nastavenie režimu použitia XRAM s možnosťou od adresy 00800H po FFFFFFH použiť externe pripojenú 16 MB RAM prístupnú prostredníctvom 24-bitového DPTR. V prípade aplikácie, ktorá vyžaduje pre zásobník viac pamäťového miesta v internej RAM pamäti, nastavením bitu 7 v registri CFG836 je možné povoliť využitie 11-bitového ukazateľa zásobníka. Po dosiahnutí adresy FFH v internej RAM pamäti, pokračuje zásobník v XRAM. V opačnom prípade by došlo k pretečeniu zásobníka
Dátová
Flash/EE – s kapacitou 4096 B (4 kB) je rozdelená do 1024 stránok,
každá s obsahom 4 B. Na adresovanie tejto pamäte je použitá
16-bitová adresa uložená v registroch EADRH a EADRL (adresa
registrov je C6H a C7H). Činnosť pamäte (čítanie, zápis, mazanie
a verifikáciu) je riadená pomocou registra ECON (adresa registra je
B9H) registra. Každá stránka
po zaadresovaní pomocou EADRH/L je prístupná pomocou štvorice registrov
EDATA1-A4 (adresa registrov je BCH až BFH)
ADuC836 disponuje dvoma nezávislými (primárnym a sekundárnym) analógovo-číslicovými S-D prevodníkmi s rozlíšením 16 bitov. V prípade ADuC834 je primárny prevodník s rozlíšením až 24 bitov a sekundárny s rozlíšením 16 bitov.
Primárny ADC:
Konfiguráciu činnosti primárneho ADC prevodníka je možné nastaviť pomocou registra ADC0CON (adresa registra je D2H) ([1] strana 19), príkladom je výber jedného zo štyroch vstupov, unipolárny alebo bipolárny režim, nastavenie rozsahu vstupného napätia od +/- 20 mV pri bipolárnom režime a 0 – 20 mV pri unipolárnom režime do +/- 2,56 V pri bipolárnom a 0 – 2,56 V pri unipolárnom režime.
Sekundárny ADC:
Činnosť sekundárneho ADC prevodníka je nastavovaná (obdobne ako u primárneho ADC prevodníka) pomocou registra ADC1CON (adresa registra je D3H). Odlišnosť od primárneho ADC prevodníka spočíva v možnosti nastavenia iba pevne daného rozsahu na +/- 2,56 V pri bipolárnom a 0 až 2,56 V pri unipolárnom režime. Na jednom zo vstupov sekundárneho prevodníka je zapojený interný teplotný senzor.
Pomocou registra ADCSTAT (adresa registra je D8H) ([1] strana 17) je indikovaný stav prípadne hlásenie chýb prevádzky oboch ADC prevodníkov. Napríklad 7. bit (RDY0) ADCSTAT registra indikuje úspešné ukončenie konverzie primárneho ADC. Bit ERR0 indikuje chybu prevodu primárneho ADC.
Mód činnosti oboch prevodníkov je nastavovaný registrom ADCMODE (adresa registra je D1H) ([1] strana 18), jedná sa o povolenie/zakázanie činnosti primárneho alebo sekundárneho prevodníka, nastavenie jednorázovej, kontinuálnej konverzie a podobne ([1] strana 18).
V režime nastavenej kontinuálnej konverzie je nutné nastaviť frekvenciu opakovania konverzie pomocou registra SF ([1] strana 21), ktorým frekvenciu fADC nastavujeme v rozsahu 5,35 Hz až 105,3 Hz zápisom hodnoty 0x0D až 0xFF do registra SF.
Primárny ADC prevodník navyše umožňuje detekciu pripojenej impendancie na svojom vstupe pomocou takzvaného „burn-out“ prúdu a to prostredníctvom dvoch prúdových zdrojov 100 nA. Pomocou „excitačného“ prúdu je možné realizovať pripojenie odporového mostíka alebo senzora k primárnemu ADC na základe [1] strana 68. Dva zdroje excitačného prúdu umožňujú vytvoriť zapojenie kompenzované vzhľadom k možnému kolísaniu prúdu napájajúcemu pripojený senzor. Oba zdroje excitačného prúdu 200 mA sú konfigurovateľné ako jeden 400 mA zdroj. Všetky potrebné nastavenia týchto prúdových zdrojov sú realizované pomocou registra ICON (adresa registra je D5H) ([1] strana 21).
Výsledky konverzie primárneho a sekundárneho prevodníka sú uložené do ADC0M/H (v prípade ADuC834 sú to tri 8-bitové registre ADC0M/H/L) a ADC1H/L registrov. V registroch OF0H/L (u ADuC834 OF0H/M/L) a OF1H/L sú uložené kalibračné koeficienty primárneho a sekundárneho prevodníka a v registroch GN0H/L (u ADuC834 GN0H/M/L) a GN1H/L sú uložené kalibračné koeficienty zosilnenia primárneho a sekundárneho prevodníka ([1] strana 20 a [2] strana 20).
ADuC836 obsahuje digitálno-analógový prevodník DAC s rozlíšením 12 bitov a možnosťou pracovať aj v 8-bitovom režime. DAC je konfigurovateľný registrom DACCON (adresa registra je FDH) ([1] strana 34). Pomocou DACCON je volené nastavenie výstupu DAC na vývod P1.7 alebo P1.2, 8-bitový mód, nastavenie výstupného rozsahu a to 0 až VREF = 2,5V (VREF je interný zdroj referenčného napätia 2,5 V) alebo 0 až VCC. Ďalšími možnosťami sú zakázanie alebo povolenie DAC a nulovanie registrov DACL (adresa registra je FBH) a DACH (adresa registra je FCH).
Požadovaná výstupná úroveň je dosiahnutá zápisom číselnej hodnoty do registrov DACH a DACL. Úroveň napätia na výstupe je zmenená až po zápise údaju do registra DACL, preto je nutné zapisovať hodnotu v prípade 12-bitového režimu najskôr do registra DACH a až potom do registra DACL ([1] strana 34, 35).
PWM – pulzne - šírkový modulátor je konfigurovateľný v šiestich módoch so širokou možnosťou nastavení. Dva z módov umožňujú PWM modulátor konfigurovať ako dva S-D DAC prevodníky s rozlíšením 16 bitov. Na konfiguráciu PWM slúži register PWMCON (adresa registra je AEH) ([1] strana 36) umožňujúci nastavenie módov prevádzky, deliaci pomer frekvencie čítača PWM a zdroj frekvencie pre čítač PWM. Na nastavovanie ďalších parametrov PWM signálu ako je strieda a perióda slúžia registre PWM0H/L a PWM1H/L (adresy registrov sú od B1H po B4H v danom poradí) ([1] strana 36 až 38).
PLL – fázový záves slúži na vytvorenie taktovacej frekvencie mikropočítača, ktorá je odvodená od frekvencie pripojeného externého kryštálu 32768 Hz. Na konfiguráciu PLL slúži register PLLCON (adresa registra je D7H) ([1] strana 39) umožňujúci zastavenie/spustenie oscilátora, nastavenie ôsmych možných hodnôt generovanej frekvencie od 98304 Hz do 12,58 MHz. Navyše pri nastavení nižšej taktovacej frekvencie ako je maximálna, existuje nastavením bitu FINT v registri PLLCON možnosť aktivácie rýchlej odozvy na vyvolané prerušenie zvýšením taktovacej frekvencie počas výkonu podprogramu na obsluhu prerušenia.
TIC je využiteľný v prípade potreby merania dlhších časových úsekov. Ďalšími funkciami sú možnosť periodického prechodu z nízkopríkonového režimu (power down) do normálneho operačného stavu a späť. Ďalej je to implementácia zdroja reálneho času RTC (Real-Time Clock). TIC je konfigurovateľný pomocou registra TIMECON (adresa registra je A1H) ([1] strana 40). V prípade povolenia prerušenia od TIC v registri TIMECON, pomocou registra INTVAL (adresa registra je A6H) do ktorého je zapísaná hodnota s ktorou ak je zhodný 8-bitový intervalový čítač ([1] strana 40) vygeneruje sa prerušenie. Na uloženie časových hodnôt slúžia registre HTHSEC (adresa registra je A2H) v ktorom je hodnota inkrementovaná každú 1/128 sekundy. Počíta sa od hodnoty 0 a prekročení hodnoty 127 je HTHSEC automaticky nulovaný, súčastne je inkrementovaný o jednotku register SEC na uloženie sekúnd. Obdobne pracujú ostatné registre SEC (adresa registra je A3H) na uloženie sekúnd (0 až 59), MIN (adresa registra je A4H) na uloženie minút (0 až 59) a register HOUR (adresa registra je A5H) na uloženie hodín (0 až 23).
Časovač WT je obvodom dohliadacím na činnosť mikropočítačového systému. Podstata spočíva v nastavení časového intervalu tohto časovača pomocou registra WDCON (adresa registra je C0H) ([1] strana 42) v intervale od 15,6 ms do 2000 ms. Ak počas daného časového intervalu vhodne vytvorený program bežiaci na mikropočítači nevykoná zápis logickej 1 do bitu WDE v registri WDCON, WD vyvolá nemaskovateľné prerušenie (adresa vektora prerušenia je 05BH). Tento prípad môže nastať v dôsledku chyby programu, rušenia a iných negatívnych vplyvov pôsobiacich na mikropočítačový systém. Pomocou WD zabezpečíme, že ak dôjde k „zablúdeniu“ programu a nevykoná sa zápis do bitu WDE v nastavenom čase, nasleduje reset, ktorý reštartuje systém a ten je vrátený do definovaného stavu.
Na zabezpečenie správnej činnosti mikropočítača slúži obvod monitorujúci pokles napájacieho napätia PSM. V závislosti od nastavenia v registri PSMCON (adresa registra je 0FH) ([1] strana 43), systém reaguje na pokles napájacieho napätia pod nastavenú úroveň. V prípade poklesu napätia pod nastavenú úroveň je generované prerušenie, ktorého obslužný program zabezpečí odloženie obsahu dôležitých registrov napríklad do EEPROM. V prípade ustálenia sa napájacieho napätia na potrebnej úrovni, systém na základe uloženého obsahu daných registrov je schopný pokračovať v činnosti prerušenej vplyvom poklesu napätia.
ADuC836 oproti 8051 obsahuje okrem štandardnej sériovej linky priamo hardverovo podporované sériové rozhrania SPI a I2C. Pomocou týchto rozhraní je možné k ADuC836 jednoduchým spôsobom pripojiť zariadenia vybavené týmito štandardizovanými rozhraniami.
SPI je sériové synchrónne rozhranie umožňujúce simultánny prenos (vysielanie aj príjem) 8-bitovej informácie. Všetky potrebné nastavenia ohľadne konfigurácie rozhrania sú realizované registrom SPICON (adresa registra je F8H) ([1] strana 44). Prijaté alebo vysielané dáta sú zapisované, resp. čítané z registra SPIDAT (adresa registra je F7H). Doplňujúce informácie o SPI rozhraní a spôsobe komunikácie sú v kapitole č. 6.
I2C je sériové rozhranie s dátovou linkou SDATA a linkou SCLOCK distribujúcou synchronizačné impulzy [39], [40]. Rozhranie podporuje možnosť činnosti ADuC836 ako nadradeného tak aj podradeného zariadenia. V režime nadradeného zariadenia – master pracuje v softvérovom režime s nutnosťou programového riadenia vysielania jednotlivých dátových bitov a synchronizačných impulzov. V režime podradeného zariadenia – harverový slave je prenos dát realizovaný plne hardverovo zápisom/čítaním 8-bitových dát z registra I2CDAT (adresa registra je 9AH). V tomto režime je adresa mikropočítača nastavená registrom I2CADD (adresa registra je 9BH) s možnosťou meniť ju podľa potrieb. Adresa je 7-bitová a tým pádom je možné na I2C je pripojiť viacero typov zariadení s maximálnym množstvom 127 daným touto 7-bitovou adresou. Potrebné nastavenia pre I2C sú realizované registrom I2CCON (adresa registra je E8H) ([1] strana 46). Doplňujúce informácie ohľadom I2C rozhrania a spôsobu komunikácie sú v kapitole č. 6.
ADuC836 disponuje jedným hlavným a druhým „tieňovým“ registrom DPTR. Nastavením v registri DPCON (adresa registra je A7H) ([1] strana 48) je povolená funkcia druhého DPTR rovnako aj voľba momentálne používaného DPTR. Oba DPTR umožňujú nastaviť typ aritmetiky (postinkrementovanie, postdekrementovanie) pri použití MOVX a MOVC inštrukcií, čiže pri presune medzi externými pamäťami dát a programu. Jednou z možností je napríklad post-inkrementácia pri použití jednej z týchto inštrukcií v prípade, že je spracovávaný blok po sebe nasledujúcich dát uložených v externej pamäti. Výhoda spočíva v úspore procesorového času, keďže odpadá nutnosť softvérovej realizácie inkrementovania DPTR, vykoná sa tak automaticky ([1] strana 48).
V prípade nevyhnutnosti použitia čítačov/časovačov 0 a 1 pre iné účely, na generovanie prenosovej rýchlosti pre sériovú linku je možné využiť časovač 2. Činnosť časovača 2 je nastavovaná pomocou registra T2CON ([1] strana 56). Časovač 2 umožňuje pracovať v ďalších dvoch režimoch, a to v 16-bitovom záchytnom režime a v 16-bitovom režime s prednastavením znovunačítania (autoreload). Hodnoty časovača sú uložené v registroch TL2 a TH2. Prednastavenie je uložené do registrov RCAP2L a RCAP2H ([1] strana 55).
Ak je pre aplikáciu potrebné využiť všetky tri časovače alebo v prípade potreby generovania prenosovej rýchlosti s malou chybou, je na tento účel možné využiť časovač 3. Činnosť časovača 3 je nastavovaná registrom T3CON ( povolenie časovača 3 a deliaci faktor) ([1] strana 60) a hodnotou zapísanou do T3FD registra. Využitím časovača 3 je možné dosiahnuť vysoké prenosové rýchlosti 115200 a 230400 baudov, čo sériová linka mikropočítača 8051 neumožňuje ([1] strana 60).
ADuc836 oproti 8051 disponuje systémom 11 prerušení v dvoch úrovniach priority čím je umožnené efektívne využitie zariadení implementovaných do daného mikropočítača. Potrebné nastavenia realizujeme registrami IE, IP a IEIP2 ([1]strana 61 a 62). Adresy a poradie prerušení sú v tab. 10.1.
Tab. 10.1: Prerušenia mikropočítača ADuC836