MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

Embed Size (px)

Citation preview

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    1/24

    Uputstvo za pripremu laboratorijskih vežbi 

    Mikroračunarski sistemi–  maj 2015.

    U nastavku ovog uputstva obrađuje se priprema laboratorijskih vežbi  u MPLAB okruženju. Zadaci zalaboratorijske vežbe rade se na maketi sa PIC16F870 mikrokontrolerom. Tekstovi zadataka biće unapreddostupni na stranici predmeta.

    Zadaci

    C1. Upoznati se sa MPLAB razvojnim okruženjem, pravljenjem MPLAB projekta, dodavanjem fajlova sakodom u projekat, ispravljanjem grešaka i prevođenjem projekta.

    C2. Proučiti strukturu asemblerskog fajla  primer.asm  koji može da posluži kao osnova za izradulaboratorijskih vežbi. 

    C3. Proučiti upotrebu i osnovne komande dibagera u MPLAB-u.

    C4. Proučiti upotrebu stimulusa u dibageru koji pored ostalog omogućava da se simulira promena stanja nanekom pinu mikrokontrolera.

    C5. Proučiti logičku i električnu šemu makete na kojoj će se testirati rešenje zadataka (šeme su dostupnena sajtu a model kontrolera koji se nalazi na ovoj maketi je PIC16F870).

    C6. Proučiti način programiranja mikrokontrolera.

    Verzija dokumenta Promenev1 inicijalna verzija za MPLAB X 2.35

    v2 dodato pojašnjenje za ORG direktive v3 izmenjeno poglavlje koje objasnjava strukturu asm fajla da odgovara

     primeru postavljenom na sajt

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    2/24

    C1. MPLAB X 2.35

    Dostupne se starije verzije MPLAB-a sa aktuelnom verzijom 8.92 i novije verzije MPLAB X okruženja.Pravljenje novog projekta i dodavanje fajlova u projekat prikazano je u nastavku za MPLAB X okruženje.Pravljenje novog projekta ide kroz nekoliko koraka:

    1. Pokrenuti čarobnjaka preko menija File-> New Project… 

    2. Izabrati Microchip Embedded  projekat i opciju Standalone Project .

    3. Za model mikrokontrolera izabrati PIC16F84А.

    Napomena: Za pokaznu lab. vežbu koristiće se ovaj model mikrokontrolera. Za izradu narednih lab. vežbikoristiće se mikrokontroler PIC16F870 koji se nalazi na maketi.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    3/24

    Zadatak : Koristeći dokumentaciju za PIC16F870 utvrditi koje su osnovne razlike između ova dva čipa. 

    4. U sekciji  Hardware tools  izabrati opciju Simulator . Razvoj i testiranje  programa radiće se unutarMPLAB softverskog simulatora. Druge mogućnosti su korišćenje hardverskog dibagera kao što je PICKIT,ICD3 itd.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    4/24

    5. Projekat će sadržati izvorne fajlove sa asemblerom tako da na sledećem prozoru treba izabrati mpasm kompajler. Druga mogućnost je XC8 C kom pajler ili kompajleri drugih proizvođača. 

    6. Dati naziv projektu i izabrati lokaciju snimanja fajlova projekta.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    5/24

     

    7. Završiti pravljenje projekta klikom na Finish.

    8. Do ovog koraka napravljen je prazan projekat pa treba dodati novi fajl sa kodom u sekciju Source Files 

     projekta preko menija New->Empty File.

    9. Dati ime fajlu uključujući ekstenzi ju jer u prethodnom koraku nije izabran konkretan tip fajla.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    6/24

     

    10. U otvoreni prozor treba uneti asemblerski kod. U primeru sa slike iskopiran je kod primera primer.asm 

    koji je dostupan na stranici predmeta. 

    11. Prevođenje projekta postiže se iz menija Run->Build Main Project . 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    7/24

     

    12. Status prevođenja  projekta prikazuje se u zasebnom prozoru. Ovde su prikazana sva upozorenja iinformacije o eventualnim greškama. 

    14. Pozicioniranje na liniju koda koja je proizvela upozorenje ili grešk u obavlja se klikom na liniju koja prikazuje upozorenje ili grešku u prozoru Output . Na slici je prikazana informacija o sintaksnoj greški i pozicija u kodu. 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    8/24

    C2. Struktura asemblerskog fajla

    U nastavku je dat kratak opis strukture primer.asm fajla koji može poslužiti kao templejt za izradu vežbi. Fajl se može pronaći na stranici predmeta.

    Zadatak : Šta obavlja program korišćen kao primer za pokaznu vežbu? 

    Zaglavlje (slika iznad)  –  Definisanje tipa procesora direktivom list p=  i uključivanje heder fajla sa.inc ekstenzijom. Fajl sa ekstenzijom inc sadrži definicije svih sistemskih registara i konfiguracionih parametara(i onih u liniji koja počinje sa  __CONFIG) za izabrani mikrokontroler, tako da je izbegnuto pisanjedefinicija na početku svakog programa. Zato u programu možemo napisati: 

    bsf STATUS, RP0

    umesto

    bsf 3,5 

    , što povećava razumljivost koda.

    Linija koja počinje sa  __CONFIG odnosi se na podešavanje kontrolera (uključivanje watchdog timer -a, podešavanje tipa oscilatora-HS_OSC, uključivanje zaštite koda-_CPD_OFF i sl.). Konfiguracioni parametri čine posebne memorijske lokacije na kontroleru kojima je pristup omogućen u fazi programir anjakontrolera i nisu dostupni u toku izvršavanja programa. 

    Definisanje konstanti  (slika iznad)- U ovom delu koda mogu se naći definicije svih konstanti koje sekoriste u kodu u obliku KONSTANTA EQU VREDNOST .

     Npr. u ovu sekciju mogu se dodati sledeće definicije: 

    1.  BROJAC EQU 0x30  kreira promenljivu  BROJAC   na konstantnoj adresi  0x30 pa je mogućenapisati instrukciju movwf BROJAC čiji je efekat  pomeranje sadržaja akumulatora u promenljivu

    BROJAC.2.  POMERAJ EQU  0x0A kreira konstantu  POMERAJ  koja ima vrednost 0x0A pa je moguće napisati 

    instrukciju addlw POMERAJ čiji je efekat sabiranje sadržaja akumulatora sa 0x0A.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    9/24

     

    Definicija promenljivih (slika iznad)- Promenljive unutar bloka CBLOCK 0x30 zauzimaju adrese počevod 0x30. Unutar ovog bloka mogu se navesti promenljive koje se koriste u programu. Promenljive unutar

    ovog bloka će biti zapamćene počev od adrese koja se navede nakon CBLOCK direktive, u registrima opštenamene (GPR). U primeru sa slike iznad, kreirane su četiri promenljive koje se smeštaju  počev od adrese0x30 i služe za pamćenje konteksta mikrokontrolera na početku prekidne procedure. Ako bismo u ovu listu

     posle FSR_TEMP dodali COUNTER, kreirali bismo promenljivu COUNTER na adresi 0x34.

    Glavni program  (slika iznad)- Glavni program počinje od labele ResetCode.  Na ovu lokaciju stiže se preko reset vektora definisanim direktivom ORG 0x0000 koja na adresu nula programske memorije

     postavlja instrukciju koja sledi ovu direktivu. Ta instrukcija je goto ResetCode koja se prva izvršava nakonšto mikrokontroler dobije stabilno napajanje i krene sa izvršavanjem programa. Direktiva ORG 0x0004označava interrupt vektor  a instrukcija koja sledi ovu direktivu biće zapamćena na adresi četiri programskememorije i predstavlja instrukciju koja će biti prva izvršena nakon što kontroler prihvati prekid od bilo kojačetiri moguća izvora prekida i krene sa obradom prekida.

    Napomena: Kada se u programu koristi prekidna procedura treba obrisati karakter „;“ sa početka linije која

    sadrži goto InterruptCode kao i instrukciju retfie sa početka prekidne procedure (treba da stoji samo nakraju).

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    10/24

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    11/24

    C2.1 Izmena asm fajla za potrebe lab. vežbi 

    Fajl primer.asm može da posluži kao templejt za lab. vežbe pri čemu treba izmeniti glavni program i po potrebi deo sa prekidnom procedurom.

    Dodatak za laboratorijske vežbe

    Mikrokontroler PIC18F870 ima nekoliko karakteristika na koje se mora obratiti pažnja kada se radi sa portovima. U nastavku su napomene koje treba uzeti u obzir prilikom izrade lab. vežbi. Za sve dodatneinformacije o ovom kontroleru dostupna je dokumentacija koja se nalazi na adresi

    http://ww1.microchip.com/downloads/en/DeviceDoc/30569b.pdf  

    1. Port A se na kontroleru PIC18F870 koristi se i za AD konverziju. Kako su LED indikatori na maketi

    koja se koristi povezani na port A potrebno je podesiti ovaj port tako da bude digitalni u celini. Ovo se

     postiže upisivanjem 0x06 u kontrolni registar ADCON1. U nastavku je prikazan deo dokumentacije za ovajmikrokontroler koji opisuje port A i podešavanje AD konverzije. 

    http://ww1.microchip.com/downloads/en/DeviceDoc/30569b.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/30569b.pdfhttp://ww1.microchip.com/downloads/en/DeviceDoc/30569b.pdf

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    12/24

     

    U delu za inicijalizaciju za svaku od tri lab. vežbe treba dodati sledeće linije koda: 

    banksel ADCON1

    movlw 0x06

    movwf ADCON1 

    Napomena: Umesto uobičajenog načina za selekciju banke, može se koristiti banksel   makro čiji je parametar registar koji se koristi u delu koda koji je u nastavku (npr. banksel TRISA selektovaće banku ukojoj se nalazi registar TRISA).

    2. Za treću laboratorijsku vežbu, kodovi cifara koje se prikazuju se učitavaju iz EEPROM -a. Prvih desetlokacija EEPROMA (adrese 0x00-0x09) sadrže kodove redom cifara od 0 do 9 i upisane su u fazi

     programiranja kontrolera. Asemblerski isečak za čitanje lokacije iz EEPROM-a koji se može naći i udokumentaciji kontrolera prikazan je na slici:

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    13/24

    C3. MPLAB X 2.35 dibager 

    MPLAB dibager obezbeđuje osnovne komande za kretanje kroz program kao što su Step into, Step over,Run to Cursor i ostale. Dibager se pokreće iz menija Debug->Debug Main Project. Pre pokretanja dibageramože se definisati od koje linije da se započne izvršenje programa kao što je opisano u nastavku. 

    Da bi se započelo sa izvršenjem programa u dibageru najlakše je postaviti prekidnu tačku na izabranu početnu liniju programa desnim klikom na liniju i izborom opcije Toggle Line Breakpoint, To može bitilinija koja sadrži labelu ResetCode ili neka kasnija instrukcija. 

     Nakon toga linija u kodu izgledaće kao na slici: 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    14/24

     

    Potom se pokreće dibager iz menija Debug.

    Kontrole dibagera pojavljuju se na toolbar-u i one su redom: Finish, Pause, Reset, Continue, Step Over,

    Step Into, Run to Cursor, Set PC at Cursor, Focus Cursor at PC . Step Into  obezbeđuje izvršavanjeinstrukcija redom, Step Over  omogućava izvršavanje potprograma i pozicioniranje na prvu liniju nakon

     pozvanog potprograma. Komande koje u sebi uključuju reč Cursor  omogućavaju izvršenje programa dolinije u kojoj je pozicioniran kursor, postavljanje PC registra na adresu instrukcije na koju pokazuje kursor

    i postavljanje kursora na trenutno izvršavanu instrukciju, redom. 

    MPLAB simulator obezbeđuje i  prikaz sadržaja registara opšte namene, registara specijalne namene, programske memorije, EEPROM memorije i omogućava praćenje vrednosti promenljivih u toku izvršenja programa, funkcijom watch. Sadržaj memorijskih lokacija kontrolera i njihove promene moguće je pratitiu prozorima koji se prikazuju preko menija Windows->PIC Memory Views.

     Na slici u nastavku prikazan je sadržaj registara specijalne namene, registara opšte namene i programskememorije za primer.asm.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    15/24

     

    Zadatak : Dodati novu promenljivu u sekciju CBLOCK, inicijalizovati je u glavnom programu a zatim pratiti njenu vrednost u toku izvršenja programa koristeći  Debug->New Watch. Dodavanje promenljive uCBLOCK i njena inicijalizacija prikazani su u nastavku.

    Definicija promenljive: 

    CBLOCK 0x30

    WREG_TEMP ;storage for WREG during interrupt

    STATUS_TEMP ;storage for STATUS during interrupt

    PCLATH_TEMP ;storage for PCLATH during interrupt

    FSR_TEMP ;storage for FSR during interrupt

    COUNTER  ENDC

    Inicijalizacija promenljive: 

    …  bcf STATUS, 5

    movlw 0xCE

    movwf COUNTERopet:

     btfsc PORTB, 1

    … 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    16/24

    Preko funkcije dibagera Watch moguće je prikazati sadržaj promenljive u programu  u toku izvršenja. Naslici ispod prikazana je trenutna vrednost promenljive COUNTER u  File registers prozoru kao i prozoru

    Variables. Obratiti pažnju na memorijsku adresu ove promenljive koja iznosi 0x34 i njenu vrednost što je0xCE.

    Dibagerom se može testirati i prekidna procedura, kada se pravilno podesi TMR0, INTCON i OPTIONregistar. U prozoru koji prikazuje vrednosti registara specijalne namene može  se proizvoljno menjativrednosti registara kako bi se ubrzao ili kontrolisao proces debagiranja. Kada je reč  o registru TMR0upisivanjem vrednosti 0xFF iz begava se čekanje do prekoračivanja vrednosti i omogućava se brži skok na

     prekidnu proceduru. Na slici ispod prikazan je sadržaj registra TMR0 i izvršenje koda prekidne proceure udibageru.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    17/24

    C3.1 Merenje vremena izvršenja dela koda 

    Korisna mogućnost MPLAB-a je da prikaže vreme izvršenja dela koda koji se koristi za generisanje tajmauta,

    kašnjenja i sl. Da bi se to postiglo, potrebno je podesiti radni takt kontrolera tj instrukcijski takt preko menija File-

    >Project Properties u sekciji Simulator->Oscilator Options. Na slici je prikazano podešavanje instrukcijskog takta od

    1MHz.

    Da bi se izmerilo vreme izvršenja dela koda treba postaviti prekidne tačke na početku i kraju tog dela koda. Nakon

    toga bira se Stopwatch.

    Pozicioniranjem koda na prvu prekidnu tačku i pritiskom na Run, dibager će izvršiti deo koda do druge

    prekidne tačke. U donjem delu prozora prikazaće se ukupno vreme izvršenja. Na slici ispod prikazan je deo

    koda koji se izvršava 5us. 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    18/24

     

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    19/24

    C4. MPLAB X 2.35 stimulus

    Da bi se testirali svi delovi koda u programu nekada je potrebno da se simulira promena stanje na nekom

    ulaznom pinu, vrednost neke promenljive i sl. MPLAB dibager obezbeđuje simuliranje promene stanja na pinovima mikrokontrolera preko funkcije stimulus kojoj se pristupa preko Window->Simulator->Stimulus.

    Da bi se izvršio deo koda iz primera primer.asm  počev od labele upali, koji se u programu uvek preskače,  potrebno je da se sa RB1  promeni vrednost na logičku  jedinicu. Promena stanja na RB1 se postišedodavanjem novog  stimulusa  tako što se u prozoru Stimulus  doda novi red sa oznakom pina i željene

     promene. Na slici ispod, kreiran je Stimulus na pinu RB1 tipa toggle. Promena toggle označava da će pinnaizmenično menjati svoju vrednost na svaki pritisak tastera sa strelicom koji se nalazi na početku reda kojiodgovara datom stimulusu.

     Nakon promene vrednosti na pinu RB1, moguće je u dibageru izvršiti deo koda koji počinje od labele upali a prelazak na ovaj deo koda prikazan je na sledećo j slici.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    20/24

     

    Linija na dnu prozora pokazuje da je aktiviran stimulus tako da je izvršen deo koda od labele upali. 

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    21/24

    C5. Šema makete 

    Jedna od razlika između PIC16F84A i PIC16F870 je postojanje dodatnog porta C, koji je na maketi povezanna dve sedmosegmentne LED, i postojanje TRISC registra. Ostale karakteristike koje su bitne za izradu

    vežbi su ekvivalentne kontroleru PIC16F84A. Za izradu laboratorijskih vežbi treba obratiti pažnju na način  povezivanja segmenata na sedmosegmentni displej povezan na PORTC kao i realizaciju tastera povezanih

    na PORTB i LED indikatora povezanih na PORTA kako bi se pravilno izvršilo testiranje u programu.  Proučiti logičku i električnu šemu makete koji su dostupni na stranici predmeta.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    22/24

     

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    23/24

    C6. Programiranje kontrolera

    Sintaksno ispravan asm  fajl i logički ispravan program koji je proveren u dibageru treba prevesti uodgovarajući hex fajl. Hex fajl generiše se desnim klikom na naziv projekta i izborom opcije Export Hex.

    Generisani .hex fajl programira se na čip koristeći mikroProg Suite aplikaciju. Potrebno je učitati hex fajl(dugme Load) a zatim isprogramirati čip (dugme Write). Programator je povezan preko USB porta namaketu.

  • 8/17/2019 MPLABX MIKS Uputstvo Za Pripremu Laboratorijskih Vežbi - V3

    24/24

     

    Štiklirana opcija Load/Save CODE označava da se prilikom programiranja prenosi kod a opcija Load/SaveDATA da se prilikom programiranja prenosi i sadržaj EEPROM memorije.