Sunteți pe pagina 1din 12

Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Anexa B

PROGRAMAREA I IMPLEMENTAREA AUTOMATULUI FINIT


UTILIZND MEDIUL DE PROGRAMARE MPLAB

n cadrul acestei anexe, se va ilustra crearea i dezvoltarea n MPLAB a unui proiect


pentru automatul finit prezentat n Anexa A precum i implementarea lui pe PICkit 1 Flash
Starter Kit echipat cu microcontrolerul PIC 12F675. Se vor utiliza pentru aceasta: diagrama
de stare a automatului, facilitile mediului integrat de programare MPLAB i kit-ul cu
programul de interfa PICkit 1 FLASH Starter Kit.

I. INTRODUCERE
n aceast Anex B ne propunem s ilustrm un mod specific de elaborare a
programului n asamblare pentru realizarea automatelor finite cu microcontrolere. Vom
exemplifica acest lucru pe automatul finit analizat n Anexa B, a crei diagram de stare este
prezentat n figura B.1.

0-/00 -0/00 ab/xy


10/00
11/01
00 01 s1s0
01/10 -0/11
11/11
11/01
01/00
10/10 10 11 -1/11
00/10

Figura B.1. Diagrama de stare a automatului finit


Automatul prezentat n figura B.1 are definite patru stri: State0 (00), State1 (01),
State2 (10) i State3 (11). Programul elaborat va trebui s permit realizarea succesiunii
strilor propus n secvena de simulare ORCAD, n funcie de valorile intrrilor asincrone,
notate Inputa1 i Inputb1. Pentru parcurgerea acestei secvene, vom mai defini dou stri
suplimentare, de aprindere a LED-ului D6 (State4 OK) n cazul parcurgerii succesiunii
State0 State1 State2 State3 State1 (ca n secvena propus pentru simulare n
ORCAD) i State5 ERR, de aprindere a LED-ului D7, pentru situaia n care n State1 se
ajunge pe tranziia a = x, b = 1 din State2.
Intrrile Inputa1 i Inputb1 sunt asincrone n raport cu tactul microcontrolerului pe
care urmeaz s fie rulat programul, motiv pentru care citirea valorilor acestor variabile
ridic anumite probleme. n cazul automatului finit din acest tutorial, pentru care intrrile
Inputa1 i Inputb1 sunt modificate manual, am recurs la urmtoarea soluie:

109
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Am introdus suplimentar un microswitch (SW1) a crui apsare va indica


programului, momentul n care poate prelua variabilele de intrare;
Programul se va afla ntr-o rutin de ateptare n care urmrete starea lui SW1,
iar n momentul apsrii acestuia va trece la citirea valorilor Inputa1 respectiv
Inputb1, i va determina trecerea automatului din starea n care s-a aflat ntr-o
stare nou dictat de aceste valori.

II. IMPLEMENTAREA AUTOMATULUI PE PICkit


