- Valmistautuminen ohjelmointiin:
- Uuden projektin luominen MPLAB-X: n avulla:
- Kokoonpanorekistereihin tutustuminen:
- Kokoonpanobittien asettaminen MPLAB-X: ssä:
- PIC: n ohjelmointi vilkkumaan LED: iin:
- Piirikaavio ja Proteus-simulointi:
Tämä on PIC Tutorial -sarjan toinen opetusohjelma. Edellisessä oppaassamme PIC-mikrokontrollerin käytön aloittaminen: Johdatus PIC- ja MPLABX-sovelluksiin opimme PIC-mikrokontrollerimme perustiedot, asensimme myös tarvittavan ohjelmiston ja ostimme uuden PicKit 3 -ohjelmoijan, jota käytämme pian. Nyt olemme valmiita aloittamaan ensimmäisen LED-vilkkumisohjelmamme PIC16F877A: n avulla. Opimme myös määritysrekistereistä tässä opetusohjelmassa.
Tämä opetusohjelma odottaa, että olet asentanut vaaditun ohjelmiston tietokoneellesi ja tiedät joitain kunnollisia perusteita PIC MCU: sta. Jos ei, palaa takaisin edelliseen opetusohjelmaan ja aloita siitä.
Valmistautuminen ohjelmointiin:
Koska olemme päättäneet käyttää PIC16F877A: ta, aloittakaamme XC8-kääntäjän kanssa heidän taulukkonsa. Suosittelen kaikkia lataamaan PIC16F877A-tietolomakkeen ja XC8-kääntäjän käsikirjan, koska viittaamme niihin usein edistyessämme opetusohjelmamme läpi. On aina hyvä tapa lukea minkä tahansa MCU: n täydellinen tietolomake, ennen kuin aloitamme ohjelmoinnin sen kanssa.
Nyt, ennen kuin avamme MPLAB-X: n ja aloitamme ohjelmoinnin, on olemassa muutama perusasia, josta on oltava tietoinen. Joka tapauksessa, koska tämä on ensimmäinen ohjelmamme, en halua häiritä teitä ihmisiä, joilla on paljon teoriaa, mutta pysähdymme täällä ja siellä ohjelmoimalla ja selitän teille asioita sellaisenaan. Jos sinulla ei ole tarpeeksi aikaa kaikkien näiden lukemiseen, vilkaise vain ja hyppää sivun alaosassa olevaan videoon.
Uuden projektin luominen MPLAB-X: n avulla:
Vaihe 1: Käynnistä MPLAB-X IDE, jonka asennimme edelliseen luokkaan, kun se on ladattu, sen pitäisi näyttää tältä.
Vaihe 2: Napsauta Tiedostot -> Uusi projekti tai käytä pikanäppäintä Ctrl + Vaihto + N. Saat seuraavan POP-UP: n, josta sinun on valittava erillinen projekti ja napsautettava Seuraava.
Vaihe 3: Nyt meidän on valittava laitteemme projektille. Kirjoita siis PIC16F877A avattavan Valitse laite -osiossa. Kun se on tehty, sen pitäisi olla tällainen ja napsauta sitten Seuraava.
Vaihe 4: Seuraava sivu antaa meille mahdollisuuden valita työkalu projektiimme. Tämä olisi projektissamme PicKit 3. Valitse PicKit 3 ja napsauta seuraavaa
Vaihe 5: Seuraava sivu pyytää valitsemaan kääntäjän, valitsemalla XC8-kääntäjän ja napsauttamalla Seuraava.
Vaihe 6: Tällä sivulla meidän on nimettävä projekti ja valittava paikka, johon projekti on tallennettava. Olen nimennyt tämän projektin Blinkiksi ja tallentanut sen työpöydällesi. Voit nimetä ja tallentaa sen haluamallasi tavalla. Projektimme tallennetaan kansioon, jonka pääte on .X, joka voidaan suoraan käynnistämä MAPLB-X. Napsauta Valmis, kun olet valmis.
Vaihe 7: Se on se! Projektimme on luotu. Vasemmanpuoleisessa ikkunassa näkyy projektin nimi (Here Blink), napsauta sitä, jotta voimme nähdä kaikki sen sisällä olevat hakemistot.
Ohjelmoinnin aloittamiseksi meidän on lisättävä C-päätiedosto lähdetiedostohakemistoon. Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella lähdetiedostoa ja valitsemalla Uusi -> C päätiedosto, kuten alla olevassa kuvassa näkyy.
Vaihe 8: Näkyviin tulee seuraava valintaikkuna, jossa C-tiedoston nimi on mainittava. Olen nimennyt uudelleen Blinkissä, mutta valinta jätetään sinulle. Nimeä se Tiedostonimi -sarakkeessa ja napsauta lopeta.
Vaihe 9: Kun C-päätiedosto on luotu, IDE avaa sen meille, ja siinä on joitain oletuskoodeja, kuten alla on esitetty.
Vaihe 10: Siinä nyt, että voimme aloittaa koodin ohjelmoinnin C-main-tiedostossa. Oletuskoodia ei käytetä opetusohjelmissamme. Joten poistetaan ne kokonaan.
Kokoonpanorekistereihin tutustuminen:
Ennen kuin aloitamme minkä tahansa mikrokontrollerin ohjelmoinnin, meidän on tiedettävä sen määritysrekisterit.
Joten mitkä ovat nämä määritysrekisterit, miten ja miksi meidän pitäisi asettaa ne?
PIC-laitteilla on useita sijainteja, jotka sisältävät määritysbitit tai sulakkeet. Nämä bitit määrittelevät laitteen perustoiminnan, kuten oskillaattoritilan, vahtikoiran ajastimen, ohjelmointitilan ja koodisuojan. Nämä bitit on asetettava oikein, jotta koodi voidaan suorittaa, muuten meillä ei ole laitetta . Joten on erittäin tärkeää tietää näistä kokoonpanorekistereistä ennen kuin aloitamme Blink-ohjelmamme.
Näiden kokoonpanorekistereiden käyttämiseksi meidän on luettava tietolomake läpi ja ymmärrettävä, mitä erityyppisiä kokoonpanobittejä on käytettävissä ja niiden toiminnot. Nämä bitit voidaan asettaa tai nollata ohjelmointivaatimuksiemme perusteella käyttämällä konfigurointipragmaa.
Pragmalla on seuraavat muodot.
#pragma config setting = tila-arvo #pragma config register = arvo
missä asetus on kokoonpanon asetuskuvaaja, esim. WDT, ja tila on halutun tilan, esimerkiksi POIS, tekstikuvaus. Harkitse seuraavia esimerkkejä.
#pragma config WDT = PÄÄLLÄ // kytke vahtiajastin päälle #pragma config WDTPS = 0x1A // määritä ajastimen jälkiasteikon arvo
RENTOUTUA!!….. RELAX !!…. RELAX !!…...
Tiedän, että se on mennyt liian paljon päähän ja näiden kokoonpanobittien asettaminen saattaa tuntua hieman vaikealta aloittelijalle !! Mutta se ei ole haasteellisesti MPLAB-X: n kanssa.
Kokoonpanobittien asettaminen MPLAB-X: ssä:
Mikrosiru on tehnyt tämän väsyttävän prosessin paljon helpommaksi käyttämällä erityyppisten kokoonpanobittien graafisia esityksiä. Joten nyt niiden asettamiseksi meidän on yksinkertaisesti noudatettava alla olevia vaiheita.
Vaihe 1: Napsauta Ikkuna -> PIC-muistinäkymä -> Kokoonpanobitit. Kuten alla.
Vaihe 2: Tämän pitäisi avata Configuration Bits -ikkuna IDE: n alaosassa, kuten alla on esitetty. Tämä on paikka, jossa voimme asettaa kukin konfigurointibitistä tarpeidemme mukaan. Selitän jokaisen bitin ja sen tarkoituksen edetessä vaiheita.
Vaihe 3: Ensimmäinen bitti on oskillaattorin valintabitti.
PIC16F87XA: ta voidaan käyttää neljässä eri oskillaattoritilassa. Nämä neljä tilaa voidaan valita ohjelmoimalla kaksi konfigurointibittiä (FOSC1 ja FOSC0):
- LP: n pienitehoinen kristalli
- XT-kristalli / resonaattori
- HS: n nopea kristalli / resonaattori
- RC-vastus / kondensaattori
Projektissamme käytämme 20 MHz: n Osc: ta, joten meidän on valittava HS pudotusvalikosta.
Vaihe 4: Seuraava bitti on valvontajastimemme Ota bitti käyttöön.
Watchdog Timer on ilmainen, sirulla toimiva RC-oskillaattori, joka ei vaadi ulkoisia komponentteja. Tämä RC-oskillaattori on erillinen OSC1 / CLKI-nastan RC-oskillaattorista. Tämä tarkoittaa, että WDT toimii, vaikka laitteen OSC1 / CLKI- ja OSC2 / CLKO-nastojen kello olisi pysäytetty. Normaalin toiminnan aikana WDT-aikakatkaisu luo laitteen nollaus (Watchdog Timer Reset). Tilarekisterin TO-bitti tyhjennetään Watchdog-ajastimen aikakatkaisun yhteydessä. Jos ajastinta ei tyhjennetä ohjelmistokoodauksessamme, koko MCU nollautuu jokaisen WDT-ajastimen ylivuoton yhteydessä. WDT voidaan poistaa pysyvästi poistamalla määritysbitti.
Emme käytä WDT: tä ohjelmassamme, joten tyhjennä se valitsemalla OFF pudotusvalikosta.
Vaihe 5: Seuraava bitti on Power-up timer Bit.
Käynnistysajastin tarjoaa kiinteän 72 ms: n nimellisen aikakatkaisun käynnistyksen yhteydessä vain POR: sta. Powerup-ajastin toimii sisäisellä RC-oskillaattorilla. Sirua pidetään Resetissä niin kauan kuin PWRT on aktiivinen. PWRT: n aikaviive sallii VDD: n nousevan hyväksyttävälle tasolle. Mukana on konfigurointibitti PWRT: n ottamiseksi käyttöön tai poistamiseksi käytöstä.
Emme tarvitse tällaisia viivästyksiä ohjelmassamme, joten sammuttakaamme myös tämä.
Vaihe 6: Seuraava bitti on matalajännitteen ohjelmointi.
Konfigurointisanan LVP-bitti mahdollistaa matalajännitteisen ICSP-ohjelmoinnin. Tämän tilan avulla mikrokontrolleri voidaan ohjelmoida ICSP: n kautta käyttämällä VDD-lähdettä käyttöjännitealueella. Tämä tarkoittaa vain sitä, että VPP: tä ei tarvitse tuoda VIHH: lle, vaan se voidaan jättää normaalille käyttöjännitteelle. Tässä tilassa RB3 / PGM-tappi on omistettu ohjelmointitoiminnolle ja se ei enää ole yleiskäyttöinen I / O-tappi. Ohjelmoinnin aikana VDD levitetään MCLR-nastalle. Ohjelmointitilaan siirtyminen edellyttää VDD: n käyttöä RB3 / PGM: ssä edellyttäen, että LVP-bitti on asetettu.
Sammuttakaamme LVP, jotta voimme käyttää RB3: ta I / O-nastana. Voit tehdä tämän yksinkertaisesti sammuttamalla tämän OFF pudotusvalikossa.
Vaihe 7: Seuraavat bitit ovat EEPROM- ja Ohjelmamuistin suojausbitit. Jos tämä bitti on päällä, MCU: n ohjelmoinnin jälkeen kukaan ei nauti ohjelmaa laitteistosta. Mutta jätetään nyt kaikki kolme pois päältä.
Kun asetukset on tehty ohjeiden mukaan, valintaikkunan pitäisi näyttää tältä.
Vaihe 8: Napsauta nyt Luo lähdekoodi tulostettavaksi, koodimme luodaan, kopioi se vain otsikkotiedoston kanssa ja liitä Blink.c C-tiedostoomme alla olevan kuvan mukaisesti.
Se on, että määritystyömme on tehty. Meillä voi olla tämä kokoonpano kaikille projekteillemme. Mutta jos olet kiinnostunut, voit sotkea heidän kanssaan myöhemmin.
PIC: n ohjelmointi vilkkumaan LED: iin:
Tässä ohjelmassa aiomme käyttää PIC-mikrokontrolleriämme vilkkumaan I / O-nastaan kytkettyä LEDiä. Katsotaanpa PIC16F877A-mallissamme saatavana olevia erilaisia I / O-nastoja.
Kuten edellä on esitetty, PIC16F877: llä on 5 perustulo- / lähtöporttia. Niitä merkitään yleensä PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) ja PORT E (RE). Näitä portteja käytetään tulo- / lähtöliitäntään. Tässä ohjaimessa "PORT A" on vain 6 bittiä leveä (RA-0 - RA-5), "PORT B", "PORT C", "PORT D" on vain 8 bittiä leveä (RB-0 - RB-7, RC-0 - RC-7, RD-0 - RD-7), ”PORT E”: llä on vain 3-bittinen leveys (RE-0 - RE-2).
Kaikki nämä portit ovat kaksisuuntaisia. Portin suuntaa ohjataan käyttämällä TRIS (X) -rekistereitä (TRIS A käytetään PORT-A: n suunnan asettamiseen, TRIS B käytetään PORT-B: n suunnan asettamiseen jne.). TRIS (X) -bitin '1' asettaminen asettaa vastaavan PORT (X) -bitin tuloksi. TRIS (X) -bitin "0" tyhjentäminen asettaa vastaavan PORT (X) -bitin lähdöksi.
Projektia varten meidän on tehtävä PORT B: n tappi RB3 lähtöön, jotta LEDimme voidaan liittää siihen. Tässä on koodi PIC-mikrokontrollerilla vilkkuvalle LEDille:
#sisältää
Ensinnäkin olemme määrittäneet ulkoisen kristallitaajuuden käyttämällä #define _XTAL_FREQ 20000000 -toimintoa. Sitten void main () -toiminnossa käskimme MCU: ta käyttämään RB3: ta lähtöliittimenä (TRISB = 0X00;) . Sitten lopuksi ääretön kun silmukkaa käytetään siten, että LED vilkkuu jatkuu ikuisesti. LED-valon vilkkumiseksi meidän on yksinkertaisesti kytkettävä se päälle ja pois huomattavan viiveellä.
Kun koodaus on valmis, rakenna projekti Suorita -> Rakenna pääprojekti -komennolla. Tämän pitäisi koota ohjelma. Jos kaikki on kunnossa (Kuten sen pitäisi olla), näytön alalaidassa oleva konsoli näyttää BUILD SUCCESSFUL -viestin, kuten alla olevassa kuvassa näkyy.
Piirikaavio ja Proteus-simulointi:
Kun rakennamme projektin ja jos koontiversio onnistuu, HEX-tiedosto olisi luotu IDE: n taustalle. Tämä HEX-tiedosto löytyy alla olevasta hakemistosta
Se voi vaihdella sinulle, jos olet tallentanut johonkin muuhun sijaintiin.
Avaa nyt nopeasti aiemmin asentamasi Proteus ja luo kaaviot tälle projektille. Emme aio selittää, miten se tehdään, koska se on tämän hankkeen puitteissa. Mutta ei hätää, se selitetään alla olevassa videossa. Kun noudatat ohjeita ja rakennat kaaviot, sen pitäisi näyttää tältä
Voit simuloida lähtöä napsauttamalla näytön vasemmassa alakulmassa olevaa toistopainiketta Hex-tiedoston lataamisen jälkeen. Sen pitäisi vilkkua MCU: n RB3: een kytkettyä LEDiä. Jos sinulla on ongelmia siinä, ole hyvä ja katso video, ellei vieläkään ole ratkaistu, käytä apua kommenttiosassa.
Nyt olemme tehneet ensimmäisen projektimme PIC-mikrokontrollerilla ja vahvistaneet tuotoksen simulointiohjelmistolla. Mene ja säädä ohjelman ympärillä ja tarkkaile tuloksia. Kunnes tapaamme seuraavassa projektissamme.
Ohh odota!
Seuraavassa projektissamme opimme, kuinka saada tämä toimimaan todellisen laitteiston kanssa. Tätä varten tarvitsemme seuraavat työkalut pitämään ne valmiina. Siihen saakka HAPPY OPPING !!
- PicKit 3
- PIC16F877A IC
- 40-napainen IC-pidike
- Täydellinen lauta
- 20MHz Crystal OSC
- Naaras- ja urospuoliset Bergstick-nastat
- 33pf kondensaattori - 2Nos
- 680 ohmin vastus
- LED mikä tahansa väri
- Juotossarja.