Ohjelmoida mikrokontrolleri C-kielellä. Opetusohjelma PIC-ohjainten ohjelmointiin aloittelijoille (E.A. Korabelnikov, 2008). MPLAB C -kääntäjän asennus

Lopuksi, tänään meillä on aikaa esitellä teille toinen mikro-ohjainperhe - nämä ovat mikrokontrollereita KUVA.

Nämä mikro-ohjaimet ovat myös hyvin tunnettuja, niitä on asennettu moniin laitteisiin ja ne ovat pitkään herättäneet suurta kiinnostusta radioamatöörien keskuudessa.

Tämän perheen kehittäjä on yritys Mikrosiru, joka on myös erittäin kuuluisa ja sen tuotteilla on kysyntää kaikkialla maailmassa.

Tämän sarjan ohjainsarjan opiskelu on erittäin vaikea kysymys, aloitin tämän jo kauan sitten, mutta sain käsiin vasta nyt. Olen viime aikoina hieman nopeuttanut PIC-mikrokontrollerien opiskelua pyyntöjesi ansiosta ryhmissä ja chateissa, joihin en voinut olla vastaamatta.

Siksi huomautan, että ohjelmoimme PIC MK:n C-kielellä. Päätämme hieman myöhemmin, minkä ohjelmointiympäristön ja kääntäjän valitsemme, mutta sillä välin meillä on tällä oppitunnilla lyhyt esittely itse ohjaimista, niiden arkkitehtuuri ja lajikkeet.

Esimerkiksi AVR-ohjaimet, joiden kanssa työskentelemme edelleen, ovat 8-bittisiä, kun taas tutkimamme STM-ohjaimet ovat 32-bittisiä.

PIC-ohjaimet jaetaan myös bittisyvyyden mukaan.

Ensimmäinen linja ovat 8-bittisiä PIC-ohjaimia. Niiden mallien nimet alkavat etuliitteellä PIC10/PIC12/PIC16.

Tämä linja on myös jaettu 3 perheeseen.

1. PERUSTASO— tämä arkkitehtuuri on PIC10-ohjaimissa. Se eroaa tehokkaammista sarjoista nastojen lukumäärällä (6 - 28) ja alhaisella hinnalla.

2. KESKIALUJA— PIC12/PIC16-mikro-ohjainytimillä on tämä arkkitehtuuri. Tämän sarjan nastojen määrää on lisätty (6:sta 64:ään), ne ovat hieman kalliimpia, mutta BASELINE-sarjan tukemien 35 konekäskyn lisäksi niissä on 14 lisäohjetta (optimoitu C-kielen kääntäjälle) . Lisäksi tämä sarja on lisännyt tuottavuutta 50%, niillä on syvempi ja parempi laitteistopino, lisääntynyt muistikapasiteetti ja joitain muita iloja, joihin tutustumme myöhemmin, koska todennäköisesti aloitamme mikrokontrolleriohjelmoinnin opiskelun tämä sarja KUVA.

3. 8-bittiset PIC18-mikro-ohjaimet- Tämä on parannettu sarja ohjaimia, aluksella on monia muita oheislaitteita, nastojen määrä 18-100, suorituskyky 16 MIPS, tuki NanoWatt-teknologialle, ohjelmoitavan generaattorin läsnäolo.

Toinen linja- Nämä ovat 16-bittisiä ohjaimia KUVA. Niiden etuliitteenä on PIC24F ja PIC24H. Nämä ovat jo tehokkaampia ohjaimia. Toisin kuin ensimmäisellä rivillä, koneen komentoa ei enää suoriteta generaattorin neljällä kellojaksolla, vaan kahdella. Lisäksi oheislaitteita on entistä laajempi väylätyyppien, suoran pääsyn DMA-muistiin (PIC24H:lle) ja laajennettu ohjesarja. On myös monia muita ominaisuuksia.

Kolmas rivi- Nämä ovat 32-bittisiä ohjaimia. Niiden etuliite on jo PIC32. Tällaisten ohjaimien kellotaajuus on jopa 120 MHz, ja uudessa MZ-sarjassa - jopa 200 ja jopa korkeampi. Esimerkiksi minulla on kehityskortti, johon on asennettu PIC32MZ2048EFH064-ohjain, jonka kellotaajuus on 252 megahertsiä. Myös tässä ydinsuorituskykyä on parannettu entisestään. Tämä perhe on rakennettu MIPS32®-ytimeen, jolle on korkean suorituskyvyn lisäksi ominaista myös alhainen energiankulutus.

Yleisesti ottaen nämä ovat nykyisten PIC-ohjaimien lyhyet ominaisuudet. Jos otamme sen nimellä, niin siellä on monia nimiä, jokaiseen makuun, kuten sanotaan.

Aivan kuten tarkastelemamme AVR- ja STM32-ohjaimet sekä harkitsemamme, PIC-ohjaimet toimivat suunnilleen samalla tavalla. Ohjelma kirjoitetaan, kootaan ohjaimen aritmeettis-loogiselle laitteelle ymmärrettäväksi konekoodiksi, ladataan (flashed tai ladataan) ohjaimeen ja sitten varmistetaan toiminta tietyn algoritmin mukaan. Näiden ohjaimien vilkkumiseen käytetty päärajapinta on ICSP, suunniteltu piirin sisäiseen ohjelmointiin. Opimme tuntemaan sen tarkemmin, kun käytämme näitä ohjaimia.

Katsotaanpa hieman muistin organisointia PIC-ohjaimissa. Koska aloitamme PIC-perheen tutkimisen yksinkertaisemmilla 8-bittisillä (periaatetta yksinkertaisesta monimutkaiseen ei ole kumonnut kukaan), tarkastellaan tämän sarjan muistiorganisaatiota.

Katsotaan ensin ohjaimen lohkokaaviota MK:n esimerkillä PIC16F84A(klikkaa kuvaa suurentaaksesi kuvan)

Vasemmassa yläkulmassa näkyy heti FLASH-muistimoduuli, johon ohjainohjelma (firmware) yleensä on tallennettu. Ja oikeassa yläkulmassa näemme EEPROM-muistin, jota käytetään jo tietojen tallentamiseen. Nämä kaksi muistityyppiä ovat haihtumattomia, eikä niitä tyhjennetä, kun ohjain on sammutettu ja nollattu. Mutta tämä muisti ei ole nopea, joten ohjelman käynnistyessä koodi jaetaan RAM-muistiin (RAM), joka on jo nopea ja on tarkoitettu ohjaimen toimintaan käytön aikana. Siksi tarkastelemme nyt tätä muistoa hieman yksityiskohtaisemmin.

PIC-ohjaimen RAM on jaettu ohjelmamuistiin ja datamuistiin.

Näin ohjaimen ohjelmamuisti on järjestetty PIC16F84A

Tämän sarjan mikrokontrollereissa on ohjelmalaskuri, joka pystyy osoittamaan 8K x 14 sanaa ohjelmamuistia ja 14-bittinen ohjelmamuistin tietoväylä. Koko ohjelmamuisti on jaettu neljään 2 kilosanan sivuun (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh). No, tämä on yleistä tietoa, joten niille ohjaimille, joilla on pieni muisti, näiden sivujen välillä liikkuminen johtaa sykliseen osoitteeseen. Siksi meidän on tiedettävä ohjelmoitavan ohjaimen muistin koko. Yleensä ohjelmamuisti koostuu ohjelmalaskurista, useiden tasojen pinosta, muistista keskeytysvektorien tallentamista varten ja sisäisestä ohjelmamuistista.

Tutustumme myös hieman tietojen tallennusta varten varatun RAM-muistin järjestämiseen.

Tietomuisti on jaettu yleisrekistereihin ja erikoisrekistereihin. Katsotaan kuinka ohjaimen datamuisti on järjestetty PIC16F84A

Special Purpose Registers (SFR) ovat rekistereitä, jotka on suunniteltu tallentamaan tarkasti määrättyjä arvoja ja joilla on tietyt nimet. Opimme tuntemaan ne vähitellen, kun kirjoitamme lähdekoodia, joka hyödyntää niitä laajasti.

