guia de mplab (sistemes electrònics) -...
TRANSCRIPT
1. INTRODUCCIÓ – OBJECTIUS
Aquesta guia mostra mitjançant un exemple senzill la utilització del MPLAB 6.6 i
del PROTEUS per a la programació i posterior simulació d’un microcontrolador
integrat en un sistema electrònic.
L’exemple tractat es mostra en la figura 1 i té com objectiu encendre o apagar
un LED en funció de l’estat d’un interruptor. Podeu trobar en el MOODLE
aquest projecte amb el nom “Ejem_PuertosES”.
RA0/AN02
RA1/AN13
RA2/AN2/VREF-4
RA4/T0CKI6
RA5/AN4/SS7
OSC1/CLKIN9
OSC2/CLKOUT10
RC1/T1OSI/CCP212
RC2/CCP113
RC3/SCK/SCL14
RB7/PGD28
RB6/PGC27
RB526
RB4 25RB3/PGM 24
RB223
RB122
RB0/INT21
RC7/RX/DT18
RC6/TX/CK17
RC5/SDO 16RC4/SDI/SDA 15
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI 11
MCLR/Vpp/THV1
U1
PIC16F873
D1LED-RED
R1330
X14Mhz
C1
22pF
C2
22pF
R21k
V2
V2
Figura 1. Sistema electrònic proposat com exemple.
GUIA D’UTILITZACIÓ DEL MPLAB
2. METODOLOGIA
A continuació es descriu les pautes que s’han de seguir per la creació d’un
projecte i la seva simulació tant en MPLAB com en PROTEUS.
2.1. CREACIÓ D’UN PROJECTE EN MPLAB.
Per començar obrirem el programa MPLAB IDE i veurem com apareix una
pantalla amb l’escriptori d’aquest entorn de programació.
La forma més fàcil de crear un projecte és mitjançant el PROJECT WIZARD.
Per executar aquesta aplicació seleccionarem del menú Project>Project Wizard
Aquesta eina ens permet crear un projecte seguint quatre passos.
Primer Pas: Seleccionarem el microcontrolador amb el qual volem fer el
projecte.
Segon Pas: Triem el llenguatge de programació e indiquem on estan els
programes per fer la compilació, el linkat i les libreries. Si la direcció
d’algun d’aquests programes és incorrectes s’indica amb una creu
vermella.
Tercer pas: Indiquem el nom del projecte i la seva ubicació.
Quart pas: Afegim tots els fitxers que són propis del projecte.
Concretament, hauríem d’afegir:
o “16F873.lkr”: Aquest fitxer indica al compilador com està
estructurada la memòria de programa i de dades del
microcontrolador.
o “P16f873.inc”: Aquest fitxer identifica mitjançant directives “EQU”
el nom de cadascun dels registre especials amb las seva direcció
de memòria. D’aquesta forma es facilita la programació i
interpretació del codi per part del programador.
També podem afegir els fitxers amb el codi del programa (.asm o .c ),
llibreries i altres fitxers que hagin de formar part del projecte.
Una cop completats els quatre passos es crearà un arbre amb els diferents
fitxers del projecte. Utilitzant els botons del ratolí podem editar, esborrar i afegir
un nou fitxer.
Seleccionant en el menú File>New crearem un fitxer ASCII on escriurem el
programa ensamblador. Aquest fitxer ho anomenarem “Prueba.asm” i tindrà el
següent text:
; ***************************************************
; PROGRAMA Demostració Ports E/S - VERSIO INICIAL ; uC : PIC16F873
; Tasca : Control pulsador-led ; El microcontrolador ha d'encendre el led
; quan s'activi el pulsador.
; SISTEMES ELECTRÒNICS -EPSC UPC
; ***************************************************
#include <p16f873.inc>
; a). SECCIÓ CODI RESET
ORG 00H
GOTO INICI
ORG 05H
; b). INICIALITZACIÓ - CONFIGURACIÓ
INICI:
BCF STATUS, RP1 ; RP1 <= '0'
BSF STATUS, RP0 ; RP0 <= '1' . Selecció Bank 1
MOVLW B'00000010'
MOVWF TRISB ; Configuració dels pins del PORT B:
; RB1 : Entrada ; RB0, RB2..RB7 : Sortida
BCF STATUS, RP0 ; RP0 <= '0' . Selecció Bank 0
CLRF PORTB ; Els pins configurats com a sortida es posen a '0'
; c). PROGRAMA PRINCIPAL
DESPULSAT:
BCF PORTB,0 ; Port B0 a '0' -> Apaga LED
TORNAR:
BTFSS PORTB,1 ; Salta si el botó està pulsat
GOTO DESPULSAT
BSF PORTB,0 ; Port B0 a '1' -> Encen LED
GOTO TORNAR
END
Un cop gravat el fitxer, ho afegirem al projecte.
Finalment, s’indica el mode de treballar del microcontrolador determinat el seu
registre de configuració. Seleccioneu Configure>Configuration Bits.
Els bits d’aquest registre estan dividits en les següents categories:
Oscillator: Indica quin tipus de rellotge es farà servir.
o RC: Resistor/Capacitor.
o HS: High Speed Crystal Resonator (8-20 MHz).
o XT: Crystal/Resonator (100kHz-4MHz).
o LP: Low Power Crystal (32kHz-200kHz)
Watchdog Timer: Gos guardià. La seva funció és reiniciar el sistema
quan s’ha bloquejat. És un temporitzador que reinicia el sistema quan es
desborda. Mitjançant la instrucció CLRWDT es pot posar a zero
periòdicament en el programa evitant el desbordament.
Power up Timer: Estableix un temps d’espera per estabilitzar la tensió
d’alimentació.
Brown Out Detect: Reinica el sistema quan la tensió d’alimentació cau
per sota de 4V.
Low Voltage Program: Permet la programació del microcontrolador via
ICSP.
Flash Program Write: Impedeix canviar les dades de la memòria de
programa quan no està funcionant en mode de programació.
Data EE Read Protect: Impedeix llegir la memòria de dades
externament.
Code Protect: Impedeix llegir la memòria de programa per evitar còpies.
2.2. SIMULACIÓ EN MPLAB.
Una vegada creat el projecte podem veure el funcionament del programa
mitjançant simulació. Indicarem al MPLAB que utilitzarem l’eina de simulació
MPLAB SIM seleccionant en el menú Debugger>Select Tool>MPLAB SIM.
Degut a la seva incompatibilitat amb qualsevol eina de programació haurem de
seleccionar Programmer>Select Programmer>None.
Compilarem el programa seleccionant Project>Build All en el menú. Si no hi ha
cap error en la compilació es mostrarà una pantalla amb el programa on
s’indica la propera instrucció a executar pel simulador.
En el menú Debugger es troben els modes d’executar les instruccions utilitzant
el simulador. Podem fer una simulació pas a pas utilitzant les opcions Step into
i Step over, execució automàtica mitjançant les opcions Run i Animate, o
reiniciar el microcontrolador mitjançant Reset>Processor Reset.
Podem crear punts de parada polsant dues vegades en el botó esquerre del
ratolí. Aquests punts indicaran al simulador on s’ha d’aturar quan s’executa en
mode automàtic.
2.3. VISUALITZAR LES DADES DE LA MEMÒRIA.
L’objectiu final de qualsevol programa consisteix en modificar el valor de certs
registres de la memòria o dels ports del microcontrolador. Per tant, observarem
el seu comportament a partir de com canvien aquests valors. El MPLAB
disposa en el menú View d’unes eines per visualitzar la memòria de programa i
de dades, els registres especials, la memòria EEPROM i la pila.
Desplegueu cadascuna d’aquestes eines i interpreteu la informació que donen.
A mode d’exemple, veiem com utilitzar l’opció View>Watch per visualitzar el
valor del registre TRISB.
Si polsem amb el botó dret del ratolí sobre aquest registre, opció Properties,
podem canviar el format com es visualitza el seu valor.
Podem veure el valor de qualsevol direcció de la memòria de dades polsant
dues vegades amb el botó esquerre del ratolí sota la columna Address.
Indicarem la direcció del registre en hexadecimal.
2.4. CREACIÓ D’ESTIMULS.
El microcontrolador haurà de canviar el seu comportament segons com siguin
els estímuls del seu entorn. Serà per tant necessari observar el comportament
del programa enfront a diferents estímuls.
Existeix una eina en Debugger>Stimulus Controller per variar les condicions
dels ports d’entrada del microcontrolador, és a dir, per variar les condicions del
seu entorn. Utilitzeu-la per canviar el valor del PORTB1 corresponent a la
connexió amb el polsador del circuit. Observeu el comportament de la
simulació segons com sigui l’estat d’aquest port.
2.5. INTRODUIR EL PROGRAMA EN UNA SIMULACIÓ EN PROTEUS.
Un cop simulat i depurat el programa en el simulador del MPLAB, podem veure
com actua amb la resta del circuit mitjançant PROTEUS.
Per introduir el programa fet amb el MPLAB en la simulació de PROTEUS hem
d’editar el paràmetres de configuració del PIC polsant amb el botó dret del ratolí
un cop seleccionat aquest component. En aquest menú hem de completar els
següents camps:
Program File: Indicarem el nom del fitxer .cof que s’ha generat durant la
compilació del programa en MPLAB.
Processor Clock Frequency: Indicarem la freqüència de treball del
microcontrolador.
Program Configuration Word: Indicarem el valor de la paraula de
configuració. Podem determinar aquest valor a partir del menú
Configure>Configuration Bits en el MPLAB.
A partir del menú Debug podem fer servir les mateixes eines de simulació que
fèiem amb el MPLAB. Observeu que un cop hem fet córrer la simulació i hem
provocat una pausa, podem veure el codi de programa i les dades en qualsevol
direcció de la memòria.