Download as pdf or txt
Download as pdf or txt
You are on page 1of 86

Y

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

lic

he

re
om

to

w.

A B B Y Y.c

om

PICmicro
ARHITEKTURA - PROGRAMIRANJE
Dr Aleksandar . ORI

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

SADRAJ

P R E D G O V O R .........................................................................Error! Bookmark not defined. 1. MIKROPROCESORI, MIKRORAUNARI ILI MIKROKONTROLERI? .................................. 4 1.1. IZBOR MIKROKONTROLERA............................................................................................ 5 1.1.1. Zato PICmicro? ...................................................................................................... 7 1.1.2. Ugraeni sistemi ....................................................................................................... 7 1.1.3. Razvoj aplikacija na bazi mikrokontrolera............................................................... 8 2. ARHITEKTURA I ORGANIZACIJA MCU PIC16F877 .......................................................... 10 2.1. RISC i CISC ARHITEKTURE MIKROKONTROLERA....................................................... 10 2.2. SOFTVERSKI RAZVOJNI ALATI...................................................................................... 13 2.2.1. Skup i podela instrukcija ........................................................................................ 17 2.2.2. Asemblerski jezik .................................................................................................... 20 2.2.3. Vii programski jezici ............................................................................................. 23 2.2.4. Potprogrami i moduli-hardverski stek ................................................................... 24 2.2.5. Rukovanje prekidima .............................................................................................. 27 2.2.6. Protona (pipelining) obrada instrukcija ............................................................... 35 2.3. IZBOR I KONFIGURISANJE TAKTNOG OSCILATORA CPU .......................................... 37 2.4. ORGANIZACIJA MEMORIJSKOG PROSTORA............................................................... 40 2.4.1. Periferijska Data EEPROM memorija ..................................................................... 41 2.4.2. Programska Flash EEPROM memorija .................................................................. 47 2.4.3. SRAM memorija podataka ...................................................................................... 52 2.4.4. Naini adresiranja RAM memorije ......................................................................... 55 2.5. PROGRAMSKI BROJA (BROJA INSTRUKCIJA) ....................................................... 57 2.5.1. itanje tabele metodom izraunatog skoka .......................................................... 59 2.6. KONFIGURACIONA RE MCU PIC16F877 ..................................................................... 62 3. INTEGRISANI SISTEMI ZA RESETOVANJE MCU ............................................................. 65 3.1. VRSTE RESETA MCU PIC16F877 ................................................................................... 66

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

3.1.1. MCLR reset u toku normalnog rada MCU i u sleep stanju 3.1.2. POR (Power-up reset) reset 3.1.3. WDT (Watch-Dog Timer) reset u toku normalnog rada MCU i u sleep stanju 3.1.4. BOR (Brown-Out Reset) reset 4. POVEZIVANJE MCU SA OKRUENJEM - I/O PORTOVI OPTE I SPECIJALNE NAMENE 4.1. Organizacija i multipleksne funkcije porta A 4.2. Organizacija i multipleksne funkcije porta B 4.3. Organizacija i multipleksne funkcije porta C 4.4. Organizacija paralelnog slave porta D 4.5. Organizacija i multipleksne funkcije porta E 5. INTEGRISANI PERIFERIJSKI PODSISTEMI MCU PIC16F877 5.1. Tajmeri/Brojai 5.1.1. Tajmer/Broja 0 (TMR0) 5.1.2. Tajmer/Broja 1 (TMR1) 5.1.3. Tajmer/Broja 2 (TMR2) 5.2. CCP (Capture/Compare/PWM) periferije

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Poglavlje 1

MIKROPROCESORI, MIKRORAUNARI ILI MIKROKONTROLERI?

Savremeni integrisani mikroprocesori CPU (Central Processing Unit) generalno su zastupljeni u zahtevnim aplikacijama sofisticiranih performansi gde cena i gabarit dizajna nisu kritini kriterijumi izbora. Velika procesorska snaga modernih mikroprocesora doputa mogunost njihove ugradnje u desktop raunarima i radnim stanicama gde su softverska kompatibilnost, performanse, fleksibilnost i pouzdanost od znaaja. Integrisani blokovi mikroprocesora kao to su aritmetiko-logika jedinica sa skupom registara specijalne namene, dekoder instrukcija, interne komunikacione magistrale i kontrolno-upravljaka jedinica, ine ovu digitalnu komponentu snanim sredstvom za izvoenje aritmetikih i logikih operacija pod kontrolom programa. Meutim, za sintezu mikroraunarskog sistema, ove integrisane komponente zahtevaju dodatne eksterne memorije i ulazno-izlazni hardver. Termin mikroraunari koristi se za opis sistema koji u minimumu ukljuuje mikroprocesor, programsku memoriju, memoriju podataka i ulazno-izlazni (I/O) ureaj. Savremeni mikroraunarski sistemi ukljuuju i dodatne komponente kao to su tajmeri, brojai, A/D konvertori, komunikacioni interfejsi i slino. Prema tome, pod mikroraunarskim sistemom podrazumeva se sve ono to danas ini jedan veliki raunar sa hard, flopi diskovima, tampaem itd., do integrisanih mikroraunara u ipu. Ova knjiga posveena je mikroraunarima integrisanim u jednom silicijumskom ipu, tkzv. mikrokontrolerima MCU (Micro Controller Unit) ili ugraenim kontrolerima, namenjenim primeni u kontrolnim aplikacijama. Termin mikro sugerie veliinu ureaja a kontroler oblast primene (kontrolne aplikacije). Sinonim ugraeni kontroler upuuje na ugradnju mikrokontrolera u iroki spektar monih ureaja koje kontroliu, kao to su: kuni elektronski ureaji, automobilski i vojni ureaji, HI-FI audio oprema, perosnalni raunari, celularni telefonski ureaji, beini kontrolni ureaji, smart kartice i slino. Proseni automobil danas, poseduje na primer oko 20-tak ugraenih mikrokontrolera, (Mercedes S klase iz 1999 godine posedovao je 63 mikrokontrolera a automobil marke BMW iz iste godine 65) dok je tipino srednje elektrificirano domainstvo opremljeno sa vie od 50-tak mikrokontrolera ugraenih u razliite elektrine i elektronske ureaje. Amerika kompanija Texas Instruments proizvela je prvi mikrokontroler serije TMS1000 sa dovoljno RAM, ROM memorije i I/O hardverom koji je ugraivan u mikrotalasne penice, industrijske tajmere i kalkulatore. Veliki broj mikrokontrolera razliitih proizvoaa, razliitih arhitektura i performansi, raspoloiv je danas na tritu. Neki od njih podesni su za partikularne aplikacije dok su drugi sasvim nepodesni za odreenu klasu aplikacija. Posebna panja u ovoj knjizi posveena je

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

programiranju i projektovanju sistema na bazi PIC (programmable interface controller) serije mikrokontrolera, proizvoaa Microchip Technology Inc. Iz napred reenog jasno je da su mikroraunari fleksibilniji a mikrokontroleri kompaktniji mikroraunarski sistemi i da izbor prvenstveno zavisi od polja primene i cene.

1.1. IZBOR MIKROKONTROLERA

Mikroraunar u jednom ipu, poznat pod nazivom mikrokontroler, postaje takav integralni deo ivota ljudi da se moe rei da je raunarska revolucija bila najava primene mikrokontrolera u svakodnevnom ivotu. Naime, na temelju modernog drutva, vie od pet biliona mikrokontrolera, ugraenih u iroki spektar proizvoda, prodaje se u toku samo jedne godine. Na tritu danas, zastupljeno je na stotine raspoloivih mikroprocesora i mikrokontrolera a izbor odgovarajueg za zadatu aplikaciju moe biti ozbiljna potekoa za projektanta. Uopteno, polazei od korisnikih zahteva, funkcionalnosti i karakteristika aplikacije, kao i cene, projektant je u situaciji da vri poreenje sa raspoloivim izborom mikroraunara na tritu. Meutim, konani izbor ostaje uslovljen brojnim faktorima kao to su: trini trendovi, profil proizvoaa, popularnost, ekspertiza lokalnog dizajna i slino. U tabeli 1.1.1. dat je pregled respektivnih proizvoaa popularnih osmobitnih mikrokontrolera najniih reprezentativnih cena kotanja.
Proizvoa Atmel Corp. Ureaj
ATtiny11

Memorija u ipu
1-kbyte Flash

Ostale karakteristike ureaja


8-bitni tajmer, analogni komparator, watchdog tajmer, oscilator u ipu, 1 izvor eksternog prekida, 4 takta po instrukcijskom ciklusu, UART, tri 16bitna tajmera/brojaa, dva data pointera, 10 internih/16 eksternih izvora prekida Tri 8-bitna/jedan 16-bitni tajmer, jedan 14-bitni PWM tajmer, watchdog tajmer, dva SCI porta, 8-bitni ADC, 32KHz subtaktni generator Serijski komunikacioni interfejs SCI, tri 16-bitna tajmera, 32 I/O porta 12 I/O pina velikog strujnog kapaciteta, 8-bitni tajmer, watchdog tajmer, RC oscilator 2.2V do 5.5V napajanje, tri 8-bitna tajmera, 16bitni watchdog tajmer, 10-bitni osmokanalni ADC, UART, 1 eksterni izvor prekida, ugraeni taktni generator Viefunkcijski tajmer sa 15 stanja, oscilator u ipu, watchdog tajmer, I/O port velikog strujnog kapaciteta Dva 8-bitna tajmera, UART, 22 I/O porta, dvokanalni serijski interfejs SCI Oscilator, UART, watchdog tajmer, 32-bajtna EEPROM za podatke, IIC, analogni komparatori, tajmeri/brojai

Dallas Semi

DS80C310

256-byte RAM

Hitachi

H8/3640

8-kbyte ROM, 512-byte RAM 8-kbyte ROM, 256-byte RAM 768-byte ROM, 25-byte RAM 8-kbyte ROM, 256-byte RAM

Infineon Microchip Mitsubishi

C501 PIC16CR54C M37531M4

Motorola

68HC705KJ1

1240-byte OTP, 64-byte RAM 2-kbyte ROM, 128-byte RAM 2-kbyte OTP, 128-byte RAM

NEC Philips

789011 P87LPC762

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Samsung Scenix

KS860004 SX28AC

4-kbyte ROM, 208-byte RAM 3-kbyte Falsh, 136-byte RAM 1-kbyte ROM ili OTP, 64byte RAM 4-kbyte ROM, 256-byte RAM 22-kbyte ROM, 512-byte RAM

STMicro Toshiba Xemics SA

ST6203CB1 TMP87C405AM XE8301

Zilog

Z8E000

0.5-kbyte OTP, 32-byte RAM

Jedan 8-bitni tajmer, jedan 8-bitni tajmer/broja, RC oscilator, 32 I/O porta, 14 izvora prekida 8-bitni tajmer, watchdog tajmer, analogni komparator, programabilni I/O, brown-out detektor 8-bitni tajmer, watchdog tajmer, 9 I/O linija visokog strujnog kapaciteta, brown-out kolo 9 izvora prekida, programabilni watchdog tajmer, 22 programabilna I/O porta Preskaler taktnog generatora, etiri 8-bitna tajmera sa PWM, watchdog tajmer, UART, kristalni i RC oscilator, 20 programabilnih I/O linija Jedan 16-bitni tajmer, watchdog tajmer, 13 I/O pina, 4 izvora prekida

Tabela 1.1.1. Pregled respektivnih proizvoaa popularnih 8-bitnih mikrokontrolera sa najniom cenom kotanja. Kao snaan alat koji projektantu doputa mogunost kreiranja sofisticirane manipulacije ulazno-izlaznim podacima pod programskom kontrolom, mikrokontroleri se prema rezoluciji mogu klasifikovati na 8-bitne, 16-bitne i 32.bitne. Osmobitni mikrokontroleri su najpopularniji i koriste se u najveem broju aplikacija zasnovanim na mikrokontroleru. esnaestobitni i tridesetdvobitni mikrokontroleri su snaniji ureaji vee procesorske snage ali su uobiajeno skuplji i nepotrebni u veem broju aplikacija opte namene. Proces projektovanja ugraenih sistema poinje, kao i veina stvari u ivotu, od ciljadefinicijom krajnjeg proizvoda. Definicija proizvoda pretpostavlja opis ciljnih funkcija i naina rada proizvoda. Kao kljuni korak u uspenom dizajnu bilo kog elektronskog sistema navodi se izrada tehnike dokumentacije. U odnosu na krajnji dizajn dokumentacija treba da sadri: definiciju zahteva proizvoda, definiciju funkcionalnih zahteva, izbor mikrokontrolera, hardversko-softverske specifikacije, opis razvoja sistema, hardverski dizajn, dizajn vezanog softvera, integraciju, verifikaciju. Nabrojani koraci nisu uvek neophodni, kao u sluaju kada su timovi strunjaka za projektovanje hardvera i softvera odvojeni. Tada dizajn moe biti projektovan paralelno. Proces dizajniranja nije, meutim, uvek linearan. U toku razvoja sistema esto se dogaa situacija u kojoj se pojavljuje problem sa izborom mikrokontrolera pa se, takoe esto, pojedine faze projektovanja moraju ponoviti. Na kraju, proces projektovanja sistema nije uvek mogue deliti. Kada je za razvoj aplikacije izabran mikrokontroler odgovarajue rezolucije opredeljenje projektanta za ui izbor proizvoaa i odgovarajueg ureaja treba uskladiti sa: miljenjem strune javnosti i popularnou serije mikrokontrolera, cenom kotanja, tehnikim karakteristikama ureaja, performansama raspoloivog razvojnog alata potronjom ureaja,

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

gabaritom ureaja, iskustvom projektanata u radu sa serijom mikrokontrolera. Prema tome, izbor odgovarajueg mikrokontrolera u funkciji je brojnih inioca sa gotovo jednakim teinskim udelom i meusobnim uticajem na opredeljenje. Na primer, cena ureaja u direktnoj je vezi sa trenutnom popularnou, odnosno, brojem ugraenih jedinica ali zavisi i od tehnikih karakteristika ureaja. Izbor odgovarajueg mikrokontrolera za datu aplikaciju je uobiajeno i funkcija familijarnosti projektanta sa arhitekturom kontrolera.

1.1.1. Zato PICmicro?


U postupku realizacije sofisticiranih elektronskih sistema, odluku o nainu implementacije odreenog dela sistema donosi projektant. Dizajneru na raspolaganju stoje diskretna IC kola, PLD kola ili mikroprocesori. Meutim, mnoge aplikacije mogu biti pogodno implementirane primenom mikrokontrolera a mnotvo njih beneficira na PIC familiji Microchip-ovih RISC mikrokontrolera. Napredne karakteristike ovih mikrokontrolera predmet su panje narednih poglavlja ove knjige. Meutim, od koristi je na ovom mestu nabrojati neke od znaajnih osobina pomenute familije mikrokontrolera kao to su: RISC arhitektura sa instrukcijama uglavnom fiksne duine, protona obrada instrukcija koja poveava brzinu izvoenja instrukcija, veliki broj raspoloivih instrukcija koje se izvravaju u jednom instrukcijskom ciklusu, fleksibilni izbor taktnog oscilatora CPU jedinice (interni/eksterni/PLL), iroki spektar u ipu integrisanih periferala kao to su: A/D konvertor, impulsno-irinski modulator (PWM), tajmeri/brojai, sinhroni i asinhroni serijski komunikacioni interfejsi, USB komunikacioni interfejs, EEPROM memorija, analogni komparatori itd., 6. interna programska memorija (FLASH EEPROM) i memorija podataka (SRAM), 7. serijsko programiranje ureaja u sistemu, 8. raspoloivi u kuitima od 8 do 40 pinova za prilagoenje irokom spektru aplikacija, 9. napon napajanja u opsegu od 2V do 5.5V, 10. relativno brzo ovladavanje jednostavnom arhitekturom ureaja. 1. 2. 3. 4. 5.

Slika. 1.1.2.1. Izgled jednog 8-bitnog RISC mikrokontrolera na jedinstvenom substratu, proizvodnje Microchip Inc.

1.1.2. Ugraeni sistemi

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Postoji neverovatno mnogo aplikacija zasnovanih na ugraenim procesorima od kojih su neke oigledne a druge manje primetne za veinu ljudi. Ugradnja velikog broja savremenih mikrokontrolera u jednostavne i funkcionalno sloene aplikacije, od ekonomino praktinih do zabavnih i gotovo apsurdnih, uticala je na znaajno smanjenje cene ovih ureaja na tritu. Ipak, cena sistema sa ugraenim kontrolerima, od sluaja do sluaja, nije uvek razumno prihvatljiva. Prava trina revolucija nastala je upravo razvojem i realizacijom ugraenih kontrolera u sisteme pri emu su mnogi, tada zastareli, analogni sistemi ubrzo postali deo istorije. Ugraeni kontroleri namenjeni su prvenstveno inteligentnim elektronskim ureajima korienim za kontrolu, kao i ureajima za nadzor povezanim sa realnim okruenjem. Primeri takvih sistema su PLC (programabilni logiki kontroleri), DCS (distribuirani kontrolni sistemi) i inteligentni senzori. Savremena elektronska merna instrumentacija poseduje ugraeni kontroler kao srce sistema. Mikrokontroleri se generalno koriste za namenske aplikacije a izbor odgovarajueg dobrim delom je funkcija familijarnosti projektanta sa njegovom arhitekturom. Meutim, razvojni alati za dati mikrokontroler i njihova cena, takoe znaajno utiu na opredeljenje projektanta.

1.1.3. Razvoj aplikacija na bazi mikrokontrolera


Jedna od moguih mapa za dizajniranje aplikacije na bazi mikrokontrolera zasnovana je na sledeim postupcima: 1. 2. 3. 4. 5. Na prvom mestu definicija zahteva. Kreiranje dovoljne dokumentacije za podrku zahtevima u opisnoj formi, formi blok dijagrama, dijagrama toka, vremenskih dijagrama itd. Pronalaenje podesnog hardvera za podrku neophodnoj funkcionalnosti aplikacije. Ovaj korak bi trebao pomoi dizajneru u odluci da li je mikrokontroler neophodan ili nije. Identifikacija odgovarajueg mikrokontrolera kao mozga aplikacije ukoliko je neophodan. Kada je izabran odgovarajui mikrokontroler, paljivo sprovesti dvostruku proveru zadovoljenja zahteva u sluajevima brzine, potronje, broja I/O linija, komunikacionih interfejsa mikrokontrolera itd. Ovaj korak bi trebao izbei jo jednu iteraciju izbora drugog kontrolera u sluaju propusta. Prikupljanje celokupnog alata za pomo u razvoju hardvera i softvera. Alat ukljuuje odgovarajui asembler i/ili kompajler za pisanje i prevoenje programa, odgovrajui simulator za izabrani mikrokontroler, hardverski emulator po potrebi, razvojni sistem, programator i slino. Ako je dizajner familijaran sa arhitekturom izabranog mikrokontrolera moe se zapoeti sa asembliranjem prototipa. U suprotnom, dizajner bi morao prouavanjem arhitekture mikrokontrolera, pisanjem programskih primera i testiranjem na razvojnom sistemu ili programskom simulatoru zapoeti proces familijarizacije. Kada dizajner ovlada arhitekturom mikrokontrolera softver treba podeliti na upravljake celine koje mogu biti napisane u formi potprograma ili funkcija i testirane nezavisno. Razvoj hardvera moe ii paralelno u iteracijama testiranja i otklanjanja greaka za sve programske i hardverske celine aplikacije. Za kompletiranje pojedinih iteracija potrebno je koristiti opremu za testiranje i razvojne alate kao to su emulator, programator, simulator i slino, i u skladu sa mogunostima minimizirati broj iteracija. Jedan realistian mikrokontrolerski razvojni sistem prikazan je na slici 1.1.3.1.

6. 7.

8.

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika. 1.1.2.1 Razvojni sistem sa ugraenim kontrolerom. Konano, integracijom softvera i hardvera potrebno je ponovo izvriti testiranje i eventualno otklanjanje greaka kompletne aplikacije. 10. U toku pisanja programa i izgradnje hardvera, vana aktivnost koja ne sme biti proputena je izrada dokumentacije. Dokumentovanje dizajna je ekstremno vano ne samo kao trag projektanta ve i za testiranje aplikacije u toku ivota ureaja i buduih revizija. 11. Finalni korak je razvoj sistema u ciljnom okruenju na odgovarajuoj proizvodnoj liniji. 9.

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Poglavlje 2

ARHITEKTURA I ORGANIZACIJA MCU PIC16F877

2.1. RISC i CISC ARHITEKTURE MIKROKONTROLERA


Dve vrste arhitektura konvencionalne su za dananje mikrokontrolere: Von-Neumann arhitektura na kojoj bazira vei procenat mikrokontrolera i Harvard arhitektura na kojoj je zasnovana PIC serija mikrokontrolera. Na slici 2.1.1. prikazani su principi organizacije pomenutih arhitektura mikrokontrolera.

Slika 2.1.1. Harvard i Von-Neumann (Princeton) arhitekture mikroraunara.

10

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Kao to se sa slike moe videti, konvencionalna Von-Neumann arhitektura mikrokontrolera poseduje jednu internu magistralu koja povezuje CPU sa programskom (ROM) i memorijom podataka (RAM). Ovakav koncept povezuje kompletan memorijski prostor sa CPU jednom magistralom tako da podaci i instrukcije koriste istu magistralu. Harvard arhitektura je noviji koncept u odnosu na Von-Neumann-ovu. Harvard arhitektura mikroraunara bazira na principu fizikog razdvajanja internih magistrala za programsku memoriju (ROM) i memoriju podataka (RAM). Time je, zbog konkurentnog pristupa programskoj memoriji i memoriji podataka, ukupan protok podataka kroz CPU ubrzan. Rezolucija magistrale podataka osmobitnog mikrokontrolera Harvard arhitekture je osmobitna dok je rezolucija instrukcijske rei (rezolucija programske magistrale) uobiajeno vea od osam bitova (tipino 12, 14 ili 16). Instrukcije i podaci dobavljaju se jednovremeno i izvravaju u jednom instrukcijskom ciklusu. Tipino za Harvard arhitekturu je da poseduje manje raspoloivih instrukcija nego Von-Neumann-ova, i da se veina instrukcija izvrava u jednom instrukcijskom ciklusu. Mikrokontroleri Harvard arhitekture nazivaju se uopteno RISC mikrokontrolerima (Reduced Instruction Set Computer) i predstavljaju popularnu arhitekturu modernih procesora. Jedan 8bitni mokrokontroler ove arhitekture uobiajeno poseduje do nekoliko desetina instrukcija. Mikrokontroleri Von-Neumann-ove arhitekture nazivaju se CISC mikrokontrolerima (Complex Instruction Set Computer). Magistrala podataka i programska magistrala su iste rezolucije, npr. osmobitna, meutim, zbog zauzimanja zajednike magistrale podaci i instrukcije ne mogu biti dobavljeni istovremeno. Tipini osmobitni mikrokontroleri Von-Neuman arhitekture poseduju preko dve stotine instrukcija. Microchip mikrokontroleri PIC serije, koji su tema ove knjige, zasnovani su na modernoj Harvard arhitekturi. Na slici 2.1.2. prikazan je blok dijagram principijelne organizacije RISC mikrokontrolera PIC16F877. Kapacitet programske FLASH EEPROM memorije iznosi 8192 14-bitnih rei dok je kapacitet RAM memorije podataka 512 bajta, od ega 368 bajta pripada korisnikom adresnom prostoru a ostatak registrima specijalne namene. Programski broja (broja instrukcija) PC je 13-bitni, tako da se moe adresirati ukupan adresni prostor programske memorije od 213=8192 instrukcijske rei. Magacinska memorija STACK nije u sastavu interne RAM memorije ve predstavlja zasebnu celinu od osam nivoa za uvanje povratnih adresa. Mikrokontroler podrava dva naina adresiranja RAM memorije podataka, direktni i indirektni. Kao to se sa slike 2.1.2. moe videti, pri direktnom adresiranju 9-bitna adresa dobija se tako to se na 7-bitnu adresu, dobijenu iz operacionog koda instrukcije, dodaju jo dva bita iz STATUS-nog registra CPU. Indirektno adresiranje se izvodi pomou MSB bita STATUS-nog registra i 8-bitnog registra specijalne namene, FSR (File Select Register) registra, koji ima ulogu pokazivaa. 8-bitnoj ALU jedinici pridruen je jedan registar akumulatora w (work register) i registar stanja (Status register). PIC16F877 poseduje odreeni broj internih integrisanih programabilnih elektronskih kola za poveanje pouzdanosti sistema, minimizaciju cene razvoja aplikacije eliminisanjem eksternih komponenata, reim niske potronje (Sleep) i zatitu koda. Pogodnost je i postojanje dvoinog internog inteligentnog interfejsa za serijsko programiranje mikrokontrolera u sistemu ISSP (In System Serial Programming). Maksimalna frekvencija taktovanja je prema podacima proizvoaa 20MHz. Sve instrukcije (35) izvravaju se u jednom ciklusu, osim instrukcija grananja programa za ije izvrenje su potrebna dva instrukcijska ciklusa. Za povezivanje sa spoljnim svetom implementirana su pet portova, A do E, od ega su tri 8bitna, jedan 6-bitni i jedan 3-bitni. Linije pojedinih portova multipleksirane su analognim, digitalnim I/O funkcijama i funkcijama za sinhronu/asinhronu serijsku komunikaciju. Jedan od pet protova se moe konfigurisati kao 8-bitni paralelni mikroprocesorski port.

11

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Mikrokontroler PIC16F877 opremljen je nizom periferijskih jedinica koje ureaj ine fleksibilnijim u realizaciji aplikacija. Od standardne opreme ovih komponenata treba pomenuti tajmere/brojae. Integrisana su dva 8-bitna tajmera, Tajmer0 i Tajmer2 kao i jedan 16-bitni Tajmer1 koji ima mogunost prikljuenja eksternog kristalnog oscilatora. Jo jedna vana integrisana periferija je i 10-bitni A/D konvertor sa registrom sukcesivnih aproksimacija, koji pripada klasi brzih konvertora, sa osam analognih vremenski multipleksiranih kanala. DATA EEPROM (Electrical Erasable Programmable Read Only Memory) memorija, koja takoe pripada periferijskom podsistemu, kapaciteta je 256 bajta. Realizovana je kao poseban fiziki prostor a namenjena skladitenju programskih konstanti i/ili nepromenljivih parametara programa. Ova memorija je reprogramabilna postojana memorija kojoj se pristupa preko dva registra specijalne namene, adresnog i registra za podatke. Dva CCP modula namenjena su preciznom merenju/generisanju vremenskih intervala, npr. trajanja impulsa, kao i generisanju impulsno-irinski modulisanog signala.

Slika 2.1.2. Blok dijagram organizacije mikrokontrolera PIC16F877.

12

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.1.3. Pin konfiguracija mikrokontrolera PIC16F877 u PDIP-40 kuitu. Sinhroni serijski komunikacioni interfejsi kao to su IIC (Inter-Integrated Circuit) i SPI (Serial Peripheral Interface) pripadaju periferijskom bloku nadreenog sinhronog serijskog porta. Poslednja integrisana periferija je USART (Universal Synchronous/Asynchronous Receiver Transmiter) za specifinu sinhronu/asinhronu komunikaciju sa spoljanjim ureajima.

2.2. SOFTVERSKI RAZVOJNI ALATI