Yleiskäyttöiset rekisterit (GPR) ovat muistisoluja, joilla on vain osoitteita ja jotka on suunniteltu tallentamaan mitä tahansa tietoa.

Myös yllä olevasta kuvasta näemme, että ohjaimemme datamuisti on jaettu 2 sivuun (tai pankkiin), joiden välillä siirtyminen tapahtuu asettamalla tietyt bitit rekisteriin TILA. Siksi tämä rekisteri on molemmissa pankeissa ja voimme käyttää sitä milloin tahansa muuttaaksemme nykyistä muistisivua.

Osoittaminen voi olla joko suoraa, epäsuoraa tai suhteellista, kun osoite mitataan suhteessa nykyiseen osoitteeseen. Emme ehkä tutustu tähän, koska tämä tehtävä syntyy ohjelmoijille, jotka kirjoittavat ohjelmia assemblerissä.

Näin ollen jokaisessa ohjaimessa on muistin lisäksi monia muita mielenkiintoisia asioita, mukaan lukien I/O-portit. PIC-ohjaimemme eivät ole poikkeus. Katsotaanpa ohjaimen jalkojen tarkoitusta PIC16F84A

Tässä ohjaimessa on kaksi porttia - portti A ja portti B. Portista A tuodaan ulos 5 jalkaa - RA0-RA4 ja portista B - kaikki 8 jalkaa RB0-RB7.

Myös portin jaloilla voi olla muita tarkoituksia riippuen siitä, miten ne määritetään. Esimerkiksi nasta 6 tai RB0 voi milloin tahansa muuttua nastaksi ulkoisten keskeytysten sieppaamiseen, ja nastasta 3 tai RA4 voi tulla nasta, jolla kellotetaan ajastin ulkoisesta generaattorista.

PIC MK:n kellotus voidaan suorittaa myös joko ulkoisesta oskillaattorista tai kvartsiresonaattorista, sisäisestä vastuksesta, ja on myös useita muita vaihtoehtoja, joita kaikki tämän perheen ohjaimet eivät tue. Käytännössä käytetään yleensä kelloa kvartsiresonaattorista. Todennäköisesti noudatamme tätä perinnettä myös tulevissa tutkimuksissamme.

Luulen, että tähän päätämme tutustumisemme PIC-ohjaimiin. Tutustuminen osoittautui lyhyeksi, mutta ensimmäistä kertaa tämä riittää meille. Kohtaamme enemmän salattua tietoa, kun kirjoitamme ohjelmiamme. Joten odota innolla seuraavia tunteja, jotka lupaavat olla erittäin mielenkiintoisia. Tutustumme ensin ympäristön asennukseen ja kääntäjään, tutkimme kuinka työskennellä niiden kanssa, mitä ohjelmoinnin vivahteita on erilaisten oheislaitteiden asetuksissa sekä sen kanssa työskentelyssä.

Katso OPETUSVIDEO (klikkaa kuvaa)

Viestin näyttökerrat: 9 304



  • kellotaajuus - 20 MHz
  • 4 täyttä 8-bittistä I/O-porttia
  • sarja- ja rinnakkaisportti
  • I2C väylä
  • useita ajastimia
  • vertailumoduulit, vertailijat
  • pulssinleveysmodulaatio (PWM) -moduuli
  • 10-bittinen ADC

Tämä MK on laajalle levinnyt ja sitä löytyy usein vähittäismyynnistä. Jos olet Moskovassa, sinun tulee mennä "Chip and Dip" -sivustolle - sieltä voit ostaa sen noin 350 ruplaa. Suosittelen ostamaan sen DIP-paketissa (leveä), onneksi sellainen on. Tämä on paras vaihtoehto ensimmäisissä kokeissa ja testeissä. Jos ostat sen yhtäkkiä PLCC-paketissa, sen käytössä tulee olemaan koko joukko ongelmia - litteiden 1,27 mm:n johtojen jako ei ole kätevin vaihtoehto.

Joten päätimme valita MK: n. Tämän artikkelin tiedostoista löydät täydellisen oppaan tälle MK:lle. Nyt on selvää, mitä ostaa, mutta kirjoitetaan nyt ohjelma, jotta olisi selvää, mitä sillä seuraavaksi tehdään ja miten se "ommellaan" tähän MK: hen.

Käynnistämme MPLAB-ohjelman (jonka asensimme aiemmissa artikkeleissa). Valitse valikon kohta Projekti -> Ohjattu projekti. Napsauta avautuvassa ikkunassa Edelleen.

Valitse käytettävissä olevien MCU:iden avattavasta luettelosta PIC16F877. Klikkaus Edelleen.

Täällä meidän on valittava kääntäjä, joka käsittelee ohjelmakoodimme. Sinun on valittava kohde HI-TECH PICC Toolsuite avattavassa luettelossa Active Toolsuite. Tämä on sama C-kielen kääntäjä, jonka asensimme edellisessä artikkelissa. Klikkaus Edelleen.

Anna projektille nimi, esim. TestPIC ja määritä projektihakemisto. Tässä on kaksi temppua. Ensinnäkin MPLAB ei luo erillistä kansiota itse projektille ja sijoittaa kaikki tiedostot suoraan määrittämääsi hakemistoon. Toiseksi ja ehkä tärkein, MPLAB ei ymmärrä venäläisiä kirjaimia polun nimessä. Se luo projektin, mutta ohjelman ollessa käynnissä, varsinkin tiedostoja tallennettaessa ja avattaessa, ilmaantuu sellaisia ​​"häiriöitä", että jäät pitkään miettimään, mikä on vialla. Siksi projektikansion polku ei saa sisältää venäläisiä nimiä. Klikkaus Edelleen.

Täällä voit lisätä projektiin valmiita tiedostoja, mutta emme vielä tarvitse tätä vaihtoehtoa. Klikkaus Edelleen.

Tässä kaikki on mielestäni selvää. Klikkaus Valmis.

Hanke on valmisteltu, mutta se on vielä tyhjä. Klikkaus Tiedosto -> Uusi. Näkyviin tulee uusi ikkuna otsikolla Nimetön. Valitse seuraavaksi Tiedosto -> Tallenna nimellä.... Anna tiedostonimi, esim. TestPIC.c ja siirry projektikansioosi. Muista valita valintaruutu Lisää tiedosto projektiin.

Nyt asetamme seuraavan koodin alla TestPIC.c-projektitiedoston avoimeen ikkunaan (koko projekti löytyy tämän artikkelin tiedostoista).

#sisältää CONFIG(0x03F72); int i = 0; mitätön main( mitätön) ( T0IE=0; GIE=0; TRISB=0; PORTB=0; sillä aikaa(1==1) ( PORTB++; varten(i = 0; i

Ihmettelet todennäköisesti, mikä tämän koodin tulos on. Tapahtuu seuraavaa: MK:hen on kytketty 8 LEDiä. Kun kytket virran päälle, LED-valot alkavat vilkkua "aallon" muodossa (tämä on parempi nähdä, onneksi niitä ei ole niin paljon jäljellä). Tarkastellaanpa itse koodia tarkemmin.

Ensin tulee tuttu include-lause, joka sisältää otsikkotiedoston ja kaikki tarvittavat makromääritykset. Seuraavaksi tulee toinen esiprosessoridirektiivi __CONFIG, joka sisältää heksadesimaaliluvun, joka kuvaa MK:n toimintaa kuvaavien erikoisvaihtoehtojen ja ominaisuuksien joukkoa. Palaamme tähän kohtaan myöhemmin tässä artikkelissa. Siirrytään suoraan main()-funktion alkuun - sisääntulokohtaan ohjelman varsinaiseen suoritettavaan koodiin. Seuraavaksi tulee operaatio jollain T0IE:llä. Tämä rivi tarkoittaa erityisesti, että ajastimen keskeytykset on poistettava käytöstä, kun MK on käynnissä. TOIE on pic.h-tiedostossa #define-komennolla määritellyn erikoisrekisterin osoite, joka on vastuussa tästä toiminnasta (ja yleensä, jos koodissa näkyy isoilla kirjaimilla kirjoitettuja outoja muuttujia, joita ei ole aiemmin määritetty koodissa , niin nämä ovat luultavasti MK-rekisterien symbolisia nimiä). Rivi GIE=0; - estää kaikkien keskeytysten käsittelyn maailmanlaajuisesti koko mikro-ohjaimessa. Emme käytä keskeytyksiä yksinkertaisessa esimerkissämme, koska... Emme yksinkertaisesti tarvitse niitä.

