- Pag-setup at Kinakailangan sa Hardware
- N76E003 LED at Push Button Interface Circuit
- N76E003 Pin-Out Diagram
- Simpleng Programa sa Pagkontrol ng GPIO para sa N76E003
- Programming N76E003 at Pag-verify ng Output
Sa aming nakaraang tutorial, ginamit namin ang isang pangunahing LED blinking program bilang pagsisimula sa gabay ng N76E003, natutunan na namin kung paano i-configure ang Keil IDE at i-set up ang kapaligiran para sa pag-program ng nuvoton microcontroller unit na N76E003. Ito ang oras upang ilipat ang kaunti pa at gamitin ang pangunahing interface ng GPIO para sa pagkontrol ng karagdagang hardware. Kung interesado ka maaari mo ring suriin ang iba pang mga tutorial ng microcontroller GPIO na nakalista sa ibaba-
- STM32 Nucleo64 na may CubeMx at TrueSTUDIO - LED control
- STM8S na may Cosmic C GPIO Control
- Ang PIC na may MPLABX LED Blink Tutorial
- MSP430 kasama ang Code Composer Studio - Simpleng LED Control
Dahil sa aming nakaraang tutorial, gumamit lamang kami ng isang LED upang kumurap sa pamamagitan ng paggamit ng isang IO pin bilang isang output. Sa tutorial na ito, matututunan namin kung paano gumamit ng ibang IO pin bilang isang input at kontrolin ang isang karagdagang LED. Nang walang pag-aaksaya ng oras, suriin natin kung anong uri ng pag-setup ng hardware ang kailangan natin.
Pag-setup at Kinakailangan sa Hardware
Bilang isang switch ay kailangang magamit bilang input, ang unang bagay na kailangan namin ay isang pindutan ng push. Kailangan din namin ng isang karagdagang LED upang makontrol ng push button na iyon. Maliban sa dalawang ito, nangangailangan din kami ng isang risistor upang limitahan ang kasalukuyang LED at isang karagdagang risistor para sa mga hangarin na pull-down sa buong pindutan. Ipapakita pa ito sa seksyon ng eskematiko. Ang mga sangkap na kailangan namin -
- Isang push-button (anumang uri ng partikular na pansamantalang switch - Tactile switch)
- Anumang kulay ng LED
- 4.7k risistor para sa mga hangarin na pull-down
- 100R risistor
Hindi banggitin, bukod sa mga sangkap sa itaas, kailangan namin ng N76E003 microcontroller -based development board pati na rin ang Nu-Link Programmer. Bilang karagdagan, kinakailangan din ang mga breadboard at hookup wire para sa pagkonekta sa lahat ng mga sangkap tulad ng ipinakita sa ibaba.
N76E003 LED at Push Button Interface Circuit
Tulad ng nakikita natin sa iskemang nasa ibaba, ang Test LED na nasa loob ng board ng pag-unlad ay konektado sa port 1.4 at isang karagdagang LED ay konektado sa port 1.5. Ginagamit ang risistor R3 upang limitahan ang kasalukuyang LED.
Sa pin 1.6, isang push-button na nagngangalang SW ay konektado. Kailan man pinindot ang pindutan, magiging mataas ang pin. Kung hindi man, magiging mababa ito sa pamamagitan ng 4.7K pull-down risistor R1. Maaari kang matuto nang higit pa tungkol sa mga pull-up at pull-down resistor kung bago ka sa konseptong ito.
Ang pin ay isang pin na kaugnay din ng programa na na-access ng programmer. Ginagamit ito upang magpadala ng data ng programa. Gayunpaman, makikita namin ang dahilan sa likod ng pagpili ng mga pin na iyon pati na rin makakuha ng patas na impormasyon tungkol sa pagmamapa ng pin ng N76E003.
N76E003 Pin-Out Diagram
Ang diagram ng pin ng N76E003 ay makikita sa larawan sa ibaba-
Tulad ng nakikita natin, ang bawat pin ay may maraming mga pag-andar at maaaring magamit para sa iba't ibang mga layunin. Kumuha tayo ng isang halimbawa. Ang pin 1.7 ay maaaring magamit bilang isang nakakagambala, o analog input o bilang isang pangkalahatang-layunin na input-output na operasyon. Kaya, kung ang anumang pin ay ginamit bilang I / O pin, kung gayon ang kani-kanilang pagpapaandar ay hindi magagamit.
Dahil dito, ang pin 1.5 na ginagamit bilang isang LED output pin, mawawala ang PWM at iba pang pagpapaandar. Ngunit iyon ay hindi isang problema dahil ang isa pang pagpapaandar ay hindi kinakailangan para sa proyektong ito. Ang dahilan sa likod ng pagpili ng pin 1.5 bilang output at pin 1.6 bilang input, dahil sa pinakamalapit na pagkakaroon ng mga pin ng GND at VDD para sa madaling koneksyon.
Gayunpaman, sa microcontroller na ito sa labas ng 20 mga pin, 18 mga pin ay maaaring magamit bilang isang GPIO pin. Ang pin 2.0 ay dedikadong ginagamit para sa I-reset ang input at hindi ito maaaring magamit bilang output. Maliban sa pin na ito, ang lahat ng mga pin ay maaaring mai-configure sa mode na inilarawan sa ibaba.
Tulad ng datasheet, PxM1.n, at PxM2.n ay dalawang rehistro na ginagamit upang matukoy ang kontrol ng operasyon ng I / O port. Ngayon, sa pagsulat at pagbabasa ng isang port ng GPIO ay isang ganap na naiibang bagay. Dahil ang pagsusulat sa isang rehistro ng kontrol sa port ay binabago ang estado ng pagdidikit ng port, samantalang ang pagbabasa sa port ay nakakakuha ng katayuan ng estado ng lohika. Ngunit para sa pagbabasa ng isang port, dapat itong itakda sa isang mode ng pag-input.
Simpleng Programa sa Pagkontrol ng GPIO para sa N76E003
Ang kumpletong programa na ginamit sa tutorial na ito ay matatagpuan sa ilalim ng pahinang ito, ang paliwanag ng code ay ang mga sumusunod.
Itinatakda ang pin bilang input
Magsimula muna tayo sa input. Tulad ng tinalakay kanina, upang mabasa ang katayuan ng isang port, kailangan itong itakda bilang input. Samakatuwid, dahil napili namin ang P1.6 bilang aming input switch pin, na-denote namin ito sa pamamagitan ng linya sa ibaba ng code snippet.
# tukuyin ang SW P16
Ang parehong pin na ito ay kailangang itakda bilang input. Kaya, sa pag-andar ng pag-setup, ang pin ay itinakda bilang input gamit ang linya sa ibaba.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Ang linyang ito P16_Input_Mode; ay tinukoy sa file ng header ng Function_define.h sa "BSP isama ang library" na nagtatakda ng pin bit bilang P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Ang SET_BIT6 ay tinukoy din sa parehong header file bilang-
# tukuyin ang SET_BIT6 0x40
Ang pagtatakda ng mga pin bilang output
Kapareho ng input pin, ang output pin na ginagamit ng onboard na Test LED at ang panlabas na LED1 ay tinukoy din sa unang seksyon ng code na may kani-kanilang mga PIN.
#define Test_LED P14 # tukuyin ang LED1 P15
Ang mga pin na iyon ay itinakda bilang isang output sa pag-andar ng pag-setup gamit ang mga linya sa ibaba.
void setup (void) { P14_Quasi_Mode; // Output P15_Quasi_Mode; // Output P16_Input_Mode; }
Ang mga linyang ito ay tinukoy din sa Function_define.h header file kung saan itinatakda nito ang pin bit bilang P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Ang SET_BIT6 ay tinukoy din sa parehong header file bilang-
# tukuyin ang SET_BIT4 0x10
Walang-hanggan Habang loop
Ang isang Hardware, kung nakakonekta sa lakas at gumagana nang perpekto na dapat na patuloy na magbigay ng output, hindi tumitigil ang application. Ginagawa nito ang parehong bagay sa walang katapusang mga oras. Narito ang pag-andar ng isang walang katapusan habang loop. Ang application sa loob ng habang loop ay nagpapatakbo ng walang hanggan.
habang (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); kung (SW == 1) {LED1 = 0; } iba pa {LED1 = 1; }}}
Sa itaas habang pinapikit ng loop ang humantong ayon sa halaga ng sw_delay at sinusuri din ang katayuan ng SW. Kung ang switch ay pinindot, ang P1.6 ay magiging mataas, at sa gayon kapag ito ay pinindot, ang read status ay 1. Sa sitwasyong ito, sa oras, ang switch ay pinindot at ang port na P1.6 ay mananatiling mataas, ang Ang LED1 ay mamula.
Programming N76E003 at Pag-verify ng Output
Sa aming pagsisimula sa tutorial na N76E003, natutunan namin kung paano i-program ang N76E003 na, kaya uulitin lamang namin ang parehong mga hakbang dito upang mai-program ang aming board. Matagumpay na naipon ang code at ibinalik ang 0 babala at 0 Mga Error at na-flash gamit ang default na pamamaraang pag-flashing ng Keil.
Tulad ng nakikita mo sa imahe sa itaas, ang aming panlabas na LED ay nakabukas kapag pinindot ko ang pindutan ng push. Ang kumpletong pagtatrabaho ng proyekto ay matatagpuan sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa tutorial at natutunan ang isang bagay na kapaki-pakinabang kung mayroon kang anumang mga katanungan, iwanan ang mga ito sa seksyon ng komento sa ibaba. Maaari mo ring gamitin ang aming mga forum upang magtanong ng iba pang mga teknikal na katanungan.