Implementarea acestei aplicaii pe PICkit 1 FLASH Starter Kit, echipat cu
microcontrolerul PIC 12F675, se face parcurgnd succesiv urmtoarele etape:
Construirea proiectului care ncepe cu editarea fiierului surs al aplicaiei,
conform unei organigrame elaborate n prealabil. Reamintim c aceast etap
presupune o serie de operaii de programare executate ntr-o anumit succesiune
avnd ca rezultat obinerea fiierului direct executabil n format IntelHEX;
Testarea/depanarea programului n regim de simulare;
Rularea programului pe kit, utiliznd programul de interfa PICkit 1 FLASH
Starter Kit pentru gestionarea resurselor kit-ului. Verificarea funcionrii
programului conform aplicaiei se va face folosind LED-urile de pe plac sau
echipamente electronice de msur/vizualizare.
Organigrama i programul de realizare a automatului finit vor fi elaborate avnd n
vedere cteva consideraii, i anume:
Automatul finit din exemplul nostru are acum definite 6 stri: State 0 (00), State1
(01), State 2 (10), State 3 (11), State4 (OK), State5 (ERR). Trecerea dintr-o stare
n alta, conform diagramei din figura B.1, este asigurat de valorile binare ale
celor dou intrri Inputa1 i Inputb1;
Programul va avea o structur modular avnd cte un modul software pentru
fiecare stare, iar nceputul modulului va fi marcat de o etichet;
Starea curent a automatului este decis de valorile de pe intrrile Inputa1 i
Inputb1;
Citirea valorii intrrilor Inputa1 i Inputb1 este executat numai dup apsarea
unui microswith (SW1) legat la pinul GP3 al microcontrolerului;
Detectarea strii de apsare/relaxare a lui SW1 se va face ntr-o subrutin
denumit Button_Press. La schimbarea strii butonului, de apsare sau de
relaxare, citirea se va face cu o ntrziere de 10 ms pentru a evita efectul
oscilaiilor parazite pe care le introduce n schem contactul mecanic imperfect
din momentul comutrii. Ieirea din subrutina Button_Press trebuie executat
numai dup sesizarea strii de apsare a lui SW1;
Se vor folosi LED-urile D6 i D7 de pe plac, pentru semnalizarea unui ciclu
complet, respectiv a unui ciclu incomplet al strilor automatului.
Organigrama programului principal, elaborat conform acestor precizri
suplimentare, este prezentat n figura B.2, iar cea a programului de realizare a subrutinei de
citire a strii push button-ului SW1 este prezentat n figura B.3. Structura organigramei din
figura B.2 este general, ea putnd fi utilizat n absolut toate programele de realizare a unui
automat finit, modificri aprnd doar n numrul de stri i n modulele de definire a lor.

110
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

S TA RT

S etri, c onfigu rare m icrocontroller


De fin iri ale v aria bilelo r de p rog ram
IN ITIA LIZE
Sting erea LE D -u rilor a prin se
Iniializa re a re gistrelor u tiliz ate
Con fig urare G P 0, G P1 ,...GP 5 ca I/O digitale

S TATE _ M AC HINE
Su brutina
BU TTO N_ PR E SS

nc rca re a Reg istrului PC L


c u ad re sa s trii cu re nte

ST ATE 0 S TAT E1 S TA TE 2 S TA TE3 S TATE 4 S TA TE 5


C itir e intrri Citire intrri C itire intr ri Citire intrri C -d LED C-d LED
D 6 _O N D 7_ON
(OK) (ER R)
Da Da Da State0 S tate 0
a,b=0,x? a,b=x,0? a,b=1,0? a,b=x,1?

Nu Nu State1 Nu Nu State3
State0 State2
State2 Da State4
State1 a,b=0,0?

Nu State3

State5

Figura B.2. Organigrama programului de realizare a automatului

2.1. EDITAREA FIIERULUI SURS