TRISB=0; - tarkoittaa, että I/O-portti B PIC16F877 MK toimii ulostulona, ​​ts. Voit nyt kytkeä siihen kuorman, joka voi syöttää 0 tai +5 V MK:sta (tämä kuorma on LED-valoja). Seuraavalla rivillä laitetaan numero 0 porttiin B - ts. Kaikilla tämän portin nastoilla, jotka on määritetty lähtöä varten, on nollajännite. Seuraavaksi tulee while-operaattorin rakenne, ja sellaisella parametrilla, että jotkut ohjelmoijat, jotka ovat tottuneet kirjoittamaan C:llä PC:lle, hämmästyvät hieman - sanotaan, että tämä on loputon silmukka, ohjelma jäätyy. Mutta tämä on juuri sitä mitä tarvitsemme. MK ei voi tehdä mitään, hänen on jatkuvasti tehtävä jotain. Siksi MK:lle ohjelman suorittaminen loputtomassa silmukassa on elintärkeää. Sitten tulee operaattori, joka kasvattaa 1:llä portissa B olevaa numeroa. Selvitetäänpä vähän. Jos kirjoitat PORTB=0xFF; - silloin kaikissa portin pinneissä on 1. Jos PORTB=0x0; - kaikille 0. (Mielestäni tämän pitäisi olla selvää). For loop -operaattorin rakentaminen ei ilmeisesti tee mitään "älykästä" työtä ja sitä tarvitaan vain aikaviiveen järjestämiseen. Jos poistamme tämän koodin osan, emme yksinkertaisesti huomaa, kuinka LEDien jännite muuttuu (se on hyvin nopeasti).

Mitä he tarkoittavat? Mennään järjestyksessä.

  • Oskillaattori - HS (tarkoittaa, että suurtaajuista kvartsiresonaattoria käytetään kellogeneraattorina)
  • WatchDog Timer - Off (erikoisvaihtoehto, jos se on käytössä, mikro-ohjain nollautuu ajoittain [siirry main() alkuun] välttääkseen MK:n jäätymisen. Emme tarvitse tätä ominaisuutta.)
  • Käynnistysajastin - Päällä (jos päällä, MK on nollattu, kunnes syöttöjännite saavuttaa vaaditun kynnystason)
  • Brown Out Detect - On (nollaa MK:n, jos syöttöjännite laskee tietyn tason alapuolelle)
  • Pienjänniteohjelma - Ei käytössä (tässä tapauksessa kiellemme MK:n pienjännitteisen ohjelmoinnin käytön, koska käytämme tavallista ohjelmoijaa [katso seuraavat artikkelit])
  • Flash-ohjelman kirjoitus - käytössä (sallimme mahdollisuuden kirjoittaa ohjelmia Flash-muistiin)
  • Data EE Read Protect - Off (salli tietojen ja MK:n EEPROM-muistin lukeminen)
  • Code Protect - Off (poista koodisuojaus MK:sta. Jos käytössä, ohjelmaa ei voi lukea MK:sta. Tämä on välttämätöntä, jos haluat suojata ohjelmaasi hakkerointiyrityksiltä. Emme tarvitse tätä ominaisuutta vielä .)

On aika koota koodi. Juosta Projekti -> Rakenna kaikki. Tämä aloittaa projektin kokoamisen ja tämän kaltainen ikkuna avautuu upealla merkinnällä BUILD SUCCEEDED -tekstin lopussa.

Nyt, jos katsot projektikansioamme, sinun pitäisi nähdä siellä tiedosto TestPIC.hex- kaiken työmme tulos. Se sisältää erityistä koodia, joka on luotu kirjoituksistamme C-kielellä ladattavaksi MK-muistiin. Jotta voimme jatkaa, tarvitsemme ohjelmoijan, jonka avulla kirjoitamme ohjelmamme MK:hen. On aika siirtyä seuraavaan artikkeliin, jossa keskustellaan oman ohjelmoijan tekemisestä.

© Ivanov Dmitry
huhtikuuta 2007

PIC-ohjaimet ovat edelleen suosittuja, kun halutaan luoda edullinen, kompakti, vähän virtaa käyttävä järjestelmä, joka ei vaadi korkeita ohjausvaatimuksia. Näiden ohjaimien avulla voit korvata laitteistologiikan joustavalla ohjelmistolla, joka on vuorovaikutuksessa ulkoisten laitteiden kanssa hyvien porttien kautta.

Pienoiskokoiset PIC-ohjaimet sopivat muuntimien rakentamiseen sarjatiedonsiirtoliitäntöihin, "tietojen vastaanotto-käsittely-lähetys" -toimintojen toteuttamiseen sekä automaattisten ohjausjärjestelmien yksinkertaisiin säätimiin.

Microchip jakelee MPLAB:ia, ilmaista integroitua ohjelmien muokkaus- ja virheenkorjausympäristöä, joka kirjoittaa binaaritiedostoja PIC-mikro-ohjaimiin ohjelmoijien kautta.

MPLAB:n ja Matlab/Simulinkin vuorovaikutus mahdollistaa ohjelmien kehittämisen PIC-ohjaimille Simulink-ympäristössä - dynaamisten järjestelmien graafista mallintamista ja analysointia. Tässä työssä käsitellään PIC-ohjaimen ohjelmointityökaluja: MPLAB, Matlab/Simulink ja PIC-KIT3 ohjelmoija seuraavissa osioissa.

Pienoismallin PIC-ohjaimen PIC12F629 ominaisuudet
Integroitu kehitysympäristö MPLAB IDE
Matlab/Simulinkin yhdistäminen MPLABiin
PIC-KIT3-ohjelmoijan liittäminen

Miniature PIC -ohjaimen ominaisuudet

PIC12xxx-perhe sisältää ohjaimia pienessä 8-nastaisessa paketissa, jossa on sisäänrakennettu kellogeneraattori. Ohjaimissa on RISC-arkkitehtuuri ja ne varmistavat useimpien prosessorikomentojen suorittamisen yhdessä konesyklissä.

Esimerkkinä alla on edullisen, kompaktin 8-bittisen PIC12F629-ohjaimen ominaisuudet, jossa on monitoimiportit, pieni kulutus ja laaja tehoalue.

Arkkitehtuuri: RISC
Syöttöjännite VDD: 2,0 V - 5,5 V (< 6,5В)
Kulutus:
- <1,0 мА @ 5,5В, 4МГц
- 20 µA (tyyppi) @ 32 kHz, 2,0 V
- <1,0 мкА (тип) в режиме SLEEP@2,0В
Tehohäviö: 0,8W
Monitoimiset I/O-kanavat: 6/5
GPIO-porttien suurin lähtövirta: 125 mA
Virta ohjelmoitavien sisäisten porttien vetovastusten kautta: ≥50 (250) ≤400 µA @ 5,0 V
Ohjaimen koko: 8
Kellotaajuus ulkoisesta oskillaattorista: 20 MHz
Koneen sykliaika: 200 ns
Kellotaajuus sisäisestä RC-oskillaattorista: 4 MHz ±1 %
Koneen sykliaika: 1 µs
FLASH-ohjelmamuisti: 1K
Poisto-/kirjoitusjaksojen määrä: ≥1000
RAM-tietomuisti: 64
EEPROM-tietomuisti: 128
Pyyhkimis-/kirjoitusjaksojen määrä: ≥10K (-40оС ≤TA≤ +125 оС)
Laitteiston erikoisrekisterit: 16
Ohjelista: 35 käskyä, kaikki käskyt suoritetaan yhdessä konesyklissä,
lukuun ottamatta hyppykomentoja, jotka suoritetaan kahdessa jaksossa
Laitteistopino: 8 kerrosta
Ajastin/laskuri TMR0: 8-bittinen esiskaalaimella
Ajastin/laskuri TMR1: 16-bittinen esiskaalaimella