Za pisanje i testiranje softvera potreban je dobar razvojni alat. Sa porastom popularnosti PIC familije mikrokontrolera izbor raspoloivog softverskog razvojnog alata je postajao iri i atraktivniji za korisnike. Microchip nudi integrisano razvojno okruenje MPLAB IDE pod Windows operativnim sistemom za PICmicro MCU sa ugraenim editorom, asemblerom, linkerom i prevodiocem, mogunou integracije vieg programskog jezika, programskim simulatorom aplikacija, mogunou pokretanja aplikacije na emulatoru i softverom za programiranje mikrokontrolera. Sve nabrojano u jednom integrisanom okruenju predstavlja izvanredan alat sa mogunou da korisnik monitorie izvoenje aplikacije i odziv pod razliitim ulaznim uslovima. Na slici 2.2.1 prikazan je izgled vie otvorenih prozora paketa MPLAB. Osim MPLAB IDE paketa korisniku na raspolaganju stoji mnotvo drugih softverskih alata kao to su: PIC Simulator IDE - izvanredno integrisano okruenje simulatora namenjeno serijama PIC12FXXX i PIC16FXXX sa BASIC prevodiocem, asemblerom, disasemblerom, generatorom HEX datoteke, interaktivnim asemblerskim editorom i veim brojem simuliranih I/O ureaja, PIC18 Simulator IDE namenjeno seriji mikrokontrolera PIC18FXXXX, CCS C kompajler za brzi razvoj aplikacionog softvera na viem programskom jeziku C koji ukljuuje tri odvojena prevodioca - PCB za 12.bitni operacioni kod, PCM za 14-bitni opkod i PCH za 16-bitni opkod PIC mikrokontrolera, kao i softver za programiranje PICmicro ureaja IC-Prog.

13

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.1. Integrisano softversko razvojno okruenje za PICmicro MCU MPLAB IDE (Microchip).

14

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.2. PIC Simulator IDE. Na slici 2.2.2. prikazan je izgled PIC simulatora IDE sa prozorima simuliranih I/O ureaja i portovima izabranog mikrokontrolera PIC16F877A.

15

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.4. Izgled prozora alata IC-Prog za programiranje PICmicro.

Slika 2.2.3. PIC18 Simulator IDE.

16

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.5. Editor i radno okruenje CCS C kompajlera za PICmicro.

2.2.1. Skup i podela instrukcija


Mikrokontroler PIC16F877 poseduje skup od 35 etrnaestobitnih instrukcija od kojih se veina izvrava u jednom instrukcijskom ciklusu izuzev instrukcija grananja programa za ije izvoenje su potrebna dva ciklusa. Sve instrukcije mogu se podeliti na tri grupe: bajt orijentisane, bit orijentisane i literalne i kontrolne instrukcije/operacije. Na slici 2.2.1.1. prikazan je generalni format tri grupe instrukcija. Format bajt-orijentisanih instrukcija

Format bit-orijentisanih instrukcija

17

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Opti format literalnih i kontrolnih instrukcija

Specifian format kontrolnih instrukcija CALL i GOTO

Slika 2.2.1.1. Formati tri grupe instrukcija MCU PIC16F877. Sedam najniih bita bajt orijentisanih operacija predstavlja adresu registra operanda to znai da se moe adresirati 27=128 registara. Bit oznaen sa d je odredini bit operacije tako da je za d=0 rezultat operacije u akumulatoru (radni registar w), dok je za d=1 rezultat u registru operanda. Podrazumevana vrednost ovog bita u sluaju da se izostavi je d=1. irina polja operacionog koda bajt orijentisanih instrukcija je est bita na najvioj poziciji u instrukcijskoj rei. Prema tome, ukupan broj bajt orijentisanih operacija moe biti 26=64, od ega je implementirano 18. Kao i kod grupe bajt orijentisanih operacija, sedam najniih bita bit orijentisanih operacija predstavlja adresu registra operanda. Sledea tri bita predstavljaju adresu bitske pozicije (0 do 7) osmobitnog sadraja registra operanda (23=8), dok najvia etiri bita pripadaju operacionom kodu ove grupe instrukcija (maksimalan broj ovih instrukcija moe biti 24=16). Literalne i kontrolne operacije su prostijeg formata. Osam najniih bita ovih operacija predstavlja literalnu konstantu (0 do 255) dok je operacioni kod estobitni. Izuzetak ine kontrolne operacije koje se odnose na instrukcije poziva potprograma CALL i bezuslovnog skoka GOTO koje imaju neto drugaiji format. Naime, literalna konstanta ovih instrukcija je 11bitna i predstavlja simboliku adresu prve instrukcije potprograma ili bezuslovnog skoka, dok je operacioni kod ovih instrukcija trobitni. Budui da je adresa skoka 11-bitna to se ovim operacijama moe dosei prostor programske memorije ne vei od 211=2048 instrukcijskih rei (dve kilo rei) u odnosu na tekuu kontrolnu instrukciju skoka. U tabeli 2.2.1.1. prikazan je potpuni skup instrukcija podeljenih u tri grupe. U prvoj koloni prikazane su mnemonike instrukcije koje sadre operande i odredini bit d, dok je u drugoj koloni dat opis svake instrukcije. Broj instrukcijskih ciklusa potrebnih za izvoenje svake od instrukcija dat je u treoj koloni tabele. Za izvoenje uslovnih instrukcija (npr. DECFSZ f,d) potrebna su jedan ili dva instrukcijska ciklusa u zavisnosti od kondicionalnog testa. Ako je kondicionalni test istinit instrukcija se izvrava u dva ciklusa pri emu je drugi ciklus NOP operacija. Isto se dogaa u sluaju modifikacije sadraja programskog brojaa koja je rezultat neke instrukcije (npr. CALL k). etvrta kolona opisuje 14-bitni operacioni kod instrukcije gde je sa d oznaen odredini bit ija vrednost je d=1 ako je odredini registar operand f a d=0 ako je to akumulator w. Sa f su oznaena sedam bita adrese operanda dok je x vrednost bita koja moe biti proizvoljna 0 ili 1. Sa tri bita oznaena sa b u skupu bit orijentisanih instrukcija kodira se jedna od osam bitskih pozicija 8-bitnog sadraja operanda (0 do 7), dok je u skupu literalnih i kontrolnih instrukcija sa k oznaena 8-bitna ili 11-bitna literalna konstanta. U poslednjoj petoj koloni tabele navedeni su bitovi statusnog registra CPU na koje neke instrukcije mogu imati uticaj. Koristei operacione kodove instrukcija date u tabeli 2.2.1.1. mogue je direktno, bez posredstva prevodioca, napisati izvrni binarni oblik programa uz poznavanje adresa operanada koje ine registri opte i posebne namene, kao u sledeem primeru. Neka su heksadecimalne adrese korisnikih promenljivih, za koje je rezervisan prostor u RAM memoriji, S_COPY, P_COPY i W_COPY redom 0x70h, 0x71h i 0x72h a adrese registara posebne namene kao to su STATUS i PCLATH

18

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

redom 0x03h i 0x0Ah. Za asemblerski potprogram sa labelom PUSH odgovarajui 14-bitni binarni ekvivalenti mnemonikih instrukcija, dobijeni iz tabele 2.2.1.1, prikazani su paralelno. Kompletan instrukcijski set
Mnemonik, Operandi OPIS INSTRUKCIJE Broj ciklusa BAJT-ORIJENTISANE OPERACIJE ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF f, d f, d f f, d f, d f, d f, d f, d f, d f, d f f, d f, d f, d f, d f, d Sabiranje sadraja registara W i f AND operacija nad bitovima registara W i f Bridsanje sadraja registra f Brisanje sdraja registra W Operacija komplementiranja bitova registra f Dekrementiranje sadraja registra f Dekrementiranje sadraja registra f-skok ako je on 0. Inkrementiranje sadraja registra f Inkrementiranje sadraja registra f-skok ako je on 0 OR operacija nad bitovima registara W i f Prenos sadraja registra f Prenos sadraja registra W u registar f Nema operacije izuzev troenja instrukcijskog ciklusa Rotiranje sadraja registra f ulevo kroz Carry bit Rotiranje sadraja registra f udesno kroz Carry bit Oduzimanje sadraja registra W od registra f Zamena polubajtova registra f Ekskluzivna OR operacija nad bitovima reg. W i f 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110 dfff dfff 1fff 0xxx dfff dfff dfff dfff dfff dfff dfff 1fff 0xx0 dfff dfff dfff dfff dfff ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff

14-bit Opkod MSb

Uticaj na LSb Stat. Reg.

C,DC,Z Z Z Z Z Z Z Z Z

C C C,DC,Z Z

BIT-ORIJENTISANE OPERACIJE BCF BSF BTFSC BTFSS f, b f, b f, b f, b Resetovanje bita b registra f Setovanje bita b registra f Testiranje bita b registra f-skok ako je on 0 Testiranje bita b registra f-skok ako je on 1 1 1 1 (2) 1 (2)
01 01 01 01 00bb 01bb 10bb llbb bfff bfff bfff bfff ffff ffff ffff ffff

LITERALNE I KONTROLNE OPERACIJE ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW k k k k k k k k k Sabiranje literalne konstante k sa sadrajem registra W AND op. nad literalnom konst. k i sadrajem registra W Poziv potprograma na simbolikoj adresi k Brisanje registra Watchdog tajmera Bezuslovni skok na simboliku adresu k OR op. nad literalnom konst. k i sadrajem registra W Prenos literalne konstante k u registar W Povratak iz prekidne rutine sa omoguenim glob. prek. Povratak iz potprog. sa lit. konst. k u registru W Povratak iz potprograma Uvoenje u standby reim rada Oduzimanje sadraja registra W od lit. konst. k Ekskluzivna OR op. nad lit. konst. k i sadrajem reg. W 1 1 2 1 2 1 1 2 2 2 1 1 1
11 11 10 00 10 11 11 00 11 00 00 11 11 lllx 1001 Okkk 0000 lkkk 1000 00xx 0000 0lxx 0000 0000 1l0x 1010 kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 kkkk kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk

C,DC,Z Z TO,PD Z

TO,PD C,DC,Z Z

Tabela 2.2.1.1. Kompletan skup instrukcija mikrokontrolera PIC16F877.

19

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

PUSH: MOVWF SWAPF MOVWF CLRF MOVF MOVWF CLRF RETURN W_COPY STATUS, 0 S_COPY STATUS PCLATH, 0 P_COPY PCLATH 00 0000 1111 0010 00 1110 0000 0011 00 0000 1111 0000 00 0001 1000 0011 00 1000 0000 1010 00 0000 1111 0001 00 0001 1000 1010 00 0000 0000 1000

2.2.2. Asemblerski jezik


Asemblerski jezik predstavlja simboliki mainski jezik koji umesto binarnih ili heksadecimalnih operacionih kodova instrukcija koristi sugestivne mnemonike instrukcije, jednostavne za pamenje, ije delove ine i simboliki predstavljeni operandi. Na slici 2.2.2.1. prikazan je tok generisanja apsolutnog koda kojim se puni programska memorija MCU. Kada je izvorna datoteka asemblirana na ovaj nain, sve promenljive i rutine koriene u izvornoj datoteci moraju biti definisane unutar nje ili u posebnim datotekama koje eksplicitno moraju biti ukljuene u izvornu. Ako proces prevoenja protekne bez greaka generie se hex datoteka koja sadri izvrni mainski kod za punjenje programske memorije ciljnog ureaja. Ova datoteka moe biti koriena zajedno sa dibagerom za testiranje koda pri izvrenju ili sa programatorom za programiranje ciljnog ureaja.

Slika 2.2.2.1. Nain generisanja apsolutnog koda. MPASM asembler/prevodilac tipino je ukljuen u Microchip-ovo integrisano razvojno okruenje MPLAB IDE. Proces prevoenja izvorne asemblerske datoteke *.asm generie datoteke tipa: HEX, ERR i LST. Prvom se puni programska memorija mikrokontrolera, druga sadri spisak greki i upozorenja. Trea je najkorisnija za programera jer sadri, adrese, programski kod, greke, dodatne informacije poput grafikog zauzea memorije itd. Osnovni elementi asemblerskog jezika su sledei: labele, instrukcije, operandi, direktive i komentari.

20

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Labele su tekstualni opisi nekog dela programa. Obino se koriste kao taka u programu gde e doi do skoka. Labela mora poeti u prvoj koloni sa abedecenim znakom ili sa znakom _, zavrava se sa : a maksimalna doputena duina labele je 32 karaktera. Instrukcije ili naredbe se piu za odreenu seriju mikrokontrolera po pripadajuim sintaksnim pravilima. Operandi su delovi instrukcije i oznaavaju registar, varijablu ili konstantu. Komentari se unose radi jasnoe i dokumetovanja a piu se iza instrukcija ili u praznom redu sa obaveznim znakom ; na poetku. Ne prevode se. Direktive su asemblerske komande koje se pojavljuju u izvornom kodu ali se uobiajeno ne prevode u operacione kodove. Koriste se za kontrolu asemblerskog programa i kontrolu alokacije podataka. Ne zavise od tipa mikrokontrolera.

Slika 2.2.2.2. Format tipine linije izvornog koda. U nastavku teksta prikazana je principijelna struktura asemblerskog programa.
;********************************************************************** ; Ova datoteka predstavlja ablon asemblerskog programa ; za PICmicro PIC16F877 MCU. Datoteka sadri osnovne ; asemblerske gradivne blokove. ; ; Ako se prekidi ne koriste, kod prikazan izmeu ORG 0x04 ; direktive i labele Main moe biti uklonjen. Takoe se mogu ; ukloniti i promenljive w_copy, s_copy i p_copy. ; ;********************************************************************** ; ; Ime datoteke: xxx.asm ; Datum: ; Verzija programa: ; ; Autor: ; Preduzee: ; ; ;********************************************************************** ; ; Ukljune datoteke: ; ; ;********************************************************************** ; ; Komentari: ; ;********************************************************************** * * * * * * * * * * * * * * * * * * * * * * * *

LIST p=16f877 #INCLUDE <p16f877.inc>

; listing direktiva za definiciju procesora. ; kontrolna direktiva za ukljuenje dodatne datoteke-datoteke za definicju specifinih ; procesorskih registara (promenljivih).

__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF ; '__CONFIG' direktiva za podatke-koristi se za ugradnju konfiguracionih podataka unutar .asm datoteke.

21

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

; Labele koje slede direktivu sadrane su u odgovarajuoj .inc datoteci.

;******** Definicija promenljivih ******** W_COPY S_COPY P_COPY EQU EQU EQU 0x70 0x71 0x72 ; promenljiva W_COPY koja se koristi pri zameni konteksta procesa. ; promenljiva S_COPY koja se koristi pri zameni konteksta procesa. ; promenljiva P_COPY koja se koristi pri zameni konteksta procesa.

; kontrolna direktiva EQU je opteg oblika <label> equ <expr> i ima sledee znaenje: Vrednost <expr> pridruuje se simbolu ;<label>. U ovom sluaju to su adrese gornje tri korisnike promenljive. ;********* Adresa reset vektora ********* ORG CLRF GOTO 0x00 PCLATH MAIN ; kontrolna direktiva oznaava startnu adresu programa - adresa reset vektora prog. mem. ; brisanje PCLATH registra obezbeuje selekciju stranice 0 programske memorije. ; skok na poetak glavnog programa.

;************ Skok na adresu prekidnog vektora i kod za spaavanje konteksta glavnog programa ************** ORG MOVWF SWAPF MOVWF MOVF MOVWF 0x04 W_COPY STATUS, W S_COPY PCLATH, W P_COPY ; adresa prekidnog vektora na koju se program grana po pojavi prekidnog zahteva. ; sauvaj aktuelni sadraj registra w u w_copy (kopija w registra). ; prenesi sadraj svopovanog status registra u w registar. ; sauvaj aktuelni sadraj registra w u s_copy (kopija svopovanog status registra). ; prenesi sadraj pclath registra u w registar. ; sauvaj aktuelni sadraj registra w u p_copy (kopija pclath registra).

; gornji skup instrukcija koristi se za uvanje konteksta prekinutog procesa, sadraja registara w, status i pclath, dok se sadraj PC ; automatski pamti u steku. Instrukcija swapf koristi se umesto instrukcije movf koja moe uticati na Z bit statusnog registra. ;************ Nastavak koda pripada rutini za obradu prekida ************** ; ISR: ; izvorni kod prekidne servisne rutine sa labelom ISR zapoinje na ovom mestu. Kod rutine moe biti lociran i na drugom mestu i ; pozivan kao potprogram. ; posle izvoenja koda prekidne servisne rutine sledi niz instrukcija za rekonstrukciju sadraja registara w, status i pclath kao pre skoka na adresu prekidnog vektora, dok se sadraj PC automatski rekonstruie iz steka. ;************ Kod za rekonstrukciju konteksta prekinutog glavnog programa i povratak iz prekidne rutine ************* MOVF MOVWF SWAPF MOVWF SWAPF SWAPF RETFIE P_COPY, W PCLATH S_COPY, W STATUS W_COPY, F W_COPY, W ; prenesi kopiju PCLATH registra u w. ; obnovljeni sadraj PCLATH registra odgovara onom pre skoka na prekidni vektor. ; svopuj prethodno svopovanu kopiju STATUS registra i prenesi je u w. ; obnovljeni sadraj STATUS registra odgovara onom pre skoka na prekidni vektor. ; dvostrukom primenom instrukcije swapf koja ne utie na bitove statusnog registra obnavlja ; se sadraj registra w koji odgovara onom pre skoka na prekidni vektor. ; povratak iz ISR u glavni program na mesto prekida.

;************ Kod glavnog programa ************* MAIN: ; poetak koda glavnog programa. ; kontrolna direktiva za indikaciju kraja programa.

END

MPASM asembler podrava sledee radix forme (brojne osnove): heksadecimalna, decimalna, oktalna, binarna i ASCII. Podrazumevana radix forma je heksadecimalna. Ova forma radix-a odreuje formu dodeljenih konstanti u object fajlu kada radix nije eksplicitno specificiran asemblerskom direktivom. Tabela pokazuje razliite radix specifikacije, njihovu sintaksu i primere korienja.
Tip Sintaksa Primer

22

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Decimalni Heksadecimalni Oktalni Binarni ASCII

D'<dec_cifre>' .<dec_cifre> H'<hex_cifre>' 0x<hex_cifre> O'<oktalne_cifre>' B'<binarne_cifre>' A'<karakter>' '<karakter>'

D'100' .100 H'9f' 0x9f O'777' B'00111001' A'C' 'C'

Tabela razliitih radix specifikacija.

etiri nia bita (4-bit) I I V

Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F

0 NUL SOH STX ETX EOT ENQ ACK Bell BS HT LF VT FF CR SO SI

Tri via bita (3 bit) ---> 1 2 3 4 DLE Space 0 @ DC1 ! 1 A DC2 " 2 B DC3 # 3 C DC4 $ 4 D NAK % 5 E SYN & 6 F ETB ' 7 G CAN ( 8 H EM ) 9 I SUB * : J ESC + ; K FS , < L GS = M RS . > N US / ? O

5 P Q R S T U V W X Y Z [ \ ] ^ _

