- Hardvérové nastavenie a požiadavky
- Schéma zapojenia LED prepojenia s Nuvoton N76E003
- Kolíky časovača na Nuvoton N76E003
- Registre časovača v Nuvoton N76E003
- Druhy časov v Nuvotone N76E003
- Programovanie mikrokontroléra Nuvoton N76E003 pre časovače
- Blikajúci kód a overovací výstup pre funkčnosť časovača
V našich predchádzajúcich výučbách mikrokontroléra Nuvoton sme použili základný program blikania LED ako príručku pre začiatočníkov a tiež sme prepojili GPIO ako vstup na pripojenie hmatového spínača. V rámci tohto tutoriálu sme si plne vedomí toho, ako nakonfigurovať projekt Keil a nastaviť prostredie pre programovanie mikrokontroléra N76E003 Nuvoton. Je čas použiť vnútornú perifériu jednotky mikrokontroléra a posunúť sa o kúsok ďalej pomocou zabudovaného časovača N76E003.
V našom predchádzajúcom výučbe sme na blikanie LED použili iba softvérové oneskorenie, takže v tomto výučbe sa naučíme, ako používať funkciu časovaného oneskorenia, ako aj časovač ISR (rutina prerušenia služby) a blikať dve jednotlivé LED. Môžete si tiež pozrieť Výučbový program časovača Arduino a Výukový program časovača PIC a skontrolovať, ako používať časovače s inými mikrokontrolérmi. Bez toho, aby sme strácali veľa času, poďme vyhodnotiť, aké nastavenie hardvéru požadujeme.
Hardvérové nastavenie a požiadavky
Pretože požiadavkou tohto projektu je naučiť sa časovač ISR a funkciu časovača oneskorenia, použijeme dve LED diódy, z ktorých jedna bude blikať pomocou oneskorenia časovača v slučke while a druhá bude blikať vo vnútri funkcie ISR.
Pretože vo vývojovej doske N76E003 je k dispozícii LED, vyžaduje tento projekt na obmedzenie prúdu LED jednu ďalšiu LED a rezistor obmedzujúci prúd. Komponenty, ktoré požadujeme -
- Akákoľvek farba LED
- 100R odpor
Nehovoriac o tom, že okrem vyššie uvedených komponentov potrebujeme vývojovú dosku na báze mikrokontrolérov N76E003, ako aj programátor Nu-Link. Ďalej sú na pripojenie všetkých komponentov potrebné tiež nepájivé pole a pripojovacie vodiče.
Schéma zapojenia LED prepojenia s Nuvoton N76E003
Ako vidíme na nasledujúcej schéme, testovacia LED je k dispozícii vo vnútri vývojovej dosky a je pripojená na port 1.4. K portu 1.5 je pripojená ďalšia LED. Rezistor R3 sa používa na obmedzenie prúdu LED. Úplne vľavo je zobrazené pripojenie programovacieho rozhrania.
Kolíky časovača na Nuvoton N76E003
Schéma pinov N76E003 je vidieť na obrázku nižšie -
Ako vidíme, každý pin má iné technické parametre a každý pin je možné použiť na rôzne účely. Avšak kolík 1.5, ktorý sa používa ako výstupný kolík LED, stratí PWM a ďalšie funkcie. To však nie je problém, pretože pre tento projekt sa nevyžaduje ďalšia funkčnosť.
Dôvod prečo si zvoliť pin 1,5 ako výstup a pin 1,6 ako vstup je kvôli najbližšej dostupnosti pinov GND a VDD pre ľahké pripojenie. Avšak v tomto mikrokontroléri z 20 pinov možno 18 pinov použiť ako pin GPIO a akékoľvek ďalšie piny GPIO možno použiť na výstup a na účely súvisiace so vstupom, s výnimkou pin 2.0, ktorý sa špeciálne používa na vstup Reset a nemožno ho použiť ako výkon. Všetky piny GPIO je možné konfigurovať v nižšie popísanom režime.
Podľa údajového listu, PxM1.n a PxM2.n sú dva registre, ktoré sa používajú na určenie riadiacej činnosti I / O portu. Pretože používame LED a pin vyžadujeme ako všeobecné výstupné piny, použijeme pre piny kvázi obojsmerný režim.
Registre časovača v Nuvoton N76E003
Časovač je dôležitá vec pre každú jednotku mikrokontroléra. Mikrokontrolér je dodávaný so zabudovanou perifériou časovača. Nuvoton N76E003 tiež prichádza s 16-bitovými časovačmi. Každý časovač sa však používa na rôzne účely a pred použitím ľubovoľného rozhrania časovača je dôležité vedieť o časovači.
Druhy časov v Nuvotone N76E003
Časovač 0 a 1:
Tieto dva časovače timer0 a timer1 sú identické s časovačmi 8051. Tieto dva časovače sa dajú použiť ako všeobecné časovače alebo ako počítadlá. Tieto dva časovače pracujú v štyroch režimoch. V režime 0 budú tieto časovače pracovať v 13-bitovom režime časovača / počítadla. V režime 1 bude bit rozlíšenia týchto dvoch časovačov 16-bitový. V režime 2 sú časovače nakonfigurované ako režim automatického načítania s 8-bitovým rozlíšením. V režime 3 je časovač 1 zastavený a časovač 0 môže byť použitý ako počítadlo a časovač súčasne.
Z týchto štyroch režimov sa vo väčšine prípadov používa režim 1. Tieto dva časovače môžu používať Fsys (systémová frekvencia) v pevnom alebo prednastavenom režime (Fys / 12). Hodinu je možné taktovať aj z externého zdroja hodín.
Časovač 2:
Timer 2 je tiež 16-bitový časovač, ktorý sa používa hlavne na snímanie kriviek. Používa tiež systémové hodiny a je možné ho použiť v rôznych aplikáciách vydelením hodinovej frekvencie pomocou 8 rôznych stupníc. Môže sa tiež použiť v režime porovnania alebo na generovanie PWM.
Rovnako ako časovač 0 a časovač 1, aj časovač 2 je možné použiť v režime automatického opätovného načítania.
Časovač 3:
Časovač 3 sa tiež používa ako 16-bitový časovač a používa sa ako zdroj hodín s prenosovou rýchlosťou pre UART. Má tiež funkciu automatického opätovného načítania. Je dôležité používať tento časovač iba na sériovú komunikáciu (UART), ak aplikácia vyžaduje komunikáciu UART. V takom prípade sa odporúča nepoužívať tento časovač na iné účely z dôvodu konfliktu procesov v nastavení časovača.
Časovač strážneho psa:
Časovač Watchdog Timer možno použiť ako štandardný 6-bitový časovač, ale na tento účel sa nepoužíva. Použitie časovača Watchdog ako univerzálneho časovača je použiteľné pre aplikácie s nízkou spotrebou energie, kde mikrokontrolér zostáva väčšinou v nečinnom režime.
Watchdog Timer, ako už názov napovedá, vždy kontroluje, či mikrokontrolér pracuje správne alebo nie. V prípade zaveseného alebo zastaveného mikrokontroléra WDT (Watchdog Timer) automaticky resetuje mikrokontrolér, čo zaručuje, že mikrokontrolér pracuje v nepretržitom toku kódu bez toho, aby uviazol, obesil sa alebo sa zastavil.
Časovač automatického prebudenia:
Toto je ďalšia periféria časovača, ktorá slúži na vyhradený časovací proces rovnako ako časovač strážneho psa. Tento časovač pravidelne prebúdza systém, keď je mikrokontrolér v režime nízkej spotreby.
Túto časovačovú perifériu je možné použiť interne alebo pomocou externých periférií na prebudenie mikrokontroléra z režimu spánku. Pre tento projekt použijeme časovač 1 a časovač 2.
Programovanie mikrokontroléra Nuvoton N76E003 pre časovače
Nastavenie pinov ako výstupu:
Najprv začneme s výstupnou časťou. Používame dve LED, jedna je palubná LED s názvom Test a je pripojená k portu P1.4 a externá LED je pripojená k vývodu P1.5.
Preto sú tieto dva piny nakonfigurované ako výstupný pin na pripojenie týchto dvoch LED diód pomocou nasledujúcich fragmentov kódu.
#define Test_LED P14 #define LED1 P15
Tieto dva kolíky sú vo funkcii nastavenia nastavené ako kvázi obojsmerný kolík.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; }
Nastavenie funkcie časovača:
Vo funkcii nastavenia je potrebné nakonfigurovať časovač 2, aby sa dosiahol požadovaný výstup. Za týmto účelom nastavíme register T2MOD s deliacim faktorom 1/128 hodín a použijeme ho v režime oneskorenia automatického opätovného načítania. Tu je prehľad registrov T2MOD
4,5 a 6-bitový register T2MOD nastavil delič hodín s časovačom 2 a siedmy bit nastavil režim automatického načítania. To sa deje pomocou nasledujúceho riadku -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Tieto dva riadky sú definované v súbore Function_define.h ako
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Teraz tieto riadky nastavujú hodnotu časovania požadovanú pre časovač 2 ISR.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
Čo je ďalej definované v súbore Function_define.h ako
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
16000000 je teda kryštálová frekvencia 16 Mhz, ktorá nastavuje časové oneskorenie 100 ms.
Pod dvoma riadkami sa vyprázdnia bajty časovača 2, nízke a vysoké.
TL2 = 0; TH2 = 0;
Nakoniec nižšie uvedený kód umožní prerušenie časovača 2 a spustí časovač 2.
set_ET2; // Povoliť prerušenie Timer2 set_EA; set_TR2; // Spustenie Timer2
Kompletnú funkciu nastavenia nájdete v nasledujúcich kódoch -
void setup (void) { P14_Quasi_Mode; P15_Quasi_Mode; TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode; RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8; TL2 = 0; TH2 = 0; set_ET2; // Povoliť prerušenie Timer2 set_EA; set_TR2; // Timer2 run }
Funkcia časovača 2 ISR:
Funkcia časovača 2 ISR je uvedená v nasledujúcom kóde.
void Timer2_ISR (void) prerušenie 5 { clr_TF2; // Vymazať časovač2 Prerušovací príznak LED1 = ~ LED1; // prepínač LED1, zapojený v P1.5; }
Blikajúci kód a overovací výstup pre funkčnosť časovača
Kód (uvedený nižšie) po kompilácii vrátil 0 varovaní a 0 chýb a blikal som ho pomocou predvolenej metódy blikania v Keil. Po blikaní LED diódy blikali v definovanom časovom limite podľa naprogramovania.
Na videu uvedenom nižšie nájdete úplnú ukážku toho, ako doska funguje pre tento kód. Dúfam, že sa vám návod páčil a dozvedeli ste sa niečo užitočné, ak máte akékoľvek otázky, nechajte ich v sekcii komentárov nižšie. Môžete tiež použiť naše fóra na zverejnenie ďalších technických otázok.