- Aparatinės įrangos sąranka ir reikalavimas
- N76E003 LED ir mygtuko sąsajos grandinė
- N76E003 prisegimo schema
- Paprasta N76E003 GPIO valdymo programa
- N76E003 programavimas ir išvesties tikrinimas
Ankstesniame mokyme mes naudojome pagrindinę šviesos diodų mirksėjimo programą kaip pradėdami naudoti „N76E003“ vadovą, mes jau sužinojome, kaip sukonfigūruoti „Keil IDE“ ir nustatyti aplinką programuoti nuvoton mikrovaldiklio bloką N76E003. Atėjo laikas šiek tiek judėti toliau ir naudoti pagrindinę GPIO sąsają papildomai aparatinei įrangai valdyti. Jei jus domina, taip pat galite patikrinti kitas toliau išvardytas mikrovaldiklio GPIO pamokas:
- STM32 „Nucleo64“ su „CubeMx“ ir „TrueSTUDIO“ - LED valdymu
- STM8S su „Cosmic C GPIO Control“
- PIC su MPLABX LED mirksi pamoka
- MSP430 su „Code Composer Studio“ - paprastas LED valdymas
Kadangi ankstesnėje mūsų pamokoje mirksėjome tik šviesos diodu, naudodami IO kaištį kaip išvestį. Šioje pamokoje sužinosime, kaip naudoti kitą IO kaištį kaip įvestį ir valdyti papildomą šviesos diodą. Negaišdami daug laiko, įvertinkime, kokios aparatinės įrangos sąrankos mums reikia.
Aparatinės įrangos sąranka ir reikalavimas
Kadangi jungiklis turi būti naudojamas kaip įvestis, pirmas dalykas, kurio mums reikia, yra mygtukas. Mes taip pat reikalaujame, kad tuo mygtuku būtų valdomas papildomas šviesos diodas. Išskyrus šiuos du, mes taip pat reikalaujame, kad rezistorius apribotų šviesos diodų srovę, ir papildomas rezistorius, kad būtų galima ištraukti mygtuką per mygtuką. Tai bus toliau pademonstruota scheminiame skyriuje. Mums reikalingi komponentai -
- Mygtukas (bet koks momentinis jungiklis, specialiai - lytėjimo jungiklis)
- Bet kokia šviesos diodo spalva
- 4.7k rezistorius ištraukimo tikslams
- 100R rezistorius
Maža to, išskyrus aukščiau nurodytus komponentus, mums reikia N76E003 mikrovaldikliais paremtos kūrimo plokštės, taip pat „ Nu-Link Programmer“. Be to, norint prijungti visus komponentus, kaip parodyta žemiau, taip pat reikalingi duonos lentos ir prijungimo laidai.
N76E003 LED ir mygtuko sąsajos grandinė
Kaip matome toliau pateiktoje schemoje, bandymo šviesos diodas, esantis kūrimo plokštės viduje, yra prijungtas prie 1.4 prievado, o papildomas šviesos diodas yra prijungtas prie 1.5 prievado. Rezistorius R3 naudojamas riboti šviesos diodų srovę.
1.6 kištuke yra prijungtas mygtukas, pavadintas SW. Kai tik paspausite mygtuką, kaištis taps aukštas. Priešingu atveju jis bus žemas dėl 4,7K ištraukiamojo rezistoriaus R1. Galite sužinoti daugiau apie pritraukiamuosius ir nuleidžiamuosius rezistorius, jei esate naujokas šioje koncepcijoje.
Kaištis taip pat yra su programa susijęs kaištis, prie kurio prieina programuotojas. Jis naudojamas programos duomenims siųsti. Tačiau pamatysime šių kaiščių pasirinkimo priežastis ir gausime teisingos informacijos apie N76E003 kaiščių atvaizdavimą.
N76E003 prisegimo schema
Kaištis diagrama N76E003 galima matyti žemiau image-
Kaip matome, kiekvienas kaištis turi kelias funkcijas ir gali būti naudojamas skirtingiems tikslams. Paimkime pavyzdį. Kaištis 1.7 gali būti naudojamas kaip pertraukimas, analoginis įėjimas arba kaip bendros paskirties įvesties-išvesties operacija. Taigi, jei kuris nors kaištis naudojamas kaip įvesties / išvesties kaiščiai, atitinkama funkcija nebus pasiekiama.
Dėl šios priežasties 1.5 kaištis, naudojamas kaip LED išvesties kaištis, jis praras PWM ir kitas funkcijas. Bet tai nėra problema, nes šiam projektui nereikia kito funkcionalumo. Priežastis, kodėl 1.5 kaištį pasirinkote kaip išvestį ir 1.6 kaištį kaip įvestį, nes GND ir VDD kaiščiai yra artimiausi, kad būtų lengva juos prijungti.
Tačiau šiame mikrovaldiklyje iš 20 kontaktų 18 kontaktų gali būti naudojami kaip GPIO kaištis. 2.0 kaištis yra skirtas įvesties atstatymui ir jo negalima naudoti kaip išvesties. Išskyrus šį kaištį, visus kaiščius galima sukonfigūruoti žemiau aprašytu režimu.
Kaip nurodyta duomenų lape, PxM1.n ir PxM2.n yra du registrai, naudojami nustatant įvesties / išvesties prievado valdymo operaciją. Dabar ateiti rašyti ir skaityti GPIO prievadą yra visiškai kitoks dalykas. Kadangi rašymas į uosto valdymo registrą keičia uosto fiksavimo būseną, o skaitant uostą gaunama loginės būsenos būsena. Bet norint skaityti prievadą, jis turi būti nustatytas įvesties režimu.
Paprasta N76E003 GPIO valdymo programa
Visą šioje pamokoje naudojamą programą galite rasti šio puslapio apačioje, kodas paaiškinamas taip.
Kaiščio nustatymas kaip įvesties
Pirmiausia pradėkime nuo įvesties. Kaip aptarta prieš tai, norint perskaityti uosto būseną, jį reikia nustatyti kaip įvestį. Todėl, kai mes pasirinkome P1.6 kaip įvesties jungiklio kaištį, mes jį pažymėjome per žemesnę kodo fragmento eilutę.
#define SW P16
Tą patį kaištį reikia nustatyti kaip įvestį. Taigi sąrankos funkcijoje kaištis nustatomas kaip įvestis naudojant žemiau esančią eilutę.
negaliojanti sąranka (negaliojanti) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Ši eilutė P16_Input_Mode; yra apibrėžtas antraštėje „ Function_define.h“ , esančiame „BSP include library“, kuris nustato PIN kodą kaip P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . SET_BIT6 taip pat apibrėžta tos pačios antraštės faile ir darant
#define SET_BIT6 0x40
Kaiščių nustatymas kaip išvesties
Kaip ir įvesties kaištis, išvesties kaištis, kurį naudoja vidinis bandymo šviesos diodas ir išorinis LED1, taip pat yra apibrėžtas pirmame kodo skyriuje su atitinkamais PIN.
#define Test_LED P14 #define LED1 P15
Šie kaiščiai nustatomi kaip išvestis sąrankos funkcijoje, naudojant toliau pateiktas eilutes.
negaliojanti sąranka (negaliojanti) { P14_Quasi_Mode; // Išvestis P15_Quasi_Mode; // Išvestis P16_Input_Mode; }
Šios eilutės taip pat apibrėžtos antraštės faile „ Function_define.h“, kur jis nustato kaiščio bitą kaip P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . SET_BIT6 taip pat apibrėžta tos pačios antraštės faile ir darant
#define SET_BIT4 0x10
Begalinė, kol kilpa
Aparatinė įranga, jei ji yra prijungta prie maitinimo šaltinio ir veikia puikiai ir turėtų nuolat teikti išvestį, programa niekada nesustoja. Tai daro tą patį begalę kartų. Čia pateikiama begalinio ciklo funkcija. Taikymo ciklo viduje programa veikia be galo.
o (1) { Test_LED = 0; sw_delay (150); Testas_LED = 1; sw_delay (150); jei (SW == 1) {LED1 = 0; } dar {LED1 = 1; }}}
Pirmiau, o ciklas mirksi šviesos diodu pagal sw_delay reikšmę ir taip pat patikrina SW būseną. Paspaudus jungiklį, P1.6 bus aukštas, taigi, jį paspaudus, skaitymo būsena bus 1. Šioje situacijoje tam tikrą laiką jungiklis paspaudžiamas ir jungtis P1.6 išlieka aukšta, Švies LED1.
N76E003 programavimas ir išvesties tikrinimas
Mūsų pradedate su N76E003 pamoka, mes sužinojome, kaip užprogramuoti N76E003 jau, todėl mes tiesiog pakartokite tuos pačius veiksmus, čia užprogramuoti mūsų lenta. Kodas sėkmingai sukompiliuotas ir pateikė 0 įspėjimo bei 0 klaidų ir mirksėjo naudojant numatytąjį „Keil“ mirksėjimo metodą.
Kaip matote aukščiau esančiame paveikslėlyje, mūsų išorinis šviesos diodas įsijungia, kai paspaudžiu mygtuką. Išsamų projekto darbą galite rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad jums patiko pamoka ir sužinojote ką nors naudingo, jei turite klausimų, palikite juos toliau pateiktame komentarų skyriuje. Taip pat galite naudoti mūsų forumus ir užduoti kitų techninių klausimų.