- Hardver beállítása és követelményei
- Áramköri ábra a Nuvoton N76E003 LED-hez való illesztéséhez
- Időzítő csapok a Nuvoton N76E003-on
- Időzítő regisztráció a Nuvoton N76E003-ban
- Időtípusok a Nuvoton N76E003-ban
- Nuvoton N76E003 mikrokontroller programozása időzítőkhöz
- Villogó kód és a kimenet ellenőrzése az időzítő működéséhez
Korábbi Nuvoton mikrokontroller oktatóinkban egy alapvető LED-es villogó programot használtunk kezdési útmutatóként, és a GPIO-t is bemenetként csatlakoztattuk a tapintható kapcsoló csatlakoztatásához. Ezzel az oktatóanyaggal tisztában vagyunk azzal, hogyan konfigurálhatjuk a Keil projektet, és hogyan állíthatjuk be az N76E003 Nuvoton mikrokontroller programozásához szükséges környezetet. Itt az ideje használni a mikrokontroller belső perifériáját, és egy kicsit továbblépni az N76E003 beépített időzítőjének használatával.
Korábbi oktatóanyagunkban csak egy szoftver késleltetést használtunk a LED villogására, ezért ebben az oktatóanyagban megtanuljuk, hogyan kell használni az Időzítő késleltetés funkciót, valamint az Időzítő ISR (Szolgáltatás megszakítása) funkciót, és villogni két külön LED-et. Megnézheti az Arduino Timer Tutorial és a PIC Timer oktatóanyagokat is, hogy ellenőrizze, hogyan kell használni az időzítőket más mikrovezérlőkkel. Anélkül, hogy sok időt pazarolnánk, értékeljük, hogy milyen hardverbeállításra van szükségünk.
Hardver beállítása és követelményei
Mivel ennek a projektnek az a követelménye, hogy megtanulja az időzítő ISR-t és az időzítő késleltetési funkciót, két LED-et fogunk használni, amelyek közül az egyik villog az időzítő késleltetésével a while ciklusban, egy másik pedig az ISR funkcióban.
Mivel az N76E003 fejlesztőkártyán elérhető egy LED, ehhez a projekthez egy további LED-re és az áramkorlátozó ellenállásra van szükség a LED áramának korlátozásához. A szükséges alkatrészek -
- A LED bármilyen színe
- 100R ellenállás
Nem is beszélve arról, hogy a fenti összetevőkön kívül szükségünk van az N76E003 mikrokontroller alapú fejlesztőtáblára, valamint a Nu-Link programozóra. Ezenkívül az összes alkatrész csatlakoztatásához kenyérlemez és összekötő vezetékek is szükségesek.
Áramköri ábra a Nuvoton N76E003 LED-hez való illesztéséhez
Amint az alábbi vázlaton láthatjuk, a teszt LED elérhető a fejlesztői panelen belül, és az 1.4-es portra van csatlakoztatva. Egy további LED csatlakozik az 1.5-ös porthoz. Az R3 ellenállást a LED áramának korlátozására használják. A bal szélső részen látható a programozási felület kapcsolata.
Időzítő csapok a Nuvoton N76E003-on
Az N76E003 csapdiagramja látható az alábbi kép-
Mint láthatjuk, mindegyik tüskének különböző specifikációi vannak, és mindegyik csap többféle célra használható. Azonban az 1.5 tű, amelyet LED kimeneti tűként használnak, elveszíti a PWM-et és más funkciókat. De ez nem jelent problémát, mivel ehhez a projekthez nincs szükség más funkciókra.
Az 1,5-es tű kimenetként és az 1,6-os tű bemenetként való választása az oka, hogy a GND és a VDD csapok a legközelebbi elérhetőséggel állnak rendelkezésre az egyszerű csatlakoztatás érdekében. Ebben a 20 érintkezőből álló mikrovezérlőben azonban 18 érintkező használható GPIO-tűként, és bármely más GPIO-tű felhasználható kimenettel és bemenettel kapcsolatos célokra, kivéve a 2.0-as tűt, amelyet dedikáltan a bemenet visszaállításához használnak, és nem használható Kimenet. Az összes GPIO láb konfigurálható az alábbiakban leírt módban.
Az adatlap szerint a PxM1.n és a PxM2.n két regiszter, amelyek az I / O port vezérlési működésének meghatározására szolgálnak. Mivel LED-et használunk, és a tűt általános kimeneti tűként igényeljük, ezért a csapokhoz kvázi kétirányú módot fogunk használni.
Időzítő regisztráció a Nuvoton N76E003-ban
Az időzítő minden mikrovezérlő egység számára fontos dolog. A mikrokontroller beépített időzítő perifériával rendelkezik. A nuvoton N76E003 16 bites időzítő perifériákkal is rendelkezik. Mindazonáltal mindegyik időzítőt különböző célokra használják, és mielőtt bármilyen időzítő interfészt használnának, fontos tudni az időzítőt.
Időtípusok a Nuvoton N76E003-ban
0. és 1. időzítő:
Ez a két időzítő timer0 és timer1 megegyezik a 8051 timerrel. Ez a két időzítő használható általános időzítőként vagy számlálóként. Ez a két időzítő négy módban működik. A 0. módban ezek az időzítők 13 bites Időzítő / Számláló módban fognak működni. Az 1. módban e két időzítő felbontási bitje 16 bites lesz. A 2. módban az időzítők automatikus újratöltési módként vannak konfigurálva, 8 bites felbontással. A 3. módban az 1 időzítő leáll, és a 0 időzítő egyszerre használható számlálóként és időzítőként.
E négy mód közül a legtöbb esetben az 1. módot használják. Ez a két időzítő használhatja az Fsys-t (rendszerfrekvencia) rögzített vagy előre skálázott módban (Fys / 12). Külső óraforrásból is vezérelhető.
2. időzítő:
A Timer 2 egy 16 bites időzítő, amelyet főleg hullámforma rögzítésére használnak. Használja a rendszer óráját is, és különböző alkalmazásokban használható az órajel frekvenciájának elosztásával 8 különböző skálán. Használható összehasonlítási módban vagy PWM előállítására is.
A Timer 2 ugyanúgy használható, mint a Timer 0 és az Timer 1, az automatikus újratöltés módban.
3. időzítő:
A Timer 3 16 bites időzítőként is használható, és az UART adatátviteli sebességének forrásaként szolgál. Automatikus újratöltési funkcióval is rendelkezik. Fontos, hogy ezt az időzítőt csak soros kommunikációhoz (UART) használja, ha az alkalmazás UART kommunikációt igényel. Célszerű, ha ezt az időzítőt más célokra nem használja, az időzítő beállításainak ellentmondásos folyamata miatt.
Őrzőkutya időzítő:
A Watchdog Timer használható standard 6 bites időzítőként, de nem erre a célra használható. A Watchdog időzítő általános célú időzítőként történő alkalmazása alacsony energiafogyasztású alkalmazásokban alkalmazható, ahol a mikrovezérlő többnyire készenléti állapotban marad.
A Watchdog Timer, amint a neve is mutatja, mindig ellenőrzi, hogy a mikrovezérlő megfelelően működik-e vagy sem. Függesztett vagy leállított mikrovezérlő esetén a WDT (Watchdog Timer) automatikusan visszaállítja a mikrovezérlőt, amely biztosítja, hogy a mikrovezérlő folyamatos kódáramban működjön anélkül, hogy elakadna, felakasztana vagy leállna.
Önfelébresztési időzítő:
Ez egy másik időzítő periféria, amely egy dedikált időzítési folyamatot szolgál, ugyanúgy, mint a watchdog időzítő. Ez az időzítő rendszeresen felébreszti a rendszert, amikor a mikrovezérlő alacsony fogyasztású üzemmódban működik.
Ez az időzítő periféria használható belsőleg vagy külső perifériák segítségével a mikrovezérlő alvó üzemmódból való felébresztésére. Ehhez a projekthez az 1. időzítőt és a 2. időzítőt fogjuk használni.
Nuvoton N76E003 mikrokontroller programozása időzítőkhöz
A csapok beállítása kimenetként:
Kezdjük először a kimeneti szekcióval. Két LED-et használunk, az egyik a fedélzeti LED, Test névre keresztelt, és a P1.4 portra van kapcsolva, és egy külső LED a P1.5 csapra van csatlakoztatva.
Ezért ezt a két csapot kimeneti tűként konfigurálják a két LED összekapcsolására az alábbi kódrészletek használatával.
#define Test_LED P14 #define LED1 P15
Ez a két csap kvázi kétirányú csapként van beállítva a beállítási funkcióban.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; }
Az időzítő funkció beállítása:
A beállítási funkcióban a 2. időzítőt be kell állítani a kívánt kimenet megszerzéséhez. Ehhez beállítjuk a T2MOD regisztert 1/128 óra osztó tényezővel, és automatikusan újratöltési késleltetési módban használjuk. Itt található a T2MOD regiszter áttekintése
A T2MOD regiszter 4,5 és 6 bitje beállította az időzítő 2 óraosztóját, a 7. bit pedig az automatikus újratöltési módot. Ez az alábbi sor segítségével történik -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Ezt a két sort a Function_define.h fájlban definiáljuk
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Ezek a sorok meghatározzák a Timer 2 ISR-hez szükséges időzítési értéket.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
Amit a Function_define.h fájl as-
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
Tehát az 16000000 a 16 Mhz kristályfrekvencia, amely beállítja a 100 ms késleltetést.
Két sor alatt kiürül a Timer 2 alacsony és magas bájtja.
TL2 = 0; TH2 = 0;
Végül az alábbi kód engedélyezi a 2. időzítő megszakítását és elindítja a 2. időzítőt.
set_ET2; // Timer2 megszakítása set_EA; set_TR2; // Timer2 futás
A teljes beállítási funkció az alábbi kódokban látható:
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; // Timer2 megszakítása set_EA; set_TR2; // 2. időzítő futása }
2. időzítő ISR funkció:
A Timer 2 ISR funkció az alábbi kódban látható.
void Timer2_ISR (void) 5. megszakítás { clr_TF2; // 2. időzítő törlése megszakító jelző LED1 = ~ LED1; // LED1 váltó, csatlakoztatva a P1.5-be; }
Villogó kód és a kimenet ellenőrzése az időzítő működéséhez
Az összeállításkor az alább megadott kód 0 figyelmeztetést és 0 hibát adott vissza, és villantottam a Keil alapértelmezett villogó módszerével. Villogás után a LED-ek meghatározott időzített késleltetéssel villogtak, a programozásnak megfelelően.
Nézze meg az alábbi videót, hogy teljes körűen bemutassa, hogyan működik a tábla ehhez a kódhoz. Remélem, tetszett az oktatóanyag, és valami hasznosat tanult, ha bármilyen kérdése van, hagyja őket az alábbi megjegyzés részben. Fórumunkat felhasználhatja egyéb technikai kérdések feltöltésére is.