6 ` a b c d e f g h i j k l m n o

7 p q r s t u v w x y z { | } ~ DEL

Tabela 7-bitnih ASCII karaktera.

2.2.3. Vii programski jezici


Za razliku od asemblera, vii programski jezici nude mogunost brzog, konformnog, preglednog i efikasnog dizajniranja aplikacionog softvera to, u krajnjem, ima uticaj na cenu aplikacije. Primena viih programskih jezika u mikrokontrolerskim aplikacijama podrana je od strane proizvoaa koji, u skladu sa poveanjem radne brzine mikrokontrolera, obezbeuju i veu programsku i RAM memoriju ovih komponenata. Jedan program napisan na asembleru troi tipino 80% od veliine istog programa u C verziji. Savremeni razvojni sistemi za PIC mikrokontrolere u osnovi nude projektantu iste mogunosti kao PC zasnovano razvojno okruenje, izuzev grafikih biblioteka. Razvoj proizvoda kombinacija je znanja i iskustva dizajnera. Programiranje mikrokontrolera na viem programskom jeziku moe biti naizgled teak

23

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

zadatak uz inicijalni troak za odgovarajui kompajler, emulator i neophodni hardver, to je oteavajue za procenu cene projekta. Na tritu je raspoloivo nekoliko C kompajlera za PIC seriju mikrokontrolera koji imaju veoma sline karakteristike i koji se esto koriste u komercijalne, industrijske i edukacione svrhe, kao to su: mikroC PICC18 C18 CCS C Popularni i snani mikroC kompajler, proizvod mikroElektronike (www.mikroe.com), jednostavan je za uenje, poseduje veliki broj bibliotekih funkcija i integrisano razvojno okruenje sa ugraenim simulatorom i dibagerom (In Circuit Debager-MikroICD). Demo verzija kompajlera sa ogranienjem za veliinu programa do 2K raspoloiva je na sajtu firme mikroElektronika. PICC18, drugi popularni C kompajler, razvijen je od strane firme HI-Tech Software (www.htsoft.com) i raspoloiv u dve verzije: standardna i profesionalna. Snaan simulator i integrisano razvojno okruenje (Hi-Tide) glavne su karakteristike kompajlera. PICC18 je podran od strane PROTEUS simulatora (www.labcenter.co.uk) koji moe biti korien za simulaciju sistema zasnovanih na PIC mikrokontrolerima. Vremenski limitirana demo verzija ovog kompajlera raspoloiva je na sajtu proizvoaa. C18 je proizvod firme Microchip Inc. (www.microchip.com), ukljuuje simulator i hardverskosoftverski razvojni alat kao to je emulator (ICE200) i dibager (ICD2). Na sajtu proizvoaa raspoloiva je vremenski limitirana demo verzija kompajlera kao i verzija sa limitiranom funkcionalnou koja nije vremenski limitirana. CCS C kompajler proizvod je firme Custom Computer Services Inc. (www.ccsinfo.com). Poseduje veliki broj ugraenih bibliotekih funkcija i podrku dibageru ICD-U40. Ovi alati omoguavaju projektantu brzo i efikasno dizajniranje aplikacionog softvera za Microchip-ove mikrokontrolere u viem programskom jeziku C, istovremeno poboljavajui preglednost i itljivost programa. PCB, PCM, PCH i PCD su odvojeni prevodioci za 12-bitne, 14-bitne, 16bitne i 24-bitne operacione kodove PICmicro, respektivno. Proizvoa nudi vremenski ogranienu demo verziju ovog kompajlera. Pomenuti C kompajleri doputaju mogunost ukljuenja asemblerskih jezikih instrukcija u C program za npr. realizaciju striktnog programskog kanjenja i slino. Osim pomenutih C kompajlera na tritu su raspoloivi mikroBasic i mikroPascal kompajleri, proizvodi firme mikroElektronika, koji programerima familijarnim sa programskim jezicima Basic i Pascal pruaju mogunost konformnog programiranja PICmicro ureaja. U ovoj knjizi je za razvoj aplikacija korien CCS C kompajler, detaljnije diskutovan u poglavlju 7.

2.2.4. Potprogrami i moduli-hardverski stek


Dobar softver treba da bude konfigurisan kao skup interaktivnih programskih modula a ne kao jedan veliki program koji se izvrava od svog poetka pa do kraja. Postoje mnoge prednosti modularnog programiranja, koje posebno dolaze do izraaja kada veliina programa premai nekoliko stotina linija ili u sluaju timskog razvoja projekta. Modularno programiranje koristi odreene principe konstrukcije programa. Moe se definisati kao jedan pristup programiranju pri kome su odvojeni logiki zadaci programirani odvojeno a povezani docnije. Modularno programiranje zahteva dekompoziciju programskih zahteva i specifikacija na odreeni broj zasebnih rutina, odnosno, jasno definisanih kraih i dobro dokumentovanih zadataka. Ideja, jedan zadatak po modulu dobro je pravilo koje programera navodi na generalizaciju reenja i

24

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

mogunosti viestrukog korienja koda. Prednosti ovakvog naina programiranja sline su prednostima pri realizaciji modularnog hardverskog sistema. Naime, svaki se programski modul, kao osnovni konstruktivni element programa, moe testirati, dibagovati i odravati zasebno to programsku celinu ini pouzdanijom. Modul se moe preuzeti iz npr. standardne biblioteke koja se isporuuje sa prevodiocem, iz specijalizovnih biblioteka ili iz personalnih biblioteka korisnika koje on sam razvija. Ako je reenje programskog modula dovoljno opte, moe se primeniti u velikom broju programa. Eventualno auriranje programske celine olakano je izmenom samo pojedinih programskih modula. Programski moduli se mogu pozivati iz glavnog programa, drugih programskih modula ili na bazi hardverski generisanih zahteva. Tipian primer su potprogrami i rutine za obradu prekida. Pisanje i rad modula za obradu prekida je u dovoljnoj meri razliito od potprograma da zahteva poseban tretman. U programskom jeziku C potprogrami imaju jedan od dva oblika: funkcije i makroi. Funkcija je potprogram koji podrazumeva mehanizam poziv/povratak (call/return) podran u modernim raunarima orijentisanim na rad sa stekom. Funkcije koriste stek da od pozivaoca dobiju ulazne podatke i predaju im vrednost. Programski kod funkcije se u izvrnom programu pojavljuje samo jednom ali se funkcije mogu pozivati proizvoljan broj puta. Makroi su slini funkcijama, to su imena kojima je pridruena tekstualna definicija. U C jeziku makroi imaju jedan od dva oblika, makro kao objekat ije ime se zamenjuje tekstualnom definicijom i makro kao funkcija koji osim imena sadri i parametre, slino funkciji. Glavna razlika makroa u odnosu na funkciju je to to se njihov programski kod kopira na mestima poziva u programu i izvrava kao niz instrukcija bez podrke mehanizma poziv/povratak koji koriste funkcije. Svako pozivanje funkcije predstavlja dodatno optereenje jer se deo vremena troi na smetanje podataka na stek, prenoenje izvravanja programa na drugo mesto u memoriji i povratak na instrukciju iza poziva funkcije. Makro, sa druge strane, prevodilac razvija u tekst svaki put kada sretne njegovo ime to proizvodi kod koji se izvrava bez dodatnog optereenja. Meutim, ako se makro poziva vie puta u programu, kopiranje koda makroa na vie mesta uveava obim programa i u izvornom i u izvrnom obliku, to je cena vee brzine izvoenja u odnosu na funkciju.

Slika 2.2.4.1. Pozivanje potprograma. Na slici 2.2.4.1. je prikazan simboliki tok programa koji u jednom svom delu dva puta poziva potprogram za izvoenje specifinog zadatka. Na mestu poziva potprograma (call), koji se uobiajeno nalazi na drugom mestu u memoriji, kao na slici, tekua adresa programskog brojaa se automatski inkrementira i smeta u hardverski stek tako da ukazuje na povratnu adresu u programu a potom se u programski broja upisuje adresa prve instrukcije potprograma (simboliku adresu potprograma u izvornom kodu predstavlja njegovo ime). Po povratku iz potprograma (return) automatskim mehanizmom se sa vrha hardverskog steka uzima sauvana povratna adresa koja ukazuje na prvu instrukciju u programu iza poziva potprograma i smeta u programski broja. Na taj nain omoguen je normalan nastavak izvoenja programa, iz koga je pozvan potprogramski modul.

25

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.4.2. Korienje hardverskog steka za uvanje povratne adrese. Na slici 2.2.4.2. prikazan je sadraj steka pre, po pozivu i po povratku iz potprograma. Mikrokontroler PIC16F877 poseduje hardverski stek od osam 13-bitnih registara organizovanih po cirkularnom LIFO (Last In First Out) principu. Stek nije u sastavu RAM memorije ve predstavlja zasebnu celinu sa pridruenim trobitnim pokazivaem steka koji nije dostupan programeru. Poziv potprograma (call xxx) inicira redom: smetanje inkrementirane adrese instrukcije poziva (call xxx), koju sadri 13-bitni programski broja u registar steka na koji ukazuje pokaziva steka. Inkrementirana adresa instrukcije poziva potprograma (PC(call xxx)+1) predstavlja adresu prve instrukcije koja sledi posle call xxx instrukcije u programu iz koga je pozvan potprogram. automatsko inkrementiranje pokazivaa steka, punjenje programskog brojaa adresom prve instrukcije potprograma (xxx) to za posledicu ima grananje programa. Povratak iz potprograma (return) inicira redom: automatsko dekrementiranje pokazivaa steka, punjenje programskog brojaa povratnom adresom koja se uva u registru steka na koji ukazuje pokaziva steka to za posledicu ima nastavak izvoenja programa iz koga je pozvan potprogram. Izlazna taka svakog potprograma mora biti instrukcija return. Mehanizam steka podrava tkzv. gnedenje potprograma, odnosno, mogunost pozivanja jednog potprograma iz drugog potprograma. Na slici 2.2.4.3. prikazani su simboliki princip dvonivovskog gnedenja, kao i izgled hardverskog steka pri pozivanju i povratku iz potprograma. Iz glavnog programa se najpre poziva potprogram PP1 ija se povratna adresa PC1 smeta na vrh steka na koji ukazuje pokaziva. Potom se iz potprograma PP1 poziva potprogram PP2 ija se povratna adresa PC2 smeta na jedan nivo ispod vrha, imajui u vidu automatsko inkrementiranje pokazivaa steka posle smetanja prve povratne adrese. Povratak u glavni program dogaa se suprotnim tokom. Po kompletiranju potprograma PP2 povratnom instrukcijom return se dekrementira pokaziva steka a potom u programski broja prenosi sauvana druga povratna adresa PC2. Ova adresa je zapravo adresa prve instrukcije posle instrukcije poziva potprograma PP2 i nalazi se u potprogramu PP1 odakle je pozvan potprogram PP2. Kada se zavri izvoenje i potprograma PP1 povratnom instrukcijom RETURN se jo jednom dekrementira pokaziva steka a potom u programski broja prenosi sauvana prva povratna adresa PC1. Ova adresa je zapravo adresa prve instrukcije posle instrukcije poziva potprograma PP1 i nalazi se u glavnom programu odakle je pozvan potprogram PP1. Mehanizam steka moe rukovati i situacijama u kojima potprogram poziva samog sebe. Takvi potprogrami poznati su pod nazivom rekurzivni potprogrami. Mehanizam steka se dalje koristi i za rukovanje prekidima. U programima koji koriste i potprograme i prekide, dubina steka od osam nivoa katkad moe biti nedovoljna. Naime, cirkularni LIFO mehanizam steka posle sauvanih osam povratnih adresa prepisuje devetu adresu preko prve, desetu preko druge itd., ime se gube povratne adrese nekih potprograma ili prekida. Mikrokontroler PIC16F877 ne poseduje statusne bitove za indikaciju praznog i punog

26

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

steka niti instrukcije PUSH (guraj u stek) i POP (izvuci iz steka) za implementaciju softverskog steka. PUSH i POP akcije se odnose na sadraj programskog brojaa i automatski se dogaaju izvoenjem instrukcija CALL, RETURN, RETLW i RETFIE kao i grananjem programa na adresu prekidnog vektora.

Slika 2.2.4.3. Gnedenje potprograma i izgled steka pri pozivanju i povratku iz potprograma.

2.2.5. Rukovanje prekidima


Potprogrami, razmatrani u prethodnoj sekciji, predstavljaju jednostavne predvidljive dogaaje koje diktira program. U realnim situacijama, gde postoji interakcija procesora sa spoljanjim fizikim dogaajima na ije zahteve procesor treba da odgovori, to, meutim, nije jednostavno. Primer jednog vremenski osetljivog dogaaja prikazan je na slici 2.2.5.1.

Slika 2.2.5.1. Detekcija i merenje trajanja jednog spoljanjeg dogaaja. Sistem meri proteklo vreme izmeu dva R talasa signala elektrokardiografa (ECG) pacijenta a zasnovan je na detektoru pika ECG signala i mikrokontroleru MCU. Maksimalno oekivano vreme izmeu dva uzastopna R talasa je 1.5s. Potrebno vremensko razlaganje od 0.1ms dobijeno je primenom spoljanjeg oscilatora frekvencije 10KHz. Za merenje proteklog vremena, kao vremenska baza se koristi 16-bitni broja taktovan impulsima oscilatora. Merenje vremena se zasniva na stalnom praenju stanja brojaa i itanju njegovog registra u trenucima pojave R

27

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

1.

2. 3.

4. a) b)

c)

talasa. Razlika dva uzastopno proitana stanja brojaa srazmerna je proteklom vremenu. Glavni problem, meutim, jeste detekcija R talasa budui da ECG signal pacijenta nije sinhronizovan sa MCU. Jedan od naina detekcije je stalno itanje izlazne linije detektora pika povezane na ulaz mikrokontrolera. Takva tehnika poznata je pod nazivom tehnika prozivke (polling). Ako se pretpostavi normalni srani ritam pacijenta od 60 otkucaja/min, tada vreme izmeu dva uzastopna R talasa iznosi 1s. Za detekciju jednog R talasa koji se moe dogoditi u ovom vremenu potrebno je, za usvojeno razlaganje vremena, obaviti 10000 prozivki. Prema tome, 99.99% vremena, u kome nema pojave R talasa, procesor troi beskorisno traei jedan dogaaj u 10000. Alternativni pristup reenju bio bi korienje dodatnog hardvera iji zadatak bi bio slanje signala procesoru u trenutku detekcije R talasa, to bi moglo biti iskorieno za prekidanje tekueg procesa, itanje registra brojaa i potom nastavak izvoenja prekinutog procesa. Takav pristup daje ansu procesoru da do trenutka detekcije R talasa obavi mnotvo drugih korisnih akcija, izvravajui tekui proces, i ne potroi ovo vreme na prozivku. Ovakav mehanizammehanizam prekida podravaju svi savremeni procesori, ukljuujui i hardver za generisanje prekidnog signala na odgovarajui dogaaj. Glavni nedostatak prekidom upravljanog praenja dogaaja u realnom vremenu je dodatna kompleksnost hardvera. Tehnika prozivke moe biti adekvatna za sluaj dogaaja koji se retko pojavljuju, kada perioda prozivanja ne mora biti kratka. Meutim, smanjenje brzine prozivanja smanjuje verovatnou precizne detekcije trenutka pojave asinhronog dogaaja (preskakanje) ali poveava efikasnost procesora. Esencijalno, pojava prekidnog signala uzrokuje prekid aktuelnog procesa, pamenje njegove prekinute pozicije i skok na specijalni potprogram poznat pod imenom prekidna servisna rutina. Ova se rutina izvrava samo na zahtev, odnosno, na odgovarajui dogaaj koji generie prekidni signal. Na slici 2.2.5.2. prikazan blok dijagram odziva procesora na prekidni zahtev. Kao to se moe videti: Procesor odmerava prekidnu liniju jednom u svakom instrukcijskom ciklusu. Ako je ova linija aktivna, odgovarajui indikator prekida (flag-zastavica), koji predstavlja le kolo, je setovan, u suprotnom indikator je resetovan. Bez obzira na stanje ove linije tekua instrukcija se izvrava do kraja. To znai da se instrukcija u vreme izvoenja ne moe prekinuti, ak i u sluaju dvociklusnih instrukcija. Ako je prekidna linija neaktivna, procesor jednostavno nastavlja sa izvoenjem sledee instrukcije posle ega se opisani proces ispitivanja linije prekida ponavlja. Ako je prekidna linija aktivna, u sledea tri instrukcijska ciklusa kontrola se prebacuje na prekidnu servisnu rutinu. Prvi od tri ciklusa moe biti zavrni ciklus dvociklusne instrukcije ili, u suprotnom, pseudo ciklus, dok su druga dva neophodna za uspostavljanje protone obrade instrukcija na kojoj bazira mikrokontroler PIC16F877. Opisano kanjenje od tri do etiri instrukcijska ciklusa, od trenutka pojave prekidnog signala do poetka izvoenja prve instrukcije prekidne servisne rutine, poznato je pod nazivom vreme kanjenja (latency). Nemogue je preciznije odrediti vreme kanjenja (tri ili etiri instrukcijska ciklusa) zbog sluajne prirode pojave prekidnog zahteva koji se moe pojaviti bilo kada, npr odmah posle ispitivanja prekidne linije. U toku trajanja vremena kanjenja po automatizmu se izvravaju sledee operacije: Bit za globalno maskiranje prekida GIE (Global Interrupt Enable) se resetuje ime se automatski zabranjuju (maskiraju) svi ostali prekidi. Na ovaj nain omoguena je obrada aktuelnog prekida bez mogunosti njegovog prekidanja. Sadraj inkrementiranog registra programskog brojaa upuuje se na hardverski stek na isti nain kao i za instrukciju poziva potprograma (CALL). Ovo e omoguiti procesoru da se po izvoenju prekidne servisne rutine instrukcijom povratka vrati na mesto prekida. Pri ovome treba imati u vidu ogranienu dubinu hardverskog steka od osam nivoa zbog mogueg ugnjedavanja. Kako je prva instrukcija prekidne servisne rutine uvek na adresi prekidnog vektora 004h programske memorije, zavrni korak je punjenje registra programskog brojaa adresom ove

28

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

instrukcije. Ako je program za obradu prekida na drugom mestu u programskoj memoriji a ne odmah ispod adrese prekidnog vektora tada se instrukcijom bezuslovnog skoka GOTO vri grananje programa na poetak programa za obradu prekida. 5. Kao i potprogram, prekidna servisna rutina mora biti okonana instrukcijom za povratak. Meutim, u ovom sluaju nije dovoljno samo punjenje programskog brojaa povratnom adresom sa steka. Neophodno je jo i ponovo omoguiti mehanizam prekida, onemoguen resetovanjem GIE bita za maskiranje svih prekida. Relevantna zavrna instrukcija za ovu situaciju je RETFIE (RETurn From Interrapt and Enable). Na taj nain, po povratku u prekinuti program bilo koji budui prekidi mogu biti servisirani.

Slika 2.2.5.2. Odziv na prekidni zahtev. Prekidna servisna rutina se znaajno razlikuje od potprograma ne samo po zavrnoj instrukciji (RETFIE) ve i po logici prekidnog sistema, kao i pseudosluajnoj prirodi prekida. Na slici 2.2.5.3. je prikazan deo te logike za jedan izvor prekida koji ima interakciju sa procesorom preko dva bita kontrolnog registra prekida.

29

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.5.3. Bit flag-a-zastavice prekida i bit za maskiranje/demaskiranje prekida kao deo logike prekidnog sistema. Bit zastavice prekida (flag) se automatski setuje kada odgovarajui izvor prekida zahteva servis. Ako je pri tome i mask bit setovan zahtev e biti prosleen ostatku kontrolne logike prekidnog sistema, kao na slici 2.2.5.3. Treba primetiti da stanje mask bita ne utie na stanje zastavice. To znai da se zastavica automatski setuje svaki put kada izvor prekida postavi zahtev, dok se prosleivanje zahteva ostatku logike vri samo u sluaju da je mask bit setovan. Prema tome, ako je mask bit resetovan, jedino se tehnikom prozivke zastavice prekida moe detektovati zahtev koji generie odgovarajui izvor prekida. Bit zastavice prekida se po automatskom setovanju mora programski resetovati kako bi se mogao detektovati sledei zahtev izvora prekida, prekidnim mehanizmom ili prozivkom. Veoma je vano napomenuti da se neposredno pre povratka iz rutine za obradu prekida u prekinuti program bit zastavice prekida mora programski resetovati da bi se mogao detektovati novi zahtev za prekidnim servisom. U suprotnom, dogodila bi se beskrajna serija prekidnih zahteva. Setovana zastavica prekida bila bi znak procesoru da se dogodio novi zahtev pa bi po izlasku iz prekidne servisne rutine program ponovo granao na prekidnu rutinu. Kako neposredno pre izlaska iz prekidne rutine nije resetovana zastavica prekida, opisani ciklus bi se ponavljao neogranieni broj puta. Individualni (lokalni) bit za maskiranje/demaskiranje prekida, koji se odnosi na odgovarajui izvor prekida, moe biti setovan ili resetovan iskljuivo programski. Posle reseta mikrokontrolera individualni mask bitovi svih izvora prekida, kao i GIE bit, postavljaju se u reset stanje ime su svi individualni prekidi maskirani. Za demaskiranje pojednih prekidnih zahteva treba koristiti asemblersku instrukciju BSF (bit set file register), odnosno, setovati mask bit odgovarajueg izvora prekida u kontrolnom registru prekida ali i bit za globalno omoguenje prekida GIE. PIC16F87X serija mikrokontrolera poseduje 14 hardverski ugraenih izvora prekidnog signala, slika 2.2.5.4. Registar za kontrolu prekida INTCON (INTerrupt CONtrol) sadri individualne bitove za maskiranje/demaskiranje tri standardna prekida (TOIE, INTE, RBIE) i njima odgovarajue flag bitove, bit za globalno maskiranje/demaskiranje svih vrsta prekida GIE, kao i bit za globalno maskiranje/demaskiranje prekida sa svih periferijskih jedinica PEIE (PEripheral Interrupt Enable), slika 2.2.5.4. GIE (Global Interrupt Enable) bit omoguava (ako je setovan) ili onemoguava (ako je resetovan) sve nemaskirane prekide. Kada je GIE bit setovan zajedno sa individualnim bitom za omoguenje/onemoguenje (maskiranje/demaskiranje) prekida, setovanje odgovarajueg individualnog flag bita uzrokuje programski skok na adresu prekidnog vektora. Individualni mask bitovi za omoguenje/onemoguenje prekida mogu se setovati bez obzira na stanje GIE bita. Meutim, programski skok na adresu prekidnog vektora se nee dogoditi u sluaju da je GIE bit resetovan. Individualni prekidi se mogu onemoguiti kroz njihove odgovarajue mask bitove za omoguenje/onemoguenje prekida koji se nalaze u razliitim registrima. Tri standardna izvora prekidnog signala, spoljanji prekid na liniji RB0/INT porta B, spoljanji prekid na linijama vieg nibla porta B, RB<7:4> i prekid koji generie Tajmer 0 modul usled prekoraenja njegovog osmobitnog brojakog registra TMR0, kontroliu se i detektuju u registru INTCON i hardverski su ugraeni u gotovo svim serijama Microchip-ovih mikrokontrolera.

30

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.5.4. Kontrolna logika prekidnog sistema mikrokontrolera PIC16F877.

Slika 2.2.5.5. Principijelna ekvivalentna ema prekidne logike mikrokontrolera PIC16F877.

31

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Kontrolni bitovi prekida sa pojedinih periferija (omoguenje/onemoguenje) sadrani su u registrima specijalne namene PIE1 i PIE2, a njima odgovarajue zastavice prekida (flag bitovi) u SFR registrima PIR1 i PIR2. Bit za globalno maskiranje/demaskiranje prekida sa svih periferija (PEIE) sadran je u INTCON registru. Principijelna ekvivalentna ema prekidne logike mikrokontrolera, slika 2.2.5.5. jasno pokazuje da je GIE bit glavni prekida svih prekida, dok je PEIE bit glavni prekida prekida sa periferijskog podsistema. Takoe se moe primetiti da parovi mask bit/bit zastavice individualnih prekida moraju biti setovani da bi se prekid dogodio. Mikrokontroler PIC16F877 se instrukcijom SLEEP uvodi u stand-by reim niske potronje. Izvoenjem ove instrukcije blokira se kvarcni oscilator, kojim se taktuje CPU jedinica, ime se prekida sa daljim izvoenjem instrukcija. Kako je snaga disipacije MCU srazmerna frekvenciji taktovanja
2 PD = CT f CLK VDD

gde je fCLK frekvencija taktnih impulsa, CT ekvivalentno koncentrisano kapacitivno optereenje MCU a VDD napon napajanja MCU, to se za fCLK=0Hz snaga disipacije svodi na minimalnu, to je posledica struja curenja kroz poluprovodnik. Ova osobina mikrokontrolera od esencijalnog je znaaja za ureaje sa baterijskim napajanjem. Buenje mikrokontrolera iz sleep reima vri se resetom MCU ili generisanjem bilo kog prekidnog signala. Sa slika 2.2.5.4. i 2.2.5.5. je evidentno da se buenje MCU prekidnim signalom moe obaviti na dva naina: normalnim nastavljanjem izvoenja prve instrukcije posle SLEEP instrukcije ako je pre izvoenja SLEEP instrukcije GIE bit bio resetovan ili grananjem programa na prekidni vektor ako je GIE bit bio setovan. Budui da postoji samo jedan prekidni vektor na adresi programske memorije 004h i ukupno 14 izvora prekida, prvi zadatak rutine za obradu prekida ISR je odreivanje izvora prekidnog signala metodom prozivke individualnih zastavica prekida-flegova. Ovaj deo rutine za obradu prekida poznat je pod nazivom analizator prekida. Po odreivanju izvora prekidnog signala prelazi se na obradu odgovarajueg prekida. Uobiajeno je da se prozivaju samo izvori prekida koji su omogueni-demaskirani. Deo asmblerskog programa koji pripada prekidnoj servisnoj rutini sa analizatorom prekida za tri standardna izvora prekida u INTCON registru prikazan je sledeom sekvencom instrukcija:
ISR: BTFSC GOTO BTFSC GOTO BTFSC GOTO IRQ_IZLAZ: RETFIE INTCON,RBIF EXT_PROMENA INTCON,INTF EXT_PIN INTCON,T0IF TAJMER0 ; ; ; ; ; ; ; Poetak prekidne servisne rutine Proveri prekid na promenu vieg nibla porta B Ako jeste, skoi na labelu EXT_PROMENA Proveri prekid na RB0 pinu porta B Ako jeste, skoi na labelu EXT_PIN Proveri prekid sa Tajmera 0 Ako jeste, skoi na labelu TAJMER0

; Povratak iz prekidne rutine sa GIE=1

EXT_PROMENA: ; ; Kod za obradu prekida sa vieg nibla porta B ; BCF INTCON,RBIF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ EXT_PIN: ; ; Kod za obradu prekida sa RB0 pina porta B ; BCF INTCON,INTF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ

32

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

TAJMER0: ; ; Kod za obradu prekida sa Tajmera 0 ; BCF INTCON,T0IF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ

Iz date sekvence se vidi da se najpre vri provera ko je od tri izvora prekida generisao prekidni zahtev i potom prelazi na odgovarajuu obradu. Redosled prozivke (RBIF, INTF, T0IF) definie prioritet prekida u sluaju da vie od jednog prekida koincidira. Jasno je da e u tom sluaju zbog setovanih zastavica prekida, po obradi prioritetnog prekida i izlasku iz prekidne rutine program ponovo ulaziti u nju uzastopno onoliki broj puta koliko preostalih koincidentnih zahteva nieg prioriteta postoji. Obrada prekidnih zahteva ii e redosledom koji diktira analizator prekida. U gornjem primeru, za sluaj da sva tri zahteva koincidiraju najpre se obrauje EXT_PROMENA, po ponovnom ulasku u prekidnu rutinu EXT_PIN i na kraju TAJMER0 podrutina, resetujui pri tome svaki put odgovarajuu zastavicu prekida. Zbog automatskog hardverskog setovanja zastavica svih izvora prekida nezavisno od stanja njihovih mask bitova, tehnika prozivke zastavica moe biti iskoriena za detekciju odgovarajuih dogaaja bez primene prekidnog mehanizma. Da bi se mogao detektovati sledei dogaaj, kao i u sluaju ISR, mora se izvriti programsko resetovanje odgovarajue zastavice. Primena tehnike prozivke umesto prekidnog mehanizma, kao to je ve reeno, znaajno umanjuje efikasnost procesora troei dragoceno procesorsko vreme na prozivanje, odnosno, ekanje na pojavu dogaaja. Interni procesorski registri (registri posebne namene) kao to su tipino W-akumulator, STATUS-statusni registar ALU, PCLATH-upisni bafer za pet viih bitova programskog brojaa i PC-programski broja jesu deljivi resursi. Jedna ISR rutina koristi ove registre na isti nain kao i bilo koji potprogram ili deo glavnog programa, tako da je eventualni konflikt zbog izmene sadraja registara mogu. Na primer, zbog sluajne prirode prekidnog zahteva ne moe se predvideti memorijska banka memorije podataka sa ijim registrima operie program u trenutku pojave prekida. Budui da se program prekida a kontrola prebacuje na rutinu za obradu prekida, u njoj se zavisno od potrebe moe selektovati druga memorijska banka. Selekcija odgovarajue banke vri se odgovarajuim upisom u bitske pozicije 5 i 6 statusnog registra. Po izlasku iz prekidne rutine lako moe doi do konflikta ako aktuelna banka ne odgovara onoj u kojoj je program operisao do pojave prekida. Slian zakljuak vai i za npr. registar akumulatora W ijim sadrajem operie i tekui program koji se prekida i prekidna rutina. Mogui konflikti se mogu izbei pamenjem sadraja procesorskih registara od znaaja u trenutku pojave prekida, slino hardverskom mehanizmu uvanja sadraja PC registra u steku. Posle obrade prekida i neposredno pred povratak u prekinuti program, obnavljanjem sadraja ovih registara na stanje koje odgovara trenutku pojave prekidnog zahteva moglo bi se nastaviti sa izvoenjem prekinutog programa kao da prekida nije ni bilo. Opisani postupak pamenja sadraja internih registara, prebacivanja kontrole na prekidnu servisnu rutinu, obnavljanja sadraja registara i ponovnog vraanja kontrole na prekinuti program poznat je pod nazivom zamena konteksta procesa. Posebna panja pri zameni konteksta treba biti posveena izboru lokacija u memoriji podataka gde e se uvati zapameni sadraji internih registara. Ove lokacije koriste se za sistemske namene i ne sme ih koristiti niti prekidna rutina za uvanje rezultata/meurezultata obrade, niti potprogrami ili glavni program. 16 registara opte namene (GPR-korisniki registri), koji pripadaju najviem adresnom prostoru bilo koje od etiri memorijske banke mikrokontrolera PIC16F877, mapirani su u svim bankama memorije podataka te predstavljaju njihove zajednike registre. Otuda je najpogodnije ove memorijske lokacije RAM memorije koristiti za pamenje i obnavljanje sadraja internih registara procesora jer ne zahtevaju selekciju memorijske banke ('banking'). Izabrane lokacije predstavljaju softverski stek i koriste se u nedostatku instrukcija PUSH i POP, kojima raspolau neki mikrokontroleri, za pamenje i obnavljanje sadraja vanih registara, respektivno. U sluaju nedostatka, ove instrukcije se mogu programski implementirati kao npr. asemblerski makroi.

33

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Takav nain implementacije PUSH i POP instrukcija poveava fleksibilnost u smislu pamenja i obnavljanja sadraja veeg broja registara od znaaja ali, naalost, iziskuje vie vremena za izvravanje. Primeri programske implementacije PUSH i POP instrukcija u formi makroa dati su u nastavku teksta.
;Rezervacija prostora (dodela adresa promenljivim) S_COPY P_COPY W_COPY PUSH MACRO MOVWF SWAPF MOVWF MOVF MOVWF ENDM POP MACRO MOVF MOVWF SWAPF MOVWF SWAPF SWAPF ENDM EQU EQU EQU 0x70 0x71 0x72 ;16 GPR registara, najvieg adresnog prostora ;svake banke zajedniki su za sve etiri banke ;poev od adrese 0x70 do 0x7F

W_COPY STATUS, W S_COPY PCLATH, W P_COPY

;Sauvaj sadraj W reg. u njegovu kopiju W_COPY. ;Sauvaj sadraj STATUS reg. bez uticaja na njegov ;sadraj, primenom instrukcije swapf. ;Sauvaj sadraj PCLATH reg. u njegovu kopiju P_COPY

P_COPY, PCLATH S_COPY, STATUS W_COPY, W_COPY,

W W F W

;Obnovi PCLATH reg. i selektuj originalnu stranicu ;programske memorije. ;Obnovi STATUS reg. i selektuj originalnu banku ;memorije podataka. ;Obnovi W reg. ne utiui na sadraj ve obnovljenog ;STATUS reg., dvostrukom primenom instrukcije swapf.

Opti oblik deklaracije makro definicije u asembleru je <label> macro [<arg>,...,<arg>]. Kraj makro definicije zavrava direktivom ENDM. Kao to je opisano u poglavlju 2.2.4. ove knjige makro je slian funkciji, moe i ne mora imati argumente a na mestu poziva u programu kod makroa se u celini kopira. U gornjem primeru pokazana su dva makroa bez argumenata koja se pozivaju imenima PUSH i POP. Makro PUSH koristi se kao zamena za nedostajuu instrukciju MCU PIC16F877 istog imena. Koristi se za privremeno smetanje (pamenje) sadraja internih registara procesora W, STATUS i PCLATH u odgovarajui adresni prostor memorije podataka sa simbolikim adresama W_COPY, S_COPY i P_COPY. Moe se primetiti da se u oba makroa na odreenim mestima koriste instrukcije zamene niblova swapf statusnog registra i registra akumulatora. Razlog primene ove instrukcije lei u injenici da ona ne utie ni na jedan bit statusnog registra. Razlog za izbegavanje primene naizgled logine instrukcije movf, umesto swapf, jeste mogunost uticaja ove instrukcije na Z bit (zero bit) statusnog registra. Po pravilu, PUSH makro ukljuuje registre specijalne namene koje kao deljive resurse zajedniki koriste ISR, potprogrami ili glavni program i poziva se odmah na ulazu u prekidnu rutinu, odnosno, ispod adrese prekidnog vektora, kao bi se odmah pristupilo spaavanju okoline prekinutog procesa. Nasuprot tome, POP makro se po pravilu poziva na izlazu iz prekidne rutine, odnosno, ispred poslednje instrukcije RETFIE, kako bi se po obradi prekida izvrila rekonstrukcija okoline prekinutog procesa. Sledea programska sekvenca prikazuje nain implementacije PUSH i POP makroa u prekidnoj rutini.
ORG 0x04 PUSH GOTO ; Adresa prekidnog vektora ; Poziv PUSH makroa navoenjem njegovog imena ; Skok na ISR za obradu prekida

ISR

34

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

; ; ISR: BTFSC GOTO BTFSC GOTO BTFSC GOTO IRQ_IZLAZ: POP RETFIE

INTCON,RBIF EXT_PROMENA INTCON,INTF EXT_PIN INTCON,T0IF TAJMER0

; ; ; ; ; ; ;

Poetak prekidne servisne rutine Proveri prekid na promenu vieg nibla porta B Ako jeste, skoi na labelu EXT_PROMENA Proveri prekid na RB0 pinu porta B Ako jeste, skoi na labelu EXT_PIN Proveri prekid sa Tajmera 0 Ako jeste, skoi na labelu TAJMER0

; Poziv POP makroa navoenjem njegovog imena ; Povratak iz prekidne rutine sa GIE=1

EXT_PROMENA: ; ; Kod za obradu prekida sa vieg nibla porta B ; BCF INTCON,RBIF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ EXT_PIN: ; ; Kod za obradu prekida sa RB0 pina porta B ; BCF INTCON,INTF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ TAJMER0: ; ; Kod za obradu prekida sa Tajmera 0 ; BCF INTCON,T0IF ; Brisanje zastavice prekida pre izlaska iz ISR GOTO IRQ_IZLAZ

Iz svega napred reenog moe se zakljuiti: ISR se mora zavriti instrukcijom RETFIE, sadraji deljivih registara specijalne namene moraju biti sauvani na ulazu i obnovljeni na izlazu iz ISR, nema prosleivanja parametara ka ili od ISR. Umesto njih treba koristiti globalne promenljive, ako je potrebno. ISR treba biti to je mogue kraa sa minimalnom funkcionalnou. Ovaj princip obezbeuje garanciju da drugi prekidni zahtevi ne budu proputeni a od koristi je i pri dibagovanju rutine.

2.2.6. Protona (pipelining) obrada instrukcija


Kao rezultat Harward arhitekture mikrokontrolera PIC16F877, funkcije dobavljanja i izvrenja instrukcija su razdvojene i obavljaju se paralelno sa minimumom interakcije. Konkurentan pristup programskoj memoriji i memoriji podataka doputaju mogunost jednovremenog dobavljanja jedne i izvrenja druge instrukcije to za posledicu ima ubrzanje izvrenja programskog koda. Na slici 2.2.6.1. ilustrativno je prikazan princip preklapanja faza dobavljanja i izvrenja instrukcija koji koristi PIC16F877. Instrukcijskim ciklusom TCY se naziva vreme potrebno za izvrenje jedne instrukcije. Kao to se sa slike moe primetiti, jedan instrukcijski ciklus ine etiri mainska ciklusa (Q), odnosno, etiri periode taktnog oscilatora CPU jedinice TOSC. Prema tome, za poznatu i konstantnu frekvenciju oscilovanja generatora takta CPU f OSC=1/TOSC,

35

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

instrukcijski ciklus je takoe konstantan i iznosi TCY=4TOSC=4/fOSC. Oigledno je, dakle, da je trajanje instrukcijskog ciklusa etiri puta vee u odnosu na periodu taktnog oscilatora. S tim u vezi, brzina izvrenja instrukcija je etiri puta manja u odnosu na frekvenciju taktnog oscilatora. Budui da je brzina izvrenja instrukcija vaan parametar za korisnika, proizvoai MCU definiu njenu maksimalnu vrednost simbolikom oznakom MIPS (Million Instructions per Second). Maksimalna frekvencija taktovanja mikrokontrolera PIC16F877, prema specifikaciji proizvoaa, iznosi 20MHz. U skladu sa time i maksimalna brzina izvrenja instrukcija iznosi fOSC/4=5 MIPS.

Slika 2.2.6.1. Preklapanje faza dobavljanja tekue i izvrenja prethodno dobavljene instrukcije. Za realizaciju tehnike protone obrade instrukcija, instrukcijski registar je dvostruko baferovan (implementiran u dva nivoa-IR1 i IR2) tako da se dobavljanje jedne instrukcije izvodi u jednom instrukcijskom ciklusu. Dobavljanje instrukcije zapoinje u prvom mainskom ciklusu Q1 tekueg instrukcijskog ciklusa, inkrementiranjem programskog brojaa (PC+1) a zavrava u mainskom ciklusu Q4 itanjem instrukcije iz programske memorije i smetanjem njenog operacionog koda u instrukcijski registar IR1. U isto vreme, prethodno dobavljena instrukcija, za vrednost programskog brojaa (PC), premeta se iz instrukcijskog registra IR1 u registar IR2, koji zapravo predstavlja registar instrukcijskog dekodera. Izvrenje instrukcije smetene u instrukcijski dekoder zapoinje u mainskom ciklusu Q1 dekodovanjem operacionog koda instrukcije i potom izvrenjem u toku trajanja sledea tri mainska ciklusa Q2, Q3 i Q4. itanje i dobavljanje operanda iz memorije podataka vri se u ciklusu Q2 dok se u ciklusu Q3 vri obrada u aritmetiko-logikoj jedinici ALU. U poslednjem ciklusu Q4 rezultat obrade se upisuje u memoriju podataka. Kako su adresne i magistrale podataka programske memorije i memorije podataka fiziki odvojene, iz napred izloenog je jasno da se i faza dobavljanja i faza izvrenja instrukcija mogu odvijati sinhrono i jednovremeno jer se dobavljanje vri iz programske memorije a za izvravanje koristi memorija podataka. Minimum interakcije obe faze je mainski ciklus Q4 u kome se vri smetanje proitanog operacionog koda instrukcije u registar IR1 i istovremeni prenos prethodno dobavljene instrukcije u registar IR2, odnosno, registar instrukcijskog dekodera. Takoe je jasno da se pod takvim okolnostima ne moe u isto vreme dobavljati i izvravati ista instrukcija. Opisanom protonom obradom instrukcija postie se efektivno izvrenje instrukcija u jednom instrukcijskom ciklusu, premda i faza dobavljanja i faza izvrenja troe po jedan. Izuzetak ine instrukcije grananja programa, zbog diskontinualne promene sadraja programskog brojaa. Za kompletiranje izvrenja takvih instrukcija potrebna su dva instrukcijska ciklusa, kao na slici 2.2.6.2.

36

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.2.6.2. prikazuje protonu obradu instrukcija programske sekvence date na istoj slici. Dobavljanje instrukcije 1 vri se u instrukcijskom ciklusu TCY1 dok se u narednom ona izvrava a u isto vreme dobavlja operacioni kod instrukcije 2. U treem ciklusu izvrava se instrukcija 2 a dobavlja instrukcija poziva potprograma SUB_1 kao trea instrukcija. U etvrtom instrukcijskom ciklusu sledi izvrenje instrukcije poziva potprograma na simbolikoj adresi SUB_1. U optem sluaju potprogram SUB_1 moe biti lociran bilo gde u programskoj memoriji, to podrazumeva grananje programa, odnosno, programski skok. U skladu sa tehnikom protone obrade instrukcija u instrukcijskom ciklusu TCY4 dobavlja se i sledea instrukcija u nizu, instrukcija 4. Ova instrukcija, meutim, ne predstavlja prvu instrukciju pozvanog potprograma koju treba dobaviti ali sadraj programskog brojaa koji ukazuje na ovu instrukciju predstavlja povratnu adresu. Ova adresa mora biti sauvana na steku, kako bi tekui program mogao normalno nastaviti sa izvrenjem po povratku iz potprograma. Kada je povratna adresa sauvana, programski broja PC se puni adresom prve instrukcije potprograma to predstavlja diskontinualnu promenu sadraja PC. Budui da dobavljena instrukcija 4 nije prva instrukcija potprograma, u instrukcijskom ciklusu TCY5 se nee izvriti. Umesto nje izvrava se NOP (No Operation) instrukcija koja ne proizvodi nikakav efekat izuzev potronje jednog instrukcijskog ciklusa. U istom ciklusu TCY5, meutim, dobavlja se prva instrukcija potprograma na simbolikoj adresi SUB_1, na koju ukazuje sadraj programskog brojaa. Dobavljena prva instrukcija potprograma izvrava se u instrukcijskom ciklusu TCY6 u kome se, takoe, dobavlja i sledea, druga instrukcija potprograma SUB_1 itd.

Slika 2.2.6.2. Primer protone obrade jednociklusnih i dvociklusnih instrukcija. Instrukcija grananja programa, kao to je poziv potprograma CALL, oigledno za izvoenje zahteva dva instrukcijska ciklusa s obzirom na diskontinualnu promenu sadraja programskog brojaa. Slino, i ostale instrukcije grananja kao to su GOTO, RETURN, RETFIE i RETLW takoe troe dvostruko vie vremena za izvoenje u odnosu na jednociklusne instrukcije.

2.3. IZBOR I KONFIGURISANJE TAKTNOG OSCILATORA CPU


Za taktovanje CPU jedinice mikrokontrolera PIC16F87X i njegovih periferijskih modula predviena su etiri radna reima kola oscilatora, koje korisnik moe birati programiranjem dva bita konfiguracione rei mikrokontrolera FOSC1 i FOSC0. To su: LP (Low Power Crystal) za spoljanje kvarc kristale rezonantne frekvencije do 200KHz, npr. satni kvarc kristal frekvencije rezonanse 32768Hz. XT (Crystal/Resonator) za spoljanje kvarc kristale i keramike rezonatore frekvencije rezonanse do 4MHz. HS (High Speed Crystal/Resonator) za spoljanje kvarc kristale i keramike rezonatore frekvencije rezonanse iznad 4MHz (do 20MHz).

37

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

RC (Resistor/Capacitor) za jeftine spoljanje pasivne vremenske komponente R i C. (Neke serije PIC MCU kao to je PIC12C5XX poseduju integrisane RC komponente i ne raspolau HS modom oscilatora). Na slici 2.3.1. prikazana je konfiguracija i nain prikljuenja spoljanjih komponenata prva tri tipa kristalnih oscilatora LP, XT i HS. Ova konfiguracija obuhvata jedan, u MCU integrisani invertujui pojaava, iji izlaz prelazi u stanje visoke impedanse (odspojen izlaz) po izvrenju SLEEP instrukcije, i tri spoljanje komponente - dva keramika kondenzatora i jedan kvarc kristal, kao na slici 2.3.1. Jedina razlika izmeu prva tri radna reima je u pojaanju invertujueg pojaavaa. U LP modu pojaanje pojaavaa je najmanje a potronja minimizirana zahvaljujui niskim radnim frekvencijama do oko 200KHz. HS mod se koristi za visoke radne frekvencije, do 20MHz sa najveim pojaanjem pojaavaa ali i potronjom kola. U ovom modu postiu se velike brzine izvrenja instrukcija. XT mod je predvien za umerene radne frekvencije, do 4MHz, to podrazumeva umereno pojaanje pojaavaa i potronju kola. Kada je konfigurisan u jednom od prva tri moda, ureaj moe biti taktovan i eksternim taktnim generatorom kao na slici 2.3.2. Takav nain taktovanja moe biti od koristi kada se eli sinhronizacija veeg broja MCU jednim taktnim generatorom. U tom sluaju eksterni oscilator treba prikljuiti na ulazni pin OSC1 mikrokontrolera, dok izlazna linija OSC2 postaje odspojena (plivajua). Ova linija, iako plivajua, treba biti spojena na zajedniku taku nultog potencijalamasu preko otpornika u cilju redukcije uma. Periodini Izlazni signal eksternog generatora takta (pravougaona povorka impulsa) mora biti takav da niski naponski nivo njegovih impulsa bude manji od 0.3VDD a visoki vei od 0.7VDD, gde je VDD napon napajanja mikrokontrolera. Jedan od tri moda, LP, XT ili HS, treba konfigurisati u skladu sa izabranom frekvencijom eksternog generatora.

Slika 2.3.1. Povezivanje spoljanjih komponentata za konfigurisanje LP, XT ili HS oscilatora.

Slika 2.3.2. Taktovanje MCU eksternim generatorom taktnog signala u LP, XT ili HS modovima. RC mod je koristan za jeftine aplikacije gde striktni tajming i aktuelna brzina taktovanja nisu od krucijalnog znaaja, slika 2.3.3. Brzina taktovanja (frekvencija oscilovanja taktnog generatora) je funkcija izabranih vrednosti otpornosti otpornika R i kapacitivnosti kondenzatora C koji se prikljuuju spolja, napona napajanja VDD i radne temperature. Za seriju mikrokontrolera PIC16F87X preporuljive vrednosti spoljanjih pasivnih komponenta su:

3kW REXT 100kW i C EXT > 20 pF

38

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.3.3. RC mod taktnog oscilatora sa izlazom sistemskog takta. Proizvoa u formi grafika i tabela nudi specifikacije R i C komponenta u funkciji frekvencije oscilovanja RC generatora takta. Korisnik, meutim, mora uzeti u obzir i varijacije frekvencije zbog tolerancija vrednosti spoljanjih R i C komponenata. U RC modu MCU generie sistemski takt fOSC/4, raspoloiv na pinu OSC2, koji moe biti baferovan i primenjen kao sistemski takt za sinhronizaciju drugih komponenata ili mikrokontrolera. Opseg napona napajanja PIC16F87X serije mikrokontrolera je od 2V do 5.5V, dok je tipina potronja struje manja od 0.6mA pri naponu napajanja 3V i frekvenciji taktovanja 4MHz, slika 2.3.4. Tipina potronja struje, meutim, pri istom naponu i frekvenciji taktovanja od 32KHz je samo 20A. Sve serije PIC mikrokontrolera poseduju tkzv. sleep funkcionalnost za prevoenje ureaja u reim rada sa ekstremno niskom potronjom, izvravanjem instrukcije SLEEP. Kao to se sa slika 2.3.1. i 2.3.3. moe videti, ovom instrukcijom se blokira kolo kristalnog ili RC oscilatora i time blokira dalje izvravanje instrukcija. Kao rezultat, potronja struje opada na vrednost manju od 1A koja predstavlja rezultantnu struju curenja kroz poluprovodnik. Ve je reeno da je snaga disipacije MCU srazmerna frekvenciji taktovanja i data izrazom
2 PD = CT f CLK VDD

gde je fCLK frekvencija taktnih impulsa, CT ekvivalentno koncentrisano kapacitivno optereenje MCU a VDD napon napajanja MCU. Buenje mikrokontrolera iz sleep reima vri se: 1. spoljanjim resetovanjem MCU na MCLR liniji, 2. prethodno omoguenim spoljanjim prekidima (RB0 linija ili etiri linije vieg nibla porta B) ili prethodno omoguenim unutranjim prekidima generisanih sa periferija, 3. izlaznim signalom prethodno omoguenog WDT tajmera. Sledei periferijski prekidi mogu probuditi MCU iz SLEEP stanja ako su prethodno bili omogueni i pod odgovarajuim okolnostima: 1. 2. 3. 4. 5. 6. 7. prekid sa PSP porta (paralelni slave port) pri itanju ili upisu u port, prekid sa tajmera 1 (TMR1) ako je konfigurisan u asinhronom brojakom modu, SSP (START/STOP) bit detekcije prekida, SSP prijem ili predaja u slave modu (SPI/IIC), prekid sa USART modula u sinhronom slave reimu rada, prekid po kompletiranju operacije upisa u EEPROM memoriju, prekid sa A/D modula ako je taktovan autonomnim RC taktnim oscilatorom,

Ostale periferije ne mogu generisati prekide zbog blokiranog taktnog oscilatora u SLEEP reimu MCU.

39

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Buenje MCU omoguenim prekidnim signalom vri se na dva naina u zavisnosti od stanja GIE bita pre izvrenja SLEEP instrukcije: a) normalnim nastavljanjem izvoenja prve instrukcije posle SLEEP instrukcije ako je pre izvoenja SLEEP instrukcije GIE bit bio resetovan b) izvrenjem prve instrukcije koja sledi SLEEP instrukciju i odmah potom grananjem programa na prekidni vektor ako je GIE bit bio setovan.

Slika 2.3.4. Tipine krive potronje struje MCU PIC16F877 u XT reimu taktovanja pri razliitim vrednostima napona napajanja.

2.4. ORGANIZACIJA MEMORIJSKOG PROSTORA


Memorija je, kao i procesor, fundamentalna komponenta savremenih raunarskih sistema. Sastoji se od niza memorijskih rei (u najprostijem sluaju to su bajtovi) od kojih svaka ima jedinstvenu adresu. Prilikom izvravanja programa, procesor na bazi vrednosti programskog brojaa PC dobavlja instrukcije iz memorije i potom izvrava. Dobavljene instrukcije dodatno, u toku izvrenja, mogu zahtevati itanje operanada ili upis podataka na druge memorijske lokacije. Mikrokontroler PIC16F877 za smetanje programa, odnosno operacionih kodova instrukcija, koristi tkzv. programsku memoriju iz koje procesor dobavlja instrukcije. itanje operanada i upis rezultata obrade instrukcija (podataka) vri se unutar brze memorije podataka. Obe memorijske komponente kljune su i neophodne za izvravanje programa a realizuju se razliitim tehnologijama. Generalno, memorije se dele na postojane (non-volatile) i ne postojane (volatile). Postojane memorije odlikuju osobinom uvanja upisanih podataka i po ukidanju napona napajanja. Nasuprot njima, nepostojane memorije mogu uvati podatke samo dok su prikljuene na napon napajanja. PIC16C83/4 mikrokontroler, proizveden 1994 godine, je bio prvi PICmicro koji je koristio EEPROM (Electrically Erasable Programmable Read Only Memory) tehnologiju za smetanje i

40

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

uvanje programa. Premda skuplja u odnosu na dotadanju postojanu EPROM (Erasable Programmable Read Only Memory) memoriju, slika 2.4.1., koja se elektrinim putem programira a brie ultravioletnom radijacijom, primena postojane EEPROM memorije se pokazala pogodnijom za edukacione svrhe i izradu prototipova ugraenih sistema. Zajedno sa ovom inovacijom, proizvoa integrie u ipu i periferijski memorijski modul tipa EEPROM koji programeru doputa mogunost postojanog skladitenja podataka nezavisno od memorije podataka i eliminie potrebu za implementacijom spoljanjeg EEPROM memorijskog modula. PIC16C83/4 i njegov naslednik PIC16F83/4 sa popularnom Flash EEPROM programskom memorijom ostaju jedini lanovi porodice mikrokontrolera sa programskom memorijom tipa EEPROM do pojave serije PIC16F87X 1998 godine. Od 2000 godine Microchip se obavezao na opremanje najveeg broja njegovih standardnih mikrokontrolera programskom memorijom tipa Flash EEPROM koja doputa mogunost reprogramiranja u samom sistemu, to ih ini pogodnim za upotrebu. Osim toga ova vrsta memorije se odlikuje velikom gustinom pakovanja (manja povrina ipa po eliji u odnosu na konvencionalni EEPROM) i posebno, mogunou programiranja i brisanja u veim blokovima a ne bajt po bajt, kao u sluaju standardnih EEPROM memorija. Budui da je trajanje ciklusa upisa/brisanja EEPROM memorija tipino 4ms, ova osobina Flash EEPROM memorije je od znaaja pri upisu vee koliine podataka, zbog znaajnog smanjenja vremena potrebnog za upis/brisanje.

Slika 2.4.1. Izgled EPROM memorije u keramikom kuitu sa prozorom za UV brisanje. Manje popularne memorije tipa EPROM, slika 2.4.1., mogu se nai i u plastinim kuitima bez prozora za prosvetljavanje, OTP memorije (One Time Programming), i ugraene su u neke serije PIC mikrokontrolera. Budui da se sadraj takvih memorija ne moe brisati, memorija se moe programirati samo jednom. Memorija podataka je brza statika RAM (Random Access Memory) nepostojana memorija koja obezbeuje brzo itanje operanada i upis rezultata obrade instrukcija u memorijske lokacije. Premda dovoljno brza i reprogramirljiva, glani nedostaci su nepostojanost, mala gustina pakovanja i relativno visoka cena.

2.4.1. Periferijska Data EEPROM memorija


Jedna od dobrih osobina PIC MCU je posedovanje integrisane matrine memorije podataka tipa EEPROM koja je implementirana kao mikrokontrolerska periferija. Memorija je postojana i namenjena skladitenju nepromenljivih parametara programa ili parametara koji se povremeno menjaju. Tipian primer primene ovih memorija su pametne kartice sa npr. PIN kodom, brojem rauna i bezbednosnim podacima. Neki od ovih parametara, kao to je broj rauna, se ne menjaju dok se drugi povremeno menjaju. Data EEPROM memorija je kapaciteta 256 bajta i nije deo programske niti memorije podataka. Njoj se pristupa indirektno preko etiri registara specijalne namene SPR (Special

41

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Purpose Register), mapiranih u RAM memoriji podataka. Adresni registar EEADR koristi se za adresiranje jedne od 256 memorijskih lokacija sa po osam bitova podataka. Registar podataka EEDATA namenjen je uvanju podatka koji se upisuje u ili ita iz memorije, dok se kontrolni registri, EECON1 i EECON2, koriste za kontrolu operacija upisa i itanja iz memorije. Na slici 2.4.1.1. prikazana je logika organizacija Data EEPROM memorijskog modula mikrokontrolera PIC16F877 sa pripadajuim registrima specijalne namene.

Slika 2.4.1.1. Logika organizacija Data EEPROM memorijskog modula PIC16F877 MCU. Kljune karakteristike memorijskog modula, od znaaja za korisnika su: Istrajnost, izraena kroz minimalni broj ciklusa upisa/brisanja svake memorijske elije, koja iznosi 105 (tipino 106). - Maksimalno vreme trajanja ciklusa upisa/brisanja iznosi 8ms (tipino 4ms). - Maksimalno vreme uvanja upisanih podataka iznosi 40 godina. Adresni registar EEADR je osmobitni registar specijalne namene koji sadri adresu jedne od 256 osmobitnih memorijskih lokacija. Mapiran je u adresnom prostoru RAM memorije podataka u memorijskoj banci 2 na adresi 10Dh. Koristi se za obe operacije upisa u ili itanja iz Data EEPROM memorije. Registar podataka EEDATA takoe je mapiran u banci 2 RAM memorije podataka na adresi 10Ch. Posle operacije itanja Data EEPROM memorije u njemu se automatski smeta osmobitni podatak sa adresirane lokacije, dok se prilikom upisa u memoriju podatak iz EEDATA registra automatski prenosi u adresiranu memorijsku lokaciju. Osmobitni kontrolni registri EECON1 i EECON2 mapirani su u banci 3 RAM memorije podataka na adresamai 18Ch i 18Dh, respektivno. EECON1 registar se koristi za kontrolu i monitoring operacija upisa i itanja iz memorije. Drugi kontrolni registar EECON2 nije fiziki implementiran i ita se kao osmobitni niz nula. Pre startovanja svake operacije upisa u adresiranu memorijsku lokaciju Data EEPROM memorije, uzastopni niz tkzv. kljueva 55h i AAh -

42

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

mora biti upisan u EECON2 kontrolni registar bez prekidanja. Pomenuta sekvenca kljueva koristi se za deblokiranje (otkljuavanje) upisnog ciklusa i predstavlja zatitni mehanizam memorije od nenamernog upisa. Asemblerski potprogram za itanje bajta podatka iz adresirane lokacije dat je u nastavku teksta i sadri sledee korane zadatke: - Kopiranje adrese memorijske lokacije iz korisnikog registra u EEADR registar. - Selekcija Data EEPROM odredine memorije. - Setovanje RD bita EECON1 registra za startovanje operacije itanja. - U sledeem instrukcijskom ciklusu RD bit se automatski resetuje a proitani podatak nalazi u EEDATA registru. Kopiranje proitanog sadraja iz EEDATA registra u korisniki registar.
; ; ; ; ; EE_RD: BCF BCF MOVF BSF MOVWF BSF BCF BSF BCF MOVF BCF MOVWF RETURN ************************************************************************ *Funkcija: Potprogram za itanje bajta podatka iz Data EEPROM memorije * *Ulaz: Korisnika promenljiva ADRESA u Banci 0 RAM memorije * *Izlaz: Korisnika promenljiva PODATAK u Banci 0 RAM memorije * ************************************************************************ ;Labela (simbolika adresa) potprograma STATUS, RP1 ; STATUS, RP0 ;Selekcija Banke 0 ADRESA, W ;Korisnika promenljiva ADRESA sadri adresu mem. lok. ;i deklarisana je u Banci 0 RAM memorije STATUS, RP1 ;Selekcija Banke 2 EEADR ;Upis adrese mem. lok., koja se ita, u EEADR registar STATUS, RP0 ;Selekcija Banke 3 EECON1, EEPGD ;Selekcija odredine Data EEPROM memorije EECON1, RD ;Start operacije itanja STATUS, RP0 ;Selekcija Banke 2 EEDATA, W ;Podatak u akumulatoru, EEDATA W STATUS, RP1 ;Selekcija Banke 0 PODATAK ;Proitani podatak smeta se u korisniku promenljivu ;PODATAK koja je deklarisana u Banci 0 RAM memorije ;Povratak u glavni program sa selektovanom Bankom 0

Nakon setovanja RD bita kontrolnog registra EECON1<0> podatak je raspoloiv ve u sledeem instrukcijskom ciklusu u registru EEDATA, to znai da se moe proitati sledeom instrukcijom. Podatak u EEDATA registru e biti sauvan do sledeeg itanja ili upisa u memoriju. Upis bajta u Data EEPROM memorijsku lokaciju je proceduralno komplikovaniji budui da je neophodno osigurati uzastopni i neprekinuti upis kljueva u kontrolni registar EECON2 kako bi se izbegao nenamerni upis korumpiranog podatka usled greke u softveru ili otkaza hardvera, npr. pojava glia na liniji napajanja MCU. Asemblerski potprogram za upis bajta podatka u adresiranu memorijsku lokaciju Data EEPROM memorije dat je u nastavku teksta i sadri sledee korane zadatke: - Kopiranje adrese memorijske lokacije iz korisnikog registra u EEADR registar. - Kopiranje podatka iz korisnikog registra u EEADR registar. - Selekcija Data EEPROM odredine memorije. - Setovanje WREN bita u EECON1 registru za omoguenje ciklusa upisa. - Onemoguenje svih prekida resetovanjem GIE bita. - Upis kljueva 55h i AAh u kontrolni registar EECON2, respektivno. - Setovanje WR bita EECON1 registra za startovanje ciklusa upisa. - Resetovanje bita WREN za onemoguenje sluajnog ciklusa upisa. - Omoguenje svih prekida setovanjem GIE bita. - Provera zavretka upisa bajta podatka testiranjem WR bita.

43

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

; ; ; ; ; EE_WR: BCF BCF MOVF BSF MOVWF BCF MOVF BSF MOVWF BSF BCF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF BCF BSF BTFSC GOTO BCF BCF RETURN

************************************************************************ *Funkcija: Potprogram za upis bajta podatka u Data EEPROM memoriju * *Ulaz: Korisnike promenljive ADRESA i PODATAK u Banci 0 RAM memorije * *Izlaz: Ne postoji (selektovana Banka 0) * ************************************************************************ ;Labela (simbolika adresa) potprograma STATUS, RP0 ; STATUS, RP1 ;Banka 0 ADRESA, W ;Korisnika promenljiva ADRESA mapirana u Banci 0 STATUS, RP1 ;Banka 2 EEADR ;Upis adrese mem. lokacije u EEADR registar STATUS, RP1 ;Banka 0 PODATAK, W ; Korisnika promenljiva PODATAK mapirana u Banci 0 STATUS, RP1 ;Banka 2 EEDATA ;Upis podatka U EEDATA registar STATUS, RP0 ;Banka 3 EECON1, EEPGD ;Selekcija odredine Data EEPROM memorije EECON1, WREN ;Omoguenje upisa u Data EEPROM memoriju ; INTCON, GIE ;Onemoguenje svih prekida (ako se koriste)radi ;neprekinutog upisa kljueva u EECON2 registar 0x55 ; EECON2 ;Upis prvog kljua 55h u EECON2 registar 0xAA ; EECON2 ;Upis drugog kljua AAh u EECON2 registar EECON1, WR ;Start operacije upisa u memorijsku lokaciju ; EECON1, WREN ;Onemoguenje upisa u Data EEPROM memoriju INTCON, GIE ;Omoguenje svih prekida (ako se koriste) ; EECON1, WR ; $-1 ;Provera zavretka upisa testiranjem WR bita STATUS, RP0 ; STATUS, RP1 ;Selekcija Banke 0 ;Povratak u glavni program sa selektovanom Bankom 0

Ciklus upisa nee biti iniciran ako sekvenca kljueva za deblokiranje ciklusa nije prosleena tano i bez interferencije. Npr. prekidni signal, koji se moe dogoditi u vreme trajanja ove sekvence, izazvae prekidanje ciklusa upisa. Da bi se takva neeljena situacija spreila potrebno je onemoguiti sve prekide, resetovanjem GIE bita INTCON registra, dok se ne zavri inicijalizacija ciklusa upisa. Jedna od moguih situacija koja moe izazvati pogrean upis podatka je resetovanje MCU pre kompletiranja ciklusa upisa (npr. izlazom Watchdog tajmera ili spoljanjim resetom). U takvoj situaciji, kada je ciklus upisa prevremeno okonan, bit WRERR EECON1 registra se automatski setuje. Izbor Data EEPROM memorije vri se resetovanjem bita EEPGD kontrolnog registra EECON1. U suprotnom, bie selektovana Flash EEPROM programska memorija. Setovanjem bita WREN EECON1 registra omoguava se upis u izabranu memoriju, posle ega sledi neprekinuti upis sekvence kljueva 55h i AAh, respektivno, u virtuelni kontrolni registar EECON2. Inicijalizacija se zavrava setovanjem WR bita kontrolnog registra EECON1, ime se startuje operacija upisa bajta podatka. Bit WREN mora strogo biti setovan pre nego se setuje WR bit. S toga se ne sme dopustiti jednovremeno setovanje oba bita. Kako se WREN bit ne resetuje hardverski, potrebno je osigurati programsko resetovanje ovog bita nakon inicijalizacije ciklusa upisa. Resetovanje WREN bita posle iniciranog upisnog ciklusa ne utie na zapoeti tekui ciklus upisa i dodatno, spreava mogunost sluajnog upisa.

44

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Ve je reeno da maksimalno trajanje ciklusa upisa u memorijsku lokaciju iznosi priblino 8ms (tipino 4ms), to je drastino due trajanje u odnosu na trajanje instrukcijskog ciklusa. Meutim, novi ciklus upisa ne sme biti inicijaliziran pre kompletiranja prethodnog. Budui da se WR bit kontrolnog registra EECON1 automatski hardverski brie po okonanju operacije upisa bajta, to se testiranjem ovog bita u petlji, metodom prozivke, utvruje kraj ciklusa upisa pa tek potom naputa potprogram. Takav pristup realizaciji potprograma garantuje da za vreme trajanja ciklusa upisa nee doi do promene sadraja registara specijalne namene EEDATA, to moe biti uzrok pogrenog ishoda upisnog ciklusa. Implementacija metode prozivke u cilju utvrivanja kraja ciklusa upisa troi dragoceno procesorsko vreme neefikasno, budui da je proces zaposlen ekanjem (busy waiting) za vreme trajanja ciklusa upisa od oko 8ms. Ovaj nedostatak se moe izbei korienjem prekidnog signala koji Data EEPROM periferijski modul hardverski generie po kompletiranju ciklusa upisa, pod uslovom da je prekid omoguen. Naime, za poveanje efikasnosti procesora potrebno je, posle setovanja WR bita kontrolnog registra EECON1 (kraj inicijalizacije ciklusa upisa), programski omoguiti prekid sa memorijskog modula i izai iz potprograma. Za dugo vreme trajanja ciklusa upisa procesor moe raditi mnoge korisne operacije do trenutka kada ga memorijski modul prekidnim signalom obavesti o kraju ciklusa upisa. Kontrolni mask bit za maskiranje/demaskiranje prekida sa Data EEPROM modula EEIE i odgovarajua zastavica prekida (flag bit) EEIF nalaze se u kontrolnim registrima specijalne namene PIE2<4> i PIR2<4>, mapiranim na adresama RAM memorije podataka 8Dh i 0Dh, respektivno. Osim promene sadraja Data EEPROM memorijskog modula pod programskom kontrolom, postoji i mogunost inicijalizacije stanja modula u toku eksternog programiranja MCU pomou posebnog ureaja-programatora. Naime, adresni prostor programske memorije koji ne pripada prostoru za smetanje korisnikog programa odnosi se na specijalno testiranje/konfiguraciju memorijskog prostora i nalazi se u opsegu adresa 2000h 3FFFh. Ovom se adresnom prostoru pristupa samo u toku eksternog programiranja ureaja. Npr. konfiguraciona re MCU je na adresi 2007h. Data EEPROM modul takoe pripada ovom prostoru u opsegu adresa 2100h 21FFh. Za uvanje, na primer, 10 diskretnih vrednosti funkcije sin() za opseg uglova od 00 do 900 sa korakom promene od 100, deo izvornog programskog koda bio bi oblika:
Org SINUS 2100h ;poetak adresnog prostora Data EEPROM memorijskog modula DE 00h, 2Ch, 57h, 7Fh, 0A4h, 0C4h, 0DDh, 0F0h, 0FBh, 0FFh

gde je asemblerskom direktivom DE specificirana lista podataka odvojenih zapetama koji se upisuju u Data EEPROM. Posle programiranja MCU, sadraj Data EEPROM modula e izgledati kao na slici 2.4.1.2.

Slika 2.4.1.2. Sadraj prvih 10 lokacija Data EEPROM memorijskog modula mikrokontrolera PIC16F877 koji predstavlja look-up tabelu sinusne funkcije. Podaci upisani u Data EEPROM memoriju na ovaj nain mogu docnije biti itani ili modifikovani u toku izvrenja programa. Na primer, za itanje vrednosti funkcije sin(50) adresira se lokacija 05h i potom ita njen sadraj C4h ili 196 decimalno (196/256=0.76525).

45

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

itanje i upis u Data EEPROM memoriju mogu se vriti pod kontrolom programa koji se izvrava (interno) ili eksterno na bazi ureaja za programiranje mikrokontrolera-programatora. Data EEPROM memorija poseduje mehanizam za zatitu njenog koda od eksternog itanja. Programiranjem tkzv. konfiguracione rei mikrokontrolera, tanije jednog bita ove rei, bita CPD (Code Protect Data EEPROM), moe se onemoguiti/omoguiti eksterno itanje koda Data EEPROM memorije programatorom. Meutim, ovaj postupak ne spreava mogunost internog itanja ili modifikacije podataka u Data EEPROM memoriji pod kontrolom programa. Kada je zatita koda omoguena (CPD resetovan) spoljanji pristup memoriji preko ICSP (In Circuit Serial Programming), odnosno, pristup memoriji programatorom je onemoguen. Time je spreena mogunost neovlaenog itanja koda, upisanog u ovu memoriju. CCS C kompajler poseduje ugraene funkcije za itanje i upis bajta podatka u Data EEPROM memoriju:
Data=read_eeprom(address)-itanje bajta podatka sa specificirane lokacije (address). write_eeprom(address,data)-upis bajta podatka (data) na specificiranu (address). Iz funkcije se izlazi po kompletiranju ciklusa upisa. lokaciju

U nastavku teksta data je funkcija, pisana na C jeziku, za brojanje dogaaja i trajno pamenje u Data EEPROM memoriji. Funkcija je pisana tako da se na poziv najpre proita aktuelni sadraj brojaa, sauvan na odgovarajuim lokacijama Data EEPROM memorije, potom se inkrementira (povea za jedan) pa ponovo upise na iste memorijske lokacije. Dakle, svaki poziv funkcije inkrementira aktuelni sadraj brojaa i trajno pamti novu vrednost. Brojac je trobajtna promenljiva ija maksimalna vrednost moe biti 224-1=16777215.
//////////////////////////////////////////////////////////////////////////////// // // Funkcija: Odometar() // // Poziv ove funkcije rezultuje itanjem trobajtne vrednosti brojanika u Data // EEPROM memoriji na lokacijama 0x10, 0x11 i 0x12, respektivno (224-1 je // maksimalni broj koji registruje brojanik, npr. broj preenih kilometara), // inkrementiranjem brojanika i upisom inkrementirane vrednosti brojanika u // postojanu Data EEPROM memoriju na istim lokacijama. // //////////////////////////////////////////////////////////////////////////////// void Odometar(void) { unsigned int brojcanik[3];

//Deklaracija 3 bajtne promenljive(brojcanik)

//Citanje aktuelne vrednosti brojcanika iz Data EEPROM memorije brojcanik[0] = read_eeprom(0x10); brojcanik[1] = read_eeprom(0x11); brojcanik[2] = read_eeprom(0x12); //Inkrementiranje brojcanika if(++brojcanik[0] != 0) break; else if(++brojcanik[1] != 0) break; else brojcanik[2]++; //Ako je inkrementirani LSB bajt 0 //iz kontrolne naredbe if (kraj), u //inkrementiraj NSB bajt //Ako je inkrementirani NSB bajt 0 //iz kontrolne naredbe if (kraj), u //inkrementiraj MSB bajt //inkrementiranje MSB bajta izai suprotnom izai suprotnom //itanje LSB bajta na adresi 16dec (0x10) //itanje NSB bajta na adresi 17dec (0x11) //itanje MSB bajta na adresi 18dec (0x12)

//Upis inkrementirane vrednosti brojcanika u Data EEPROM memoriju write_eeprom(0x10, brojcanik[0]); //Upis novog LSB bajta na adresi 16dec (0x10)

46

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

write_eeprom(0x11, brojcanik[1]); write_eeprom(0x12, brojcanik[2]); }

//Upis novog NSB bajta na adresi 17dec (0x11) //Upis novog MSB bajta na adresi 18dec (0x12)

2.4.2. Programska Flash EEPROM memorija


Programska memorija, integrisana u ipu MCU, je tipa Flash EEPROM, kapaciteta osam kilo rei (8192 lokacije sa po 14 bita) a namenjena je uvanju programskog koda glavnog programa, potprograma i prekidnih rutina. Kompletan memorijski prostor adresira 13-bitni programski broja PC (213=8192). Reset vektor je na adresi 0000h a vektor prekida na adresi 0004h. Primenjena tehnika stranienja deli memoriju na etiri stranice od po dve kilo rei. Za uvanje povratnih adresa prilikom pozivanja i vraanja iz potprograma ili prekidne rutine koristi se zasebna celina od osam nivoa-stek. Na slici 2.4.2.1. prikazana je principijelna organizacija prostora programske memorije PIC16F877 MCU. U odnosu na konvencionalnu Data EEPROM memoriju, minimalni broj ciklusa upisa/brisanja programske memorije je 100 puta manji i iznosi 103 dok je maksimalno vreme upisa u memorijsku lokaciju identino, oko 8ms. U skladu s tim, ova memorija je pogodnija za uvanje konstantnih podataka, npr. look-up tabela, nego podataka koji zahtevaju estu modifikaciju. Flash EEPROM memorija ima manju geometriju u odnosu na konvencionalni EEPROM (manja povrina ipa po eliji) ali glavna prednost ostaje brzina upisa/brisanja imajui u vidu blokovski pristup. Ove memorije se proizvode u dve varijante: NAND i NOR Flash memorije. Razlika se sastoji u strukturi veza izmeu memoriskih elija, po emu su varijante memorija i imenovane (NOR-paralelna veza memorijskih elija, to podsea na paralelnu vezu tranzistora CMOS NOR logikog kola i NAND-serijska veza memorijskih elija, kao i tranzistora CMOS NAND logikog kola). Takoe, postoji razlika i u strukturi interfejsa za upis i itanje memorije. NOR podrava sluajni pristup pri itanju dok NAND podrava stranini pristup. Kako serijska veza memorijskih elija troi manje fizikog prostora za realizaciju u odnosu na paralelnu, to je kljuni cilj realizacije NAND Flash memorija poveanje kapaciteta za zadati gabarit memorije i time smanjenje cene. Primera radi, NAND Flash memorija odreenog kapaciteta zahvata oko 60% povrine ekvivalentne NOR Flash memorije. Intencija NAND flash memorija je zamena magnetskih hard diskova ovom vrstom solid-state memorija.

47

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.4.2.1. Organizacija prostora programske Flash EEPROM memorije PIC16F877 MCU. Na slici 2.4.2.2. prikazana je logika organizacija Data EEPROM memorije sa nadodatom Flash EEPROM programskom memorijom i pripadajuim adresnim, registrima podataka i kontrolnim registrima EECON1 i EECON2. Moe se primetiti da su adresni registar EEADR i registar podataka EEDATA kao i oba kontrolna registra, zajedniki resursi za jedan i drugi memorijski modul. Zbog razlika u kapacitetu i rezoluciji, programskoj memoriji su pridodata jo dva registra, adresni EEADRH i registar podataka EEDATH, koji predstavljaju vie bajtove adresnog i registra podataka Flash programske memorije, respektivno. Izbor ciljnog memorijskog modula vri se odgovarajuim upisom u MSB bitsku poziciju kontrolnog registra EECON1 (EEPGD bit). Resetovanjem ovog bita pristupa se Data EEPROM memorija dok se setovanjem pristupa Flash EEPROM programskoj memoriji. itanje Flash EEPROM memorijskog modula je slino itanju Data EEPROM memorije sa jedinom razlikom udvojenih registara za adrese i podatke. Meutim, postoji interakcija sa programskim kodom, koji se uva u ovoj memoriji, dobavlja iz nje i potom izvrava. S obzirom na ovaj dualizam, u kodu za itanje programske memorije neophodno je, po setovanju bita RD kontrolnog registra EECON1 (start ciklusa itanja), umetnuti dve NOP instrukcije kako bi se u sledea dva instrukcijska ciklusa omoguilo itanje dva bajta podatka (14-bitna rezolucija jedne rei programske memorije). Potprogram za itanje programske Flash memorije dat je u nastavku teksta.

48

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.4.2.2. Logika organizacija DATA EEPROM i programske Flash memorije PIC16F877 MCU.
; **************************************************************************** ; *Funkcija: Potprogram za itanje rei iz Flash EEPROM programske memorije * ; *Ulaz: Korisnike promenljive NIA_ADR i VIA_ADR u Banci 0 RAM memorije * ; *Izlaz: Korisnike promenljive NII_POD i VII_POD u Banci 0 RAM memorije * ; **************************************************************************** Flash_RD: ;Labela (simbolika adresa) potprograma BCF STATUS, RP1 ; BCF STATUS, RP0 ;Selekcija Banke 0 MOVF BSF MOVWF BCF MOVF BSF NIA_ADR, W STATUS, RP1 EEADR STATUS, RP1 VIA_ADR, W STATUS, RP1 ;Korisnika promenljiva NIA_ADR deklarisana u Banci 0 ;Selekcija Banke 2 ;Upis nieg bajta adrese u EEADR registar ;Selekcija Banke 0 ;Korisnika promenljiva VIA_ADR deklarisana u Banci 0 ;Selekcija Banke 2

49

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

MOVWF BSF BSF BSF NOP NOP BCF MOVF BCF MOVWF BSF MOVF BCF MOVWF RETURN

EEADRH STATUS, RP0 EECON1, EEPGD EECON1, RD

;Upis vieg bajta adrese u EEADRH registar ;Selekcija Banke 3 ;Selekcija odredine Flash EEPROM memorije ;Start operacije itanja ;Neophodno kanjenje od dva instrukcijska ciklusa ;zbog uzastopnog itanja dva bajta podatka

STATUS, RP0 EEDATA, W STATUS, RP1 NII_POD STATUS, RP1 EEDATH, W STATUS, RP1 VII_POD

;Selekcija Banke 2 ;Nii bajt podatka ;Selekcija Banke 0 ;Upis u korisniku ;Selekcija Banke 2 ;Vii bajt podatka ;Selekcija Banke 0 ;Upis u korisniku ;Povratak u glavni

u akumulatoru, EEDATA W promenljivu, deklarisanoj u Banci 0 u akumulatoru, EEDATH W promenljivu, deklarisanoj u Banci 0 program sa selektovanom Bankom 0

Upis u programsku Flash memoriju zahteva neto drugaiji postupak u odnosu na upis u Data EEPROM memoriju. Osim razlike koja se odnosi na udvojene registre za adresiranje i podatke, operacija upisa u Flash programsku memoriju je jedinstvena po tome to mikrokontroler ne izvrava instrukcije za vreme trajanja upisnog ciklusa. Takvo stanje ne predstavlja SLEEP reim, budui da kristalni taktni oscilator i periferije nastavljaju sa radom. Takoe se detektuju i prekidni dogaaji (ako su omogueni) i stavljaju u red ekanja dok se upisni ciklus ne zavri. Po kompletiranju ciklusa upisa program e granati na prekidni vektor ako je prekid omoguen i ako su se prekidi dogodili za vreme trajanja ciklusa upisa u Flash EEPROM. Druga vana razlika u odnosu na upis u Data EEPROM memoriju je bit WRT konfiguracione rei mikrokontrolera koji, kada je resetovan, spreava upis u programsku memoriju pod kontrolom programa (interni upis). Potprogram za upis rei u programsku memoriju prikazan je u nastavku teksta.
; ********************************************************************************** ; *Funkcija: Potprogram za upis rei u Flash EEPROM programsku memoriju * ; *Ulaz: Korisnike promenljive NiA_ADR, VIA_ADR, NII_POD i VII_POD u Banci 0 * ; *Izlaz: Ne postoji (selektovana Banka 0) * ; ********************************************************************************** Flash_WR: ;Labela (simbolika adresa) potprograma BCF STATUS, RP1 ; BCF STATUS, RP0 ;Selekcija Banke 0 MOVF BSF MOVWF BCF MOVF BSF MOVWF BCF MOVF BSF MOVWF BCF NIA_ADR, W STATUS, RP1 EEADR STATUS, RP1 VIA_ADR, W STATUS, RP1 EEADRH STATUS, RP1 NII_POD, W STATUS, RP1 EEDATA STATUS, RP1 ;Korisnika promenljiva NIA_ADR deklarisana u Banci 0 ;Selekcija Banke 2 ;Upis nieg bajta adrese u EEADR registar ;Selekcija Banke 0 ;Korisnika promenljiva VIA_ADR deklarisana u Banci 0 ;Selekcija Banke 2 ;Upis vieg bajta adrese u EEADRH registar ;Selekcija Banke 0 ;Korisnika promenljiva NII_POD deklarisana u Banci 0 ;Selekcija Banke 2 ;Upis nieg bajta podatka u EEDATA registar ;Selekcija Banke 0

50

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

MOVF BSF MOVWF BSF BSF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF NOP NOP BCF BSF BTFSC GOTO BCF BCF RETURN

VII_POD, W STATUS, RP1 EEDATH STATUS, RP0 EECON1, EEPGD EECON1, WREN INTCON, GIE 0x55 EECON2 0xAA EECON2 EECON1, WR

;Korisnika promenljiva VII_POD deklarisana u Banci 0 ;Selekcija Banke 2 ;Upis vieg bajta podatka u EEDATH registar ;Banka 3 ;Selekcija odredine Flash EEPROM memorije ;Omoguenje upisa u Flash EEPROM memoriju ; ;Onemoguenje svih prekida (ako se koriste)radi ;neprekinutog upisa kljueva u EECON2 registar ; ;Upis prvog kljua 55h u EECON2 registar ; ;Upis drugog kljua AAh u EECON2 registar ;Start operacije upisa u memorijsku lokaciju ;Neophodno kanjenje od dva instrukcijska ciklusa ;za pripremu operacije upisa u Flash memoriju

EECON1, WREN INTCON, GIE EECON1, WR $-1 STATUS, RP0 STATUS, RP1

;Onemoguenje upisa u Flash EEPROM memoriju ;Omoguenje svih prekida (ako se koriste) ; ; ;Provera zavretka upisa testiranjem WR bita ; ;Selekcija Banke 0 ;Povratak u glavni program sa selektovanom Bankom 0

Instrukciju setovanja bita WR (start upisnog ciklusa) slede dve NOP instrukcije, neophodne za pripremu operacije upisa u Flash memoriju. Mikrokontroler potom blokira izvoenje instrukcija za vreme od oko 4-8ms, koliko traje ciklus upisa. Posle kompletiranja ciklusa upisa mikrokontroler e nastaviti sa izvoenjem instrukcije koja sledi drugu NOP instrukciju potprograma za upis rei u Flash memoriju. Na kraju ciklusa upisa bit WR se automatski hardverski brie. Poto mikrokontroler ne izvrava instrukcije u toku trajanja ciklusa upisa, nije nuno proveravati WR bit u cilju odreivanja kraja ciklusa upisa. Znaenje bita WRERR kontrolnog registra EECON1 je isto kao i za Data EEPROM memoriju. Vrednost upisana u programsku Flash memoriju ne mora biti validna instrukcija. Prema tome, 14-bitni podaci mogu biti upisani u lokacije programske memorije kao npr. kalibracioni parametri, serijski brojevi, pakovani 7-bitni ASCII kod i slino. Izvrenje takvih podataka, koji ne predstavljaju validne instrukcije na lokacijama programske memorije, rezultuje izvrenjem NOP (No Operation) instrukcije. Kao i kod upisa u Data EEPROM memorijski modul na kraju ciklusa upisa generie se prekidni signal, ako je omoguen, i setuje odgovarajua zastavica prekida. Kontrolni mask bit za maskiranje/demaskiranje prekida sa Flash EEPROM ili Data EEPROM modula EEIE i odgovarajua zastavica prekida (flag bit) EEIF nalaze se u kontrolnim registrima specijalne namene PIE2<4> i PIR2<4>, mapiranim na adresama RAM memorije podataka 8Dh i 0Dh, respektivno. Kao i kod Data EEPROM memorije, itanje i upis podataka u programsku Flash memoriju moe se vriti interno pod kontrolom programa ili eksterno programatorom (ICSP). Generalna zatita programske memorije vri se programiranjem dva konfiguraciona bita konfiguracione rei CP0 i CP1 (Code Protect), ije kombinacione vrednosti odreuju granice zatienog/nezatienog adresnog prostora programske memorije, tabela 2.4.2.1. Meutim, ova dva duplirana bita konfiguracione rei CP0 i CP1 kao i bit WRT (Write Enable), za zatitu koda

51

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

programske Flash memorije od internog/eksternog upisa/itanja, imaju razliite konkretne efekte na upis/itanje ove memorije, tabela 2.4.2.2. Iz tabele 2.4.2.2 se moe primetiti da bilo koja kombinaciona vrednost ova tri bita nema uticaja na interno itanje programske memorije (itanje pod kontrolom programa) koje je uvek omogueno.
CP1 0 0 1 1 CP0 0 1 0 1 Adresni prostor programske Flash EEPROM memorije Zatien ceo adresni prostor od 0000h do 1FFFh Zatiena samo gornja polovina adresnog prostora od 1000h do 1FFFh Zatien samo deo gornjeg adresnog prostora (256 mem. rei) od 1F00h do 1FFFh Nezatien adresni prostor cele programske memorije

Tabela 2.4.2.1. Kombinacione vrednosti konfiguracionih bitova CP0 i CP1 i odgovarajui efekti na zatien/nezatien adresni prostor programske Flash memorije.
Konfiguracioni bitovi CP1 CP0 WRT 0 0 x 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 Lokacije programske memorije Cela programska memorija Nezatieni prostor Zatieni prostor Nezatieni prostor Zatieni prostor Nezatieni prostor Zatieni prostor Nezatieni prostor Zatieni prostor Cela programska memorija Cela programska memorija Interno itanje Da Da Da Da Da Da Da Da Da Da Da Interni upis Ne Ne Ne Da Ne Ne Ne Da Ne Ne Da ICSP itanje Ne Da Ne Da Ne Da Ne Da Ne Da Da ICSP upis Ne Ne Ne Ne Ne Ne Ne Ne Ne Da Da

Tabela 2.4.2.1. Uticaj konfiguracionih bitova CP0, CP1 I WRT na interno/eksterno itanje/upis u programsku Flash memoriju. Jednom omoguena zatita koda Data EEPROM ili Flash EEPROM programske memorije moe biti uklonjena samo potpunim brisanjem ureaja u postupku reprogramiranja. Kao i za Data EEPROM memoriju, CCS C kompajler poseduje ugraene funkcije za itanje i upis rei (16-bitna re) u programsku Flash EEPROM memoriju:
data=read_program_eeprom(addr)-itanje rei sa specificirane lokacije (address). write_program_eeprom(address,data)-upis rei (data) na specificiranu (address). Iz funkcije se izlazi po kompletiranju ciklusa upisa. lokaciju

gde je podatak za upis ili itanje 16-bitni dok je adresa 16-bitna za PIC16Fxxx seriju a 32-bitna za 18Fxxxx seriju mikrokontrolera.

2.4.3. SRAM memorija podataka


Memorija podataka je nepostojana brza statika RAM (Random Access Memory) memorija sa direktnim pristupom, kapaciteta 512 bajta. Namenjena je privremenom uvanju podataka, meurezultata i rezultata obrade u toku izvrenja programa. Od ukupnog adresnog prostora memorije, 368 bajta pripada korisnikom prostoru (user space), manji broj osmobitnih registara nije fiziki implementiran dok je ostatak rezervisan za sistemske potrebe (system

52

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

space). Ova vrsta memorije je neophodna imajui u vidu da je za izvrenje odreenih instrukcija potreban ciklus upis operanada u odgovarajue memorijske lokacije. Adresni prostor programske Flash EEPROM memorije se za ove svrhe ne moe koristiti imajui u vidu nedopustivo dugo vreme potrebno za upis u lokaciju, 4-8ms. Ciklus itanja memorije nije kritian budui da je jednako brz kako za Flash EEPROM tako i za SRAM memoriju. Da bi se osigurao veoma brz upis u memorijsku lokaciju u toku trajanja kratkog instrukcijskog ciklusa potrebno je koristiti drugu vrstu memorije kao to je SRAM. Memorija je podeljena u etiri memorijske banke kapaciteta 128 bajta, slika 2.4.3.1. Za rad sa grupom registara koji pripadaju jednoj memorijskoj banci potrebno je najpre selektovati odgovarajuu banku i potom pristupati registrima. Selekcija banke se vri programiranjem statusnog registra ALU jedinice STATUS. Kombinacione vrednosti dva bita ovog registra RP0 i RP1 odreuju selektovanu memorijsku banku prema tabeli 2.4.3.1.
RP1 0 0 1 1 RP0 0 1 0 1 Selektovana memorijska banka Banka 0 Banka 1 Banka 2 Banka 3

Tabela 2.4.3.1. Kombinacione vrednosti dva bita STATUS registra za izbor memorijske banke.

53

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.4.3.1. Adresni prostor RAM memorije podeljen na etiri memorijske banke sa registrima specijalne (SPR-special purpose registers) i opte namene (GPR-general purpose registers). Imenovani registri na niim adresama bilo koje od etiri banke, za koje je rezervisan odgovarajui adresni prostor RAM memorije, jesu registri specijalne namene (SPR-special purpose registers). Ove registre koriste jezgro CPU (STATUS, PCL, PCLATH, FSR itd) i periferijski moduli integrisani u ipu (TMR0, TMR1, RCSTA, CCPCON itd.) za statusne informacije modula, kontrolu operacija kao i za podatke. U skladu s tim, registri specijalne namene se mogu podeliti u tri grupe: - Statusni - Kontrolni - SPR za podatke Na primer, statusni registar CPU jedinice ima simboliko ime STATUS dok dva statusna registra USART periferijske jedinice RCSTA i TXSTA pripadaju prijemniku i predajniku

54

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

integrisanog serijskog komunikacionog interfejsa USART-a, respektivno. Od kontrolnih registara mogu se izdvojiti INTCON za kontrolu prekida sa standardnih izvora prekidnog signala, T1CON za kontrolu tajmerske jedinice 1, ADCON0 i ADCON1 za kontrolu A/D konvertorske jedinice, EECON0 i EECON1 za kontrolu Data EEPROM i programske Flash memorije itd. Registri za podatke uglavnom su namenjeni privremenom uvanju npr. rezultata 10-bitne A/D konverzije ADRESL i ADRESH, podatka proitanog iz Data EEPROM jedinice EEDATA, podatka proitanog ili upisanog na odgovarajui port MCU PORTA, PORTB itd. Prema direkciji registri podataka se mogu podeliti na ulazne (za itanje), izlazne (za upis) i bidirekcione ili ulazno izlazne (za itanje i upis). Neki esto korieni registri specijalne namene kao to su STATUS, INTCON, PCLATH, PCL, FSR, OPTION_REG itd., mapirani su u vie banaka ili ak u sve etiri, slika 2.4.3.1., to je uinjeno u cilju breg pristupa registrima. Eventualna nuna promena memorijske banke moe se na taj nain izbei i time redukovati programski kod. Osmobitne memorijske lokacije na viim adresama predstavljaju korisniki adresni prostor a ine ih tkzv. registri opte namene (GPR-general purpose registers). Ovaj vei deo ukupnog adresnog prostora RAM memorije namenjen je rezervaciji prostora za programske promenljive, konstante, programski stek i slino, jednom reju namenjen je programeru. Svaki registar RAM memorije podataka ima pridruenu jedinstvenu adresu, npr. PORTA je na adresi 05h. Hardver mikrokontrolera PIC16F877 podrava dva naina pristupa registrima RAM memorije, odnosno, dva naina adresiranja RAM memorije - direktni i indirektni.

2.4.4. Naini adresiranja RAM memorije


Jedan od nedostataka Microchip-ovog mikrokontrolera PIC16F877 je podrka malom broju naina adresiranja RAM memorije direktnom i indirektnom. Na slici 2.4.4.1. ilustrativno su prikazana dva devetobitna naina adresiranja. Direktni nain adresiranja koristi sedmobitnu adresu registra operanda, dobijenu iz operacionog koda instrukcije, na koju se dodaju jo dva bita RP0 i RP1 STATUS registra za selekciju memorijske banke. Sedam bita adrese registra operanda doputa adresiranje maksimalno 27=128 registara, koliko svaka od memorijskih banaka poseduje. Najvia dva bita, dobijena iz STATUS registra RP0 i RP1, koja grade devetobitnu adresu koriste se za selekciju jedne od etiri banaka. Potpuno je trivijalno da pristup registru operanda u odgovarajuoj banci mora biti propraen prethodnom selekcijom odgovarajue memorijske banke. U suprotnom, ako je programskim kodom selektovana druga aktuelna memorijska banka a ne izvri se odgovarajua promena banke pre pristupa operandu, pristupie se zapravo registru koji pripada aktuelnoj banci selektovanoj programskim kodom a ne registru operanda. Bilo koja instrukcija kojom se ita, modifikuje ili prepisuje sadraj nekog od SPR ili GPR registara RAM memorije predstavlja primer direktnog adresiranja. U nastavku teksta dat je primer dela koda koji predstavlja direktni nain adresiranja RAM memorije.

55

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 2.4.4.1. Direktni i indirektni naini adresiranja RAM memorije podataka.


BSF BCF MOVWF STATUS, RP0 STATUS, RP1 TRISA

;selekcija Banke l. Registar TRISA mapiran je u Banci 1 ;adresa TRISA registra sadrana je u op. kodu instrukcije ;movwf TRISA

Sve tri instrukcije gornjeg primera koriste direktni nain adresiranja sa jedinom razlikom to se STATUS registru moe pristupati iz bilo koje memorijske banke, budui da je mapiran u sve etiri, dok je TRISA registar mapiran samo u banci 1. S toga se u registar TRISA upisuje sadraj akumulatora W iskljuivo posle selekcije memorijske banke 1. Indirektno adresiranje se izvodi pomoi IRP bita STATUS registra na MSB poziciji i registra specijalne namene FSR (File Select Register). MSB bitovi STATUS i FSR registara koriste se za selekciju memorijske banke, kao na slici 2.4.4.1. Memorijskoj lokaciji se pristupa preko virtuelnog INDF registra koji sadri adresu na koju ukazuje FSR registar u svojstvu pokazivaa. Drugim reima, bilo koji pristup virtuelnom INDF registru zapravo je pristup registru u RAM memoriji (lokaciji) na adresi na koju ukazuje FSR registar. Pretpostavimo na primer, da GPR registar na adresi 22h sadri vrednost F1h. Upisujui vrednost 22h u FSR registar podesie se pokaziva na adresu RAM memorije 22h. itanje INDF registra potom, daje za rezultat F1h to znai da je proitan sadraj GPR registra na adresi 22h bez njegovog direktnog adresiranja. S druge strane, upis sadraja npr. 13h u INDF registar za rezultat e imati punjenje memorijske lokacije na adresi 22h, na koju ukazuje FSR registar, sadrajem 13h. U daljem tekstu dat je primer programskog koda za brisanje uzastopnih 16 lokacija RAM memorije, poevi od adrese 20h do adrese 2Fh, indirektnim nainom adresiranja.
; ********************************************************************************** ; *Deo programskog koda za brisanje prvih 16 GPR registara RAM memorije u Banci 0 * ; ********************************************************************************** MOVLW 0x20 MOVWF FSR NEXT: CLRF INDF ;Inicijalizacija pokazivaa (FSR pointer) ;na poetak RAM-a (adresa 0x20). ;Labela programskog skoka. ;Brisanje INDF registra je efektivno brisanje lokacije RAM-a na iju

56

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

INCF FSR,F BTFSS FSR,4

GOTO NEXT

;adresu ukazuje FSR registar. ;inkrementiranje pokazivaa (za brisanje lokacije na sledeoj adresi). se njegov sadraj ;ispitivanje bita 4 FSR pokazivaa. Kada ;inkrementira sa vrednosti 2Fh (00101111)2 na 30h (00110000)2 bit 4 se ;setuje. 30h je adresa sedamnaeste lokacije u odnosu na 20h, koju ne ;treba brisati. ;ako bit 4 nije setovan brii sledeu lokaciju RAM-a

Sadrajem 20h puni se registar FSR tako da ukazuje na lokaciju RAM memorije sa adresom 20h. Potom se u programskoj petlji najpre vri brisanje registra INDF, ime se efektivno brie lokacija na iju adresu ukazuje sadraj FSR registra, i odmah zatim inkrementira sadraj FSR registra tako da ukazuje na sledeu memorijsku lokaciju. Naredna instrukcija testira stanje bita FSR registra na poziciji 4, ija e se nulta vrednost promeniti na jednicu po inkrementiranju sadraja FSR sa 2Fh na 30h. U zavisnosti od stanja etvrtog bita FSR registra program grana na labelu NEXT, briui narednu memorijsku lokaciju, ili preskae instrukciju GOTO NEXT nastavljajui sa daljim izvravanjem. CCS C kompajler takoe podrava direktni i indirektni pristup registrima RAM memorije. U nastavku teksta prikazane su instrukcije CCS C kompajlera kao primeri naina adresiranja. Prve tri instrukcije su primeri direktnog pristupa dok poslednje dve predstavljaju primere indirektnog na bazi indirekcionog operatora * (operatora posrednog pristupa).
; ********************************************************************************** ; *Primeri instrukcija CCS C kompajlera za direktni i indirektni pristup RAM memoriji* ; ********************************************************************************** Set_tris_B(0); //ugraena f-ja za upis u direkcioni registar porta B (upisom nula //svih osam linija porta B konfiguriu se kao digitalni izlazi) Output_B(0xF0); //ugraena f-ja za upis podatka (0xF0) na 8-bitni port B a=0x06; //dodela vrednosti promenljivoj a (vrednost 0x06 predstavlja adresu //porta B) Data=*a; //sadraj promenljive na adresi a dodeljuje se promenljivoj Data //to odgovara itanju porta B i dodeli proitane vrednosti //promenljivoj Data *0x06=0xFF; //promenljivoj na adresi 0x06 (adresa porta B) dodeljuje se sadraj //FFh to odgovara upisu sadraja FFh u portB.

2.5. PROGRAMSKI BROJA (BROJA INSTRUKCIJA)


Programski broja je 13-bitni registar podeljen na dva dela PCL i PCH. Nii bajt programskog brojaa PCL lociran je u RAM memoriji podataka i mapiran u sve etiri memorijske banke radi breg pristupa (adrese 02h, 82h, 102h i 182h). PCL registar je R/W tipa, to znai da se moe itati ili se u njega moe upisivati sadraj. Vii petobitni deo programskog brojaa PCH nije direktno pristupaan programeru to znai da se ne moe direktno itati niti se u njega direktno moe upisivati sadraj. Meutim, ovom delu PC pridruen je PCLATH registar u svojstvu bafera pa se u PCH deo programskog brojaa moe samo upisivati sadraj i to posredno preko PCLATH registra. PCLATH registar se automatski brie pri bilo kojoj vrsti reseta mikrokontrolera. Najvia tri bita ovog registra nisu fiziki implementirana i itaju se kao nule. Na slici 2.5.1. prikazan je princip promene sadraja programskog brojaa PC pri upisu u PCL registar. PCL registru se moe pristupati programski kao i bilo kom drugom GPR ili SPR registru RAM memorije podataka. Na primer, ako je sadraj akumulatora n tada instrukcija ADDWF PCL, F sabira aktuelni sadraj PCL registra sa sadrajem akumulatora n i rezultat smeta u

57

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

PCL registar, to e za posledicu imati skok napred za n mesta u odnosu na instrukciju ADDWF PCL, F.

Slika 2.5.1. Direktna promena sadraja 13-bitnog PC pri upisu u PCL registar. Uprkos injenici da se instrukcijama za upis u PCL registar direktno menja stanje samo ovog osmobitnog registra, u isto vreme niih pet bitova PCLATH<4:0> registra automatski se kopira u programeru nedostupan vii deo programskog brojaa PCH. Kako se registar PCLATH automatski brie pri bilo kom resetu MCU to e instrukcija za upis u PCL efektivno adresirati prvih 28=256 rei programske memorije dok se novom instrukcijom ne izmeni sadraj PCLATH registra. Prema tome, posebnu panju treba posvetiti promeni sadraja PC instrukcijom upisa u PCL registar, specijalno u sluaju kada novi sadraj PCL moe prekoraiti maksimalnu osmobitnu vrednost.

Slika 2.5.2. Indirektna promena sadraja 13-bitnog PC pri izvrenju instrukcija programskog skoka. Instrukcije programskog skoka koje indirektno menjaju sadraj PC kao to su CALL i GOTO, slika 2.5.2., takoe koriste deo sadraja PCLATH registra. Naime, nii jedanaestobitni deo operacionog koda ovih instrukcija, koji predstavlja adresu programskog skoka, prenosi se na nie bitske pozicije programskog brojaa PC<10:0> dok se dva najvia bita PC<12:11> formiraju prenosom sadraja PCLATH<4:3> registra u isto vreme u dve najvie bitske pozicije programskog brojaa PC<12:11>. Budui da je adresa programskog skoka jedanestobitna, znai da se instrukcijama skoka moe dosei najvie 211=2K prostora programske memorije koliko iznosi veliina jedne od etiri stranice programske memorije. Za daleke programske skokove sa jedne na drugu stranicu programske memorije koriste se dva najvia bita PCLATH<4:3>. Prema tome, selekcija stranice programske memorije vri se podeavanjem bitova <4:3> PCLATH registra to mora prethoditi npr., pozivu potprograma koji se nalazi na drugoj stranici programske memorije u odnosu na tekuu, ili bezuslovnom skoku. U tabeli 2.5.1. prikazane su kombinacione vrednosti bitova 4 i 3 PCLATH registra za izbor stranice programske memorije.
PCLATH<4:3> 0 0 1 1 0 1 0 1 Selektovana stranica programske memorije Stranica 0 Stranica 1 Stranica 2 Stranica 3

58

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Tabela 2.5.1. Kombinacione vrednosti dva bita STATUS registra za izbor memorijske banke. U daljem tekstu dat je primer ispravnog programskog koda za poziv potprograma sa tekue nulte stranice, koji je lociran na stranici jedan programske memorije.
ORG 0x500 BCF PCLATH,4 BSF PCLATH,3 CALL SUB1_P1 . . . ORG 0x900 SUB1_P1: . . . RETURN ;Stranica 0 programske memorije (opseg adresa 000h-7FFh) ;Selekcija stranice 1 programske memorije(800h-FFFh) ;Poziv potprograma na stranici 1 (800h-FFFh) ;panju obratiti na adrese sledeih instrucija skoka ;Stranica 1 (opseg adresa 800h-FFFh) ;Pozvani potprogram na stranici 1 (800h-FFFh)

;Povratak na prvu instrukciju posle CALL SUB_P1 na stranici ;0 (000h-7FFh)

Moe se primetiti da se pre poziva potprograma SUB1_P1 resetovanjem, odnosno, setovanjem bitova 4 i 3 PCLATH registra, respektivno, najpre pravilno selektuje stranica jedan programske memorije a potom poziva potprogram. U skladu sa tehnikom protone obrade instrukcija u prvom instrukcijskom ciklusu izvravanja dvociklusne instrukcije CALL SUB1_P1 programski broja se inkrementira tako da ukazuje na sledeu instrukciju ispod instrukcije poziva potprograma, koja se u istom ciklusu i dobavlja. Osim dobavljanja sledee instrukcije u nizu, u prvom ciklusu se inkrementirana vrednost PC upuuje na LIFO stek, pamtei na taj nain povratnu adresu, a potom programski broja puni adresom prve instrukcije potprograma. Dobavljena instrukcija ispod instrukcije poziva potprograma, meutim, ne predstavlja prvu instrukciju potprograma te se u sledeem instrukcijskom ciklusu nee izvriti. Umesto nje izvrava se NOP instrukcija a u istom, drugom ciklusu dobavlja prva instrukcija pozvanog potprograma na koju ukazuje sadraj PC. Prema tome, u prvom od dva instrukcijska ciklusa dvociklusne instrukcije poziva potprograma najpre se pamti povratna adresa sledee instrukcije u nizu. Potom se nii deo programskog brojaa puni 11-bitnom adresom prve instrukcije potprograma (adresa je sadrana u operacionom kodu instrukcije poziva potprograma) a vii puni prenosom sadraja PCLATH<4:3> registra u dve najvie bitske pozicije programskog brojaa PC<12:11>. Time je pravilno selektovana i stranica programske memorije na kojoj je lociran potprogram. Po povratku iz potprograma, sadraj PCLATH registra nije neophodno menjati budui da se sauvana povratna adresa u steku nalazi na stranici 0 programske memorije. Meutim, bilo koji sledei poziv potprograma ili bezuslovni skok zahtevae ponavljanje procedure selekcije memorijske stranice, odnosno, novi upis u PCLATH registar imajui u vidu njegov prethodni sadraj kojim je selektovana stranica 1.

2.5.1. itanje tabele metodom izraunatog skoka


Izraunati programski skok se izvodi dodavanjem ofseta PCL registru programskog brojaa (ADDWF PCL), dakle, instrukcijom koja kao destinacioni registar koristi PCL registar. Ova metoda je veoma pogodna za pristup podacima u programskoj memoriji, odnosno, za itanje tabela zasnovanih na uzastopnom nizu RETLW K instrukcija (RETurn with Literal k in W), gde je K osmobitna tabelarna konstanta. Pri izvrenju instrukcije povratka osmobitna konstanta se

59

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

upisuje u akumulator W. Kako je PCL registar osmobitni, maksimalna veliina tabele moe biti 256 redova. Tabela se realizuje kao potprogram. Prva instrukcija u tabeli zaraunava offset (pomeraj) dodajui ga PCL registru. Sledstveno tome program grana na odgovarajuu RETLW K instrukciju u nizu takvih. U sledeem primeru dat je deo izvornog koda za itanje tabele u programskoj memorji MCU.
. . MOVLW offset CALL Table . . . Table: ADDWF RETLW RETLW RETLW . . PCL,F E T F

;Uitaj ofset (pomeraj)u registar akumulatora w ;Poziv potprograma (Tabele)

;Labela potprograma ;Dodavanje ofseta sadraju registra PCL i prepis rezultata u PCL ;Generisanje izraunatog programskog skoka ;Povratak na instrukciju ispod CALL sa ASCII karakterom E u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom T u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom F u W registru

Metod je jednostavan i ispravan, meutim, izvesne predostronosti moraju biti uzete u obzir kada se radi o tabeli lociranoj bilo gde u programskoj memoriji. Naime, PCLATH registar se posle reseta MCU automatski brie ime se automatski selektuje stranica nula programske memorije. Ako je tabela locirana na drugoj stranici programske memorije, poziv potprograma Table rezultirae pogrenim programskim skokom na nultu stranicu budui da sadraj najvia dva bita PCLATH<4:3> registra nije izmenjen. Takoe, za pravilno adresiranje, posle svakog uzastopnog bloka od 256 rei programske memorije sadraj PCLATH registra mora biti inkrementiran budui da se njegov sadraj prenosi u vii bajt PC. Instrukcija dodavanja ofseta PCL registru ADDWF PCL, F nee izraunati vrednost veu od osmobitne u sluaju prekoraenja. Maksimalna veliina tabele ograniena je na 254 redova pre nego operacija sabiranja ADDWF PCL,F uzrokuje prekoraenje PCL registra i time greku u adresiranju. Na primer, kod donjeg programa uzrokovae skok na pogrenu adresu u sluaju da je vrednost ofseta vea od nule jer se adresa potprograma Table nalazi na kraju drugog bloka od 256 rei na nultoj stranici programske memorije. Posle dodavanja ofseta veeg od nule PCL registru, sledi automatski inkrement programskog brojaa u cilju dobavljanja sledee instrukcije, odnosno, prelaz na trei blok. Promenu bloka, meutim, ne prati i promena sadraja PCLATH registra to e proizvesti pogrean programski skok. To znai da bi u sluaju dodavanja ofseta vrednosti npr. jedan PCL registru, vrednost PCL bila FFh a 13- bitna adresa PC 2FFh zbog istovremenog prenosa sadraja PCLATH registra u vii deo programskog brojaa. U istom instrukcijskom ciklusu sadraj PC se automatski inkrementira a novi sadraj PC e biti 200h umesto oekivanog 300h. Izraunati programski skok na adresu 200h je, meutim, pogrean i nee proizvesti oekivani rezultat.
ORG 0x00A MOVLW HIGH Table MOVWF PCLATH MOVF offset,W CALL Table . . . ORG 0x2FE ;Program lociran u nultom bloku programske memorije od 256 rei ;Via petobitna adresa (0x03) tabele u PCLATH ;Uitaj ofset (pomeraj)u registar akumulatora w ;Poziv potprograma (Tabele)

;Tabela locirana na kraju drugog bloka programske memorije od 256 ;rei

60

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Table: ADDWF RETLW RETLW RETLW . . PCL,F E T F

;Labela potprograma ;Dodavanje ofseta sadraju registra PCL i prepis rezultata u PCL ;Povratak na instrukciju ispod CALL sa ASCII karakterom E u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom T u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom F u W registru

Jedan od naina za izbegavanje greke u adresiranju je korienje direktive ORG (ORiGin) za specifikaciju apsolutne adrese potprograma i upis vie adrese potprograma Table u PCLATH registar pre njegovog poziva. Direktivom ORG ukazuje se asembleru gde da locira poetak potprograma ili bilo kog programskog modula. Microchip-ov asembler poseduje direktive HIGH i LOW koje mogu biti koriene za razdvajanje 13-bitne adrese programskog brojaa na vii i nii deo, respektivno, to olakava adresnu aritmetiku. Meutim, gornji primer pokazuje da predloeno reenje nije u potpunosti tano, za sluaj kada je potprogram lociran pri kraju jednog bloka programske memorije od 256 rei. Univerzalno reenje ispravnog koda za itanje tabele, ma gde bila locirana u prostoru programske memorije MCU, prikazano je u nastavku teksta.
. ORG 0x00A HIGH Table+1 PCLATH ;Program lociran na stranici 0 programske memorije ;Vii deo simbolike adrese Table, koja je prethodno ;inkrementirana, prenosi se u PCLATH registar ;Nii deo inkrementirane simbolike adrese Table u W ;Provera, ima li prekoraenja bloka od 256 rei prog. memorije ;Blok od 256 rei prekoraen sabiranjem ofseta i nie adrese. ;Uitavanje ofseta u W registar ;Poziv potprograma na simbolikoj adresi Table ;Brisanje PCLATH (nulta stranica) po povratku iz tabele ;Prva instrukcija potprograma Table locirana na stranici 1 ;programske memorije na adresi 0x8FF ;Simbolika adresa potprograma ;Sabiranje ofseta i sadraja PCL registra ;Povratak na instrukciju ispod CALL sa ASCII karakterom F u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom I u W registru ;Povratak na instrukciju ispod CALL sa ASCII karakterom T u W registru

MOVLW MOVWF

MOVLW LOW Table+1 ADDWF offset,W BTFSC STATUS,C INCF PCLATH,F MOVF offset,W

CALL Table CLRF PCLATH . . ORG 0x8FF Table: ADDWF RETLW RETLW RETLW .
.

PCL,F F I T

CCS C kompajler ima podrku za smetanje bilo koje strukture podataka u programsku memoriju MCU kao niza konstanti. Na primer, za smetanje deset konstanti tipa byte ili tipa char u programsku memoriju koristi se sledea sintaksa:
CONST INT TABLE[10]={9,8,7,6,5,4,3,2,1,0}; CONST CHAR TABLE[10]={A,B,C,D,E,F,G,H,I,J};

dok se za pristup tabeli koristi:

61

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

x = TABLE [i]; ili npr. x = TABLE [5];

2.6. KONFIGURACIONA RE MCU PIC16F877


Prostor programske Flash EEPROM memorije izvan korisnikog prostora, u opsegu adresa od 2000h do 3FFFh, odnosi se na prostor namenjen specijalnom testu/konfiguraciji programske memorije i dostupan je samo u toku eksternog programiranja MCU uz pomo programatora. Ovaj prostor programske memorije nije vidljiv u toku normalnog izvrenja instrukcija, meutim, u reimu programiranja mikrokontrolera programator ureaja moe pristupiti odgovarajuim privatnim lokacijama programske memorije. Memorijske lokacije na adresama od 2000h do 2003h oznaene su kao ID lokacije. Korisnik u ovom adresnom prostoru moe uvati npr. eksumu ili identifikacione brojeve. Preporuuje se korienje samo etiri najmanje znaajna bita ID lokacija. PIC16F877 MCU u okviru pomenutog prostora programske memorije, na adresi 2007h, poseduje rezervisanu tajnu lokaciju koja predstavlja tkzv. konfiguracionu re MCU. Programiranje svakog bita konfiguracione rei mikrokontrolera e osigurati da u normalnom reimu rada MCU taktni oscilator i drugi resursi budu konfigurisani na odgovarajui nain. Na slici 2.6.1. ilustrovan je raspored konfiguracionih bitova konfiguracione rei MCU PIC16F877. Neprogramirano, preset stanje konfiguracione rei je 3FFFh to znai da e nekonfigurisan MCU PIC16F877 biti u RC modu oscilatora sa omoguenim sigurnosnim Watchdog tajmerom (WDTE), onemoguenim Power-Up tajmerom (PWRTE), bez zatite koda unutar programske memorije (CP1 CP0), sa omoguenim Brown-Out kolom za resetovanje MCU (BODEN) i omoguenim programiranjem pod niskim naponom na liniji RB3/PGM (LVP), bez zatite koda u Data EEPROM memoriji (CPD) i sa mogunou upisa u nezatien prostor programske memorije (WRT), kao i sa onemoguenom dibager funkcionalnou na linijama RB6 i RB7 MCU (DEBUG).

Slika 2.6.1. Konfiguraciona re PIC16F877 MCU. Udvojeni par konfiguracionih bitova CP1 i CP0, za izbor odgovarajue zatite programske memorije, na bitskim pozicijama (4, 5) i (12, 13) mora imati iste vrednosti da bi se postigla odgovarajua zatita. Omoguenje Brown-Out kola za resetovanje MCU pomou konfiguracionog bita BODEN automatski omoguuje Power-Up tajmer bez obzira na stanje odgovarajueg konfiguracionog bita PWRTE konfiguracione rei. Veliki broj programatora MCU doputa operatoru mogunost direktnog postavljanja konfiguracionih bitova iz menija odgovarajueg softvera za podrku hardveru programatora. Slika 2.6.2. prikazuje nain povezivanja odgovarajuih linija mikrokontrolera u reimu programiranja/verifikacije. Liniju MCLR (Master CLeaR) u ovom reimu potrebno je dovesti na visoki napon od 13V to MCU prebacuje u reim programiranja/verifikacije a potom se linije

62

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

sinhrone serijske komunikacione magistrale Data i Clock mogu koristiti za ICSP (In Circuit Serial Programming) programiranje. Ve je reeno da u ovom reimu programator moe pristupati korisnikom adresnom prostoru programske memorije ali i njenim privatnim lokacijama koje u normalnom reimu rada MCU (izvrenje korisnikog programa) nisu vidljive. Uprkos mogunosti direktnog postavljanja bitova konfiguracione rei, preporuuje se ugradnja izabrane konfiguracione rei u izvorni aplikacioni kod primenom asemblerske direktive za podatke __CONFIG kako bi se u vreme programiranja MCU na lokaciji sa adresom 2007h izvrilo automatsko postavljanje konfiguracionih bitova konfiguracione rei u skladu sa izabranom.

Slika 2.6.2. Povezivanje odgovarajuih linija PIC16F877 MCU u reimu programiranja/verifikacije. Primer korienja direktive za podatke __CONFIG sa simbolikim imenima konfiguracionih bitova na odgovarajuim bitskim pozicijama konfiguracione rei dat je u nastavku teksta. Simbolika imena konfiguracionih bitova kojima su pridruene odgovarajue adrese, odnosno, bitske pozicije u konfiguracionoj rei definisana su u ukljunoj (include) datoteci P16F877.inc koja se kontrolnom direktivom #INCLUDE prikljuuje glavnom programu i kopira na mestu poziva.
__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_OFF & _DEBUG_OFF & _CPD_ON

ili u binarnom obliku


__CONFIG b11111001110110

Prvi primer sa simbolikim imenima konfiguracionih bitova je povoljniji sa stanovita prenosivosti programa budui da razliiti procesori mogu imati razliiti aranman bitova konfiguracione rei. U drugom binarnom obliku, promena ukljune *.inc datoteke, odnosno procesora, moe proizvesti potpuno pogrenu konfiguracionu re s obzirom na mogu drugaiji redosled konfiguracionih bitova. Ukoliko se neki od konfiguracionih bitova izostave u direktivi __CONFIG njihove e vrednosti posle programiranja MCU odgovarati neprogarmiranim preset vrednostima. CCS C kompajler poseduje vrlo slian mehanizam programiranja svakog bita konfiguracione rei, koji koristi direktivu #FUSES na vrhu izvornog programa posle direktive #INCLUDE. Sledei primer pokazuje primenu ove direktive za konfigurisanje MCU, koji odgovara gornjim asemblerskim direktivama __CONFIG.
#include <16F877.h> #fuses NOPROTECT,WDT,BROWNOUT,PUT,HS,WRT,NOLVP,NODEBUG,CPD

U tabeli 2.6.1. je prikazan uticaj stanja konfiguracionih bitova konfiguracione rei na odgovarajue resurse MCU.

63

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

bit 13-12 bit 5-4

CP1:CP0: Zatita koda programske FLASH memorije 11 = Bez zatite 10 = 1F00h to 1FFFh zatieno 256 rei najvieg adresnog prostora 01 = 1000h to 1FFFh zatiena gornja polovina adresnog prostora 00 = 0000h to 1FFFh zatien ceo adresni prostor

bit 11

DEBUG: ICD (In-Circuit Debugger) Mod dibagovanja programa 1 = Dibager onemoguen, RB6 i RB7 linije su I/O linije opte namene 0 = Dibager omoguen, RB6 i RB7 linije koristi kolo dibagera.

bit 10 bit 9

Neimplementiran bit: ita se kao 1 WRT: Upis u programsku FLASH memoriju 1 = Omoguen interni upis u nezatieni prostor programske memorije 0 = Onemoguen interni upis u nezatieni prostor programske memorije

bit 8

CPD: Zatita koda Data EEPROM memorije 1 = Bez zatite 0 = Zatien kod u Data EEPROM

bit 7

LVP: ICSP (In-Circuit Serial Programming) programiranje MCU pod niskim naponom 1 = RB3/PGM linija ima PGM funkciju, omogueno LV programiranje MCU 0 = RB3 linija je digitalna I/O linija, HV na MCLR liniji koristi se za programiranje MCU

bit 6

BODEN: Brown-out kolo za resetovanje MCU 1 = BOR omoguen 0 = BOR onemoguen

bit 3

PWRTE : Power-up Tajmer 1 = PWRT onemoguen

0 = PWRT omoguen bit 2 WDTE: Watchdog Tajmer 1 = WDT omoguen 0 = WDT onemoguen bit 1-0 FOSC1:FOSC0: Izbor oscilatora 11 = RC oscilator 10 = HS oscilator 01 = XT oscilator 00 = LP oscilator

Tabela 2.6.1. Bitovi konfiguracione rei MCU PIC16F877.

64

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Poglavlje 3

INTEGRISANI SISTEMI ZA RESETOVANJE MCU

Za pouzdani poetak izvravanja aplikacionog koda upisanog u programsku memoriju MCU, mikrokontroler mora na pravilan nain prei iz stanja odsustva napona napajanja VDD u novo stanje po njegovom prikljuenju. Zbog konane vrednosti unutranje otpornosti izvora napajanja, ulazne kapacitivnosti MCU na linijama napajanja kao i parazitskih kapacitivnosti metalnih veza linija napajanja, nominalna vrednost napona napajanja ne moe biti dostignuta trenutno ve nakon prelaznog reima ije trajanje je uglavnom u funkciji vrste izvora za napajanje MCU. Lokalni kristalni oscilator MCU takoe karakterie prelaznim reim u kome ni amplituda ni frekvencija oscilovanja nisu konstantne. Naime, poznato je da je u kolima oscilatora sa pozitivnom povratnom spregom um poluprovodnikih komponenata odgovoran za zapoinjanje oscilacija. Zbog jake pozitivne reakcije u kolu oscilatora, po prikljuenju napajanja amplituda oscilacija raste sa vremenom do uspostavljanja stacionarne vrednosti. U toku kolebanja amplitude oscilovanja i frekvencija, odnosno, perioda ponavljanja oscilacija je promenljiva. Posle prelaznog reima oscilator ulazi u stacionarno stanje oscilovanja sa stabilnom amplitudom i frekvencijom oscilovanja. Poetak izvravanja koda u vreme trajanja opisanih prelaznih reima predstavljao bi nekorektan radni reim MCU imajui u vidu stalne promene naponskih nivoa na I/O linijama, kao i nestabilnost trajanja instrukcijskog ciklusa, odnosno, tajminga. U objektivnim okolnostima tokom normalnog izvravanja koda mogue su tranzijentne pojave padova napona na liniji napajanja ispod doputene margine, to ugroava pozdan rad aplikacije.

65

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

U sluaju nepredvidljivog zaglavljivanja programa koji se izvrava, usled npr. trenutnih elektromagnetskih-induktivnih smetnji ili logiki loe projektovanog programa, poeljno je osigurati autonomni mehanizam samoresetovanja MCU koji e restartovati aplikaciju pod drugaijim, izmenjenim okolnostima. Za sinhronizaciju vie MCU u paralelnom multiprocesorskom reimu rada, postojanje eksternog reset ulaza znailo bi mogunost istovremenog starta vie CPU i mogunost manuelnog resetovanja ureaja. PIC16F877 MCU raspolae ugraenim mehanizmima namenjenim poveanju pouzdanosti ureaja, minimizaciji cene razvoja aplikacije eliminisanjem eksternih komponenata, kao i mehanizmima za smanjenje potronje, izbor oscilatora i slino to predstavlja specifine karakteristike MCU.

3.1. VRSTE RESETA MCU PIC16F877


Mikrokontroler PIC16F877 poseduje est ugraenih zasebnih vrsta reseta CPU jedinice kao to su:
MCLR reset u toku normalnog reima rada MCU prikljuenjem linije MCLR na niski naponski nivo u toku normalnog izvravanja instrukcija. MCLR reset u toku standby reima prikljuenjem linije MCLR na niski naponski nivo u toku standby (SLEEP) reima MCU. Power-on Reset (POR) reset po ukljuenju napona napajanja MCU - kada napon napajanja dostigne naponski prag izmeu 1.2V i 1.7V). WDT reset resetovanje kola izlazom sigurnosnog WatchDog tajmera zbog isticanja time-out perioda (tipino 17ms) u normalnom reimu rada MCU. WDT Wake-up reset (buenje) - resetovanje kola izlazom sigurnosnog WatchDog tajmera zbog isticanja time-out perioda (tipino 17ms) u standby reimu rada MCU. Brown-Out Reset (BOR) - reset usled pada napona napajanja ispod doputene margine u trajanju duem od 100s.

Resetovanje MCU nema uticaja na status jednog malog broja registara specijalne namene. Njihov status posle POR reseta ili nije unapred poznat ili ostaje nepromenjen posle bilo koje druge vrste reseta u odnosu na status pre resetovanja. Vei broj drugih registara specijalne namene, meutim, postavlja se u predefinisano reset stanje posle pojave jedne od nabrojanih vrsta reseta, izuzev WDT Wake-up reseta. Resetovanje izlazom sigurnosnog Watchdog tajmera kada je MCU u sleep reimu predstavlja tkzv. buenje MCU i moe se tretirati kao nastavak normalnog reima rada posle vremena provedenog u reimu niske potronje.

3.1.1. MCLR reset u toku normalnog rada MCU i u sleep stanju


Svi PIC mikrokontroleri poseduju MCLR (Master CLeaR) ulaz koji se u sprezi sa spoljanjim prekidaem moe koristiti za manuelno eksterno resetovanje ureaja, slika 3.1.1a. Ako je napon na MCLR liniji V MCLR0.2VDD (nii prag prebacivanja CMOS invertora) za vreme due od 100ns, doi e do resetovanja MCU. Vrednost pull-up otpornika od 33K je maksimalno doputena vrednost otpornosti za koju napon na MCLR liniji nee opasti ispod praga logike jedinice od 0.85VDD (vii prag prebacivanja CMOS invertora) za sluaj otvorenog prekidaa, usled pada napona na otporniku uzrokovanog strujom curenja kroz ovaj pin. Otpornik od 100 slui za

66

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

ogranienje struje kroz unutranju diodu za zatitu od negativnih prenapona na MCLR liniji usled superpozicije umova. Za napon na MCLR liniji VMCLR0.85VDD CPU zapoinje sa normalnim izvravanjem instrukcija startujui od prve instrukcije na adresi reset vektora 0x00h. Nulti sadraj programskog brojaa koji ukazuje na prvu instrukciju, podrazumeva automatsku selekciju nulte stranice programske memorije dok se nulta memorijska banka memorije podataka takoe selektuje automatskim resetovanjem bitova za izbor banke statusnog registra RP1 i RP0. Ako je eksterno resetovanje MCU izvreno u toku normalnog radnog reima, tada ova vrsta reseta ne menja stanje bitova statusnog registra TO i PD . Dakle, njihova stanja ostaju ista kao pre resetovanja. MCLR linija se moe koristiti i za eksterno resetovanje MCU u reimu niske potronje (sleep stanje). Bitovi statusnog registra TO i PD postavljaju se tada u stanje 1 0, respektivno, pa se njihovim ispitivanjem moe odrediti priroda reset signala. Ova vrsta reseta koristi se za tkzv. buenje MCU, zato to posle promene stanja na MCLR liniji sa logike nule na jedinicu mikrokontroler zapoinje sa izvrenjem prve instrukcije na adresi reset vektora 0x00h.

Slika 3.1.1. Manuelno spoljanje resetovanje MCU za izvore napajanja sa poetnom brzinom uspostavljanja napona napajanja dVDD/dt50V/s. Kada sistem ne zahteva manuelni reset, MCLR linija moe biti direktno povezana sa linijom napajanja VDD. Kod 8-pinskih PIC MCU, kao to je PIC12C5XX familija, MCLR linija moe biti konfigurisana i koriena ak i kao I/O linija opte namene, programiranjem konfiguracione rei MCU, zbog malog broja raspoloivih I/O linija.

3.1.2. POR (Power-up Reset) reset


Svi PIC mikrokontroleri poseduju interni Power-up reset mehanizam za automatsku detekciju spremnosti procesora da izvri prvu instrukciju programa, posle prikljuenja napona napajanja. Za ilustraciju ovog mehanizma razmatrimo donekle idealizovanu situaciju prikazanu na slici 3.1.3. po prikljuenju napona napajanja MCU u trenutku t0. Ako je poetna brzina promene napona napajanja dVDD/dt50V/s, tada se pri naponskom pragu izmeu 1.2V-1.7V generie interni reset signal POR (Power-on Reset) koji inicira sledee sekvence dogaaja: 1. Generisanje fiksnog perioda Power-up tajmera (PWRT) TPWRT, nominalnog trajanja 72ms, u toku koga je MCU resetovan. Power-up tajmer poseduje autonomni RC oscilator kojim se taktuje njegov 10-bitni broja do trenutka prekoraenja punog ciklusa brojanja od 210= 1024 taktnih intervala, to tipino iznosi 72ms, vidi sliku 3.1.2. Zadatak ovog tajmera je da za vreme TPWRT MCU dri u stanju reset dok napon napajanja ne dostigne prihvatljiv nivo. Ovo fiksno kanjenje bie omogueno ako je konfiguracioni bit PWRTE

67

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

konfiguracione rei MCU resetovan. Period PWRT tajmera TPWRT varira od ipa do ipa i u funkciji je temperature i napona napajanja. 2. Po isteku trajanja perioda TPWRT, Power-up tajmer inicira drugi tajmer tkzv. Oscillator Start-up tajmer (OST) u ijem sastavu je takoe 10-bitni broja koga, meutim, taktuje glavni CPU kristalni oscilator, slika 3.1.2. Period punog ciklusa brojanja ovog tajmera u direktnoj je zavisnosti od rezonantne frekvencije kvarc kristala i iznosi TOST=210 TOSC=1024TOSC. Npr. ako je rezonantna frekvencija kvarc kristala fOSC=10MHz, tada je TOSC=1/fOSC=0.1s dok je period OST tajmera TOST=102.4s. Period koji generie OST tajmer, za koje vreme je MCU u reset stanju, osigurae pouzdano i stabilno funkcionisanje taktnog oscilatora pre poetka obrade programa. OST tajmer, koji generie kanjenje TOST, implementiran je samo za konfiguracije kvarcnih oscilatora u LP, XT i HS modovima ali ne i za RC mod oscilatora. OST tajmer se aktivira i u sluaju buenja MCU iz sleep stanja (iskljuen glavni oscilator) kako bi se omoguio restart glavnog oscilatora i njegovo normalno funkcionisanje pre nastavka obrade programa.

Slika 3.1.2. Blok ema PWRT i OST tajmera.

Slika 3.1.3. Sekvence dogaaja po prikljuenju MCU na napon napajanja VDD, pre poetka izvrenja koda.

68

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

3. Kao i u sluaju eksternog MCLR reseta, izvrenje koda zapoinje sa adrese reset vektora 0x00h odmah nakon isteka vremenskog perioda TPU koji predstavlja zbir vremena TPU=TPWRT+TOST=72ms+1024TOSC, kao na slici 3.1.3. Meutim, za razliku od eksternog reseta, POR reset postavlja oba bita statusnog registra TO i PD u neaktivno stanje, 1 1, respektivno.
Konfiguracija oscilatora LP, XT, HS RC Power-up =0 PWRTE PWRTE =1 72ms+1024TOSC 1024TOSC 72ms Buenje iz sleep stanja 1024TOSC -

Tabela 3.1.1. MCU Power-up tajming u razliitim situacijama. U tabeli 3.1.1. prikazane su razliite situacije reset tajminga pri uspostavljanju napona napajanja (Power-up) i buenju MCU iz sleep stanja (Wake-up) kada je PWRT tajmer omoguen/onemoguen i za razliite konfiguracije taktnog oscilatora. Kao to se moe videti, jedino u RC modu taktnog oscilatora nema kanjenja od 1024TOSC neophodnog za stabilizaciju oscilatora, budui da RC oscilator ulazi u stacionarni reim odmah nakon prve periode oscilovanja. U preostala tri moda kristalnog oscilatora, kanjenje koje unosi OST tajmer (za koje vreme je MCU resetovan) generie se po automatizmu u cilju stabilizacije kola kvarcnog oscilatora i u toku uspostavljanja napona napajanja i pri buenju MCU. Omogueni PWRT tajmer generisae dodatno kanjenje od 72ms samo u toku uspostavljanja napona napajanja i to za bilo koju konfiguraciju oscilatora ali ne i prilikom buenja MCU. Naime, odlazak MCU u sleep stanje je prelaz iz normalnog radnog reima MCU, sa ve uspostavljenom nominalnom vrednou napona napajanja VDD, u stanje mirovanja. S tim u vezi, prilikom buenja MCU ne postoji potreba za novim startovanjem PWRT tajmera. Meutim, ovaj zakljuak ne vai za OST tajmer. Budui da odlazak u sleep stanje znai iskljuenje kola kristalnog oscilatora to se pri buenju, odnosno, novom ukljuenju oscilatora mora izbei prelazni reim (period nestabilnog rada oscilatora), trajanja oko 1024TOSC, dranjem MCU u stanju reset do isteka ovog vremenskog perioda. Ovo se postie automatskim startovanjem OST tajmera. Na slici 3.1.4. ilustrovana je Power-up sekvenca internih signala MCU kada poetna brzina porasta napona napajanja zadovoljava uslov dVDD/dt50V/s i kada je MCLR linija povezana sa linijom napajanja VDD, kao na slici 3.1.1. Kako se na otpornicima R1 i R2 pad napona usled struje curenja moe zanemariti, za sluaj otvorenog prekidaa, napon na liniji napajanja VDD jednak je naponu na MCLR liniji.

Slika 3.1.4. Ilustracija Power-up sekvence za dVDD/dt50V/s, kada je VMCLR=VDD.

69

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Na slici 3.1.4 se moe uoiti trenutak kada napon napajanja dostie naponski prag VPOR (1.2V-1.7V), odnosno, trenutak inicijalizacije PWRT tajmera sa fiksnom zadrkom od priblino 72ms posle ega sledi inicijalizacija OST tajmera. Po isteku vremenske zadrke koju generie OST tajmer, TOST=1024TOSC, MCU zapoinje regularno izvravanje koda. Za vreme reset stanja MCU, trajanja TPU=TPWRT+TOST, napon napajanja dostie nominalnu radnu vrednost a kristalni oscilator ulazi u stacionarni reim oscilovanja. Prethodna razmatranja odnose se na sluajeve kada poetna brzina porasta napona napajanja nije manja od 50V/s. Meutim, ako je uspostavljanje napona napajanja VDD sporo, sa poetnom brzinom porasta manjom od 50V/s, opisani Power-up mehanizam nee biti u stanju da generie odgovarajui tajming (POR signal kojim se trigeruje PWRT tajmer). Ako se i dogodi da POR signal trigeruje PWRT tajmer ukupno vreme zadrke MCU u reset stanju TPU=TPWRT+TOST=72ms+1024TOSC e biti nedovoljno za dostizanje nominalne radne vrednosti napona napajanja i stabilizaciju kristalnog oscilatora. Nominalna vrednost napona VDD je generalno, za verzije ureaja sa napajanjem od 5V, oko 4V kada kristalni oscilator MCU nije u HS (High Speed) modu i oko 4.5V za MCU sa kristalnim oscilatorom konfigurisanim u HS modu. U takvom sluaju, MCU moe zapoeti obradu programa na jedan nepredvidiv, pogrean nain. Kada je prisutna neizvesnost u pogledu pouzdanosti Power-up mehanizma (spori porast napona VDD) dodatna spoljanja kola moraju biti koriena za dranje MCLR linije na niski naponski nivo (MCU u stanju reset) dovoljno dugo da napon napajanja sigurno dostigne nominalnu vrednost, od trenutka prikljuenja na MCU.

Slika 3.1.5. Spoljanje kolo za resetovanje MCU za izvore sa sporim uspostavljanjem napona napajanja. Na slici 3.1.5. prikazana je konfiguracija i nain prikljuivanja spoljanjeg kola za resetovanje MCU za izvore napajanja ija poetna brzina porasta napona je manja od 50V/s. Napon na kondenzatoru C, jednak naponu na MCLR liniji, raste sporije od napona napajanja VDD zbog procesa punjenja kondenzatora. Brzina porasta napona na kondenzatoru obrnuto je proporcionalna vremenskoj konstanti kola =RC. Prema tome, izborom vremenske konstante spoljanjeg kola moe se uticati na brzinu porasta napona na MCLR liniji koja je, svakako, uvek manja od brzine porasta napona VDD. MCU e biti u stanju reset sve dok napon na MCLR liniji ne dostigne vii prag prebacivanja Schmitt-ovog invertora od 0.85VDD. Budui da se brzina porasta napona na MCLR liniji moe menjati promenom vremenske konstante RC, pravilnim izborom parametara kola moe se osigurati normalizacija napona napajanja i stabilizacija oscilovanja kristalnog oscilatora pre nego to napon na MCLR liniji dostigne vii prag prebacivanja invertora, posle ega MCU izlazi iz reset stanja. Poluprovodnika dioda D na slici 3.1.5. koristi se za brzo pranjenje napunjenog kondenzatora C kroz kolo MCU nakon ukidanja napona napajanja. Napunjeni kondenzator se po ukidanju napona napajanja brzo prazni preko provodne diode koja paraleno vezana sa otpornikom R redukuje ukupnu vremensku konstantu pranjenja. Time se znaajno skrauje prelazni reim pranjenja kondenzatora i ubrzava

70

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

dovoenje RC kola u poetno stanje. Po prikljuenju napona napajanja (proces punjenja kondenzatora) dioda D je inverzno polarizovana i moe se ignorisati. Ako se za pouzdani poetak izvravanja koda koristi spoljanje kolo za resetovanje MCU, kao na slici 3.1.5., tada su u zavisnosti od vrednosti vremenske konstante RC i brzine porasta napona napajanja mogue tri situacije: 1. Poetna brzina porasta napona napajanja dVDD/dt50V/s i relativno mala vremenska konstanta, tako da u toku vremenskog intervala TPU napon na MCLR liniji dostie vii prag prebacivanja Schmitt-ovog invertora VTH=0.85VDD. Ova situacija ilustrovana je na slici 3.1.6. Kao to se moe videti, efekat na poetak izvravanja koda je isti kao i u sluaju odsustva spoljanjeg RC kola. Naime, MCU nee izai iz stanja reset do isteka vremenskog intervala TPU. 2. Poetna brzina porasta napona napajanja dVDD/dt50V/s i relativno velika vremenska konstanta, tako da napon na MCLR liniji dostie vii naponski prag invertora VTH po isteku vremenskog intervala TPU. Situacija je ilustrovana na slici 3.1.7. Moe se primetiti da niski naponski nivo na MCLR liniji, ispod VTH=0.85VDD, ne doputa MCU izlazak iz stanja reset i posle isteka vremenskog intervala TPU. Tek nakon to napon na MCLR liniji dostigne vii prag prebacivanja invertora VTH=0.85VDD MCU izlazi iz stanja reset i zapoinje regularno izvravanje koda.

Slika 3.1.6. Power-up sekvenca za sluaj primene spoljanjeg RC kola kada napon na MCLR liniji dostie naponski prag VTH=0.85VDD u toku vremenskog intervala TPU.

Slika 3.1.7. Power-up sekvenca za sluaj primene spoljanjeg RC kola kada napon na MCLR liniji dostie naponski prag VTH=0.85VDD po isteku vremenskog intervala TPU.

71

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

3. Poetna brzina porasta napona napajanja dVDD/dt<50V/s i odgovarajua vremenska konstanta, tako da napon napajanja dostie nominalnu vrednost VDDnom po isteku vremenskog intervala TPU, slika 3.1.8. Zbog vremenske konstante RC, odnosno, procesa punjenja kondenzatora, napon na MCLR liniji raste sporije od napona napajanja. Zbog toga e vii prag prebacivanja invertora biti dostignut izvesno vreme posle dostizanja nominalne vrednosti napona napajanja. Ovo vreme direktno zavisi od izbora vremenske konstante kola RC. MCU e izai iz stanja reset kada napon na MCLR liniji dostigne naponski prag VTH, ime zapoinje izvravanje koda. Pravilnim izborom vremenske konstante RC kola moe se obezbediti dovoljno dugo vreme dranja MCU u stanju reset da se posle stabilizacije napona napajanja stabilie i kristalni oscilator CPU i potom otpone sa regularnim izvravanjem koda.

Slika 3.1.8. Power-up sekvenca za sluaj primene spoljanjeg RC kola kada i napon napajanja i napon na MCLR liniji dostiu nominalnu vrednost VDDnom i naponski prag VTH, respektivno, po isteku vremenskog intervala TPU. Sluaj pod takom 3. je praktino situacija u kojoj zbog sporog porasta napona napajanja interna kola ne mogu da zadovolje zahtevani tajming, zbog ega je nuna primena spoljanjeg reset kola, kao na slici 3.1.5.

Slika 3.1.9. Dranje MCU u reset stanju i izbor odgovarajueg trenutka za start aplikacije. Slike 3.1.7. i 3.1.8. pokazuju da je MCU u stanju reset sve vreme dok je napon na MCLR liniji nii od vieg praga prebacivanja invertora VTH=0.85VDD. Ova se osobina moe iskoristiti za

72

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

dranje MCU u stanju reset, dranjem MCLR linije na niski napon i potom izbor odgovarajueg trenutka za poetak izvravanja koda na uzlaznoj ivici napona na MCLR liniji, slika 3.1.9. Opisani nain startovanja aplikacije koristi se u svrhe testiranja ili sinhronizacije vie MCU u paralelnom reimu rada (paralelno procesiranje).

3.1.3. WDT (Watch-Dog Timer) reset u toku normalnog rada MCU i u sleep stanju
WDT (Watch-Dog Timer) tajmer predstavlja tkzv. sigurnosni tajmer namenjen automatskom resetovanju MCU u sluaju zaglavljivanja programa usled prisustva uma u okruenju ili logiki loe projektovanog programa. WDT je integrisani autonomni RC oscilator periodinih relaksacionih oscilacija koji ne zahteva dodavanje spoljanjih komponenti. Oscilator e nastaviti sa radom ak i u sluaju blokade taktnog oscilatora CPU, npr. posle izvrenja sleep instrukcije. Perioda impulsa sa izlaza WDT tajmera (oscilatora) je temperaturski zavisna veliina i varira od ipa do ipa u opsegu od 7ms do 33ms. Tipina vrednost periode oscilovanja je TWDT=18ms, odnosno, frekvencije oscilovanja fWDT=1/TWDT=55.55Hz. WDT tajmeru se programski moe dodeliti deljivi resurs-postskaler koga ini 7-bitni binarni broja. Broja se koristi kao delitelj frekvencije taktnih impulsa sa izlaza WDT tajmera, slika 3.1.10. Odnos deljenja postskalera se programski moe birati iz opsega od 1:20 do 1:27. Zahvaljujui postskaleru perioda WDT tajmera moe biti programski umnoena (frekvencija podeljena) do maksimalnih 27 TWDT to tipino iznosi 2.304s. Moe se primetiti da je i najkrae trajanje periode WDT tajmera TWDT=18ms mnogostruko vee od trajanja instrukcijskog ciklusa MCU TCY=4TOSC, gde je TOSC perioda taktnog oscilatora CPU. Npr. za fOSC=20MHz TCY=200ns. Sa slike 3.1.10. se jasno vidi da se jednim bitom registra specijalne namene, bit PSA (PreScaler Assignment) za dodelu preskalera, moe birati jedan od dva kanala dvokanalnog multipleksora 2/1. Npr. ako je PSA=0 izlaz WDT tajmera direktno se spaja sa izlazom WDT reset. Prema tome, broja postskalera nema uticaja na multiplikaciju periode tajmera. Ako je PSA=1 tada se osnovna perioda impulsa sa izlaza WDT tajmera ili jedna od sedam umnoenih sa jednog od sedam izlaza brojaa postskalera proputa kroz izabrani kanal osmokanalnog multipleksora i vodi do izlaza WDT reset. Izbor jednog od osam kanala multipleksora 8/1 vri se selekcionim bitovima registra specijalne namene PS0, PS1 i PS2. WDT tajmer se programiranjem konfiguracione rei MCU moe omoguiti WDTE=1 ili onemoguiti WDTE=0, slika 3.1.10.

Slika 3.1.10. Pojednostavljena blok ema WDT tajmera sa postskalerom.

73

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 3.1.11. Primer talasnih oblika signala na izlazima postskalera pri deljenju frekvencije oscilatora WDT tajmera sa 2 i sa 4. Na slici 3.1.11. prikazani su talasni oblici signala na izlazu WDT tajmera a) i na izlazima postskalera b), c). Impulsi sa izlaza WDT tajmera taktuju 7-bitni broja postskalera na ija se prva dva izlaza, oznaena na slici 3.1.10. sa 21 i 22, generiu talasni oblici dvostruko i etvorostruko manje frekvencije, odnosno, isto toliko vee periode. Broja postskalera zasnovan je na ivinim flip-flopovima tako da se promene stanja na njihovim pravim i komplementarnim izlazima dogaaju na uzlaznoj ivici taktnog signala. Pogodnim kolima za diferenciranje izdvajaju se potom samo prednje ivice ovih signala veoma kratkog trajanja, d), e), f), kojima se vri resetovanje MCU. Talasni oblici signala na preostalih pet izlaza postskalera dobijeni su na slian nain kao i prethodna dva sa drugaijim odnosima deljenja 1:23 do 1:27. Zadatak WDT tajmera je da periodino na svakih TWDT=18ms ili vie u sluaju dodele postskalera resetuje MCU izlazom WDT reset. Asembler MCU poseduje instrukciju CLRWDT (CleaR Watch-Dog Timer) koja kada se izvri restartuje oscilator WDT tajmera vraajui ga u poetno stanje generisanja jedne periode. Ako se u programu koji se izvrava umetne instrukcija CLRWDT tako da se izvri pre isteka periode WDT tajmera TWDT do reseta MCU nee doi jer se oscilator tajmera restartuje vraajui se u poetno stanje i ponovno zapoinjui generisanje periode. Samo u sluaju zaglavljivanja programa do izvrenja instrukcije CLRWDT nee doi, pa time ni do restarta oscilatora WDT tajmera, usled ega po isticanju periode WDT tajmera dolazi do resetovanja MCU. Ako je zaglavljivanje aplikacije rezultat trenutnih smetnji, novi restart aplikacije resetovanjem MCU znai novi poetak izvoenja programa pod drugaijim okolnostima (odsustvo smetnji) koje nee dovesti do zaglavljivanja. Opisani autonomni mehanizam zamenjuje operatera koji bi u sluaju zaglavljivanja procesa morao manuelno spoljanjim resetom restartovati aplikaciju. Budui da je oscilator WDT tajmera autonoman, resetovanje MCU WDT tajmerom se moe vriti u toku normalnog izvrenja programa ili u toku sleep reima. Ako se reset dogodi u toku normalnog izvrenja programa procesor e zapoeti izvrenje programa sa adrese reset vektora resetujui pri tome TO bit i setujui PD bit statusnog registra. Resetovanje izlazom WDT kada je MCU u sleep stanju imae za posledicu izvrenje prve instrukcije programa koja sledi iza SLEEP instrukcije posle kratkog kanjenja od TOST=1024TOSC ako je izabran kristalni oscilator. Ova situacija predstavlja prirodni nastavak izvrenja koda posle vremena provedenog u reimu niske potronje pri emu su oba bita statusnog registra TO i PD resetovana.

74

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

3.1.4. BOR (Brown-Out Reset) reset


Naprednije serije PIC MCU kao to je PIC16F877 poseduju ugraeni interni reset mehanizam tkzv. BOR (Brown-Out Reset) reset za poveanje operativne pouzdanosti MCU. Ovaj mehanizam obezbeuje resetovanje MCU ako napon napajanja u toku normalnog izvrenja programa opadne ispod marginalne vrednosti VBOR, to tipino iznosi 40.3V, i ostane ispod ove vrednosti due od 100s. Imajui u vidu da se uglavnom radi o tranzijentnim promenama na linijama napajanja MCU, napon napajanja posle izvesnog vremena moe prekoraiti marginalnu vrednost VBOR i normalizovati se. Ako je vreme za koje je napon napajanja ispod vrednosti VBOR krae od 100s do reseta MCU nee doi. Ukoliko se BOR reset dogodi ureaj e ostati u stanju reset sve dok napon napajanja ne poraste iznad marginalne vrednosti VBOR. Meutim, poveanje VDD iznad marginalne vrednosti VBOR inicira uzastopno PWRT tajmer koji generie dodatni reset tajming u trajanju TPWRT=72ms i potom OST tajmer koji e zadrati MCU u stanju reset jo za vreme TOST=1024TOSC ako je izabrani taktni oscilator CPU kristalni. U toku vremenskog intervala TPWRT+TOST moe doi do ponovnog pada napona napajanja ispod vrednosti VBOR u trajanu duem od 100s to e usloviti restart BOR procesa a kada napon napajanja ponovo naraste iznad VBOR i restart PWRT i OST tajmera uzastopno. BOR reset kolo e resetovati MCU i kada POR signal ne trigeruje PWRT tajmer zbog eventualnog sporog porasta napona napajanja. PWRT tajmer e automatski biti omoguen kada je omogueno kolo za BOR reset (setovanjem bita BODEN konfiguracione rei) bez obzira na stanje bita PWRTE konfiguracione rei.

Slika 3.1.12. BOR reset u razliitim situacijama. Na slici 3.1.12. su ilustrovane tipine opisane situacije pojave i restarta BOR reseta. Sluaj pod a) predstavlja kratkotrajnu tranzijentnu pojavu pada napona napajanja ispod dozvoljene margine u trajanju duem od 100s. Interno reset kolo dri MCU u stanju reset do trenutka poveanja napona napajanja iznad praga VBOR. Reset stanje e, meutim, trajati jo izvesno vreme zbog uzastopnog trigerovanja PWRT i OST tajmera. Slika 3.1.12. c) ilustruje BOR reset kada pad napona napajanja ispod praga VBOR ima due trajanje dok sluaj b) predstavlja restart BOR reseta i potom oba tajmera uzrokovan varijacijom napona napajanja. Resetovanje MCU usled pada napona napajanja ispod marginalne vrednosti je nuno zbog nekompatibilnosti smanjenih naponskih nivoa na I/O linijama na kojima mogu biti povezani razliiti ureaji.

75

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Slika 3.1.13. Eksterno kolo za BOR reset. Ako PIC MCU nije opremljen ugraenim kolom za BOR reset, eksterno kolo sa slike 3.1.13., iji je izlaz povezan sa MCLR linijom, moe posluiti za resetovanje MCU pri padu napona napajanja VDD ispod 4.15V. Duboko zasieni tranzistor pri nominalnoj vrednosti napona napajanja od 5V osigurava visok napon od oko 4.9V na MCLR liniji obezbeujui normalno izvravanje instrukcija MCU. Pri naponu VDD=VZ+V3.6V+0.55V=4.15V tranzistor prestaje da provodi usled ega napon na MCLR liniji opada na priblino 0V i time resetuje MCU. Do resetovanja MCU dolazi, meutim, i pri neto veoj vrednosti napona napajanja od oko 4.3V, budui da se reset dogaa pri naponu na MCLR liniji VMCLR0.2VDD.

76

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Poglavlje 4

POVEZIVANJE MCU SA OKRUENJEM I/O PORTOVI OPTE I SPECIJALNE NAMENE

Ulazno/izlazni (I/O) portovi MCU predstavljaju fundamentalnu direktnu fiziku vezu CPU jedinice i periferala MCU sa spoljanjim svetom. Broj portova kao i broj I/O linija jednog odreenog porta varira od serije do serije PIC MCU, npr. od 5 I/O linija za osmopinske do 33 I/O linija za etrdesetopinske PIC MCU ureaje. Vei broj I/O linija, odnosno, portova poveava fleksibilnost primene ali i gabarit MCU. PIC16F877 mikrokontroler poseduje pet I/O portova i to: - PORTA 6-bitni - PORTB 8-bitni - PORTC 8-bitni - PORTD 8-bitni - PORTE 3-bitni I/O linije portova su u optem sluaju multifunkcionalne i programski konfigurabilne, od digitalnih I/O linija opte namene, digitalnih I/O linija specijalne namene do analognih I/O linija. Principijelno, svaki I/O port moe biti razmatran kao registar iji sadraj je vidljiv spoljanjem svetu.

Slika 4.1. Registri podataka I/O portova i njihovi direkcioni registri PIC16F877 MCU mapirani u SRAM memoriji.

77

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Pojednostavljeni princip mapiranja svih I/O portova PIC16F877 i njihovih direkcionih registara u deo RAM memorije MCU ilustrovan je na slici 4.1. Prenos podataka na relaciji registar-I/O linije porta je dvosmeran pa se govori o birekcionom ili bilateralnom portu pri emu se svi bitovi porta prenose istovremeno (paralelni port). Registrima svih est I/O portova pridrueni su odgovarajui TRIS direkcioni registri, kao na slici 4.1. Ovi registri se koriste za programsku selekciju smera prenosa podataka za svaku I/O liniju odgovarajueg porta pojedinano. Programskim upisom nule na odreenu bitsku poziciju odreenog TRIS registra odgovarajua linija porta kome je pridruen TRIS registar konfigurie se kao izlazna i obrnuto. Odreeni broj integrisanih periferala MCU koristi odgovarajue linije I/O portova kao zajedniki resurs pa se zbog deljenja resursa stvara privid o veem broju I/O linija. Na primer, PIC16F877 deli pet linija porta A i tri linije porta E na analogne ulaze osmokanalnog A/D konvertora kao integrisane periferije MCU i digitalne I/O linije opte namene. Da bi se bolje razumele funkcije i karakteristike I/O porta potrebno je razmotriti pojednostavljenu hardversku strukturu jedne tipine I/O linije porta, prikazane na slici 4.2.

Slika 4.2. Pojednostavljena hardverska struktura tipine I/O linije porta. Upis bita podatka u liniju porta konfigurisanu kao izlaz vri se taktovanjem D flip-flopa za podatke (data flip-flop) na ijoj magistrali podataka (ulaz D) je postavljena odgovarajua bitska vrednost. Za konfigurisanje linije porta kao izlazne neophodno je pre opisane procedure sa magistrale podataka taktnim signalom upisati u TRIS flip-flop logiku nulu koja e omoguiti gornji trostatiki TRIS bafer i time direktno povezati izlaz flip-flopa za podatke na izlaznu liniju porta. itanju stanja ulazne linije porta prethodi konfigurisanje linije porta kao ulazne upisom logike jedinice sa magistrale podataka u TRIS flip-flop na odgovarajui taktni signal. Time se izlaz gornjeg trostatikog TRIS bafera dovodi u stanje visoke impedanse (odspojen izlaz) ime se omoguava prenos ulaznog podatka sa ulazne linije preko Schmitt-ovog bafera za eliminaciju umova do ulaza prihvatnog le flip-flopa (ulaz D). Generisanjem taktnog signala za itanje iz prihvatnog lea ulazni podatak se preko trostatikog bafera za podatke prenosi na magistralu podataka.

78

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Stanje TRIS flip-flopa (direkcija linije podataka) moe se proitati omoguenjem donjeg trostatikog TRIS bafera iji ulaz je direktno povezan sa izlazom TRIS flip-flopa a izlaz sa magistralom podataka. Prema tome, TRIS bit se moe itati iz ili upisivati u TRIS flip-flop sa magistrale podataka. Razmatrajmo primer dela programa za izmenu direkcije linije RB7 porta B napisan na asembleru i C jeziku.
BCF TRISB,7 #BYTE TRIS_B=0x86 BIT_CLEAR(TRIS_B,7) ;Brisanje MSB bita TRISB registra (linija RB7 porta B je izlazna) //Deklaracija adrese TRIS_B registra //Brisanje MSB bita TRIS_B registra

BCF je primer instrukcije tipa read-modify-write gde procesor najpre ita stanje TRISB registra, modifikuje njegov sadraj i potom vri upis u TRISB registar. Kompletna akcija izvrava se u jednom instrukcijskom ciklusu u kome procesor ita, modifikuje sadraj i potom upisuje u registar specijalne namene-TRISB. Sledei primer instrukcija takvog tipa su instrukcije za inkrementiranje i dekrementiranje sadraja registara koje se u realnosti izvravaju tako to se najpre izvri transfer sadraja registra iz SRAM memorije podataka u privremeni procesorski registar (itanje), potom sadraj privremenog registra inkrementira ili dekrementira koristei ALU (modifikacija) i na kraju prenosi u SRAM memoriju na odgovarajuu adresu (upis). Pokuaj itanja linije porta sa slike 4.2. kada je ona konfigurisana kao izlazna e u veini situacija efektivno kopirati stanje flip-flopa za podatke (data flip-flop) u CPU registar, meutim to nije uvek sluaj. Naime, ako je izvorna ili ponorna struja kroz izlaznu liniju velika, napon na liniji za koju je povezan ulaz Schmitt-ovog bafera moe znaajno odstupati od normalnih logikih nivoa usled poveanog pada napona na izlaznoj otpornosti gornjeg trostatikog TRIS bafera, slika 4.2. Ovo moe dovesti do pogrenog itanja pravog stanja flip-flopa za podatke. Pokuaj upisa na liniji porta koja je konfigurisana kao ulazna e za razliku od prethodno opisane situacije rezultirati pravilnom izmenom stanja flip-flopa za podatke. Budui da je izlaz gornjeg trostatikog TRIS bafera u stanju visoke impedanse kada je linija porta konfigurisana kao ulazna, slika 4.2., upis u flip-flop za podatke izvrie se nesmetano bez uticaja na stanje ulazne linije do eventualne docnije izmene direkcije linije porta. Opisana mogunost upisa u flipflop za podatke na nain nevidljiv spoljanjem svetu je vana u situaciji reseta PIC MCU. Naime, posle reseta MCU sve linije svih portova automatski se konfiguriu kao digitalni ulazi, odnosno, svi bitovi direkcionih TRIS registara portova su setovani FFh. Za kontrolu spoljanjeg ureaja prikljuenog na port program prvo upisuje inicijalno stanje u flip-flopove podataka a potom se samo promenom direkcije linija porta (upis logike nule u TRIS flip-flop) upisano stanje prenosi na izlazne linije porta jednovremeno. Za korektan rad sa portovima MCU posebnu panju treba posvetiti ogranienjima po pitanju strujnog kapaciteta linija porta. Prema specifikacijama proizvoaa data su sledea ogranienja za dva sluaja: - Struja ponora izlazne linije porta IOL kada je linija na niskom potencijalu (stanje logike nule) ne sme premaiti vrednost od 8.5mA za graninu vrednost napona logike nule na liniji od VOL=VOLMAX=0.6V. - Izvorna struja izlazne linije porta IOH kada je linija na visokom potencijalu (stanje logike jedinice) ne sme premaiti vrednost od 3mA za graninu vrednost napona logike jedinice na liniji od VOH=VOHMIN=VDD-0.7V. Vee izvorne/ponorne struje od navedenih limita vode degradaciji naponskih nivoa logike jedinice/nule i doputene su ako je degradacija prihvatljiva. Podaci proizvoaa govore da maksimalna doputena izlazna izvorna/ponorna struja po jednoj I/O liniji porta, za koju vrednost nee doi do oteenja, iznosi 25mA, respektivno. Meutim, kada se koristi vie nego jedna I/O linija globalna ogranienja moraju biti potovana. Kombinovano korienje I/O linija svih portova A, B, C, D i E, ograniava ukupnu maksimalno doputenu izvorno/ponornu struju na 200mA.

79

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

Proizvoa specificira i maksimalnu struju kroz liniju napajanja VDD od IDD=250mA i kroz zajedniku liniju VSS, ISS=300mA. I/O linije portova konfigurisane kao ulazne sa TTL ulaznim baferima, kao napon logike nule prepoznaju ulazne napone koji zadovoljavaju uslov VIL0.5V a napon logike jedinice za VIH2V. I/O linije portova konfigurisane kao ulazne sa Schmitt-ovim ulaznim baferima imaju ulazne pragove prebacivanja stanja bafera na izlazu od VIL=0.2VDD (1V za VDD=5V) i VIH=0.8VDD (4V za VDD=5V). Blok dijagram jedne tipine I/O linije porta, prikazan na slici 4.2., moe razlikovati od porta do porta u funkciji namene linija porta i elektrinih karakteristika.

4.1. ORGANIZACIJA I MULTIPLEKSNE FUNKCIJE PORTA A


Port A je estobitni bidirekcioni I/O port kome je pridruen TRIS A direkcioni registar. Oba registra mapirana su u SRAM memoriji na adresama 05h i 85h, respektivno. Tipina digitalna logika pet linija porta <RA3:RA0> i RA5 identina je onoj prikazanoj na slici 4.2. sa neznatnim izmenama ilustrovanim na slici 4.1.1. Ozbiljnija izmena jednog dela logike odnosi se samo na liniju RA4, slika 4.1.2.

Slika 4.1.1. Pojednostavljena struktura viefunkcionalnih I/O linija <RA3:RA0> i RA5 porta A.

Slika 4.1.2. Pojednostavljena struktura I/O linije RA4 porta A.

Kao to se sa slike 4.1.1. moe videti, trostatiki TRIS bafer implementiran je na bazi serijske veze N i P-kanalnog MOS tranzistora. Ulazni bafer navedenih pet linija porta je TTL tipa a svaka od pet linija moe biti iskoriena i kao jedan od osam analognih ulaza integrisane periferije MCU-A/D konvertora. Kanali A/D konvertora su multipleksirani, tako da je svaka analogna ulazna linija povezana sa odgovarajuim ulazom analognog multipleksora (MUX), slika 4.1.3. Izlaz trostatikog TRIS bafera je u stanju visoke impedanse kada je TRIS flip-flop setovan jer nijedan od dva MOS tranzistora nije provodan, ime je flip-flop za podatke izolovan od I/O linije. Odgovarajua linija porta je tada konfigurisana kao ulazna a da li e se ista koristiti kao digitalni ili analogni ulaz zavisie od izbora radnog reima (analogni ulazni mod na jednom od dva ulaza TTL ulaznog bafera). Kada je TRIS flip-flop resetovan linija je konfigurisana kao digitalni izlaz opte namene. Stanje izlazne linije tada zavisi od stanja flip-flopa za podatke. Naime, kada je izlaz Q flip-flopa za podatke postavljen u stanje logike jedinice (flip-flop

80

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

setovan) provodan je samo P-kanalni tranzistor tako da je izlazna linija na visokom potencijalu dok je za stanje logike nule provodan samo N-kanalni tranzistor zbog ega je linija na niskom potencijalu. Struktura linije porta A RA4 izmenjena je u odnosu na ostalih pet linija, slika 4.1.2, budui da je u izlaznom delu uklonjen P-kanalni tranzistor a na mesto TTL ulaznog bafera implementiran Schmitt-ov bafer. Takva konfiguracija izlaznog stepena poznata je pod nazivom otvoreni drejn' (open-drain). Za uspostavljanje naponskog nivoa logike jedinice u sluaju blokiranog tranzistora (otvoreno kolo) potrebna je ugradnja spoljanjeg pull-up otpornika izmeu drejna N-kanalnog tranzistora i linije napajanja, slika 4.1.4. Za napajanje pull-up otpornika moe se koristiti napon napajanja MCU VDD ili napon posebnog spoljanjeg generatora VG ija maksimalna vrednost, u skladu sa preporukama proizvoaa, ne sme prekoraiti 8.5V. Otuda naponski nivoi logikih stanja na liniji RA4 mogu biti razliiti u odnosu na ostale linije porta A. Otpornost pull-up otpornika ne sme biti suvie mala, zbog velike struje kroz zatvoreni tranzistrorski prekida i mogueg oteenja, niti suvie velika da bi se smanjio uticaj indukovanih elektromagnetnih smetnji spoljanjih izvora napajanja. Dobar kompromis je izbor vrednosti otpornika iz opsega 10K do 100K. Linija RA4 se moe koristiti kao digitalna I/O linija opte namene ili kao digitalni ulaz za taktovanje integrisane periferije MCU-tajmera 0. Meutim, ova linija ne moe biti koriena kao analogni ulaz A/D konvertora. Zamenom TTL ulaznog bafera Schmitt-ovim povean je imunitet linije na umove i smetnje u sluaju kada se ova linija koristi za spoljanje taktovanje tajmera 0.

Slika 4.1.3. Principijelna blok ema osmokanalnog analognog multipleksora (MUX), iji su ulazi povezani sa osam analognih ulaznih linija.

Slika 4.1.4. Povezivanje spoljanjeg pull-up otpornika na open-drain izlaz linije RA4.

81

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

4.2. ORGANIZACIJA I MULTIPLEKSNE FUNKCIJE PORTA B


Port B je osmobitni bidirekcioni I/O port kome je pridruen TRIS B direkcioni registar. Oba registra mapirana su u SRAM memoriji na adresama 06h i 86h kao i 106h i 186h, respektivno. Tipina digitalna logika linija nieg nibla porta B <RB3:RB0> prikazana je na slici 4.2.1.

Slika 4.2.1. Digitalna logika linija nieg nibla porta B, <RB3:RB0>.

Slika 4.2.2. Digitalna logika linija vieg nibla porta B, <RB7:RB4>.

Linija RB3 je multipleksirana funkcijom programiranja pod niskim naponom (Low Voltage Programming) dok linija RB0 predstavlja izvor prekidnog signala, kada su konfigurisane kao ulazne. Obe linije su zbog dodatnih funkcija opremljene Schmitt-ovim triger baferima na ulazu za eliminisanje smetnji. Kada se koriste kao digitalne I/O linije opte namene tip ulaznog bafera je TTL, kao na slici 4.2.1. Linije porta B RB1 i RB2 su digitalne I/O linije opte namene sa TTL ulaznim baferom i ne poseduju Schmitt-ov bafer. Sve linije porta B opremljene su internim programski kontrolisanim pull-up otpornikom koga ini otpornost kanala izmeu drejna i sorsa P-kanalnog MOS tranzistora, pribline vrednosti oko 20K. Posle POR reseta svi tranzistori su blokirani, odnosno, svi pull-up otpornici onemogueni, premda su sve linije porta B konfigurisane kao ulazne. Takoe, pull-up otpornik se automatski iskljuuje kada se odgovarajua linija porta B konfigurie kao izlazna. MSB bit OPTION registra RBPU koristi se za programsko omoguenje/onemoguenje individualnih pull-up otpornika na linijama porta B. Uprkos injenici da svih osam pull-up otpornika kontrolie RBPU bit OPTION registra, samo linije konfigurisane kao ulazne mogu imati prikljuen pull-up otpornik. Kao to je reeno, linija RB0 porta B predstavlja izvor spoljanjeg prekida Digitalna logika linija vieg nibla porta B je unekoliko izmenjena u odnosu na nii, slika 4.2.2. Kao to se moe primetiti

82

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

PCON REGISTAR
U-0 U-0 U-0 U-0 U-0 U-0 bit 7 bit 7-2 Neimplementirani bitovi: itaju se kao 0. bit 1 R/W-0 R/W-1

POR

BOR
bit 0

POR : Power-on Reset statusni bit. 1 = Nije se dogodio POR reset. 0 = Dogodio se POR reset (bit mora biti setovan programski posle POR reseta). BOR : Brown-Out Reset statusni bit. 1 = Nije se dogodio BOR reset. 0 = Dogodio se BOR reset (bit mora biti setovan programski posle BOR reseta).

bit 0

POR BOR TO
0 1 1 1 1 1
X

PD
1 1 1 0

Komentar Power-on Reset Brown-out Reset WDT Reset WDT Wake-up MCLR Reset u toku normalnog izvrenja instrukcija MCLR Reset u SLEEP stanju ili buenje iz SLEEP stanja prekidom

1 1 0 0

0 1 1 1 1

u
1

u
0

Vrste reseta Power-on Reset MCLR Reset u toku normalnog izvravanja inst. MCLR Reset u SLEEP stanju WDT Reset WDT Wake-up (u SLEEP stanju) Brown-out Reset Buenje prekidnim signalom iz SLEEP stanja

PC 000h 000h 000h 000h PC + 1 000h PC + 1(1)

STATUS 0001 1xxx 000u uuuu 0001 0uuu 0000 1uuu uuu0 0uuu 0001 1uuu uuu1 0uuu

PCON -0x -uu -uu -uu -uu -u0 -uu

STATUS REGISTAR
R/W-0 IRP bit 7 bit 7 R/W-0 RP1 R/W-0 RP0 R-1 R-1

TO

PD

R/W-x Z

R/W-x DC

R/W-x C bit 0

IRP: Bit za selekciju memorijske banke, korien za indirektno adresiranje. 1 = Banka 2, 3 (100h - 1FFh). 0 = Banka 0, 1 (00h - FFh).

83

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

bit 6-5

RP1:RP0: Bitovi za selekciju memorijske banke, korieni za direktno adresiranje. 11 = Banka 3 (180h - 1FFh). 10 = Banka 2 (100h - 17Fh). 01 = Banka 1 (80h - FFh). 00 = Banka 0 (00h - 7Fh). Komentar: Svaka banka poseduje 128 osmobitnih registara. TO: Tajm-aut bit. 1 = Posle power-up, CLRWDT instrukcije ili SLEEP instrukcije. 0 = Watchdod time-out period istekao. PD: Power-down bit. 1 = Posle power-up ili posle CLRWDT instrukcije. 0 = Posle egzekucije SLEEP instrukcije. Z: Zero bit. 1 = Rezultat aritmetike ili logike operacije je nula. 0 = Rezultat aritmetike ili logike operacije razliit od nule. DC: Digit carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instrukcije). 1 = Prenos/pozajmica sa nieg na vii nibl (sa bitske pozicije 3 na 4) za BCD cifre. 0 = Nema prenosa/pozajmice. Komentar: (za operaciju oduzimanja bit pozajmice (borrow) je komplementiran). C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instrukcije). 1 = Prenos/pozajmica sa MSB bitske pozicije (prekoraenje). 0 = Nema prenosa/pozajmice. Komentar: Za operaciju oduzimanja bit pozajmice (borrow) ima vrednost 1 kada je rezultat operacije vei ili jednak nuli a vrednost 0 kada je rezultat negativan. Instrukcije rotiranja operanda ulevo ili udesno (RLF, RRF) koriste bit Carry/borrow kao ulazno/izlazni.

bit 4

bit 3

bit 2

bit 1

bit 0

INTCON REGISTAR

84

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

R/W-0 GIE bit 7 bit 7

R/W-0 PEIE

R/W-0 T0IE

R/W-0 INTE

R/W-0 RBIE

R/W-0 T0IF

R/W-0 INTF

R/W-x RBIF bit 0

GIE: Bit za maskiranje svih prekida (globalni mask bit). 1 = Omogueni svi nemaskirani prekidi. 0 = Onemogueni svi prekidi. PEIE: Bit za maskiranje prekida sa svih periferija. 1 = Omogueni nemaskirani prekidi sa svih periferija. 0 = Onemogueni prekidi sa svih periferija. T0IE: Bit za omoguenje prekida sa tajmera 0 pri tranziciji FFh00h. 1 = Omoguen prekid. 0 = Onemoguen prekid. INTE: Bit za maskiranje spoljanjeg prekida sa RB0/INT linije. 1 = Omoguen prekid. 0 = Onemoguen prekid. RBIE: Bit za maskiranje prekida sa vieg nibla porta B. 1 = Omoguen prekid. 0 = Onemoguen prekid. T0IF: Zastavica prekida sa tajmera 0 pri tranziciji brojakog registra TMR0 FFh00h. 1 = TMR0 brojaki registar prekoraio osnovu brojanja (bit mora biti programski resetovan). 0 = TMR0 brojaki registar nije prekoraio osnovu brojanja. INTF: Zastavica spoljanjeg prekida sa RB0/INT linije. 1 = RB0/INT spoljanji prekid se dogodio (bit mora biti programski resetovan). 0 = RB0/INT spoljanji prekid se nije dogodio. RBIF: Zastavica prekida sa vieg nibla porta B. 1 = Najmanje jedan od etiri bita vieg nibla porta B je promenio stanje u odnosu na stanje zapameno u le registru porta B. Operacija itanja porta B moe ukloniti ovu asimetriju (bit mora biti programski resetovan). 0 = Nijedan od etiri bita vieg nibla porta B nije promenio stanje u odnosu na stanje le registra porta B.

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0

OPTION REGISTAR
R/W-1 R/W-1 R/W-1 T0CS R/W-1 T0SE R/W-1 PSA R/W-1 PS2 R/W-1 PS1 R/W-1 PS0 bit 0 RBPU INTEDG bit 7 bit 7

bit 6

RBPU: Bit za omoguenje pull-up otpornika na portu B 1 = PORTB pull-up otpornici onemogueni 0 = PORTB pull-up otpornici individualno omogueni na ulaznim linijama porta B INTEDG: Bit za selekciju ivice impulsa spoljanjeg prekida na RB0/INT liniji porta B 1 = Prekid na rastuoj ivici impulsa na RB0/INT liniji 0 = Prekid na opadajuoj ivici impulsa na RB0/INT liniji T0CS: Bit za izbor taktnog signala tajmera 0 1 = Spoljanji taktni signal na RA4/T0CKI liniji 0 = Interni taktni signal (inkrement TMR0 registra na svaki instrukcijski ciklus) T0SE: Bit za izbor ivice impulsa spoljanjeg taktnog signala 1 = Inkrement TMR0 registra na opadajuoj ivici impulsa na RA4/T0CKI liniji 0 = Inkrement TMR0 registra na rastuoj ivici impulsa na RA4/T0CKI liniji PSA: Bit za dodelu preskalera (delitelja frekvencije taktnih impulsa) 1 = Preskaler dodeljen Watchdog tajmeru 0 = Preskaler dodeljen Tajmeru 0

bit 5

bit 4

bit 3

85

PD

F T ra n sf o

rm

PD

F T ra n sf o

rm

er

er

ABB

ABB

bu

bu C lic k he re to
w

y
w.
A B B Y Y.c

2.0

2.0

to

Integrisani Raunarski Sistemi


om

Dr Aleksandar . ori
w

lic

he

re

w.

A B B Y Y.c

om

bit 2-0

PS2:PS0: Bitovi za izbor odnosa preskaliranja (deljenja) Vrednost Za tajmer 0 Za Watchdog tajmer 000 1:2 1 :1 001 1:4 1 :2 010 1:8 1 :4 011 1 : 16 1 :8
100 101 110 111

1 : 32 1 : 64 1 : 128 1 : 256

1 : 16 1 : 32 1 : 64 1 : 128

EECON1 REGISTAR
R/W-x EEPGD bit 7 bit 7 U-0 U-0 U-0 R/W-x WRERR R/W-0 WREN R/S-0 WR R/S-0 RD bit 0

EEPGD: Bit za selekciju programske/Data EEPROM memorije. 1 = Selektovana programska Flash EEPROM memorija. 0 = Selektovana Data EEPROM memorija. Komentar: Ovaj bit ne moe biti promenjen u toku operacija upisa ili itanja. Neimplementirani bitovi: itaju se kao 0. WRERR: Bit za detekciju greke pri upisu u memoriju 1 = Operacija upisa prerano okonana. (MCLR Reset ili WDT reset u toku Normalnog Izvrenja instrukcija) 0 = Operacija upisa kompletirana. WREN: Bit za omoguenje upisa u memoriju. 1 = Ciklus upis doputen. 0 = Ciklus upisa zabranjen. WR: Bit za inicijalizaciju ciklusa upisa u memoriju. 1 = Iniciran jedan ciklus upisa. Bit se automatski resetuje po okonanju ciklusa upisa a softverski moe biti jedino setovan. 0 = Ciklus upisa kompletiran. RD: Bit za inicijalizaciju ciklusa itanja iz memorije. 1 = Iniciran jedan ciklus itanja. Bit se automatski resetuje po okonanju ciklusa itanja a softverski moe biti jedino setovan. 0 = Nema inicijalizacije ciklusa itanja.

bit 6-4 bit 3

bit 2

bit 1

bit 0

86

You might also like