- Postavljanje i zahtjev hardvera
- Kružna shema za LED povezivanje s Nuvotonom N76E003
- Privremene igle na Nuvotonu N76E003
- Registri odbrojavanja u Nuvotonu N76E003
- Vrste vremena u Nuvotonu N76E003
- Programiranje mikrokontrolera Nuvoton N76E003 za odbrojavanje
- Treptanje koda i provjera izlaza za funkciju odbrojavanja
U našim prethodnim vodičima za Nuvoton mikrokontroler koristili smo osnovni LED program za treptanje kao vodič za početak rada, a također smo povezali GPIO kao ulaz za povezivanje taktilne sklopke. Pomoću ovog vodiča potpuno smo svjesni kako konfigurirati projekt Keil i postaviti okruženje za programiranje mikrokontrolera N76E003 Nuvoton. Vrijeme je da upotrijebite unutarnju perifernu jedinicu mikrokontrolera i pomaknete se malo dalje pomoću ugrađenog mjerača vremena N76E003.
U našem prethodnom tutorialu koristili smo samo softversko odgađanje da trepćemo LED, tako da ćemo u ovom vodiču naučiti kako koristiti funkciju odgode odbrojavanja vremena kao i Timer ISR (Interrupt Service Rutine) i treptati dvije pojedinačne LED diode. Također možete pogledati Vodič za Arduino timer i PIC Timer tutorial kako biste provjerili kako koristiti tajmere s drugim mikrokontrolerima. Ne trošeći puno vremena, procijenimo kakvu postavku hardvera trebamo.
Postavljanje i zahtjev hardvera
Kako je zahtjev ovog projekta naučiti Timer ISR i funkciju odgađanja timera, upotrijebit ćemo dvije LED diode, od kojih će jedna treptati pomoću timera odgađanja u while petlji, a druga unutar ISR funkcije.
Budući da je LED dostupan na razvojnoj ploči N76E003, ovaj projekt zahtijeva jednu dodatnu LED i otpornik za ograničavanje struje kako bi ograničio LED struju. Komponente koje trebamo -
- Bilo koja boja LED diode
- Otpornik 100R
Da ne spominjem, osim gore navedenih komponenata, trebamo razvojnu ploču temeljenu na mikrokontroleru N76E003, kao i Nu-Link programer. Pored toga, za spajanje svih komponenata potrebne su i žice za spajanje i spojne žice.
Kružna shema za LED povezivanje s Nuvotonom N76E003
Kao što možemo vidjeti u donjoj shemi, testna LED dioda dostupna je unutar razvojne ploče i spojena je na priključak 1.4. Na priključak 1.5 priključen je dodatni LED. Otpornik R3 služi za ograničavanje LED struje. Krajnje lijevo prikazana je veza programskog sučelja.

Privremene igle na Nuvotonu N76E003
Pin dijagram N76E003 može se vidjeti u nastavku IMIDŽ

Kao što vidimo, svaki pin ima različite specifikacije i svaki pin može se koristiti u više svrha. Međutim, pin 1.5 koji se koristi kao LED izlazni pin, izgubit će PWM i ostale funkcije. Ali, to nije problem jer za ovaj projekt nije potrebna druga funkcionalnost.
Razlog izabiranja pina 1.5 kao izlaza i pina 1.6 kao ulaza je najbliža dostupnost GND i VDD pinova za jednostavno povezivanje. Međutim, u ovom mikrokontroleru od 20 pinova, 18 pinova može se koristiti kao GPIO pin, a bilo koji drugi GPIO pinovi mogu se koristiti za izlaz i svrhe unosa, osim pina 2.0 koji se namjenski koristi za resetiranje ulaza i ne može se koristiti kao izlaz. Svi GPIO pinovi mogu se konfigurirati u dolje opisanom načinu.

