- Pasiruošimas programavimui:
- Naujo projekto kūrimas naudojant MPLAB-X:
- Susipažinimas su konfigūracijos registrais:
- Konfigūracijos bitų nustatymas MPLAB-X:
- PIC programavimas mirksėti šviesos diodui:
- Grandinės schema ir „Proteus“ modeliavimas:
Tai yra antroji „PIC Tutorial“ serijos pamoka. Ankstesnėje mūsų pamokoje „Darbo su PIC mikrovaldikliu pradžia: įvadas į PIC ir MPLABX“ sužinojome pagrindinius dalykus apie savo „PIC“ mikrovaldiklį, taip pat įdiegėme reikiamą programinę įrangą ir įsigijome naują „PicKit 3“ programuotoją, kurį netrukus naudosime. Dabar mes esame pasirengę pradėti naudotis savo pirmosios šviesos diodų mirksi programa, naudojant PIC16F877A. Šioje pamokoje taip pat sužinosime apie konfigūracijos registrus.
Šioje pamokoje tikimasi, kad įdiegėte reikiamą programinę įrangą savo kompiuteryje ir žinote keletą tinkamų „PIC MCU“ pagrindų. Jei ne, grįžkite į ankstesnę mokymo programą ir pradėkite nuo jos.
Pasiruošimas programavimui:
Kadangi nusprendėme naudoti PIC16F877A, su XC8 kompiliatoriumi pradėkime nuo jų duomenų lapo. Aš rekomenduoju visiems atsisiųsti PIC16F877A duomenų lapą ir „XC8 Compiler“ vadovą, nes mes dažnai juos nurodysime, kai eisime per savo mokymo programą. Visada yra gera praktika perskaityti visą bet kurio MCU duomenų lapą, prieš pradedant juo programuoti.
Dabar, prieš atidarydami MPLAB-X ir pradėdami programuoti, turite žinoti keletą pagrindinių dalykų. Bet kokiu atveju, kadangi tai yra mūsų pirmoji programa, aš nenoriu jus persekioti, turėdamas daug teorijos, bet mes sustosime čia ir ten, kai mes programuosime, ir aš jums paaiškinsiu tokius dalykus. Jei neturite pakankamai laiko, kad perskaitytumėte visa tai, tiesiog užmeskite akį ir pereikite prie vaizdo įrašo puslapio apačioje.
Naujo projekto kūrimas naudojant MPLAB-X:
1 žingsnis: Paleiskite MPLAB-X IDE, kurį įdiegėme ankstesnėje klasėje, kai tik įkelsite, jis turėtų atrodyti panašiai.
2 žingsnis: Spustelėkite Failai -> Naujas projektas arba naudokite spartųjį klavišą Ctrl + Shift + N. Gausite tokį POP-UP, iš kurio turite pasirinkti atskirą projektą ir spustelėkite Pirmyn.
3 žingsnis: Dabar mes turime pasirinkti savo įrenginį projektui. Taigi išskleidžiamajame skyriuje Pasirinkite įrenginį įveskite kaip PIC16F877A. Kai tai bus padaryta, jis turėtų būti toks, tada spustelėkite Pirmyn.
4 žingsnis: Kitas puslapis leis mums pasirinkti savo projekto įrankį. Tai būtų „PicKit 3“ mūsų projektui. Pasirinkite „PicKit 3“ ir spustelėkite toliau
5 žingsnis: Kitas puslapis paprašys pasirinkti kompiliatorių, pasirinkite XC8 kompiliatorių ir spustelėkite kitą.
6 žingsnis: Šiame puslapyje turime pavadinti savo projektą ir pasirinkti vietą, kurioje projektas turi būti išsaugotas. Aš pavadinau šį projektą kaip „ Blink“ ir išsaugojau jį savo darbalaukyje. Galite pavadinti ir išsaugoti pageidaujamu būdu. Mūsų projektas bus išsaugotas kaip aplankas su plėtiniu .X, kurį gali tiesiogiai paleisti MAPLB-X. Kai baigsite, spustelėkite Baigti.
7 žingsnis: viskas! Mūsų projektas buvo sukurtas. Kairiajame labiausiai lange bus rodomas projekto pavadinimas (čia mirksi), spustelėkite jį, kad galėtume peržiūrėti visus jo katalogus.
Norėdami pradėti programuoti, turime pridėti C pagrindinį failą šaltinio failų kataloge. Norėdami tai padaryti, tiesiog dešiniuoju pelės mygtuku spustelėkite šaltinio failą ir pasirinkite Naujas -> C pagrindinis failas, kaip parodyta paveikslėlyje žemiau.
8 žingsnis: Atsiras toks dialogo langas, kuriame turi būti nurodytas C failo pavadinimas. Aš vėl pavadinau „Blink“, bet pasirinkimas paliekamas jums. Pavadinkite jį stulpelyje Failo pavadinimas ir spustelėkite Baigti.
9 žingsnis: Kai bus sukurtas C pagrindinis failas, IDE jį atidarys mums su keletu numatytųjų kodų, kaip parodyta žemiau.
10 žingsnis: Štai ir dabar mes galime pradėti programuoti savo kodą C pagrindiniame faile. Numatytasis kodas nebus naudojamas mūsų pamokose. Taigi ištrinkime juos visiškai.
Susipažinimas su konfigūracijos registrais:
Prieš pradėdami programuoti bet kurį mikrovaldiklį, turime žinoti apie jo konfigūracijos registrus.
Taigi, kokie yra šie konfigūracijos registrai, kaip ir kodėl juos turėtume nustatyti?
PIC įrenginiuose yra kelios vietos, kuriose yra konfigūracijos bitai arba saugikliai. Šie bitai nurodo pagrindinį prietaiso veikimą, pvz., Osciliatoriaus režimą, budėjimo laikmatį, programavimo režimą ir kodo apsaugą. Šie bitai turi būti tinkamai nustatyti, kad būtų galima paleisti kodą, kitaip mes neturime veikiančio įrenginio . Taigi labai svarbu žinoti apie šiuos konfigūracijos registrus dar prieš pradedant „Blink“ programą.
Norėdami naudoti šiuos konfigūracijos registrus, turime perskaityti duomenų lapą ir suprasti, kokie yra skirtingi konfigūracijos bitų tipai ir jų funkcijos. Šiuos bitus galima nustatyti arba iš naujo nustatyti atsižvelgiant į mūsų programavimo reikalavimus, naudojant konfigūracijos pragmą.
Pragma turi šias formas.
#pragma config setting = būsenos vertė #pragma config register = reikšmė
kur nustatymas yra konfigūracijos nustatymo aprašas, pvz., WDT, o būsena yra tekstinis norimos būsenos aprašymas, pvz., IŠJUNGTA. Apsvarstykite šiuos pavyzdžius.
#pragma config WDT = ON // įjungti sarginio laikmačio funkciją #pragma config WDTPS = 0x1A // nurodyti laikmačio postskalės vertę
PALAISKITE !!….. RELAX !!…. RELAX !!…...
Aš žinau, kad tai per daug pateko į mūsų galvą, o nustatyti šiuos konfigūracijos bitus naujokui gali būti šiek tiek sunku! Tačiau tai yra iššaukiamai ne su mūsų MPLAB-X.
Konfigūracijos bitų nustatymas MPLAB-X:
Mikroschema šį varginantį procesą labai palengvino, naudodama skirtingų tipų konfigūracijos bitų grafinius atvaizdus. Taigi, norėdami juos nustatyti, tiesiog turime atlikti toliau nurodytus veiksmus.
1 žingsnis: Spustelėkite langą -> PIC atminties rodinys -> konfigūracijos bitai. Kaip parodyta žemiau.
2 žingsnis: Tai turėtų atidaryti konfigūracijos bitų langą mūsų IDE apačioje, kaip parodyta žemiau. Tai vieta, kurioje mes galime nustatyti kiekvieną konfigūracijos bitą pagal savo poreikius. Aš paaiškinsiu kiekvieną bitą ir jo paskirtį, kai eisime per žingsnius.
3 žingsnis: Pirmasis bitas yra osciliatoriaus pasirinkimo bitas.
PIC16F87XA galima valdyti keturiais skirtingais osciliatoriaus režimais. Šiuos keturis režimus galima pasirinkti užprogramavus du konfigūracijos bitus (FOSC1 ir FOSC0):
- LP mažos galios kristalas
- XT kristalas / rezonatorius
- HS greitaeigis kristalas / rezonatorius
- RC rezistorius / kondensatorius
Savo projektams naudojame 20 MHz Osc, todėl išskleidžiamajame laukelyje turime pasirinkti HS.
4 žingsnis: Kitas bitas bus mūsų sargybos laikmatis Įgalinti bitą.
„Watchdog Timer“ yra laisvai veikiantis lusto RC osciliatorius, kuriam nereikia jokių išorinių komponentų. Šis RC osciliatorius yra atskiras nuo OSC1 / CLKI kaiščio RC osciliatoriaus. Tai reiškia, kad WDT veiks net tuo atveju, jei laikrodis įrenginio kaiščiuose OSC1 / CLKI ir OSC2 / CLKO buvo sustabdytas. Įprasto veikimo metu WDT skirtasis laikas sukuria įrenginio atstatymą („Watchdog Timer Reset“). TO bitai būsenos registre bus išvalyti pagal „Watchdog Timer“ skirtąjį laiką. Jei laikmatis nėra išvalytas mūsų programinės įrangos kodavime, visas MCU bus nustatytas iš naujo per kiekvieną WDT laikmatį. WDT galima visam laikui išjungti išvalius konfigūracijos bitą.
Savo programoje nenaudojame WDT, todėl išvalykite ją išskleidžiamajame laukelyje pasirinkdami IŠJUNGTA.
5 žingsnis: Kitas bitas bus „Power-up timer Bit“.
„Power-up Timer“ suteikia fiksuotą 72 ms vardinį laiką, kai įjungiama tik iš POR. „Powerup Timer“ veikia su vidiniu RC osciliatoriumi. Lustas laikomas Reset tol, kol aktyvus PWRT. PWRT laiko atidėjimas leidžia VDD pakilti iki priimtino lygio. Pateikiamas konfigūracijos bitas, leidžiantis arba išjungti PWRT.
Mums nereikės tokių vėlavimų mūsų programoje, todėl išjunkime ir tai.
6 žingsnis: Kitas bitas bus žemos įtampos programavimas.
Konfigūravimo žodžio LVP bitas leidžia programuoti žemos įtampos ICSP. Šis režimas leidžia mikrovaldiklį užprogramuoti per ICSP naudojant VDD šaltinį darbinės įtampos diapazone. Tai reiškia tik tai, kad VPP nereikia pristatyti į VIHH, bet jį galima palikti esant normaliai darbinei įtampai. Šiame režime RB3 / PGM kaištis skirtas programavimo funkcijai ir nustoja būti bendros paskirties įvesties / išvesties kaiščiu. Programavimo metu VDD taikomas MCLR kaiščiui. Norėdami įeiti į programavimo režimą, VDD turi būti pritaikytas RB3 / PGM, jei nustatytas LVP bitas.
Išjunkime LVP, kad galėtume naudoti RB3 kaip įvesties / išvesties kaištį. Norėdami tai padaryti, tiesiog išjunkite jį išjungdami išskleidžiamąjį laukelį.
7 žingsnis: kiti bitai bus EEPROM ir programos atminties apsaugos bitai. Jei šis bitas įjungtas, užprogramavus MCU, niekas neatsiims mūsų programos iš aparatinės įrangos. Bet kol kas palikime visus tris išjungtus.
Kai nustatymai bus atlikti taip, kaip nurodyta, dialogo langas turėtų atrodyti maždaug taip.
8 žingsnis: Dabar spustelėkite Generuoti šaltinio kodą į išvestį, mūsų kodas bus sugeneruotas, tiesiog nukopijuokite jį kartu su antraštės failu ir įklijuokite į mūsų Blink.c C failą, kaip parodyta žemiau.
Tai yra mūsų konfigūracijos darbas. Ši konfigūracija gali būti taikoma visiems mūsų projektams. Bet jei jus domina, galite vėliau su jais susipainioti.
PIC programavimas mirksėti šviesos diodui:
Šioje programoje mes naudosime savo PIC mikrovaldiklį, kad mirksėtų šviesos diodas, prijungtas prie įvesties / išvesties kaiščio. Pažvelkime į skirtingus įvesties / išvesties kaiščius, esančius mūsų PIC16F877A.
Kaip parodyta aukščiau, PIC16F877 turi 5 pagrindinius įvesties / išvesties prievadus. Paprastai jie žymimi UOSTU A (RA), UOSTU B (RB), UOSTU C (RC), UOSTU D (RD) ir UOSTU E (RE). Šie prievadai naudojami įvesties / išvesties sąsajai. Šiame valdiklyje „PORT A“ yra tik 6 bitų pločio (nuo RA-0 iki RA-5), „PORT B“, „PORT C“, „PORT D“ yra tik 8 bitų pločio (nuo RB-0 iki RB-7, Nuo RC-0 iki RC-7, nuo RD-0 iki RD-7), „PORT E“ turi tik 3 bitų plotį (nuo RE-0 iki RE-2).
Visi šie uostai yra dvikryptiai. Uosto kryptis kontroliuojama naudojant TRIS (X) registrus (TRIS A naudojama PORT-A krypčiai nustatyti, TRIS B naudojama PORT-B krypčiai nustatyti ir kt.). Nustačius TRIS (X) bitą „1“, atitinkamas PORT (X) bitas bus nustatytas kaip įvestis. Išvalius TRIS (X) bitą „0“, atitinkamas PORT (X) bitas bus nustatytas kaip išvestis.
Savo projektui mes turime padaryti PORT B kaištį RB3 kaip išėjimą, kad prie jo būtų galima prijungti mūsų šviesos diodą. Čia yra šviesos diodų mirksėjimo su PIC mikrovaldikliu kodas:
# įtraukti
Pirmiausia nurodėme išorinį kristalų dažnį naudodami #define _XTAL_FREQ 20000000. Tada funkcijoje void main () mes nurodėme savo MCU, kad mes naudosime RB3 kaip išvesties (TRISB = 0X00;) kaištį. Tada pagaliau naudojama begalinė, kol kilpa, kad LED mirksi visam laikui. Norėdami mirksėti šviesos diodu, turime jį tiesiog įjungti ir išjungti, pastebimai vėluodami.
Užbaigus kodavimą, sukurkite projektą naudodami komandą Vykdyti -> Kurti pagrindinį projektą. Tai turėtų sudaryti jūsų programą. Jei viskas gerai (kaip turėtų būti), ekrano apačioje esančioje išvesties konsolėje bus rodomas pranešimas PASTATYKITE SĖKMINGĄ, kaip parodyta paveikslėlyje žemiau.
Grandinės schema ir „Proteus“ modeliavimas:
Kai sukursime projektą ir jei „ Build“ bus sėkmingas, mūsų IDE fone būtų sukurtas HEX failas. Šį HEX failą galite rasti žemiau esančiame kataloge
Jums gali skirtis, jei išsaugojote kitoje vietoje.
Dabar atidarykime anksčiau įdiegtą „Proteus“ ir sukurkime šio projekto schemas. Mes neketiname paaiškinti, kaip tai padaryti, nes tai nepatenka į šio projekto taikymo sritį. Bet nesijaudinkite, tai paaiškinta toliau pateiktame vaizdo įraše. Laikydamiesi instrukcijos ir sukūrę schemas, ji turėtų atrodyti maždaug taip
Norėdami imituoti išvestį, spustelėkite apatiniame kairiajame ekrano kampe esantį atkūrimo mygtuką, įkėlę „Hex“ failą. Jis turėtų mirksėti šviesos diodu, prijungtu prie MCU RB3. Jei turite kokių nors problemų, žiūrėkite vaizdo įrašą, jei vis tiek neišspręsta, naudokitės komentarų skiltimi.
Dabar mes sukūrėme savo pirmąjį projektą su PIC mikrovaldikliu ir patikrinome išvestį naudodami modeliavimo programinę įrangą. Eik ir pakoreguok aplink programą ir stebėk rezultatus. Kol susitiksime dėl kito mūsų projekto.
Ohh palauk !!
Mūsų kitame projekte mes mokysimės, kaip tai atlikti naudojant tikrąją aparatinę įrangą. Tam mums reikės šių įrankių, kad jie būtų paruošti. Iki to laiko LAIMINGĄ MOKYMĄ !!
- „PicKit 3“
- PIC16F877A IC
- 40 kontaktų IC laikiklis
- Puiki lenta
- 20 MHz kristalinis OSC
- Moteriški ir vyriški „Bergstick“ kaiščiai
- 33pf kondensatorius - 2Nos
- 680 omų rezistorius
- Bet kokios spalvos šviesos diodas
- Litavimo rinkinys.