Lisäominaisuuksia:
Power On Reset (POR)
Nollaa ajastin (PWRT-generaattorin käynnistyksen odotusajastin (OST)
Alijännitteen nollaus (BOD)
Watchdog ajastin WDT
Multipleksoitu lähtö -MCLR
Keskeytysjärjestelmä signaalin tason muuttamiseksi tuloissa
Yksilöllisesti ohjelmoitavat vetovastukset jokaiselle sisääntulolle
Ohjelmoitava sisääntulon suojaus
SLEEP Low Power Mode
Kellogeneraattorin toimintatilan valinta
ICSP In-Circuit -ohjelmointi kahdella nastalla
Neljä mukautettua solutunnusta

Rajoita käyttölämpötilaa E-versiolle (laajennettu alue) -40°C - +125°C;
Varastointilämpötila -65°C - +150°C.

CMOS-ohjaintekniikka tarjoaa täysin staattisen toimintatilan, jossa kellogeneraattorin pysäyttäminen ei johda sisäisten solmujen loogisten tilojen menettämiseen.
PIC12F629-mikro-ohjaimessa on 6-bittinen GPIO-portti. Yksi GPIO-portin GP3-nasta toimii vain tulona, ​​loput nastat voidaan konfiguroida toimimaan sekä tulona että lähtönä. Jokaisessa GPIO-nastassa on oma keskeytyksen estobitti tulojen signaalitason muuttamiseksi sekä sisäinen vetovastuksen aktivointibitti.

Integroitu kehitysympäristö MPLAB IDE

MPLAB IDE - ilmainen integroitu ohjelmistokehitysympäristö PIC-mikro-ohjaimille sisältää työkaluja ohjelmien luomiseen, muokkaamiseen, virheenkorjaukseen, kääntämiseen ja linkittämiseen sekä konekoodin kirjoittamiseen mikrokontrollereihin ohjelmoijien kautta.

MPLAB:n ilmaiset versiot (mukaan lukien MPLAB 8.92) on tallennettu Microchip-verkkosivuston LATAA ARKISTO -osioon.

Projektin luominen

Esimerkki PIC-ohjainohjelmaprojektin luomisesta MPLAB-ympäristössä sisältää seuraavat vaiheet.

1. Soita projektipäällikölle.

2. PIC-mikro-ohjaimen tyypin valinta.


3. Valitse kääntäjä, esimerkiksi Microchip MPASM for assembler.


4. Valitse polku projektihakemistoon (Browse...-näppäin) ja anna projektin nimi.

5. Sinun ei tarvitse yhdistää tiedostoja projektiin Project Wizard → Step Four -ikkunassa. Tämä voidaan tehdä myöhemmin aktiivisen projektin sisällä. Seuraava-näppäin avaa seuraavan ikkunan.

6. Projektin luomisen viimeistely (Finish-näppäin).

FirstPrMPLAB-projektin luomisen tuloksena MPLAB-rajapinta saa kuvan 1 mukaisen muodon. 1.


Riisi. 1. MPLAB v8.92 -ympäristöliittymä ja projektimalli.

Ohjelmatiedoston luominen
Ohjelma voidaan luoda millä tahansa tekstieditorilla. MPLABissa on sisäänrakennettu editori, joka tarjoaa useita etuja, esimerkiksi nopean lähdetekstin leksikaalisen analyysin, jonka seurauksena varatut sanat, vakiot, kommentit ja käyttäjän määrittelemät nimet korostuvat tekstissä.

Ohjelman luominen MPLABissa voidaan tehdä seuraavassa järjestyksessä.

1. Avaa ohjelmaeditori: valikko → Tiedosto → Uusi. Ohjelmalle annettiin alun perin nimi Untitled.

2. Kirjoita tai kopioi ohjelma esimerkiksi assemblerissä.


Riisi. 2. Esimerkki yksinkertaisimmasta ohjelmasta (assemblerissa) signaalien lähettämiseksi ohjainporttien GP0, GP1, GP2, GP4, GP5 kautta maksimitaajuudella.

1:n kirjoittaminen TRISIO-rekisteribittiin asettaa vastaavan lähtöpuskurin kolmanteen tilaan, jolloin GP-portti voi toimia vain tulona. TRISIO:n asettaminen nollaan määrittää GP-portin toimimaan lähtönä.

Huomautus. PIC12F629-spesifikaation mukaan mikro-ohjaimen GP3-portti toimii vain tulona (vastaavaa TRISIO-rekisterin bittiä ei nollata - se on aina 1:ssä).

TRISIO- ja GPIO-rekisterit sijaitsevat muistialueen eri pankeissa. Pankkivaihdon suorittaa STATUS-rekisterin 5. bitti.

Mikä tahansa assembler-ohjelma alkaa org-ohjeella ja päättyy loppukäskyyn. Metkan goto-siirtymä varmistaa ohjelman syklisen toteutuksen.

Ohjelma (kuva 2) käyttää seuraavaa merkintää.

LIST-direktiivi - säätimen tyypin määrittäminen
__CONFIG-direktiivi - ohjaimen konfigurointibittien arvojen asettaminen
equ-direktiivi - numeerisen arvon määrittäminen
Direktiivi org 0 - aloita ohjelman suoritus osoitteesta 0
bsf-komento - asettaa määritetyn rekisterin bitin arvoon 1
bсf-komento - nollaa määritetyn rekisterin bitin nollaan
movlw-komento - kirjoittaa vakion W-rekisteriin
movwf-komento - kopioi W-rekisterin sisällön määritettyyn rekisteriin
goto komento - tarjoaa siirtymisen ilman ehtoa riville, jossa on otsikko
Loppukäsky - ohjelman loppu

Tarvittavan mikrokontrollerikokoonpanon asettaminen
Mikrokontrollerin PIC12F629 konfiguraatio riippuu konfigurointisanan (2007h) asetuksista, jotka voidaan asettaa ohjelmassa __CONFIG-direktiivin kautta.

Suoraan tai MPLAB-ikkunan kautta: menu → Configure → Configuration Bits:

Missä:

Bittinen 2-0- FOSC2:FOSC0. Kellon valinta
111 - Ulkoinen RC-generaattori. Yhdistetään pin GP5:een. GP4 toimii kuten CLKOUT
110 - Ulkoinen RC-generaattori. Yhdistetään pin GP5:een. GP4 toimii I/O:na
101 - Sisäinen RC-oskillaattori 4 MHz. GP5 toimii I/O:na. GP4 - kuten CLKOUT
100 - Sisäinen RC-oskillaattori 4MHz. GP5 ja GP4 toimivat I/O:na
011 - EC-generaattori. GP4 toimii I/O:na. GP5 - kuten CLKIN
010 - HC-generaattori. Resonaattori on kytketty GP4- ja GP5-liittimiin
001 - XT-generaattori. Resonaattori on kytketty GP4- ja GP5-liittimiin
000 - LP-generaattori. Resonaattori on kytketty GP4- ja GP5-liittimiin

Bittinen 3- WDTE: Watchdog Timer -asetus
1 - WDTE käytössä
0 - WDTE pois käytöstä

Watchdog-ajastin suojaa mikro-ohjainta jäätymiseltä - se käynnistää ohjelman uudelleen tietyn ajan kuluttua, jos ajastinta ei ole nollattu. Ajastinjakso asetetaan OPTION_REG-rekisterissä. Watchdog-ajastimen nollaus johtuu CLRWDT-komennosta.

Bitti 4- PWRTE: Käynnistysajastimen käyttöönotto:
1 - PWRT pois käytöstä
0 - PWRT käytössä

Ajastin pitää mikro-ohjaimen nollaustilassa, kun VDD-virta kytketään.

Bitti 5- MCLR: GP3/-MCLR-lähdön toimintatilan valinta
1 - toimii kuten -MCLR
0 - toimii GP3 I/O-porttina

Bitti 6- BODEN: Ota nollaus käyttöön, kun syöttöjännite laskee (yleensä< 2.0В)
1 - BOR-nollaus käytössä
0 - BOR-nollaus on kielletty, ajastin kytkeytyy automaattisesti päälle

Kun BOR-nollaus on käytössä, PWRT-ajastin käynnistyy automaattisesti

Bitti 7- .CP: Ohjelmamuistin suojausbitti, jotta ohjelmoija ei lue sitä
1 Suojaus poistettu käytöstä
0 Suojaus käytössä

Kun suojaus kytketään pois päältä, kaikki ohjelmamuisti tyhjennetään

Bitti 8- .CPD: EPROM-tietomuistin suojabitti
1 Suojaus poistettu käytöstä
0 Suojaus käytössä

Kun suojaus on poistettu käytöstä, kaikki tiedot poistetaan

Bitti 11-9- Ei käytössä: luetaan "1".

Bitti 13-12- BG1:BG0. Low Power Reset -kalibrointibitit
00 - kalibroinnin alaraja
11 - ylempi kalibrointiraja


Ohjelman lisääminen projektiin

Esimerkki ohjelman lisäämisestä projektiin on esitetty (Kuva 3).


Riisi. 3. FirstPrMPLAB.asm-ohjelman lisääminen FirstPrMPLAB.mcp-projektiin

Kokoelma

Jos haluat luoda hex-tunnisteella varustetun binaaritiedoston mikro-ohjaimen laiteohjelmiston päivittämistä varten, sinun on käännettävä projekti. Kääntäminen aloitetaan valikkokomennolla → Projekti → Rakenna kaikki. Kokoamistulokset näkyvät Output-ikkunassa (kuva 1). Jos ohjelmassa ei ole virheitä, kääntäjä näyttää viestin onnistuneesta kääntämisestä: BUILD SUCCEEDED, käynnistys HEX-tiedosto löytyy työhakemistosta:

Ohjelman virheenkorjaus

Ohjelman virheenkorjaus MPLAB IDE:ssä voidaan tehdä käyttämällä MPLAB REAL ICE -laitteistoemulaattoria tai MPLAB SIM -ohjelmistosimulaattoria. Jälkimmäinen käynnistetään kuvan mukaisesti. 4.


Riisi. 4. Yhteys MPLAB SIM -simulaattoriin ohjelman virheenkorjausta varten.

Kun debuggeri on käynnistetty, MPLAB SIM -välilehti ilmestyy Output-ikkunaan (kuva 1), jossa MPLAB näyttää nykyiset virheenkorjaustiedot. Debugger-komennot (kuva 5) aktivoituvat käynnistyksen jälkeen.


Riisi. 5. Debuggerin komennot.

Debuggerin komennot:

Suorita - Ohjelman jatkuva suoritus keskeytyskohtaan asti, jos sellainen on asetettu.
Pysäytä - Pysäytä ohjelma nykyisessä suoritusvaiheessa.
Animate - Animaatio jatkuvasta ohjelman suorittamisesta.
Step Into - Suorita vaiheittain (Puhelut suoritetaan yhdessä vaiheessa).
Step Over - Suorita yksi vaihe kerrallaan, mukaan lukien kutsukomennot.
Reset - Ohjelman ensimmäinen asennus. Siirrä osoitin ensimmäiseen komentoon.
Katkopisteet - Näytä keskeytyspisteiden luettelo. Listan käsittely.

Kun ohjelmaa suoritetaan vaiheittain, nykyinen vaihe on korostettu nuolella (kuva 6). Jatkuva ohjelman suorittaminen pysäytetään pysäytyskomennolla tai kun ohjelma saavuttaa keskeytyskohdan. Keskeytyskohta asetetaan/poistetaan ohjelmariviltä kaksoisnapsauttamalla.
Kuvassa on esimerkki asennusohjelmasta, joka muuttaa ohjainporttien tilaa maksiminopeudella. 6 (oikealla). Ohjelma siirtää tiedot b’10101010’ ja b’01010101’ GPIO-porttirekisteriin. Koska kaikki GPIO-rekisterin bitit eivät välitä dataa ohjainportteihin, vaan vain 0,1,2,4 ja 5, GPIO-rekisterin tila (kuva 6, vasen) eroaa seuraavista arvoista: b'00100010' ja b'00010101'.


Riisi. 6. Ohjaimen erikoisrekisterien tila ohjelman suoritushetkellä (vasemmalla) ja suoritettavan ohjelman vaihe vaiheelta (oikealla).

Vianetsintäprosessin aikana voit seurata rekisterien, muuttujien ja muistin tilaa vastaavista ikkunoista, jotka avautuvat päävalikon Näytä-osiossa. Vianetsintäprosessin aikana voit tehdä muutoksia ohjelmakoodiin, rekisterien sisältöön, muistiin ja muuttaa muuttujien arvoja. Koodin vaihtamisen jälkeen sinun on käännettävä ohjelma uudelleen. Rekistereiden sisällön, muistin ja muuttujien arvojen muuttaminen (View-osion ikkunat: Special Function Register, File Register, EEPROM, Watch) ei vaadi uudelleenkääntämistä.

Mikrokontrollerimallin porttien tulosignaalit voidaan asettaa Debugger → Stimulus -osiossa. Porttisignaalien asetetut tilat on sidottu virheenkorjausaikaan (jaksoihin).

Joskus ohjelman suorittamisen tulokset virheenkorjaustilassa eivät vastaa saman ohjelman suorittamista todellisessa ohjaimessa, esimerkiksi ohjelman debuggeri (kuva 6) ilman movlw 0x07 ja movwf cmcon käskyjä näyttää, että lähdöt GP0 ja GPIO-rekisterin GP1 ei muutu - ne ovat nollatilassa, GPIO-rekisterin sisältö on vuorotellen yhtä suuri kuin 0x14 ja 0x20. Ohjain, joka suorittaa ohjelman ilman näitä ohjeita, näyttää kuitenkin oskilloskoopissa kaikkien viiden lähdön syklisen toiminnan: 0x15 ja 0x22, mukaan lukien GP0 ja GP1 (katso kuva 7).

Oskillogrammit ohjaimesta, joka suorittaa ohjelmajaksoja Fig. 6 (Metka... goto Metka) on esitetty kuvassa. 7.


Riisi. 7. Oskilogrammit PIC12F629-mikro-ohjaimen lähdön GP0 (vasemmalla) ja GP1 (oikealla) oskillogrammeista, jotka saavat virtaa sisäisestä 4 MHz:n RC-oskillaattorista. Ohjelma (kuva 6) generoi maksimitaajuussignaaleja kaikissa säätimen lähdöissä. 5,3 µs:n signaalijakson aikana suoritetaan 5 komentoa (6 konesykliä), GP0-signaalin amplitudi oskilogrammissa on 4,6 V, ohjelmoijan mittaama säätimen teho on 4,75 V.

Mikro-ohjaimen laiteohjelmisto

Jotta voit kirjoittaa ohjelman mikro-ohjaimeen (ohjaimen laiteohjelmisto), sinun on liitettävä mikro-ohjain integroituun MPLAB IDE:hen ohjelmoijan kautta. Yhteyden organisaatio näkyy alla kohdassa "PIC-KIT3-ohjelmoijan liittäminen".

Huomautus. PIC12F629-ohjaimessa on tehtaalla kalibrointivakio sisäisen kellogeneraattorin taajuuden asettamiseksi. Tarvittaessa se voidaan lukea ja palauttaa MPLAB:lla ohjelmoijan avulla.

Ohjelmoijan kanssa työskentelyä ja sen asetusten muuttamista koskevat komennot sijaitsevat MPLAB Programmer -valikossa. MPLAB:n ohjelmoijan tyyppi valitaan osiossa: menu → Ohjelmoija → Valitse ohjelmoija.


Riisi. 8. MPLAB-ympäristöön yhdistävän ohjelmoijan valitseminen.

Mikro-ohjaimen laiteohjelmisto ohjelmoijan kautta käynnistetään komennolla: menu → Ohjelmoija → Ohjelma. Viesti onnistuneesta laiteohjelmistosta näkyy kuvassa. 9.


Riisi. 9. Mikro-ohjaimen laiteohjelmiston käynnistäminen ja onnistuneen laiteohjelmiston näyttäminen.

Huomautus: Mikro-ohjaimen vilkkuessa PIC-KIT3-ohjelmoijan keltainen LED-valo vilkkuu.

Yhdistetään MATLAB/SIMULINK MPLABiin

Dynaamisessa järjestelmämallinnusjärjestelmässä Simulink (Matlab-sovellus) graafisella ohjelmointikielellä voit kehittää ohjelmia PIC-ohjainperheelle, jossa on ADC/DAC, laskurit, ajastimet, PWM, DMA, UART, SPI, CAN, I2C-liitännät jne. .

Esimerkki Simulink-ohjelmasta PIC-ohjaimelle on esitetty kuvassa. 10.


Riisi. 10. Esimerkki ohjelmasta graafisella ohjelmointikielellä PIC-ohjaimelle, joka suoritetaan Simulink dynaamisten järjestelmien mallinnusympäristössä.

Kehitystyökalujen ja PIC-ohjaimien ohjelmien vuorovaikutus Simulinkissä on esitetty kuvassa. yksitoista.


Riisi. yksitoista. Työkalujen rakenne riittävän PIC-ohjaimen mallin rakentamiseen graafisella ohjelmointikielellä.

Kehitysympäristön rakentamiseen tarvitaan seuraavat Matlab-komponentit:

Simulink
Reaaliaikainen Workshop Embedded Coder
Reaaliaikainen työpaja

Ja Microchip C -kääntäjä:

C30 PIC24-, dsPIC30- ja PIC33-ohjaimille
tai C32 PIC32-sarjan ohjaimille

Matlab-komponenttien asennus

Sivusto sisältää Simulink-kirjastot (dsPIC Toolbox) PIC-ohjaimille ja Matlab-versioille R2006a - R2012a:

Kirjaston lataaminen edellyttää rekisteröitymistä. Ohjelmat tukevat 100 mikro-ohjaimen toimintaa PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP-sarjoista.
Ilmaiset versiot toimivat Simulink PIC -ohjainmallien kanssa, joissa on jopa 7 I/O-porttia.

Asentaaksesi dsPIC Toolbox - PIC-ohjainlohkojen kirjaston Matlabille/Simulinkille tarvitset:

Lataa dsPIC Toolbox tarvittavalle Matlab-versiolle.
Pura zip-tiedosto kansioon, johon Simulink-lohkot asennetaan.
Käynnistä Matlab.
Aseta nykyinen Matlab-hakemisto kansioon, jossa on pakkaamaton tiedosto.
Avaa ja suorita tiedosto install_dsPIC_R2012a.m esimerkiksi valikkopainikkeella tai näppäimistön näppäimellä.

dsPIC-kirjastot ja esimerkit Simulink-malleista asennetaan nykyiseen Matlab-kansioon (kuva 12). Asennetut lohkot PIC-ohjainten mallintamiseen ovat saatavilla Simulink-kirjaston Embedded Target for Microchip dsPIC -osiossa (kuva 13).


Riisi. 12. Nykyisen hakemiston sisältö, kun asennus on suoritettu install_dsPIC_R2012a.m.


Riisi. 13. Asennetun kirjaston "Embedded Target for Microchip dsPIC" lohkot.

Simulink-mallin laatimiseksi yhdessä Matlabin ja MPLABin avulla sinun on asetettava polku MPLAB-hakemistoon tiedostoilla MplabOpenModel.m, MplabGetBuildinfo.m ja getHardwareConfigs.m polun Matlab-ympäristömuuttujassa korkeimmalla prioriteetilla:

>>

MPLAB C -kääntäjän asennus

MPLAB-kääntäjät sijaitsevat Microchipin verkkosivuilla (Download Archive → MPLAB C Compiler for PIC24 ja dsPIC DSC). C30-kääntäjän demoversion asentamiseksi sinun on ladattava se linkistä PIC24/dsPIC v3.25 (kuva 14) ja suoritettava vastaanotettu tiedosto mplabc30-v3.25-comboUpgrade.exe.


Riisi. 14. C-kääntäjäversiot (vasemmalla) ja sen asennustilat (oikealla).

Huomautus. Työ suoritettiin PIC24/dsPIC-kääntäjän C30-kääntäjän versiolla v3.25. Tarkastus osoitti, että seuraava versio v3.30 ei tue Matlab R2012a (dsPIC Toolbox) -mallien yhteistä kääntämistä ilman virheitä.

Asennus-exe-tiedosto luo uuden mplabc30-hakemiston, jossa on tiedostot osiossa c:\Program Files (x86)\Microchip\:


Riisi. 15. C30 MPLAB-kääntäjähakemistot.

Simulink-ohjelmointijärjestys PIC-ohjaimille

1. Luo työhakemisto ja kopioi *.mdl-esimerkit esimerkkiosiosta siihen (katso kuva 12).
2. Lataa Matlab. Aseta se työhakemistoosi.
3. Sisällytä polkuun korkeimman prioriteetin omaava Matlab-ympäristömuuttuja polku MPLAB:iin - c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\ hakemistoon:

>> polku("c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\",polku)
Huomautus: Jos käytät >>path-komentoa ilman argumentteja, polkumuuttuja näkyy komentoikkunassa. Voit poistaa polun polkumuuttujasta komennolla rmpath, esimerkiksi:

>>rmpath(" c:\Ohjelmatiedostot\Microchip\MPLAB IDE\Tools\MATLAB\")
4. Luo Simulink-malli PIC-ohjaimelle käyttämällä Embedded Target for Microchip dsPIC -kirjaston lohkoja (kuva 13), tai lataa valmis malli, esimerkiksi Servo_ADC.mdl.

Ohjaimen tyyppi, jolle Simulink-mallia kehitetään, valitaan Master > PIC -lohkon listasta (kuva 16, kuva 10), jonka tulee sisällyttää malliin.


Riisi. 16. Säätimen tyypin valinta mallin Master-lohkossa.

5. Tarkista mallin kokoonpanoasetukset: Valikko → Simulaatio → Konfigurointiparametrit . S-funktion kääntäjä dspic.tlc tulee määrittää Code Generation -osan System target file -syöttörivillä (kuva 17). Valitsemalla dspic.tlc määritetään kaikki muut mallin määritysparametrit, mukaan lukien vaihe ja integrointimenetelmä.


Riisi. 17. Valitse dspic.tlc S-funktion kääntäjä PIC-ohjainmalleille osiossa "päävalikko → Simulaatio → Konfigurointiparametrit → Koodin luominen".

6. Kääntäkää malli tmp_Servo_ADC.mdl. Kääntäjän käynnistys näkyy kuvassa. 18.


Riisi. 18. Simulink-mallin kääntäjän ajo.

Onnistuneen kääntämisen tuloksena (sanoma: ### Mallin Servo_ADC rakennusproseduurin onnistunut loppuunsaattaminen) nykyiseen hakemistoon luodaan HEX-tiedosto PIC-ohjaimen vilkkumista varten ja MCP MPLAB -ympäristöprojekti (kuva 19).


Riisi. 19. Mallin kokoamisen tulokset.

Malli käynnistetään Matlabissa/Simulinkissä malliikkunan painikkeella, ehdollinen simulointiaika asetetaan riville:


Simulink-mallien kokoamisen ohjaaminen MPLAB-ympäristöstä

Simulink-mallin käännöstä voidaan ohjata MPLAB-ympäristön Matlab/Simulink-osan komennoilla esimerkiksi seuraavassa järjestyksessä.

1. Kehitä PIC-ohjainmalli Matlabissa/Simulinkissä. Tallenna malli.
2. Käynnistä MPLAB.
3. Valitse MPLAB-valikko → Työkalut → Matlab/Simulink, jolloin valikkoon tulee uusi osa.


4. Avaa Matlab/Simulink-osiossa Simulink-malli, esimerkiksi Servo_ADC, komennolla “Matlab/Simulink → Määritä Simulink-mallin nimi → Avaa → Tiedostonimi → Servo_ADC.mdl → Avaa”. Open-komento käynnistää Matlabin ja avaa mallin.

5. Kokoa malli ja luo MCP-projekti Generate Codes- tai Generate Codes and Import Files -komennoilla. MDL-mallin kääntäminen MCP-projektiksi suorittaa TLC-kääntäjä Matlab.
Tämän seurauksena MPLAB-projekti luodaan:

C-kielen malliskripteillä.

6. Avaa projekti: menu → Project → Open → Servo_ADC.mcp (Kuva 20).


Riisi. 20. Simulink-projektimallin Servo_ADC.mdl MCP-rakenne MPLAB-ympäristössä.
Simulink-malliprojekti on valmis editointiin, virheenkorjaukseen ja koneenohjainkoodeiksi kääntämiseen MPLAB:n avulla.

PIC-KIT3-ohjelmoijan liittäminen

Voit selvittää, mitkä ohjelmoijat kirjoittavat binäärikoodia tiettyyn mikrokontrolleriin MPLAB 8.92 -ympäristön valikosta → Configure → Select Device. Esimerkiksi PIC-KIT3-ohjelmoija ei tue PIC12C508A-ohjainta (kuva 21, vasen kuva), mutta toimii PIC12F629-ohjaimen kanssa (kuva 21, oikea kuva).


Riisi. 21. Luettelo mikro-ohjaimen laiteohjelmiston ohjelmoijista.

Tietoja asennetusta PIC-KIT3-ohjelmointiohjaimesta voi pyytää Windows-käyttöjärjestelmän laitehallinnasta (kuva 22).


Riisi. 22. Tietoja asennetusta PIC-KIT3-ohjelmointiohjaimesta.

PIC12F629-mikro-ohjaimen kytkentäkaavio PIC-KIT3-ohjelmoijaan on esitetty kuvassa. 23.


Riisi. 23. PIC12F629-mikro-ohjaimen kytkentäkaavio PIC-KIT3-ohjelmoijaan.

Ohjelmoijan PGM-lähtöä ei käytetä PIC12F629-ohjaimien vilkkumiseen. PGM-lähdön olemassaolo erityyppisille PIC-säätimille on esitetty kuvassa. 24. On suositeltavaa “vetää” PGM-nasta yhteiseen johtoon (GND) nimellisarvoltaan 1K vastuksen läpi.


Riisi. 24. PGM PIC -ohjaimen nastat.

Olimex PIC-KIT3 -ohjelmoijan LED-merkkivalo näkyy alla:

Keltainen - Punainen - Ohjelmoijan tila
Päällä - Pois - Kytketty USB-linjaan
Päällä - Päällä - Yhteentoimivuus MPLAB:n kanssa
Vilkkuu - Aina päällä - Mikro-ohjaimen laiteohjelmisto

Älä kytke VDD-mikro-ohjaimen virtalähdettä (kuva 23) ohjelmoijaan, jos ohjain saa virtaa omasta virtalähteestään.

Kun mikro-ohjain kytketään päälle VDD-linjan ohjelmoijasta, on tarpeen asettaa käyttöjännite, esimerkiksi 5 V, käyttämällä MPLAB-ohjelmaa (Valikko → Ohjelmoija → Asetukset → Virta), kuten kuvassa 10 näkyy. 25.

Huomautus. Jos VDD-linjassa ei ole jännitettä, MPLAB IDE näyttää virheilmoituksen: PK3Err0045: Sinun on yhdistettävä kohdelaitteeseen, jotta voit käyttää


Riisi. 25. VDD-jännitteen asettaminen PIC-KIT3-ohjelmoijalla MPLAB IDE v8.92:lla.

Jos ohjelmoija ei voi asettaa vaadittua jännitettä, esimerkiksi 5V, kun se saa virtaa USB:stä, jossa jännite on alle 5V, MPLAB IDE näyttää virheilmoituksen: PK3Err0035: Failed to get Device ID. Tässä tapauksessa sinun on ensin mitattava ohjelmoijan jännite - lue se valikkovälilehdestä → Ohjelmoija → Asetukset → Tila ja aseta sitten jännite (enintään mitattu) valikkovälilehdellä → Ohjelmoija → Asetukset → Tehoa.


Riisi. 26. PIC-KIT3-ohjelmoijan VDD-jännitteen mittaus (vasemmalla) ja asetus (oikealla) MPLAB IDE v8.92:lla.

Esimerkki MPLAB-viestistä mikro-ohjaimen onnistuneesta yhdistämisestä ohjelmoijaan käyttämällä valikkokomentoa → Ohjelmoija → Yhdistä uudelleen on esitetty kuvassa. 27.


Riisi. 27. MPLAB-viesti mikro-ohjaimen onnistuneesta yhdistämisestä ohjelmoijaan.

Voit ohjelmoida erillisen PIC-ohjaimen lisäksi myös ohjaimen, joka on osa toimivaa laitetta. PIC-ohjaimen ohjelmoimiseksi laitteeseen on tarpeen asentaa hyppyjohtimet ja virtaa rajoittavat vastukset kuvan 1 mukaisesti. 28.


Riisi. 28. Mikro-ohjaimen liittäminen osana elektronista laitetta ohjelmoijaan.

Johtopäätös

Pienjännitteisillä PIC-ohjaimilla on laaja virtalähdealue, alhainen kulutus ja pienet mitat. Ne on ohjelmoitu matalan tason kielillä. Ohjelmien kehittäminen graafisella ohjelmointikielellä Simulink useiden kirjastojen avulla vähentää merkittävästi kehitys- ja virheenkorjausaikaa verrattuna kokoonpanotason ohjelmointiin. Simulink PIC -ohjaimille kehitettyjä rakenteita voidaan käyttää myös ohjaimia sisältävien dynaamisten järjestelmien tietokonesimulaatioon. Kuitenkin koodin redundanssin vuoksi tätä lähestymistapaa voidaan soveltaa vain PIC-ohjainperheisiin, joilla on riittävät resurssit.
Simulink Lisää tunnisteita Äskettäin päätin rakentaa laitteen PIC-mikrokontrollerille, mutta tuntemattomista syistä Extra-PIC-ohjelmoijani epäonnistui. Todennäköisesti mikropiiri palanut MAX 232, tämä on tapahtunut jo kerran. Miettimättä kahdesti, löysin Internetistä yksinkertaisen ohjelmointipiirin, joka on suunniteltu IC-Progiin ja toimii sen kautta COM portti.
Taulu on peilattava tulostettaessa. Muussa tapauksessa pistorasiat on juotettava radan puolelta.


Seuraavaksi porasin reiät ja aloin juottaa osia. Suurin ongelma oli zener-diodit. Aloin etsiä levyltä zener-diodeja CRT-näytöstä. Ne on merkitty levylle ZD (Zener Diode). Luonnollisesti niiden merkinnät ovat epäselviä, etkä tiedä mistä tai miten etsiä. Voit koota yksinkertaisen piirin määrittääksesi, kuinka monta volttia Zener-diodi on arvoinen.


Volttimittari näyttää melko tarkasti, kuinka monta volttia zener-diodi on. Tällä yksinkertaisella tavalla löysin zener-diodeja, joilla on likimääräiset nimellisarvot. Asensin 5,6 V sijasta 6,2 V, 12,6 V sijasta 2 zener-diodia sarjaan 6,2+6,2=12,4V .


Transistori voidaan asentaa KT315. Asensin sen itse S945. Diodit ovat myös mitä tahansa, juotin kaikki 3 kappaletta. saman levyn diodisillalta näytöstä. Kondensaattorien arvo ei myöskään ole kriittinen, mutta ne asetettiin nimellisarvoonsa.

Hieman punaisista täplistä paneeleissa. Näitä jalkoja ei ole juotettu paneeleihin ollenkaan. Täysin valmis laite näyttää tältä:


Päätin olla juottamatta kaikkia pistorasioita, koska... Minun piti vain vilkkua se PIC16F628A. Juottamisen jälkeen sinun on määritettävä ohjelma. Vilkutamme IC-Prog. Lataa ohjelma, pura se arkistosta, Kaikkien tiedostojen tulee olla yhdessä kansiossa!

1) Jos käytät Windows NT-, 2000- tai XP-käyttöjärjestelmää, napsauta hiiren kakkospainikkeella icprog.exe-tiedostoa. " Ominaisuudet" >> välilehti " Yhteensopivuus" >> Aseta valintaruutu " " Suorita ohjelma yhteensopivuustilassa:" >>
valitse "Windows 2000".

2) Aloitetaan ohjelma. Jos se on jo venäjäksi, et tarvitse mitään, siirry vaiheeseen 3 .

Jos ohjelma on englanninkielinen, napsauta " asetukset" >> "Vaihtoehdot" >> välilehti " Kieli" >> aseta kieli " Venäjän kieli" ja napsauta "OK".
Yhdyn väitteeseen " Sinun on käynnistettävä IC-Prog uudelleen nyt" (klikkaus " Ok"). Ohjelmoijan kuori käynnistyy uudelleen.

3) Nyt sinun on määritettävä ohjelmoija. Klikkaus " asetukset" >> "Ohjelmoija". Tarkista asetukset, valitse käyttämäsi COM-portti, napsauta " Ok".


Jos tietokone on erittäin nopea, saatat joutua lisäämään I/O-viiveasetusta. Tämän parametrin suurentaminen lisää ohjelmoinnin luotettavuutta, mutta myös sirun ohjelmointiin käytetty aika kasvaa.

4) Vain Windows NT, 2000 tai XP käyttäjille. Klikkaus " asetukset" >> "Vaihtoehdot" >> valitse välilehti " Ovat yleisiä" >> valitse ruutu " Päällä NT/2000/XP ajuri" >> Napsauta " Ok" >> jos ohjainta ei ole aiemmin asennettu järjestelmääsi, näkyviin tulevassa ikkunassa " Vahvistaa"Napsauta "Ok". Ajuri asennetaan ja ohjelmoijan kuori käynnistyy uudelleen.