Prema tablici podataka, PxM1.n i PxM2.n su dva registra koja se koriste za određivanje kontrolnog rada I / O porta. Budući da koristimo LED i trebamo pin kao općenite izlazne igle, stoga ćemo za klinove koristiti kvazi-dvosmjerni način.
Registri odbrojavanja u Nuvotonu N76E003
Tajmer je važna stvar za bilo koju jedinicu mikrokontrolera. Mikrokontroler dolazi s ugrađenom perifernom jedinicom s timerom. Nuvoton N76E003 također dolazi s 16-bitnom perifernom opremom s timerom. Međutim, svaki odbrojavač koristi se u različite svrhe, a prije upotrebe bilo kojeg sučelja odbrojavanja važno je znati o odbrojavanju.
Vrste vremena u Nuvotonu N76E003
Odbrojavanje 0 i 1:
Ova dva odbrojavanja timer0 i timer1 identična su s 8051 odbrojavanjem. Ova dva mjerača vremena mogu se koristiti kao opći mjerač vremena ili kao brojači. Ova dva mjerača vremena rade u četiri načina. U načinu 0, ti tajmeri će raditi u 13-bitnom načinu rada Timer / Counter. U načinu rada 1, bit razlučivosti ta dva tajmera bit će 16-bitni. U načinu rada 2, tajmeri su konfigurirani kao način automatskog ponovnog učitavanja s 8-bitnom razlučivosti. U načinu 3, odbrojavanje 1 je zaustavljeno i odbrojavanje 0 se može koristiti kao brojač i odbrojavanje istovremeno.
Od ova četiri načina, u većini se slučajeva koristi način 1. Ova dva odbrojavanja mogu koristiti Fsys (sistemsku frekvenciju) u fiksnom ili unaprijed podešenom načinu (Fys / 12). Može se taktirati i s vanjskog izvora sata.
Odbrojavanje 2:
Timer 2 je također 16-bitni timer koji se uglavnom koristi za hvatanje valnog oblika. Također koristi sistemski sat i može se koristiti u različitim aplikacijama dijeljenjem frekvencije takta pomoću 8 različitih ljestvica. Također se može koristiti u načinu usporedbe ili za generiranje PWM-a.
Kao i Timer 0 i Timer 1, Timer 2 se može koristiti u načinu automatskog ponovnog učitavanja.
Odbrojavanje 3:
Timer 3 se također koristi kao 16-bitni timer i koristi se za izvor takta brzine prijenosa za UART. Također ima značajku automatskog ponovnog učitavanja. Važno je koristiti ovaj timer samo za serijsku komunikaciju (UART) ako aplikacija zahtijeva UART komunikaciju. Preporučljivo je ne koristiti ovaj timer u druge svrhe u tom slučaju zbog sukobljenog postupka u postavljanju tajmera.
Tajmer čuvara:
Watchdog Timer može se koristiti kao standardni 6-bitni timer, ali se ne koristi u tu svrhu. Korištenje Watchdog timera kao tajmera za opću namjenu primjenjivo je za aplikacije s malom potrošnjom energije kada mikrokontroler uglavnom ostaje u stanju mirovanja.
Watchrog Timer, kao što mu samo ime govori, uvijek provjerava radi li mikrokontroler ispravno ili ne. U slučaju obješenog ili zaustavljenog mikrokontrolera, WDT (Watchdog Timer) automatski resetira mikrokontroler što osigurava da mikrokontroler radi u kontinuiranom protoku koda bez da zaglavi, objesi ili zaustavi.
Samookidač za buđenje:
Ovo je još jedna periferna oprema tajmera koja služi posvećenom postupku vremenskog usklađivanja isti kao tajmer čuvara. Ovaj timer povremeno budi sustav kada mikrokontroler radi u načinu male snage.
Ovaj periferni uređaj s odbrojavanjem može se koristiti interno ili pomoću vanjskih perifernih uređaja kako bi se mikrokontroler probudio iz stanja mirovanja. Za ovaj ćemo projekt koristiti Timer 1 i Timer 2.
Programiranje mikrokontrolera Nuvoton N76E003 za odbrojavanje
Postavljanje pinova kao izlaza:
Krenimo prvo s izlaznim odjeljkom. Koristimo dvije LED diode, jedna je ugrađena LED, nazvana Test, i povezana je s portom P1.4 i vanjskom LED diodom povezanom s pinom P1.5.
Stoga su ove dvije iglice konfigurirane kao izlazni pin za spajanje te dvije LED diode pomoću donjih isječaka koda.
#define Test_LED P14 #define LED1 P15
Ove su dvije iglice postavljene kao kvazi-dvosmjerne iglice u funkciji postavljanja.
void postavljanje (void) {P14_Quasi_Mode; P15_Quasi_Mode; }
Postavljanje funkcije odbrojavanja:
U funkciji postavljanja potrebno je konfigurirati odbrojavanje 2 da bi se dobio željeni izlaz. Za to ćemo postaviti T2MOD registar s faktorom podjele 1/128 sata i koristiti ga u načinu odgode automatskog ponovnog učitavanja. Evo pregleda registra T2MOD-

4,5 i 6-bit registra T2MOD postavljaju razdjelnik sata timera 2, a 7-bit podešava način automatskog ponovnog učitavanja. To se radi pomoću donjeg retka -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Ova su dva retka definirana u datoteci Function_define.h kao
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Sada ovi redovi postavljaju vremensku vrijednost potrebnu za Timer 2 ISR.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
Što je dalje definirano u datoteci Function_define.h kao-
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
Dakle, 16000000 je kristalna frekvencija od 16 MHz koja postavlja vremensko kašnjenje od 100 ms.
Ispod dva retka ispraznit će se bajtovi Timer 2 Low i High.
TL2 = 0; TH2 = 0;
Konačno, donji kod omogućit će prekid timera 2 i pokrenuti tajmer 2.
set_ET2; // Omogući prekid Timer2 set_EA; set_TR2; // Timer2 pokrenut
Kompletna funkcija postavljanja može se vidjeti u donjim kodovima-
void postavljanje (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; // Omogući prekid Timer2 set_EA; set_TR2; // pokretanje mjerača2 }
Funkcija ISR tajmera 2:
Funkcija Timer 2 ISR može se vidjeti u donjem kodu.
void Timer2_ISR (void) prekid 5 { clr_TF2; // Očisti zastavicu prekida Timer2 LED1 = ~ LED1; // prekidač LED1, spojen u P1.5; }
Treptanje koda i provjera izlaza za funkciju odbrojavanja
Kôd (naveden u nastavku) kad je kompiliran vratio je 0 upozorenja i 0 pogrešaka, a ja sam ga treptao koristeći zadani način treptanja u Keilu. Nakon treptanja LED-diode su treptale u definiranom odgodu timera prema programiranju.

Pogledajte donji videozapis za cjelovitu demonstraciju rada ploče na ovom kodu. Nadam se da ste uživali u vodiču i naučili nešto korisno ako imate pitanja, ostavite ih u odjeljku za komentare u nastavku. Naše forume možete koristiti i za postavljanje drugih tehničkih pitanja.
