Upload
marko-petrovic
View
230
Download
0
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.