- Laitteiston asennus ja vaatimus
- Piirikaavio LED-liitännästä Nuvoton N76E003: n kanssa
- Ajastintapit Nuvoton N76E003 -laitteessa
- Ajastinrekisterit Nuvoton N76E003: ssa
- Nuvoton N76E003 -tyyppiset ajat
- Nuvoton N76E003 -mikrokontrollerin ohjelmointi ajastimille
- Koodin vilkkuminen ja lähtöjen toiminnan tarkistaminen
Aikaisemmissa Nuvoton-mikrokontrollerioppaissamme käytimme LED-vilkkumisen perusohjelmaa aloitusoppaana ja myös GPIO-liitäntää tulona kosketuskytkimen liittämiseen. Tämän opetusohjelman avulla olemme täysin tietoisia Keil-projektin määrittämisestä ja ympäristön luomisesta N76E003 Nuvoton -mikrokontrollerin ohjelmointiin. On aika käyttää mikrokontrolleriyksikön sisäistä oheislaitetta ja siirtyä hieman pidemmälle käyttämällä N76E003: n sisäänrakennettua ajastinta.
Edellisessä opetusohjelmassa käytimme LED-merkkivalon vilkkumiseen vain ohjelmistoviivettä, joten tässä opetusohjelmassa opitaan käyttämään ajastimen viivetoimintoa sekä ajastimen ISR: ää (keskeytyspalvelurutiini) ja vilkkumaan kahta yksittäistä LEDiä. Voit myös tarkistaa Arduino Timer Tutorial ja PIC Timer -opetusohjelman, kuinka voit käyttää ajastimia muiden mikrokontrollerien kanssa. Arvioimatta, millaista laitteistoasetusta tarvitsemme tuhlaamatta paljon aikaa.
Laitteiston asennus ja vaatimus
Koska tämän projektin vaatimuksena on oppia ajastin ISR ja ajastimen viive-toiminto, käytämme kahta LEDiä, joista yksi vilkkuu käyttämällä ajastimen viivettä while-silmukassa ja toinen vilkkuu ISR-toiminnon sisällä.
Koska N76E003-kehityskortissa on käytettävissä LED, tämä projekti vaatii yhden ylimääräisen LEDin ja virtaa rajoittavan vastuksen LED-virran rajoittamiseksi. Tarvittavat komponentit -
- Mikä tahansa LEDin väri
- 100R vastus
Puhumattakaan, lukuun ottamatta yllä olevia komponentteja, tarvitsemme N76E003-mikrokontrolleripohjaisen kehityskortin sekä Nu-Link-ohjelmoijan. Lisäksi kaikkien komponenttien liittämiseen tarvitaan leipälauta- ja kytkentäjohtoja.
Piirikaavio LED-liitännästä Nuvoton N76E003: n kanssa
Kuten alla olevasta kaaviosta voidaan nähdä, testi-LED on käytettävissä kehityskortin sisällä ja se on kytketty porttiin 1.4. Porttiin 1.5 on kytketty ylimääräinen LED. Vastusta R3 käytetään rajoittamaan LED-virtaa. Vasemmassa reunassa näkyy ohjelmointirajapinnan yhteys.
Ajastintapit Nuvoton N76E003 -laitteessa
Tappi kaavio N76E003 voidaan nähdä alla kuva-
Kuten näemme, jokaisella tapilla on erilaiset tekniset tiedot ja kutakin tapia voidaan käyttää useisiin tarkoituksiin. Tappi 1.5, jota käytetään LED-ulostulotapana, menettää kuitenkin PWM: n ja muut toiminnot. Mutta se ei ole ongelma, koska toista toimintoa ei tarvita tälle projektille.
Syynä nastan 1.5 valitsemiseen lähdöksi ja nastan 1,6 tuloksi johtuu GND- ja VDD-nastojen lähimmästä saatavuudesta helpon yhteyden muodostamiseksi. Tässä mikrokontrollerissa 20 nastasta 18-nastaa voidaan kuitenkin käyttää GPIO-nastana ja muita GPIO-nastoja voidaan käyttää lähtöön ja tuloon liittyviin tarkoituksiin, paitsi nasta 2.0, jota käytetään nimenomaan Nollaa-tuloon eikä sitä voida käyttää ulostulo. Kaikki GPIO-nastat voidaan määrittää alla kuvatussa tilassa.
Datalehden mukaan PxM1.n ja PxM2.n ovat kaksi rekisteriä, joita käytetään määrittämään I / O-portin ohjaustoiminta. Koska käytämme LED-merkkivaloa ja tarvitsemme nastan yleisinä lähtönastoina, käytämme nastoille lähes kaksisuuntaista tilaa.
Ajastinrekisterit Nuvoton N76E003: ssa
Ajastin on tärkeä asia kaikille mikro-ohjainyksiköille. Mikrokontrollerissa on sisäänrakennettu ajastinoheislaite. Nuvoton N76E003: ssa on myös 16-bittiset ajastinoheislaitteet. Kutakin ajastinta käytetään kuitenkin eri tarkoituksiin, ja ennen ajastimen käyttöliittymän käyttöä on tärkeää tietää ajastimesta.
Nuvoton N76E003 -tyyppiset ajat
Ajastimet 0 ja 1:
Nämä kaksi ajastinta ajastin0 ja ajastin1 ovat identtisiä 8051 ajastinten kanssa. Näitä kahta ajastinta voidaan käyttää yleisenä ajastimena tai laskureina. Nämä kaksi ajastinta toimivat neljässä tilassa. In tilassa 0, ne ajastimet toimivat 13-bittinen ajastin / laskuri tilassa. In tila 1, tarkkuus hieman nuo kaksi ajastinta on 16-bittinen. In tilassa 2, ajastimet määritetty automaattinen reload tilassa 8-bitin resoluutiolla. In Tila 3, ajastin 1 on pysähtynyt, ja ajastin 0 voidaan käyttää laskuri ja ajastin samanaikaisesti.
Näistä neljästä tilasta moodia 1 käytetään useimmissa tapauksissa. Nämä kaksi ajastinta voivat käyttää Fsys-järjestelmää (järjestelmän taajuus) kiinteässä tai esiasteikoitetussa tilassa (Fys / 12). Se voidaan kellottaa myös ulkoisesta kellolähteestä.
Ajastin 2:
Ajastin 2 on myös 16-bittinen ajastin, jota käytetään pääasiassa aaltomuodon sieppaamiseen. Se käyttää myös järjestelmän kelloa ja sitä voidaan käyttää eri sovelluksissa jakamalla kellotaajuus kahdeksalla eri asteikolla. Sitä voidaan käyttää myös vertailutilassa tai PWM: n luomiseen.
Ajastinta 2 voidaan käyttää automaattisen latauksen tilassa samalla tavalla kuin ajastinta 0 ja ajastinta 1.
Ajastin 3:
Ajastinta 3 käytetään myös 16-bittisenä ajastimena ja sitä käytetään UART-tiedonsiirtonopeuden kellolähteenä. Siinä on myös automaattinen latausominaisuus. On tärkeää käyttää tätä ajastinta vain sarjaliikenteeseen (UART), jos sovellus vaatii UART-tiedonsiirtoa. On suositeltavaa olla käyttämättä tätä ajastinta muihin tarkoituksiin tällöin ajastimen asetusten ristiriitaisen prosessin takia.
Valvontakoiran ajastin:
Watchdog Timeria voidaan käyttää vakiona 6-bittisenä ajastimena, mutta sitä ei käytetä tähän tarkoitukseen. Watchdog-ajastimen käyttöä yleiskäyttöisenä ajastimena voidaan käyttää pienen virrankulutuksen sovelluksissa, joissa mikro-ohjain pysyy pääosin lepotilassa.
Watchdog Timer, kuten nimestä voi päätellä, tarkistaa aina, toimiiko mikro-ohjain oikein. Ripustetun tai pysäytetyn mikrokontrollerin tapauksessa WDT (Watchdog Timer) nollaa mikrokontrollerin automaattisesti, mikä varmistaa, että mikro-ohjain toimii jatkuvana koodivirrana juuttumatta, jumittumatta tai pysähtyneissä tilanteissa.
Itse herätysajastin:
Tämä on toinen ajastimen oheislaite, joka palvelee omistettua ajoitusprosessia samalla tavalla kuin vahtikoira-ajastin. Tämä ajastin herättää järjestelmän säännöllisesti, kun mikro-ohjain on käynnissä pienitehoisessa tilassa.
Tätä ajastimen oheislaitetta voidaan käyttää sisäisesti tai ulkoisten oheislaitteiden avulla herättämään mikro-ohjain lepotilasta. Tässä projektissa käytämme ajastinta 1 ja ajastinta 2.
Nuvoton N76E003 -mikrokontrollerin ohjelmointi ajastimille
Nastojen asettaminen ulostuloksi:
Aloitetaan ensin lähtöosasta. Käytämme kahta LED-valoa, joista toinen on testin niminen LED, kytketty porttiin P1.4 ja ulkoinen LED, joka on kytketty tapiin P1.5.
Siksi nämä kaksi nastaa on konfiguroitu lähtötapiksi yhdistämään nämä kaksi LEDiä käyttämällä alla olevia koodinpätkiä.
#define Test_LED P14 #define LED1 P15
Nämä kaksi nastaa on asetettu lähes kaksisuuntaiseksi nastaksi asetustoiminnossa.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; }
Ajastintoiminnon asettaminen:
Asennustoiminnossa ajastin 2 on konfiguroitava halutun ulostulon saamiseksi. Tätä varten asetamme T2MOD-rekisterin 1/128-kellonjakokertoimella ja käytämme sitä automaattisen latauksen viivetilassa. Tässä on yleiskatsaus T2MOD-rekisteristä
T2MOD-rekisterin 4,5 ja 6-bitti asettavat ajastimen 2 kellonjakajan ja seitsemäs bitti automaattisen lataustilan. Tämä tehdään käyttämällä alla olevaa riviä -
TIMER2_DIV_128; TIMER2_Auto_Reload_Delay_Mode;
Nämä kaksi riviä määritellään Function_define.h- tiedostossa muodossa
#define TIMER2_DIV_128 T2MOD- = 0x50; T2MOD & = 0xDF #define TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0; T2MOD- = SET_BIT7; T2MOD- = SET_BIT3
Nämä rivit asettavat nyt ajastimen 2 ISR: lle vaaditun ajoitusarvon.
RCMP2L = TIMER_DIV128_VALUE_100ms; RCMP2H = TIMER_DIV128_VALUE_100 ms >> 8;
Mikä on määritelty tarkemmin Function_define.h-tiedostossa
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 ms
Joten 16000000 on 16 Mhz: n kidetaajuus, joka asettaa 100 ms: n viiveen.
Kahden rivin alapuolella Timer 2 Low ja High -tavu tyhjennetään.
TL2 = 0; TH2 = 0;
Lopuksi alla olevan koodin avulla ajastin 2 voidaan keskeyttää ja käynnistää ajastin 2.
set_ET2; // Ota ajastin2 keskeytä set_EA; set_TR2; // Ajastin2-ajo
Täydellinen asetustoiminto näkyy alla olevissa koodeissa-
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_100 ms >> 8; TL2 = 0; TH2 = 0; set_ET2; // Ota ajastin2 keskeytä set_EA; set_TR2; // Ajastin2-ajo }
Ajastin 2 ISR-toiminto:
Ajastin 2 ISR -toiminto näkyy alla olevassa koodissa.
void Timer2_ISR (mitätön) keskeytys 5 { clr_TF2; // Tyhjennä ajastin2-keskeytyslamppu LED1 = ~ LED1; // LED1-kytkin, kytketty kohtaan P1.5; }
Koodin vilkkuminen ja lähtöjen toiminnan tarkistaminen
Koodattu koodi (joka on annettu alla) palautti 0 varoituksen ja 0 virhettä, ja välähdin sitä käyttäen Keilin oletusarvoista vilkkumenetelmää. Vilkkumisen jälkeen LED-merkkivalot vilkkuvat määritetyllä ajastinviiveellä ohjelmoidun mukaisesti.
Katso alla olevasta videosta täydellinen esitys siitä, miten taulu toimii tällä koodilla. Toivottavasti pidit opetusohjelmasta ja opit jotain hyödyllistä, jos sinulla on kysyttävää, jätä ne alla olevaan kommenttiosioon. Voit käyttää foorumeitamme myös muiden teknisten kysymysten lähettämiseen.