5) Napsauta uudelleen " asetukset" >> "Vaihtoehdot" >> valitse välilehti " I2C" >> valitse ruudut: " Ota MCLR käyttöön VCC:nä"ja" Ota lohkotallennus käyttöön". Klikkaus " Ok".

6) "asetukset" >> "Vaihtoehdot" >> valitse välilehti " Ohjelmointi" >> poista valinta ruudusta: " Tarkista ohjelmoinnin jälkeen"ja valitse ruutu" Tarkista ohjelmoinnin aikana". Klikkaus " Ok".


Valmis, nyt ohjelma on täysin valmis toimimaan ohjelmoijan kanssa. Yhdistämme ohjelmoijamme COM portti, valitse ohjelmasta mikro-ohjain, avaa laiteohjelmisto ja ohjelmoi kaikki PIC-sarjan MK:t. Onnea kaikille ohjelmoijan ja ohjaimien parissa työskenteleville!

Vuonna 2006 minulla oli halu hallita PIC-mikro-ohjainten kokoonpanoa. Päätös hallita PIC ei syntynyt sattumalta. Aluksi on vain 35 assembler-komentoa. Voit oppia ne ulkoa muutamassa päivässä soveltamalla niitä käytännössä omaa ohjelmaa kirjoittaessasi. Tai yksinkertaisesti opi se käyttämällä minkä tahansa PIC-ohjaimen datalehteä. Onneksi osa dokumentaatiosta on saatavilla venäjäksi.

