10.0 Mikropočítač ADuC836(834)

 

            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 ADuC836EB je mikropočítač ADuC836 založený na jadre mikropočítača 8051 a plne kompatibilný s jeho inštrukčnou sadou. ADuC836 je nazývaný svojím výrobcom  Analog Devices aj mikrokonvertor vzhľadom k oblasti svojho predurčenia (inteligentné senzory, prenosné elektronické zariadenia a podobne) a možnosťami ktorými disponuje. Na obr. 2.1 je bloková schéma mikropočítača ADuC836.

 

                               

 

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. 

 


 

10.1   Pamäťový systém

 

            ADuC836 oproti pôvodnému mikropočítaču 8051 disponuje dodatočnými typmi pamätí so zväčšenou kapacitou.

 

10.1.1      Programová pamäť       

 

            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.

 

10.1.2   Dátová pamäť

 

Dátová pamäť ADuC836 je rozdelená na internú RAM, oblasť SFR, XRAM a dátovú Flash/EE pamäť.


 

10.2   Implementované periférne zariadenia

 

10.2.1   ADC prevodník

 

            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).

 

10.2.2      DAC prevodník

 

            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).

 

10.2.3     PWM (Pulse Width Modulator)

 

            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).

 

10.2.4      PLL (Phase Locked Loop)

 

            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.

 

10.2.5   TIC (Time Interval Counter)

 

            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).

 

10.2.6     WT (Watchdog Timer)

 

            Č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.

 

10.2.7      PSM (Power Supply Monitor)

 

            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.

 


 

10.3    Rozširujúce rozhrania

 

            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.

 

10.3.1     SPI (Serial Peripheral Interface)

 

            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.

 

10.3.2      I2C (Inter-Integrated Circuit)

 

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.

 


 

10.4      Dodatočné vylepšenia ADuC836 oproti 8051

 

10.4.1    Dvojitý DPTR

 

            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).

 

10.4.2     Čítač/časovač 2

 

            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).

 

10.4.3       Časovač 3 – generátor prenosovej rýchlosti

 

            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).

 

10.4.4    Systém prerušení

 

            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