- Paghahanda para sa Programming:
- Lumilikha ng isang Bagong Proyekto gamit ang MPLAB-X:
- Kilalanin ang Mga Rehistro ng Pag-configure:
- Itinatakda ang Mga Configuration Bits sa MPLAB-X:
- Programming PIC upang Blink isang LED:
- Circuit Diagram at Proteus Simulation:
Ito ang pangalawang tutorial ng aming PIC Tutorial Series. Sa aming nakaraang tutorial Pagsisimula sa PIC Microcontroller: Panimula sa PIC at MPLABX, natutunan namin ang mga pangunahing bagay tungkol sa aming PIC microcontroller, na-install din namin ang kinakailangang software at bumili ng isang bagong programmer ng PicKit 3 na malapit na naming magamit. Handa na kaming magsimula sa aming Unang LED blinking Program gamit ang PIC16F877A. Malalaman din namin ang tungkol sa Mga Rehistro ng Configuration sa tutorial na ito.
Inaasahan ng tutorial na ito na na-install mo ang kinakailangang software sa iyong Computer at alam mo ang ilang disenteng mga pangunahing kaalaman tungkol sa PIC MCU. Kung hindi, mangyaring bumalik sa nakaraang tutorial at magsimula doon.
Paghahanda para sa Programming:
Dahil napagpasyahan naming gamitin ang PIC16F877A, kasama ang XC8 compiler ipaalam sa amin na magsimula sa kanilang datasheet. Inirerekumenda ko ang lahat na mag-download ng PIC16F877A Datasheet at ng manwal na XC8 Compiler, dahil madalas naming tinutukoy ang mga ito sa pagsulong namin sa aming tutorial. Palaging isang mahusay na kasanayan na basahin ang kumpletong Datasheet ng anumang MCU bago talaga namin simulan ang pag-program dito.
Ngayon, bago namin buksan ang aming MPLAB-X at magsimulang mag-program, maraming mga pangunahing bagay na dapat magkaroon ng kamalayan. Gayunpaman, dahil ito ang aming unang programa, hindi ko nais na guluhin kayo ng mga tao na may maraming teorya ngunit titigil kami dito at doon sa aming programa at ipapaliwanag ko sa iyo ang mga bagay tulad nito. Kung wala kang sapat na oras upang basahin ang lahat ng mga ito pagkatapos ay magkaroon ng isang sulyap at tumalon sa video sa ilalim ng pahina.
Lumilikha ng isang Bagong Proyekto gamit ang MPLAB-X:
Hakbang 1: Ilunsad ang MPLAB-X IDE na na-install namin sa nakaraang klase, sa sandaling na-load dapat itong magmukhang ganito.
Hakbang 2: Mag-click sa Mga File -> Bagong Proyekto, o gamitin ang hotkey Ctrl + Shift + N. Makukuha mo ang sumusunod na POP-UP, kung saan kailangan mong piliin ang Standalone Project at i-click ang Susunod.
Hakbang 3: Ngayon ay kailangan nating piliin ang aming Device para sa proyekto. Kaya i-type bilang PIC16F877A sa seksyon ng dropdown na Piliin ang Device . Kapag tapos na dapat ganito at pagkatapos ay Mag-click sa Susunod.
Hakbang 4: Papayagan kami ng susunod na pahina na piliin ang tool para sa aming proyekto. Ito ang magiging PicKit 3 para sa aming proyekto. Piliin ang PicKit 3 at mag-click sa susunod
Hakbang 5: Susunod na pahina ay hihilingin na piliin ang tagatala, piliin ang XC8 Compiler at i-click ang susunod.
Hakbang 6: Sa pahinang ito kailangan naming pangalanan ang aming proyekto at piliin ang lokasyon kung saan dapat i-save ang proyekto. Pinangalanan ko ang Proyekto na ito bilang Blink at nai-save ito sa aking desktop. Maaari mong pangalanan at i-save ito sa iyong ginustong paraan. Ang aming proyekto ay nai-save bilang isang folder na may Extension .X, na maaaring direktang mailunsad ng MAPLB-X. I-click ang Tapusin nang tapos na.
Hakbang 7: Iyon lang !!! Nilikha ang aming proyekto. Ipapakita ng kaliwang pinaka window ang pangalan ng proyekto (Dito Blink), mag-click dito upang matingnan namin ang lahat ng mga direktoryo sa loob nito.
Upang masimulan ang programa kailangan naming magdagdag ng isang C Pangunahing file, sa loob ng aming direktoryo ng Source file. Upang magawa ito sa tamang pag-click lamang sa pinagmulan ng file at piliin ang Bago -> C Pangunahing File, tulad ng ipinakita sa imahe sa ibaba.
Hakbang 8: Ang sumusunod na dialog box ay lilitaw kung saan dapat banggitin ang pangalan ng C-file. Nagpangalanan ako ulit sa Blink, ngunit ang pagpipilian ay maiiwan sa iyo. Pangalanan ito sa haligi ng Pangalan ng file at mag-click sa tapusin.
Hakbang 9: Kapag nilikha ang pangunahing C file, bubuksan ito ng IDE para sa amin na may ilang mga default code dito, tulad ng ipinakita sa ibaba.
Hakbang 10: Iyon lang ngayon maaari nating simulan ang pag-program ng aming code sa C-main File. Ang default code ay hindi gagamitin sa aming mga tutorial. Kaya't tanggalin natin ang mga ito nang buo.
Kilalanin ang Mga Rehistro ng Pag-configure:
Bago simulang i-program ang anumang Microcontroller kailangan nating malaman ang tungkol sa mga rehistro ng pagsasaayos nito.
Kaya ano ang mga rehistro ng Configuration na ito, paano at bakit natin ito maitatakda?
Ang mga aparato ng PIC ay may maraming mga lokasyon na naglalaman ng mga Configuration bits o piyus. Ang mga bit na ito ay tumutukoy sa pangunahing pagpapatakbo ng aparato, tulad ng oscillator mode, watchdog timer, programming mode at proteksyon sa code. Ang mga bit na ito ay dapat itakda nang tama upang patakbuhin ang code kung hindi man mayroon kaming hindi tumatakbo na aparato . Kaya napakahalagang malaman tungkol sa mga Registrong pagsasaayos na ito bago pa man tayo magsimula sa aming Blink Program.
Upang magamit ang mga rehistro ng Configuration kailangan nating basahin sa pamamagitan ng Datasheet at maunawaan kung ano ang magkakaibang uri ng mga Configure bits na magagamit at ang kanilang mga pagpapaandar. Ang mga bit na ito ay maaaring itakda o i-reset batay sa aming mga kinakailangan sa pag-program gamit ang isang config pragma.
Ang pragma ay may mga sumusunod na form.
#pragma config setting = state-value #pragma config rehistro = halaga
kung saan ang setting ay isang tagapaglarawang setting ng pagsasaayos, hal, WDT, at estado ay isang paglalarawan sa tekstuwal ng nais na estado, hal, OFF. Isaalang-alang ang mga sumusunod na halimbawa.
#pragma config WDT = ON // i-on ang watchdog timer #pragma config WDTPS = 0x1A // tukuyin ang halaga ng timer ng postcale
RELAX !!….. RELAX !!…. RELAX !!…...
Alam ko na napunta ito sa aming mga ulo at ang pagtatakda ng mga Configuration bits na ito ay maaaring tila medyo mahirap para sa isang newbie !! Ngunit, mapanghamak na wala ito sa aming MPLAB-X.
Itinatakda ang Mga Configuration Bits sa MPLAB-X:
Ginawa ng Microchip ang prosesong nakakapagod na ito na mas madali sa pamamagitan ng paggamit ng mga grapikong representasyon ng iba't ibang uri ng mga Configure bits. Kaya ngayon upang maitakda ang mga ito kailangan lang naming sundin ang mga hakbang sa ibaba.
Hakbang 1: Mag-click sa Window -> PIC Memory View -> Mga Configure Bits. Tulad ng ipinakita sa ibaba.
Hakbang 2: Dapat itong buksan ang window ng Configuration Bits sa ilalim ng aming IDE tulad ng ipinakita sa ibaba. Ito ang lugar kung saan maaari nating itakda ang bawat isa sa mga config bit ayon sa aming mga pangangailangan. Ipapaliwanag ko ang bawat isa sa mga piraso at layunin nito sa pagsulong namin sa mga hakbang.
Hakbang 3: Ang unang Bit ay ang kaunting seleksyon ng oscillator.
Ang PIC16F87XA ay maaaring mapatakbo sa apat na magkakaibang mga mode ng oscillator. Ang apat na mode na ito ay maaaring mapili sa pamamagitan ng pag-program ng dalawang mga config bit (FOSC1 at FOSC0):
- Mababang-lakas na Crystal ng LP
- XT Crystal / Resonator
- HS Mataas na Bilis ng Crystal / Resonator
- RC Resistor / Capacitor
Para sa aming mga proyekto gumagamit kami ng isang 20Mhz Osc samakatuwid kailangan naming piliin ang HS mula sa dropdown box.
Hakbang 4: Ang susunod na bit ay ang aming timer ng tagapagbantay na Paganahin ang Bit.
Ang Watchdog Timer ay isang libreng pagpapatakbo, on-chip RC oscillator na hindi nangangailangan ng anumang mga panlabas na sangkap. Ang RC oscillator na ito ay hiwalay mula sa RC oscillator ng OSC1 / CLKI pin. Nangangahulugan iyon na tatakbo ang WDT kahit na ang orasan sa OSC1 / CLKI at OSC2 / CLKO na mga pin ng aparato ay tumigil. Sa panahon ng normal na operasyon, ang isang WDT time-out ay bumubuo ng isang Pag-reset ng aparato (Watchdog Timer Reset). Ang TO bit sa rehistro ng Katayuan ay malilinis sa isang pag-timeout ng Watchdog Timer. Kung ang timer ay hindi na-clear sa aming software coding pagkatapos ang buong MCU ay i-reset sa bawat WDT timer overflow. Ang WDT ay maaaring permanenteng hindi pinagana sa pamamagitan ng pag-clear ng pagsasaayos ng kaunti.
Hindi namin ginagamit ang WDT sa aming programa kaya't linawin namin ito, sa pamamagitan ng pagpili ng OFF mula sa dropdown box.
Hakbang 5: Ang susunod na bit ay magiging Power-up timer na Bit.
Ang Power-up Timer ay nagbibigay ng isang nakapirming 72 ms nominal time-out sa power-up lamang mula sa POR. Nagpapatakbo ang Powerup Timer sa isang panloob na oscillator ng RC. Ang maliit na tilad ay itinatago sa I-reset hangga't aktibo ang PWRT. Ang pagkaantala ng oras ng PWRT ay nagbibigay-daan sa VDD na tumaas sa isang katanggap-tanggap na antas. Nagbibigay ng isang config bit upang paganahin o huwag paganahin ang PWRT.
Hindi namin kakailanganin ang mga ganitong pagkaantala sa aming programa, kaya't i-OFF din natin iyon.
Hakbang 6: Ang susunod na bit ay ang Low-Voltage Programming.
Ang bit ng LVP ng salitang pagsasaayos ay nagbibigay-daan sa mababang boltahe na programa ng ICSP. Pinapayagan ng mode na ito ang microcontroller na ma-program sa pamamagitan ng ICSP gamit ang isang mapagkukunan ng VDD sa saklaw ng boltahe ng operating. Nangangahulugan lamang ito na ang VPP ay hindi kailangang dalhin sa VIHH ngunit sa halip ay maiiwan sa normal na boltahe ng operating. Sa mode na ito, ang RB3 / PGM pin ay nakatuon sa pagpapaandar ng programa at tumitigil na maging isang pangkalahatang layunin na I / O pin. Sa panahon ng pagprograma, ang VDD ay inilalapat sa MCLR pin. Upang ipasok ang Programming mode, dapat ilapat ang VDD sa RB3 / PGM sa kondisyon na nakatakda ang LVP bit.
I-off natin ang LVP upang magamit natin ang RB3 bilang isang I / O pin. Upang magawa ito, i- OFF lang ito gamit ang dropdown box.
Hakbang 7: Ang susunod na mga piraso ay magiging EEPROM at Program memory Protection bits. Kung ang bit na ito ay nakabukas, sa sandaling na-program ang MCU walang sinuman ang makakakuha ng aming programa mula sa hardware. Ngunit sa ngayon iwan natin ang lahat na naka-OFF.
Kapag natapos na ang mga setting tulad ng itinuro sa Dialog box ay dapat magmukhang ganito.
Hakbang 8: Ngayon mag-click sa Bumuo ng Source Code sa Output, ang aming code ay mabubuo ngayon kopyahin lamang ito kasama ang header file at i-paste sa aming Blink.c C-File, tulad ng ipinakita sa ibaba.
Iyon lamang ang tapos na sa aming gawain sa Pag-configure. Maaari naming magkaroon ng pagsasaayos na ito para sa lahat ng aming mga proyekto. Ngunit kung ikaw ay interesado maaari kang makipag-usap sa kanila sa ibang pagkakataon.
Programming PIC upang Blink isang LED:
Sa program na ito gagamitin namin ang aming PIC microcontroller upang kumurap ng isang LED na konektado sa isang I / O pin. Tingnan natin ang iba't ibang mga I / O na pin na magagamit sa aming PIC16F877A.
Tulad ng ipinakita sa itaas PIC16F877 ay may 5 pangunahing input / output port. Karaniwan silang tinutukoy ng PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD), at PORT E (RE). Ang mga port na ito ay ginagamit para sa input / output interfacing. Sa tagakontrol na ito, ang "PORT A" ay 6 na piraso lamang ang lapad (RA-0 hanggang RA-5), "PORT B", "PORT C", "PORT D" ay 8 piraso lamang ang lapad (RB-0 hanggang RB-7, RC-0 hanggang RC-7, RD-0 hanggang RD-7), ang "PORT E" ay may 3 bit lamang na lapad (RE-0 hanggang RE-2).
Ang lahat ng mga port na ito ay bi-directional. Ang direksyon ng port ay kinokontrol ng paggamit ng mga rehistro ng TRIS (X) (TRIS A na ginamit upang itakda ang direksyon ng PORT-A, TRIS B na ginamit upang itakda ang direksyon para sa PORT-B, atbp.). Ang pagtatakda ng isang TRIS (X) bit '1' ay magtatakda ng katumbas na PORT (X) na bit bilang input. Ang pag-clear ng isang TRIS (X) bit '0' ay magtatakda ng kaukulang PORT (X) na bit bilang output.
Para sa aming proyekto kailangan naming gawin ang pin RB3 ng PORT B bilang output upang ang aming LED ay maaaring konektado dito. Narito ang code para sa LED blinking sa PIC microcontroller:
# isama
Una naming tinukoy ang panlabas na dalas ng Crystal gamit ang #define _XTAL_FREQ 20000000. Pagkatapos ay sa walang bisa na pangunahing () pagpapaandar, inatasan namin ang aming MCU na gagamitin namin ang RB3 bilang isang output (TRISB = 0X00;) pin. Pagkatapos sa wakas isang walang hanggan habang loop ay ginagamit upang ang LED blinking ay magpapatuloy magpakailanman. Upang makurap ang isang LED kailangan lang nating i-ON at i-OFF ang isang kapansin-pansin na pagkaantala.
Kapag nakumpleto ang pag-coding, buuin ang Project gamit ang Run -> Build pangunahing utos ng Project. Dapat itong mag-ipon ng iyong programa. Kung ang lahat ay maayos (Tulad ng dapat) isang output Console sa ilalim ng screen ay magpapakita ng isang BUILD SUCCESSFUL na mensahe, tulad ng ipinakita sa larawan sa ibaba.
Circuit Diagram at Proteus Simulation:
Sa sandaling bumuo kami ng isang Project at kung matagumpay ang Build, isang HEX file ang maaaring malikha sa background ng aming IDE. Ang HEX file na ito ay matatagpuan sa loob ng direktoryo sa ibaba
Maaari itong mag-iba para sa iyo kung naka-save ka sa ibang lokasyon.
Ngayon, mabilis nating buksan ang Proteus na na-install natin nang mas maaga at lumikha ng mga iskema para sa proyektong ito. Hindi namin ipaliwanag kung paano ito gagawin dahil wala ito sa saklaw ng proyektong ito. Ngunit hindi mag-alala, ipinaliwanag ito sa video sa ibaba. Sa sandaling sundin mo ang tagubilin at buuin ang mga iskema dapat itong magmukhang ganito
Upang gayahin ang output, mag-click sa pindutan ng pag-play sa kaliwang sulok sa ibaba ng screen pagkatapos i-load ang Hex file. Dapat itong Blink ang LED na konektado sa RB3 ng MCU. Kung mayroon kang anumang problema dito panoorin ang video, kung hindi pa rin nalutas gamitin ang seksyon ng komento para sa tulong.
Ginawa namin ang aming unang proyekto sa PIC microcontroller at na-verify ang output gamit ang simulation software. Pumunta at mag-tweak sa paligid ng programa at obserbahan ang mga resulta. Hanggang sa magkita kami sa susunod naming proyekto.
Ohh teka !!
Sa aming susunod na proyekto malalaman namin kung paano ito makikipagtulungan sa isang tunay na hardware. Para doon kakailanganin namin ang mga sumusunod na tool panatilihin silang handa. Hanggang sa HAPPY LEARNING !!
- PicKit 3
- PIC16F877A IC
- 40 - may hawak ng IC
- Perf board
- 20Mhz Crystal OSC
- Mga pin ng Babae at Lalaki na Bergstick
- 33pf Capacitor - 2No
- 680 ohm Resistor
- LED ng anumang kulay
- Kit ng panghinang.