No, ensimmäinen malli on tietysti kello. Eikä se ole vaikeaa (ainakin minusta aluksi tuntui siltä) ja kellolle tai ajastimelle on helppo löytää käyttöä sekä kotona että töissä. Ainoa este, jonka jouduin kohtaamaan, oli selkeän ja johdonmukaisesti esitetyn tiedon puute suoraan ohjelmointimenetelmistä.

Internetissä on monia mikrokontrolleriaiheisia sivustoja, mutta usein nämä tiedot esitetään eräänlaisena vinegretin muodossa, jota on erittäin vaikea ymmärtää ilman kokemusta ohjelmointisiruista.
"Ensimmäisen mikrokontrolleriprojektin" käynnistämisen jälkeen - LEDin vilkkuminen - alkoi kiihkeä hyödyllisen tiedon etsiminen. Ja aivan vahingossa tutkiessani verkkoa etsiessäni tietoa "Radio"-lehden (Denisovin taajuusmittari) seuraavan järjestelmän mukaan, törmäsin Jevgeni Korabelnikovin verkkosivustoon.

En voi sanoa, että hakuni päättyi siihen. Keksin joitakin lähestymistapoja itse, ja oma koodini on yleensä aina parempi kuin jonkun muun keksimä.
Mutta en ole vielä löytänyt johdonmukaisempaa ja menetelmällisempää esitystä kysymyksistä mikro-ohjainten rakenteesta, protokollien vaihtoehdoista PIC-tietojen vaihtamiseksi ulkoisten laitteiden (ilmaisimien, antureiden) kanssa, muistisirujen kanssa työskentelemisestä ja paljon muuta.