Reguli generale
Reamintim c n editarea programului surs se va ine cont de cteva reguli generale
pe care trebuie s le respecte orice fiier surs n asamblare:
Partea de nceput a fiierului trebuie s conin directivele de definire a PIC-ului
utilizat (LIST, #INCLUDE), de definire a unor variabile specifice, registre
(coninut i adrese) sau date (#DEFINE, CBLOCK, BANKSEL), de configurare a
hardware-ului (__CONFIG).
Urmeaz apoi corpul programului care ncepe cu directiva ORG <adresa de
start> i conine instruciuni specifice aplicaiei, structurate pe subrutine i/sau
secvene de program, recunoscute prin Etichete.
Ultima linie de program trebuie s fie directiva END.
Comentariile (necesare pentru o mai bun nelegere a liniilor de program) se vor
face numai dup separatorul ; .

111
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Subrutina
BUTTON PRESS

Nu Da DEBOUNCE_1
DEBOUNCE_2
STATE_DEBOUNCE=0?
Nu Da Da Nu
GP3=1? GP3=0?

Resetare STATE_DERBOUNCE Increment STATE_DEBOUNCE

TEMP
Iniializarea registrelor
COUNT H, COUNT L

Da Nu
TEMP=10ms?

Nu Da
STATE_DEBOUNCE=0?

RETURN

Figura B.3. Organigrama programului de realizare a subrutinei Button_Press

Precizri necesare
La elaborarea programului n limbaj de asamblare, conform organigramei
automatului, se vor avea n vedere urmtoarele detalii:
Pentru contorizarea strilor automatului se va defini un registru,
STATE_COUNTER, cu directiva CBLOCK, al crui coninut va fi actualizat n
modulul software a strii precedente;
Selectarea modulului de program propriu unei stri se face prin incrementarea
registrului PCL (PCLOW). Dup executarea secvenei de incrementare, n
program se introduce o list cu instruciuni goto (computed goto) care conduce
execuia programului ctre una din cele 6 stri ale automatului.
Temporizarea de 10 ms se va obine cu un program bucl de ntrziere n care
pentru contorizarea ciclilor main se vor defini dou registre: CountH i CountL.
Ieirea din subrutina Button_Press se va executa numai dup apsarea butonului
SW1, urmnd unei stri de relaxare, iar pentru memorarea strii curente a lui
SW1 se va defini un registru special, STATE_BEBOUNCE.
La citirea lui SW1, starea de apsare nseamn 0 logic, iar cea de relaxare este 1
logic, conform cablrii de pe kit.
Pentru semnalizri se vor utiliza LED-urile D6 i D7 a cror comand se face cu
semnalele de pe pinii GP1 i GP2, astfel: GP1=0 , GP2=1 pentru D6_ON i
GP1=1, GP2=0 pentru D7_ON.

112
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Editarea fiierului surs


Scrierea fiierului surs se face cu editorul propriu al mediului de programare
MPLAB. Pentru aceasta se selecteaz File New.
n spaiul de lucru (workspace) se va deschide o fereastr de editare n care se scrie
sau se copiaz fiierul surs al aplicaiei. Pentru miniproiectul din acest tutorial, programul
surs, conform organigramei elaborate n etapa precedent, este urmtorul:
;Program de implementare a automatului finit TUTORIAL
;
;Automatul are 6 stri
; STATE0
; = stinge orice LED aprins
; = citete Inputa1
; - dac este 0, seteaz STATE0
; - dac este 1, seteaz STATE1
; STATE1
; = citete Inputb1
; - dac este 0, seteaz STATE1
; - dac este 1, seteaz STATE2
; STATE2
; = citete Inputb1
; - dac este 1, seteaz STATE5 (ERR)
; - dac este 0, citete Inputa1
; - dac este 0, seteaz STATE3
; - dac este 1, seteaz STATE2
; STATE3
; = citete Inputb1
; - dac este 0, seteaz STATE4
; - dac este 1, seteaz STATE3
; STATE4 OK
; = aprinde LED D6, seteaz STATE0
; STATE5 ERR
; = aprinde LED7 (ERR), seteaz STATE0
;
;Inputa1 i Inputb1 sunt dou microswitch-uri externe, care se vor lega la GP4, respectiv GP5,
; iar SW1, legat la GP3, va determina prin apsare intrarea n starea urmtoare
;Cablarea celor trei comutatoare se realizeaz astfel nct prin apsarea lor s genereze 0 logic
; pe pinul microcontrolerului iar relaxarea lor s genereze 1 logic
;
list p=12f675 ;Directiva de definire a procesorului
#include <p12f675.inc>
errorlevel -302 ;Elimin mesajul de tip 302 din fiierul list
;
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF &
_PWRTE_ON & _INTRC_OSC_NOCLKOUT
;
;Directiva '__CONFIG' pentru configurarea perifericelor n fiierul surs
; Semnificaia biilor de configurare:
; CP_OFF - Cod Protection
; WDT_OFF - WatchDog Timer
; BODEN_ON - Brown-Out Detect ENable
; PWRTE_ON - PoWeR-up Timer Enable
; INTRC_OSC_NOCLKOUT - INTernal RC_OSCilator
; MCLRE_OFF - Master CLeaR Enable
; CPD_OFF - Data Code Protection
; Adresele acestor bii se gsesc n fiierul p12f675.inc
;

113
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

;Definirea unor registre specifice aplicaiei cu directiva CBLOCK


cblock 0x20
STATE_COUNTER ;Registru de numrare a strilor automatului
STATE_DEBOUNCE ;Registru de numrare a strilor debounce
CountH
CountL ;CountH si CountL sunt registre utilizate n subrutina DEBOUNCE
endc
;
;Definirea variabilelor de program pentru comanda LED-urilor D6 si D7 cu directiva DEFINE
#define TRIS_D6_D7 B'00111001' ;Definirea variabilei TRIS_D6_D7 prin valoarea ei binara
#define D6_ON B'00000100' ;Atribuirea valorii binare variabilei D6_ON (LED-OK aprins)
#define D7_ON B'00000010' ;La fel pentru D7_ON (LED-ERR)
;
;Initialize: secvena de iniializare a SFR-urilor i a registrelor de uz general
org 0x005 ;Adresa de Start a memoriei program
Initialize
; call 0x3FF ;Restabilirea factorului de calibrare
; instruciune comentariu necesar n cazul utilizrii simulatorului
bsf STATUS,RP0 ;Selectare Bank 1
movwf OSCCAL ;ncrcarea registrului OSCCAL cu valoarea factorului de calibrare
movlw 0x7f
movwf OPTION_REG ;Validare Weak pull-up general
movlw B'00111111'
movwf TRISIO ;Configurarea pinilor I/O ca intrri
movwf WPU
clrf ANSEL ;Dezactivare convertor A/D - setare intrri/ieiri digitale
bcf STATUS,RP0 ;Selectare Bank 0
clrf GPIO
movlw B'00000111'
movwf CMCON ;Dezactivare comparator - setare intrri/ieiri digitale
clrf STATE_COUNTER ;Resetare registru numrtor de stare
clrf STATE_DEBOUNCE
clrf CountH
clrf CountL
;
;State_Machine: Implementeaz un automat finit cu 6 stri
State_Machine
call Button_Press ;Apelare de subrutin
movf STATE_COUNTER,w
andlw B'00000111' ;Se mascheaz ultimii trei bii din STATE_COUNTER
addwf PCL, f ;Program Counter (PCL) este ncrcat cu adresa stii curente
; prin intermediul acumulatorului (WORKREGISTER)
goto State0
goto State1
goto State2
goto State3
goto State4
goto State5
;
State0
;Stinge LED-uri i execut citire Inputa1
;Seteaz trecerea la starea urmtoare (State1) dac Inputa1 = 1 sau rmne n State0 dac este 0
bsf STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf STATUS,RP0
btfss GPIO,4 ;Citete Inputa1 i sare instruciunea urmtoare dac Inputa1=1
goto State_Machine
incf STATE_COUNTER,f ;Seteaz State1
goto State_Machine

114
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

;
State1
;Execut citire Inputb1
;Seteaz trecerea la starea urmtoare dac Inputb1 = 1, sau rmne n STATE1 dac este 0
bsf STATUS,RP0
movlw b'00111111'
movwf TRISIO ;Configurarea pinilor I/O ca intrri
bcf STATUS,RP0
btfss GPIO,5 ;citete Inputb1
goto State_Machine
incf STATE_COUNTER,f ;Seteaz State2
goto State_Machine
;
State2
;Execut citire Inputa1, Inputb1.
;Seteaz State3 dac Inputa1 = 0 i Inputb1 = 0, rmne n State2 pentru Inputa1 = 1 i Inputb1 = 0
;Seteaz STATE5 (ERR) pentru alte valori
bsf STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf STATUS,RP0
movlw 0x5
movwf STATE_COUNTER ;Preseteaz State5 (ERR)
btfsc GPIO,5 ;Citete Inputb1
goto State_Machine
btfsc GPIO,4 ;Citete Inputa1
goto Interm
movlw 0x2
subwf STATE_COUNTER,f ;Seteaz State3
goto State_Machine
Interm
movlw 0x2
movwf STATE_COUNTER
goto State_Machine
;
State3
;Execut citire Inputb1
;Seteaz trecerea la starea urmtoare (OK) dac Inputb1 = 0 sau rmne n State3 dac este 1
bsf STATUS,RP0
movlw b'00111111'
movwf TRISIO ;ncarc valoarea binar din instruciunea precedent n TRISIO
bcf STATUS,RP0
movlw 0x4
movwf STATE_COUNTER ;Preseteaz State4 (OK)
btfss GPIO,5 ;Citete Inputb1
goto State_Machine
decf STATE_COUNTER,f ;Seteaz State3
goto State_Machine
;
State4
;Stare OK: aprinde LED6 i seteaz State0
bsf STATUS, RP0 ;Selectare Bank 1
movlw TRIS_D6_D7
movwf TRISIO ;ncarc valoarea binar definit pentru TRIS_D6_D7 n TRISIO
bcf STATUS, RP0 ;Selectare Bank 0
movlw D6_ON
movwf GPIO ;ncarc valoarea definit pentru D6_ON n GPIO
clrf STATE_COUNTER
goto State_Machine

115
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

;
State5
;Stare ERR: aprinde LED7 i seteaz State0
bsf STATUS, RP0 ;Bank 1
movlw TRIS_D6_D7
movwf TRISIO ;ncarc valoarea definit pentru TRIS_D6_D7 n TRISIO
bcf STATUS, RP0 ;Bank 0
movlw D7_ON
movwf GPIO ;ncarc valoarea definit pentru D7_ON n GPIO
clrf STATE_COUNTER
goto State_Machine
;
;Button_Press: testeaz starea microswitch-ului (SW), execut temporizarea de 10 ms
; la schimbarea strii i se ntoarce n programul principal la sesizarea strii de apsare a lui
;
Button_Press
btfss STATE_DEBOUNCE,0
goto Debounce_1
goto Debounce_2
Debounce_1
bcf STATUS,RP0
btfsc GPIO,3 ;SW este apsat?
goto Debounce_1 ;Nu, salt la Debounce_1
incf STATE_DEBOUNCE, f ;Da, incrementeaz STATE_DEBOUNCE
;
Temp
movlw 0x21 ;ncepe iniializarea registrelor folosite pentru temporizare
movwf CountH ;Se ncarc registrul CountH cu constanta 33D
M1
movlw 0x63
movwf CountL ;Se ncarc registrul CountL cu constanta 99D
M2
decfsz CountL,f ;Se execut decrementarea registrului CountL
;Cnd coninutul acestuia ajunge la 00H,
; se sare instruciunea urmtoare (goto M2)
goto M2 ;Dac coninutul lui CountL este diferit de 0,
; se execut salt la M2
decfsz CountH,f ;Decrementare CountH
; pn cnd coninutul acestui registru este 00H
; situaie n care se sare instruciunea urmtoare (goto M1)
goto M1
;Temporizarea obinut cu aceast secven de program este
; Temp = 2 + 33*(5+3*99) us
btfss STATE_DEBOUNCE,0
goto Button_Press
retlw 0 ;ntoarce n programul principal cu coninutul acumulatorului egal 0
Debounce_2
bcf STATUS,RP0
btfss GPIO,3 ;SW este relaxat?
goto Debounce_2 ;Nu, salt la Debounce_2
clrf STATE_DEBOUNCE ;Da, reseteaz registrul STATE_DEBOUNCE
goto Temp
end ;directiva 'end' a programului

Salvarea fiierului surs


Se salveaz n folderul de proiect, n exemplul nostru Tut_minipr cu nume.asm (de
exemplu Tut1.asm).

116
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

2.2. CONSTRUIREA PROIECTULUI


Pentru construirea proiectului se parcurg etapele deja cunoscute de creare a unui nou
proiect, cu includerea fiierului surs editat anterior, dup care se d comanda de construire
a proiectului, Build all.
n cazul n care n aceast faz au aprut erori, se depisteaz cauza erorii, se
corecteaz i se reconstruiete proiectul.

2.3. RULAREA PROGRAMULUI PE KIT


Aceast etap se realizeaz utiliznd programul de interfa PICkit 1 FLASH Starter
Kit pentru gestionarea resurselor hardware ale kitului cu microcontroller. Reamintim c
fereastra de lucru a programului care se va deschide la lansarea lui n execuie are aspectul
din figura B.4.

Figura B.4. Fereastra de lucru a prograului

Paii care trebuie urmai pentru ncrcarea, rularea i testarea programului


automatului finit sunt descrii n continuare:

Pasul 1 Se vor executa urmtoarele operaii pregtitoare:


Se conecteaz kit-ul cu training board-ul prin cablu special construit.
Semnificaia fiecrui fir de conexiune este dat de culoare:
Gri masa; Mov +5V; Albastru GP2; verde GP1
Galben GP0; Portocaliu GP3; Rou GP4; Maron GP5.

117
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Se cableaz intrrile a i b la pinii GP4, respectiv GP5, conform cu shema din figura
B.5.
Aa cum se vede din figur, butonul relaxat (are contact normal nchis ntre 1 i 3,
respectiv 2 i 4) va genera semnal 1 logic pe intrarea GP4 sau GP5 a microcontroller-
ului, prin legarea terminalelor 3, respectiv 4 la +5V prin rezistena de 51 K. n
starea buton apsat (se face contact ntre 1 i 5, respectiv 2 i 6) va genera 0 logic
prin legarea la mas a terminalelor 5 respectiv 6.
Se conecteaz prin cablu USB kit-ul cu calculatorul gazd.

c.n.d
5 1 3 c.n.
51K
6 2 4
+5V
510
GP4(5)

Figura B.5. Schem de cablare a unui microswitch Inputa1/Inputb1

Pasul 2 Se ncarc fiierul direct executabil (cu extensie .HEX) creat n MPLAB, n
programul PICkit 1 Flash Starter Kit. Aceast operaie se execut cu comanda File
Import HEX.

Pasul 3 Se scrie programul n PIC-ul din soclul de pe kit, cu comanda Write Device
din meniul Programmer sau cu butonul Write Devices.
Aciunea acestei comenzi este urmtoarea:
programul existent n memoria de program a PIC-ului este ters,
este scris n memoria de program a PIC-ului fiierul HEX ncrcat la pasul 1.
Pot aprea dou situaii distincte:
Nu au aprut probleme n timpul scrierii, caz n care Status bar din partea de jos a
ferestrei de lucru va afia Write successful pe fond de culoare verde, situaie n
care se trece la pasul urmtor.
Operaia de scriere a fost executat cu erori, caz n care Status bar va afia pe
fond rou un mesaj de eroare. n aceast situaie, se va cuta sursa erorii, se vor
aplica coreciile care se impun i se repet comanda pn la execuia ei cu succes.
Conform configurrii fcute n programul surs, resetarea microcontroller-ului se
poate face la punerea sub tensiune prin cablu USB a kit-ului sau la activarea butonului
Device Power (din fereastra de interfa a programului PICkit 1 Flash Starter Kit). n
momentul imediat urmtor resetrii, programul din memoria FLASH a PIC-ului va fi lansat
n execuie. Se va executa secvena de iniializare, dup care se ateapt prima apsare a lui
SW1.
Este important de reinut c pentru rularea programelor este necesar ca opiunea
Device Power din zona Board Controls s fie selectat, iar pentru oprirea lor, aceasta
trebuie s fie deselectat.

118
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Reamintim c opiunile Device Power i 2.5kHz Osc din zona Board Controls au
urmtoarele funcii:
Device Power alimenteaz PIC-ul din soclul de evaluare atunci cnd este selectat.
2.5kHz Osc conecteaz un semnal dreptunghiular la pinul 3 al soclului (GP4 pentru
microcontroler), atunci cnd este selectat.

Pasul 4 Verificarea funcionrii corecte a automatului se va face parcurgnd


secvenele de tranziie pentru strile 0, 1, ..., 3 conform cu figura B.1. Pentru trecerea
succesiv a automatului prin cele patru stri, de exemplu, se va proceda astfel:
1. Se las relaxat butonul Intrare a i se apas butonul Intrare b (a = 1, b = 0), dup
care se apas microswitch-ul SW1 (de pe kit). Automatul trece n State1.
2. Se relaxeaz Intrare b (b = 1), dup care se apas SW1. Automatul trece n State2.
3. Se apas Intrare a i Intrare b (a = 0, b = 0), dup care se apas SW1. Automatul
trece n State3.
4. Se ine apsat Intrare b i se apas SW1. Automatul va trece n State1.
5. Se apas din nou SW1, se va aprinde LED-ul D6, indiferent de valorile de pe
Intrare a i Intrarea b. Dac nu se aprinde LED-ul D6, nseamn c fie a aprut o
eroare n funcionare programului, fie exist o eroare hardware.

Pasul 5 Depanarea programului


Dac n funcionarea automatului apar erori, pentru corectarea lor, se va depista mai
nti sursa erorii, dac aceasta este pe suportul hardware sau logica programului este greit.
Aceasta se realizeaz executnd cteva operaii de verificare pe kit, i anume:
Se verific dac coninutul memoriei de program, ncepnd cu adresa de start a
programului, este identic cu fiierul IntelHEX creat de MPLAB. Pentru aceasta, se
apas butonul Verify.
Aciunea acestei comenzi este urmtoarea: se compar toate zonele de memorie
ale microcontrolerului (Program, EEDATA i configurri) cu fiierul IntelHEX
generat de MPLAB.
Dac se potrivesc, mesajul este Verified successfully pe fond de culoare verde.
nseamn c eroarea este datorat altor cauze dect suportului hardware.
Dac apar diferene ntre fiierul InteHEX martor i memoria de program a
PIC-ului, mesajul va fi Verify Failed. Error in program memory afiat pe fond
de culoare roie.
Dac apar erori la verificare, se citete memoria circuitului din soclu de pe kit.
Operaia se execut cu comanda Read Device din meniul Programmer sau cu
butonul Read Device. n urma acestei comenzii, n ferestrele Program Memory i
EEDATA Memory vor fi afiate codurile hexa ale programului, a datelor i a
variabilelor din program.
Se vizualizeaz simultan fiierul IntelHEX i fereastra de memorie program a kit-
ului i se compar valorile corespunztoare din cele dou ferestre. Poate fi
depistat astfel locaia sau locaiile de memorie defecte.

119
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Anexa B

Recomandare: Nu este indicat tergerea memoriei din PIC (cu comanda Erase)
deoarece, n mod normal, tergerea se face la comanda de scriere. Cu att mai mult
este contraindicat comnada Full Erase ntruct aceasta terge i coninutul
registrului OSCCAL i biii de calibrare a pragurilor de tensiune (Bandgap
Calibration Value Bits). Dac n urma acestor verificri nu s-au semnalat erori,
nseamn c exist erori de logic n programul surs i acestea pot fi depistate doar
utiliznd programul Debugger al mediului de programare MPLAB.

120

S-ar putea să vă placă și