- Aparatūras iestatīšana un prasības
- LED shēmas ar Nuvoton N76E003 shēma
- Taimera piespraudes Nuvoton N76E003
- Taimera reģistrs Nuvoton N76E003
- Laika veidi Nuvoton N76E003
- Nuvoton N76E003 mikrokontrolleru programmēšana taimeriem
- Mirgojošs kods un izejas pārbaude taimera funkcionalitātei
Mūsu iepriekšējās Nuvoton mikrokontrolleru apmācībās mēs izmantojām pamata mirgojošu gaismas diode programmu kā darba sākšanas rokasgrāmatu, kā arī saskarnē GPIO kā ieeju taustāma slēdža pievienošanai. Izmantojot šo apmācību, mēs pilnībā apzināmies, kā konfigurēt Keil projektu un iestatīt vidi N76E003 Nuvoton mikrokontrollera programmēšanai. Ir pienācis laiks izmantot mikrokontrolleru bloka iekšējo perifēro ierīci un pārvietoties mazliet tālāk, izmantojot N76E003 iebūvēto taimeri.
Iepriekšējā apmācībā mēs izmantojām tikai programmatūras aizkavi, lai mirgot gaismas diode, tāpēc šajā apmācībā mēs uzzināsim, kā izmantot taimera aizkaves funkciju, kā arī taimera ISR (Interrupt Service Routine) un mirgot divas atsevišķas gaismas diodes. Varat arī apskatīt Arduino taimera apmācību un PIC taimera apmācību, lai pārbaudītu, kā izmantot taimerus ar citiem mikrokontrolleriem. Netērējot daudz laika, novērtēsim, kāda veida aparatūras iestatīšana mums nepieciešama.
Aparatūras iestatīšana un prasības
Tā kā šī projekta prasība ir iemācīties Taimera ISR un taimera aizkaves funkciju, mēs izmantosim divas gaismas diodes, no kurām viena tiks mirgot, izmantojot taimera aizkavi, kamēr cilpa, un vēl viena mirgos ISR funkcijas iekšpusē.
Tā kā N76E003 izstrādes panelī ir pieejams LED, šim projektam ir nepieciešama vēl viena LED un strāvas ierobežojošais rezistors, lai ierobežotu LED strāvu. Mums nepieciešamās sastāvdaļas -
- Jebkura LED krāsa
- 100R rezistors
Nemaz nerunājot par to, ka, izņemot iepriekš minētos komponentus, mums ir vajadzīga uz mikrokontrolleru balstīta N76E003 izstrādes plāksne, kā arī Nu-Link programmētājs. Visu komponentu savienošanai ir nepieciešami arī paneļa un savienojuma vadi.
LED shēmas ar Nuvoton N76E003 shēma
Kā redzams zemāk redzamajā shēmā, testa LED ir pieejams izstrādes paneļa iekšpusē, un tas ir savienots ar 1.4 pieslēgvietu. 1.5 pieslēgvietai ir pievienota papildu gaismas diode. Rezistoru R3 izmanto, lai ierobežotu LED strāvu. Kreisajā malā tiek parādīts programmēšanas saskarnes savienojums.
Taimera piespraudes Nuvoton N76E003
Pin diagramma N76E003 var redzēt zemāk image-
Kā redzam, katrai tapai ir dažādas specifikācijas, un katru tapu var izmantot vairākiem mērķiem. Tomēr, piespraudot 1.5, ko izmanto kā LED izejas kontaktu, tas zaudēs PWM un citu funkcionalitāti. Bet tā nav problēma, jo šim projektam nav nepieciešama cita funkcionalitāte.
Iemesls 1.5 tapas kā izejas un 1.6 kā ievades izvēlei ir tāpēc, ka GND un VDD tapas ir vistuvāk pieejamas, lai tās būtu viegli savienojamas. Tomēr šajā mikrokontrollerī no 20 tapām 18 tapas var izmantot kā GPIO tapu, un jebkuras citas GPIO tapas var izmantot ar izvadi un ar ieeju saistītiem mērķiem, izņemot tapu 2.0, ko īpaši izmanto ievades atiestatīšanai, un to nevar izmantot kā izeja. Visas GPIO tapas var konfigurēt tālāk aprakstītajā režīmā.
Kā norādīts datu lapā, PxM1.n un PxM2.n ir divi reģistri, kurus izmanto, lai noteiktu I / O porta vadības darbību. Tā kā mēs izmantojam LED un mums ir nepieciešama tapa kā vispārējās izejas tapas, tapām mēs izmantosim kvazi divvirzienu režīmu.
Taimera reģistrs Nuvoton N76E003
Taimeris ir svarīga lieta jebkurai mikrokontrolleru vienībai. Mikrokontrollerim ir iebūvēts perifērijas taimeris. Nuvoton N76E003 komplektācijā ietilpst arī 16 bitu taimera perifērijas ierīces. Tomēr katrs taimeris tiek izmantots dažādiem mērķiem, un pirms jebkura taimera interfeisa izmantošanas ir svarīgi zināt par taimeri.
Laika veidi Nuvoton N76E003
Taimeris 0 un 1:
Šie divi taimeri taimeris0 un taimeris1 ir identiski 8051 taimeriem. Šos divus taimerus var izmantot kā vispārēju taimeri vai kā skaitītājus. Šie divi taimeri darbojas četros režīmos. In 0 režīmā, šie taimeri darbosies 13-bitu taimeri / skaitītāju režīmā. 1. režīmā šo divu taimeru izšķirtspējas bits būs 16 bitu. 2. režīmā taimeri tiek konfigurēti kā automātiskās atkārtotas ielādes režīms ar 8 bitu izšķirtspēju. 3. režīmā taimeris 1 tiek apturēts, un taimeri 0 var vienlaikus izmantot kā skaitītāju un taimeri.
No šiem četriem režīmiem vairumā gadījumu tiek izmantots 1. režīms. Šie divi taimeri var izmantot Fsys (sistēmas frekvence) fiksētā vai iepriekš mērogotā režīmā (Fys / 12). To var regulēt arī no ārēja pulksteņa avota.
2. taimeris:
Taimeris 2 ir arī 16 bitu taimeris, ko galvenokārt izmanto viļņu formas uztveršanai. Tas izmanto arī sistēmas pulksteni un to var izmantot dažādās lietojumprogrammās, dalot pulksteņa frekvenci, izmantojot 8 dažādas skalas. To var izmantot arī salīdzināšanas režīmā vai PWM ģenerēšanai.
Tādu pašu kā Timer 0 un Timer 1, taimeri 2 var izmantot automātiskās atkārtotas ielādes režīmā.
3. taimeris:
Taimeris 3 tiek izmantots arī kā 16 bitu taimeris, un to izmanto UART pārraides ātruma pulksteņa avotam. Tam ir arī automātiskās pārlādēšanas funkcija. Ir svarīgi izmantot šo taimeri tikai seriālajai saziņai (UART), ja lietojumprogrammai nepieciešama UART saziņa. Šādā gadījumā ieteicams neizmantot šo taimeri citiem mērķiem, ņemot vērā konfliktējošo procesu taimera iestatījumos.
Sargsuņa taimeris:
Sargsuņa taimeri var izmantot kā standarta 6 bitu taimeri, taču tas netiek izmantots šim nolūkam. Watchdog taimera kā vispārējas nozīmes taimera izmantošana ir piemērota lietojumiem ar mazu enerģijas patēriņu, kur mikrokontrolleris pārsvarā paliek gaidīšanas režīmā.
Sargsuņa taimeris, kā norāda nosaukums, vienmēr pārbauda, vai mikrokontrolleris darbojas pareizi. Pakārtota vai apturēta mikrokontrollera gadījumā WDT (Watchdog Timer) automātiski atiestata mikrokontrolleru, kas nodrošina, ka mikrokontrolleris darbojas nepārtrauktā koda plūsmā, neiesprūstot, neaizkaroties vai apstādinātās situācijās.
Pašmodināšanas taimeris:
Šī ir vēl viena taimera perifērija, kas kalpo īpašam laika noteikšanas procesam tāpat kā sargsuņa taimeris. Šis taimeris periodiski pamodina sistēmu, kad mikrokontrolleris darbojas mazjaudas režīmā.
Šo taimera perifēriju var izmantot iekšēji vai izmantojot ārējās perifērijas ierīces, lai pamodinātu mikrokontrolleru no miega režīma. Šajā projektā mēs izmantosim taimeri 1 un taimeri 2.
Nuvoton N76E003 mikrokontrolleru programmēšana taimeriem
Piespraudes iestatīšana kā izeja:
Vispirms sāksim ar izvades sadaļu. Mēs izmantojam divas gaismas diodes, viena ir borta gaismas diode ar nosaukumu Test un savienota ar portu P1.4 un ārējā gaismas diode, kas savienota ar tapu P1.5.
Tādēļ šīs divas tapas ir konfigurētas kā izejas tapa, lai savienotu šīs divas gaismas diodes, izmantojot tālāk norādītos koda fragmentus.
#define Test_LED P14 #define LED1 P15
Šīs divas tapas iestatīšanas funkcijā ir iestatītas kā gandrīz divvirzienu tapa.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; }
Taimera funkcijas iestatīšana:
Iestatīšanas funkcijā taimeris 2 ir jākonfigurē, lai iegūtu vēlamo izvadi. Šim nolūkam mēs iestatīsim T2MOD reģistru ar 1/128 pulksteņa dalīšanas koeficientu un izmantosim to automātiskās pārlādēšanas aizkaves režīmā. Šeit ir T2MOD reģistra pārskats-
T2MOD reģistra 4,5 un 6 bits iestatīja taimera 2 pulksteņa dalītāju un 7. bits iestatīja automātiskās pārlādēšanas režīmu. Tas tiek darīts, izmantojot zemāk esošo līniju -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Šīs divas rindas failā Function_define.h ir definētas kā
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Tagad šīs rindas nosaka taimera 2 ISR nepieciešamo laika vērtību.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100ms >> 8;
Kas ir sīkāk definēts failā Function_define.h
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
Tātad 16000000 ir 16 Mhz kristāla frekvence, kas nosaka 100 ms laika aizkavi.
Zem divām rindām tiks iztukšoti 2. taimera zemie un augstie baiti.
TL2 = 0; TH2 = 0;
Visbeidzot zemāk esošais kods ļaus taimeri 2 pārtraukt un palaist taimeri 2.
set_ET2; // Iespējot Timer2 pārtraukt set_EA; set_TR2; // 2. taimera palaišana
Pilnīgu iestatīšanas funkciju var redzēt zemāk esošajos kodos.
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; // Iespējot Timer2 pārtraukt set_EA; set_TR2; // 2. taimera palaišana }
Taimera 2 ISR funkcija:
Taimera 2 ISR funkciju var redzēt zemāk esošajā kodā.
void Timer2_ISR (void) pārtraukt 5 { clr_TF2; // Clear Timer2 Interrupt Flag LED1 = ~ LED1; // LED1 pārslēgs, savienots ar P1.5; }
Mirgojošs kods un izejas pārbaude taimera funkcionalitātei
Sastādītais kods (norādīts zemāk) atgrieza 0 brīdinājumus un 0 kļūdas, un es to mirgoju, izmantojot Keil noklusējuma mirgojošo metodi. Pēc mirgošanas gaismas diode mirgo noteiktā taimera aizkave, kā ieprogrammēts.
Apskatiet tālāk sniegto video, lai pilnībā parādītu, kā dēlis darbojas ar šo kodu. Ceru, ka jums patika apmācība un uzzinājāt kaut ko noderīgu, ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā zemāk. Varat arī izmantot mūsu forumus, lai izliktu citus tehniskus jautājumus.