Evgeniy on kirjailija isolla A:lla, hän onnistui järjestämään ja kääntämään valtavan määrän materiaalia normaalisti luettavaksi tekstiksi, mikä tekee siitä ymmärrettävän ja helposti saatavilla myös niille, jotka eivät ole koskaan aiemmin kohdanneet ohjelmointia.

Jos tarvitset pika-aloitus- ja asennuskieliohjelmointia PIC-ohjaimille, suosittelen Jevgeni Aleksandrovichin verkkosivustoa.

Assembly kielen ohjelmointi

PIC-mikro-ohjaimet

Opetusohjelma PIC-ohjainten ohjelmointiin aloittelijoille

(mikro-ohjainlaitteen suunnitteluopas)

Yleisiä huomioita tulostrategiasta.

”Oma-opas...” on koottu siten, että jos edellisten osioiden lukemisen jälkeen ilmenee epäselvyyksiä, ne selkiytyvät myöhemmissä osioissa asteittain lisätietojen avulla. "Sisääntulon" alkuvaiheessa tärkeintä on ymmärtää merkitys, ja kaikki muu lisätään siihen ajan myötä.

Johdanto
1. Valmistele työkalut. Ohjelmoijan tekeminen ja sen kanssa työskentely.
2. Mikä on mikro-ohjain ja miten se toimii.
3. PIC16F84A-komentojärjestelmä.
4. Mikä on ohjelma ja sen valmistelun säännöt. Esimerkki ohjelman luomisesta itsevärähtelevää multivibraattoria varten. direktiivit. Kaavio multivibraattorista
5. Integroitu suunnitteluympäristö MPLAB IDE ja työskentely siinä.
6. Mitä seuraavaksi?
7. Esimerkki ohjelman luomisesta (alku).
8. Esimerkki ohjelman luomisesta (jatkuu).
9. Työskentele simulaattorissa. Ohjelman virheenkorjaus.
10. Kuinka seurata ohjelman suoritusta
11. Keskeyttää. Pino. Esimerkki ohjelmakehityksestä keskeytyksettä.
12. Lasketun siirtymän järjestäminen. Työskentely EEPROM-tietomuistin kanssa.
13. Liput. Työskentely lippujen kanssa. Kuinka digitaalinen vertailija toimii? Siirto ja laina.
14. Esimerkki C-lipun käytöstä kolmitavuisessa summaimessa. Syklinen vaihto. Kertolaskutoiminto.
15. Johdatus dynaamisen näytön aliohjelman rakentamisen periaatteeseen. Epäsuora osoitus.
16. Binäärilukujen muuntaminen BCD:ksi. Dynaamisen näyttöaliohjelman tekstin lopullinen muodostus.
17. Laskentaperiaate. Työskentely ajastimen TMR0 kanssa. Periaate laskentakomentoryhmien asentamisesta ohjelmatekstiin.
Johtopäätös