- Hardvérové nastavenie a požiadavky
- Obvod rozhrania LED a tlačidlového tlačidla N76E003
- Schéma zapojenia N76E003
- Jednoduchý ovládací program GPIO pre N76E003
- Programovanie N76E003 a overenie výstupu
V našom predchádzajúcom tutoriáli sme ako úvod do príručky N76E003 použili základný program blikania LED, už sme sa naučili, ako nakonfigurovať Keil IDE a nastaviť prostredie pre programovanie jednotky mikrokontroléra nuvoton N76E003. Je čas posunúť sa o niečo ďalej a použiť základné rozhranie GPIO na ovládanie ďalšieho hardvéru. Ak máte záujem, môžete si pozrieť aj ďalšie výukové programy pre GPIO pre mikrokontroléry, ktoré sú uvedené nižšie -
- STM32 Nucleo64 s ovládaním CubeMx a TrueSTUDIO - LED
- STM8S s ovládaním Cosmic C GPIO
- Výukový program pre PIC s MPLABX LED
- MSP430 so softvérom Code Composer Studio - jednoduché ovládanie LED
Keďže v našom predchádzajúcom tutoriáli sme na blikanie použili iba LED diódu, použili sme ako výstup IO pin. V tomto tutoriále sa dozvieme, ako používať ďalší IO pin ako vstup a ovládať ďalšiu LED. 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 je potrebné ako vstup použiť prepínač, prvou vecou, ktorú požadujeme, je tlačidlo. Týmto tlačidlom tiež požadujeme ovládanie ďalšej LED. Okrem týchto dvoch požadujeme tiež rezistor na obmedzenie prúdu LED a ďalší rezistor na účely vysunutia cez tlačidlo. Toto bude ďalej demonštrované v schematickej časti. Komponenty, ktoré požadujeme -
- Tlačidlo (akýkoľvek druh okamžitého spínača, konkrétne - hmatový spínač)
- Akákoľvek farba LED
- 4,7 000 rezistor na účely sťahovania
- 100R odpor
Nehovoriac o tom, že okrem vyššie uvedených komponentov potrebujeme vývojovú dosku založenú na mikrokontroléri N76E003, ako aj programátor Nu-Link. Ďalej sú potrebné prepojovacie dosky a zapojovacie vodiče na pripojenie všetkých komponentov, ako je to znázornené nižšie.
Obvod rozhrania LED a tlačidlového tlačidla N76E003
Ako vidíme na nasledujúcej schéme, testovacia LED, ktorá je vo vnútri vývojovej dosky, je pripojená k portu 1.4 a ďalšia LED je pripojená k portu 1.5. Rezistor R3 sa používa na obmedzenie prúdu LED.
V kolíku 1.6 je pripojené tlačidlo s názvom SW. Pri každom stlačení tlačidla sa špendlík zvýši. V opačnom prípade sa zníži na nízku hodnotu pomocou 4,7 000 sťahovacieho odporu R1. Ak ste v tomto koncepte nováčikom, môžete sa dozvedieť viac informácií o pull-up a pull-down rezistoroch.
Špendlík je tiež špendlík súvisiaci s programom, ku ktorému má prístup programátor. Používa sa na zasielanie údajov programu. Uvidíme však dôvod výberu týchto pinov a získame spravodlivé informácie o mapovaní pinov N76E003.
Schéma zapojenia N76E003
Schéma pinov N76E003 je vidieť na obrázku nižšie -
Ako vidíme, každý pin má viac funkcií a dá sa použiť na rôzne účely. Zoberme si príklad. Pin 1.7 možno použiť ako prerušenie alebo analógový vstup alebo ako univerzálna vstupno-výstupná operácia. Pokiaľ sa teda použije akýkoľvek pin ako I / O pin, príslušná funkčnosť nebude k dispozícii.
Z tohto dôvodu pin 1.5, ktorý sa používa ako výstupný pin 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 zvolenia kolíka 1.5 ako výstupu a kolíka 1.6 ako vstupu z dôvodu najbližšej dostupnosti pinov GND a VDD pre ľahké pripojenie.
V tomto mikrokontroléri z 20 pinov však možno 18 pinov použiť ako pin GPIO. Pin 2.0 sa používa špeciálne pre vstup Reset a nemožno ho použiť ako výstup. Okrem tohto kolíka je možné všetky kolíky 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. Teraz je písanie a čítanie portu GPIO úplne iná vec. Pretože zápis do riadiaceho registra portu mení stav blokovania portu, zatiaľ čo čítanie portu získa stav logického stavu. Ale na čítanie portu musí byť nastavený do vstupného režimu.
Jednoduchý ovládací program GPIO pre N76E003
Kompletný program použitý v tomto návode nájdete v spodnej časti tejto stránky, vysvetlenie kódu je nasledujúce.
Nastavovanie špendlíka ako vstupu
Najprv začnime so vstupom. Ako sme už diskutovali, na čítanie stavu portu je potrebné ho nastaviť ako vstup. Preto, pretože sme vybrali P1.6 ako náš vstupný prepínací pin, označili sme ho cez nasledujúci riadok úryvku kódu.
# definovať SW P16
Rovnaký pin je potrebné nastaviť ako vstup. Pri funkcii nastavenia je teda pin nastavený ako vstup pomocou spodného riadku.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Tento riadok P16_Input_Mode; je definovaný v hlavičkovom súbore Function_define.h v „knižnici BSP include“, ktorá nastavuje pinový bit ako P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . SET_BIT6 je tiež definovaná v rovnakom súbore hlavičky as-
#define SET_BIT6 0x40
Nastavenie pinov ako výstupu
Rovnako ako vstupný pin, aj výstupný pin, ktorý používa palubná testovacia LED a externá LED1, je tiež definovaný v prvej časti kódu s príslušnými PIN.
#define Test_LED P14 #define LED1 P15
Tieto piny sa nastavujú ako výstup vo funkcii nastavenia pomocou nasledujúcich riadkov.
void setup (void) { P14_Quasi_Mode; // Výstup P15_Quasi_Mode; // Výstup P16_Input_Mode; }
Tieto riadky sú definované aj v hlavičkovom súbore Function_define.h, kde nastavuje pinový bit ako P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . SET_BIT6 je tiež definovaná v rovnakom súbore hlavičky as-
#define SET_BIT4 0x10
Slučka Infinite While
Hardvér, ak je pripojený k napájaciemu zdroju a funguje perfektne a má nepretržite poskytovať výstup, sa aplikácia nikdy nezastaví. Robí to isté nekonečne dlho. Prichádza funkcia nekonečnej while slučky. Aplikácia vo vnútri while funguje nekonečne dlho.
while (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
Vyššie uvedená slučka while bliká led podľa hodnoty sw_delay a tiež sa kontroluje stav SW. Ak je stlačený spínač, P1.6 bude vysoký, a teda po jeho stlačení bude stav čítania 1. V tejto situácii bude po celú dobu stlačený spínač a port P1.6 zostane vysoký, LED1 bude svietiť.
Programovanie N76E003 a overenie výstupu
V našom úvode tutoriálu N76E003 sme sa naučili programovať už N76E003, takže pri programovaní našej dosky budeme opakovať rovnaké kroky. Kód sa úspešne skompiloval a vrátil 0 varovaní a 0 chýb a blikal pomocou predvolenej metódy blikania pomocou Keila.
Ako vidíte na obrázku vyššie, naša externá LED sa rozsvieti, keď stlačím tlačidlo. Kompletné fungovanie projektu nájdete vo videu, na ktoré odkazujete nižšie. Dúfam, že sa vám návod páčil a dozvedeli ste sa niečo užitočné, ak máte nejaké otázky, nechajte ich v sekcii komentárov nižšie. Môžete tiež použiť naše fóra na položenie ďalších technických otázok.