Professional Documents
Culture Documents
Aquel que hace una pregunta puede ser un tonto por cinco minutos, pero aquel que nunca hace una pregunta permanece tonto por siempre Tom J. Connelly
1.1. Objetivo
de un sencillo programa en ensamblador y/o lenguaje C para Se propone la realizacion el microcontrolador PIC16F88 que es el objetivo de estudio de este curso. Se busca aprender a manejar las herramientas software y de desarrollo Proteus ISIS, MPLAB y Hitec PICC, as como completo, que va desde la especicacion del problema, su poner en pr actica el ciclo de diseno simulacion, hasta la puesta en marcha y depuracion del sistema. diseno,
1
1.2. Software
MPLAB 8.20) es la herramienta que proporciona de manera gratuita MPLAB (actualmente la version el fabricante de los microcontroladores que estudiamos y se puede descargar de su p agina web 2 . Esta herramienta permite ensamblar, compilar, depurar, depurar en circuito y grabar nuestros programas en el microcontrolador. Permite el uso de compiladores de otros fabricantes e incluso con el software que vamos a utilizar: Proteus, Hitec PICC. permite una integracion Proteus ISIS (actualmente la version 7.5) asistido por ordenador que Proteus es un programa de diseno y simularlos (tipo SPICE). La ventaja permite dibujar el esquema hardware de nuestros disenos h es que permite una simulacion brida digital/analogica que permite simular tambi en algunos microcontroladores (los m as frecuentemente utilizados) y lo que es m as importante depurar el funcionamiento de nuestras aplicaciones. En esta pr actica pretendemos hacer uso de esta herramienta que se puede adquirir a trav es profesional para principiantes perde la p agina web del Labcenter Microelectronics3 . La version mite simular el microcontrolador 16F877 adem as del 16F84A y del 18F452 por unas 150 libras
1 2
Software
esterlinas (20 % de descuento si el uso es educacional). Permite simular pr acticamente todos los microcontroladores de estas familias de Microchip por un precio algo m as elevado. shareware4 (version 6.9 shareware por 30 libras) que permite simular solaExiste una version mente el microcontrolador PIC16F84A. Hitec PICC Si deseamos escribir nuestros programas utilizando un lenguaje de alto nivel como puede ser C podemos acudir a los multiples fabricantes de software. Se recomienda un compilador de C de 5 la casa HI-TECH ). una version de evaluacion (con presLa p agina WEB del HITECH pone a nuestra disposicion 6 temporal limitadas) . Tambi freeware7 . taciones y duracion en disponemos de una version
http://www.proteuslite.com http://www.htsoft.com/products/picccompiler.php 6 http://www.htsoft.com/downloads/demos.php 7 http://www.htsoft.com/microchip/products/compilers/piccpro-modes.php con algunas fun cionalidades menos (codigo generado menos ecientemente, etc.)
5
; ; ; ; ;
Banco 1 de registros En el 16F88 hay que cambiar tambien RP1 ANSEL = 0, todo patillas digitales ... Modifica TRISA para el sentido Banco 0 de registros
LIST p=16F88 INCLUDE "P16F88.INC" RADIX DEC ERRORLEVEL -302 ORG 0 bsf bcf movlw movwf movlw movwf clrf bcf movfw andlw addlw movwf goto END STATUS,RP0 STATUS,RP1 11111111b TRISA 00000000b TRISB ANSEL STATUS,RP0 PORTA 00011111b 2 PORTB Bucle ; Selecciona Banco 1 ; ; ; ; ; ; ; ; ; ; ; W = 0FFh (Todo entradas) Configuro PORTA W = 00h (Todo salidas) Configuro PORTB ANSEL=0, PORTA digital Selecciono Banco 0 Leo W = PORTA Me quedo con los 5 bits del PORTA W = W + 2 PORTB = W Repito indefinidamente
Bucle
Especicaciones de la pr actica
0
R8 X1
10k
PUNTO B0 B1 B2 B3
U1
16 15 RA7/OSC1/CLKIN RA0/AN0 RA6/OSC2/CLKOUT RA1/AN1 RA2/AN2/CVREF/VREFRA5/MCLR RA3/AN3/C1OUT/VREF+ RA4/AN4/T0CKI/C2OUT RB0/INT/CCP1 RB1/SDI/SDA RB2/SDO/RX/DT RB3/CCP1 RB4/SCK/SCL RB5/SS/TX/CK RB6/AN5/T1OSO/T1CKI RB7/AN6/T1OSI PIC16F88 17 18 1 2 3 6 7 8 9 10 11 12 13
4MHz
0 0 0 0
R1
330
C1
33pF
C2
33pF
Al punto decimal
Para sacar nota de la entrada sacando el complemento del valor Prueba a cambiar el valor de salida en funcion O exclusiva? de entrada. Sabr as codicar el valor mediante una operacion El juego de instrucciones en ensamblador del microcontrolador es el siguiente:
TABLE 13-2:
Mnemonic, Operands
ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF BCF BSF BTFSC BTFSS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW
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 f, b f, b f, b f, b k k k k k k k k k
C,DC,Z Z Z Z Z Z Z Z Z
C C C,DC,Z Z
BIT-ORIENTED FILE REGISTER OPERATIONS 01 01 01 01 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff C,DC,Z Z TO,PD Z
LITERAL AND CONTROL OPERATIONS 11 11 10 00 10 11 11 00 11 00 00 11 11 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 110x 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
TO,PD C,DC,Z Z
Inicialmente debemos crear un proyecto vac o (FileNew) o abrir uno ya existente (FileOpen). y que son: Se distinguen varias partes en la ventana de la aplicacion la barra de herramientas en la parte superior, debajo de los menus, una barra de estado que en realidad nos permitir a modicar geom etricamente los compo nentes, y que adem as permitir a mediante cuatro sencillos botones arrancar la simulacion, pararla, ejecutar un paso, etc. Adem as tenemos otra barra de herramientas en formato vertical que va acompanada de una lista de dispositivos. Por ultimo tenemos la hoja donde vamos a colocar los distintos componentes. vamos a situar el montaje b En un primer diseno asico de un microcontrolador: el PIC16F88. Para ello es necesario seleccionarlo. Con el atajo de teclado P lograremos situar cualquier componente como se ve en la siguiente gura:
Simplemente debemos teclear el nombre o parte del nombre del dispositivo buscado y nos de uno de ellos el esquema gr aparecer a una lista de posibles candidatos y con la seleccion aco que lo dene. y pulsar Una vez aceptado el componente solo tendremos que seleccionar un lugar con el raton izquierdo para situarlo en la hoja de diseno: el boton
Haremos lo mismo con otros componentes necesarios como el cristal de cuarzo (CRYSTAL).
Para trazar un cable entre dos elementos simplemente aproximaremos el cursor hasta la patilla izquierdo del raton para trazar autom correspondiente y pulsaremos el boton aticamente el cable. Si queremos que el cable recorra una gura determinada, simplemente pulsaremos a lo largo del camino a recorrer y terminaremos con el segundo elemento.
Despu es de haber colocado y conectado otros elementos como los condensadores (CAP), necesitaremos poner algunas tierras (GROUND) y alimentaciones (POWER). Estas se encuentran pulsando en la barra de herramientas vertical el icono relacionado con los terminales.
de estos elementos se hace de la misma manera. Si necesitamos ver ampliada La conexion se puede hacer a trav de la barra de herramientas horizontal o la hoja de diseno es del menu, utilizando los atajos de teclado (teclas F5, F6, F7, F8). Una vez colocados los componentes querremos modicar su valor. Para ello seleccionamos el l con el boton derecho del raton (o haciendo doble click en componente concreto pulsando sobre e con el boton izquierdo. Cuidado por que si pulsamos el valor del componente), y a continuacion derecho eliminaremos el componente. El atajo de teclado U nos ayudar dos veces con el boton aa el componente borrado por error. recuperar (deshacer la ultima operacion)
Despu es de haber modicado los valores como los que aparecen en la gura (resistencias: RES), deberemos indicarle al microcontrolador con qu e frecuencia va a ser simulado.
Colocaremos la frecuencia de reloj coincidente con la del cristal de cuarzo del esquema. Ahora ha llegado el momento de anadir codigo al microcontrolador.
10
SourceAdd/Remove Source Files .. seleccionaremos el listado en Por lo tanto, en el menu ensamblador o C (si se dispone del compilador correspondiente) que queremos colocar en el micro (el programa principal; los dem as cheros estar an incluidos de alguna manera en el chero principal).
11
en este caso seleccionareAl mismo tiempo seleccionaremos la herramienta de compilacion, mos MPASMWIN.
Source aparecer se arrancar Dentro del menu a el chero relacionado. Pulsando esa opcion a un editor para modicar/crear el programa.
12
error de sintaxis aparecer Si todo fue bien y no cometimos ningun a la siguiente ventana indic andonos que todo fue bien. El ensamblador/compilador utilizado es externo al entorno, luego se pueden anadir herramientas de este tipo para programar el microcontrolador en el lenguaje que deseemos.
Finalmente deberemos incluir el codigo compilado en el microcontrolador. Seleccionamos el micro y editamos sus propiedades. En este caso rellenaremos el campo Program File con el chero .HEX generado que tendr a extension Ahora podemos proceder a simular el circuito dando a la tecla PLAY de la barra de estado. Se generar a una lista de nodos, se compilar a todo lo necesario, y se comenzar a la simulacion
13
Nos faltar a anadir algunos elementos m as para ver el funcionamiento de forma m as correcta (LOGICSTATE). Para depurar el programa no tenemos m as que pulsar la tecla PAUSE de la barra de estado y podremos ejecutar paso a paso las instrucciones, examinar la memoria, los registros, nuestras Debug. variables, etc. Todo esto se selecciona en el menu
Al tiempo que se ejecutan paso a paso las instrucciones, el esquema se actualizar a encendiendo y apagando los LEDs conectados, funcionando los instrumentos virtuales colocados, los displays, etc.
14
Al crear o anadir el chero fuente en C, hay que indicar en el campo Flags con el valor --chip=16F88 que depender a del microcontrolador para el que se compile el codigo.
Cap tulo 1. Pr actica: Proteus, MPLab y Hitec PICC el listado: Crearemos un nuevo chero fuente segun
1 2 3 4 5 6 7 8 9 10 11 12
15
#include <pic.h> void main() { TRISA=0xFF; // PORTA TRISB=0x00; // PORTB ANSEL=0X00; // PORTA while(1) // Bucle { PORTB = (PORTA&0x1F) } }
y le asignaremos como compilador el que acabamos de denir. Para compilar lo haremos de la forma habitual. Si da un error gen erico y no aparece en el directorio de trabajo el chero p0.c.error el problema es que ha habido un error al ejecutar el comando y por tanto habr a que revisar la linea introducida en el campo Command Line:. %1 -O %2 -E %1.error -G --ASMLIST --DEBUGGER=pickit2 --OPT=all El chero a incluir en el microcontrolador ser a, si se desea, el *.hex que ser a el empleado des en lenguaje C se deber de el programa grabador (ICProg), pero si se requiere la depuracion a emplear el chero *.cof. Con esto estaremos preparados para depurar nuestras aplicaciones escritas en C con Proteustm . Si se incluye en el microcontrolador el chero *.cod se ver a a la vez el codigo C y el ensam se har blador generado aunque la depuracion a a nivel ensamblador.
16
2.1. Objetivo
Para poder trabajar con el microcontrolador PIC16F84A/PIC16F88 y con los procesadores de digitales dsPIC (segunda parte de la asignatura) necesitamos construirnos un programador. senal se realiza en formato serie a trav El mecanismo de programacion es de cinco l neas: VCC, /M de datos RB7 y la senal de reloj RB6. El micro permite la programacion CLR(VPP), tierra, la senal 2 en circuito (ICSP: In Circuit Serial Programming ).
1
Bill Of Materials ================= QTY PART-REFS --- --------Resistors (1/4 W) --------2 R1,R2 4 R3,R7,R8,R13 1 R4 1 R5 2 R6,R15 3 R9,R11,R14 1 R10 1 R12 Capacitors ---------1 C1 1 C2 2 C3,C4 Integrated Circuits ------------------1 2
VALUE -----
PACKAGE -------
de 2 de marzo de 2009 Version Ver documento: In-Circuit Serial Programming for PIC16F8X FLASH MCUs
17
18
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Esquema b asico
U1 U2 7805 74HC14 TO-220 DIL14
1 1
Transistors ----------4 Q1-Q3,Q5 1 Q4 Diodes -----1 D1 1 D2 1 D3 Connectors ---------1 J1 1 J3 2 J4,J5 Miscelaneous -----------1 1 1 1
BC547 BD136
TO92-100 TO126
Conector DB25 Macho para PCB D-25-M-R Borna 2 vias atornillable para PCB 5 mm p` tch RJ45 hembra para PCB acodado RJ45-90
Latiguillo RJ45-RJ45 1m largo (cable de red) Z ocalo 14 pines DIP14 Z ocalo 18 pines DIP18 Tira de pines macho (100th pitch)
Esquema el ectrico El esquema del programador a realizar emplea tan solo unos pocos componentes. Este programador es conocido como SETI-Prog y su esquema de conexionado se muestra en la gura:
J3
1 2 1N4007 TBLOCK-I2
D1 R5
680R
R1
10k
Q1
BC547
Q4
BD136
J5
C P S
C P S
R6
D3
R3
4.7k
Q3
BC547
Vpp
330R V+5
R9 Q2
1k
COAX_POWER
U1
7805 1 VI GND VO 3
R10
12k
C1
100pF
R15
330R
C2
330nF
C3
100nF
R4
2.2k
BC547
R2
10k
D2
R7
4.7k
Q5
BC547
R8
4.7k
D3
LED
D0
R11
1k
U2:A
1 74HC14 2
D2
OA91
J1
1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 CONN-D25M D0 D1 D2 D3 D4 D5 D6 D1 ACK
R13
4.7k DAT
J2
1 2 3 4 5 CONN-SIL5 Vpp V+5 DAT CLK
J4
1 2 3 4 5 6 7 8 RJ45
R12
100R
U2:B
4 74HC14 3
R14
1k
U2:C
5 74HC14 6 CLK
ACK BUSY
C4
100nF
Cap tulo 2. Pr actica: Programador para los Microcontroladores PIC Montaje La placa de circuito impreso queda como sigue: Cara de soldadura
19
Cara de componentes
Despu es de un proceso de engrosado de pistas obtenemos la siguiente cara de soldadura: Cara de soldadura engrosada para su uso con la m aquina fresadora CNC
20
Software
2.3. Software
el Para utilizar y vericar el programador necesitaremos el programa WinPIC800 (v3.61)3 o 4 programa WinPIC del ProPIC2 como SETI-Prog y se modicar En WinPIC800 salvaremos la conguracion a como sigue:
ser Con el software WinPIC la conguracion a la siguiente: DataIn=!bsy VppOnOff=!D3 VddOnOff=D2 ClockOut=!D1 DataOut=!D0.
2.3.1. Nota
de la palabra de Al comienzo del programa ensamblador ser a necesario anadir la denicion del microcontrolador para evitarnos tener que denirlo con el software que vamos conguracion a emplear:
1 2
; Para el PIC16F84A __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON ;Para el PIC16F88 ;Program Configuration Register 1 (Ojo: todo escrito en la misma linea!) __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC ;Program Configuration Register 2 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
1 2 3 4 5 6 7 8
Que nos indicara que no est a protegido, que el perro guardi an est a desactivado, que seleccionamos el modo XT para el oscilador, y que el temporizador de arranque est a desactivado (activo en baja)5 . Si el programa est a escrito en lenguaje C, entonces:
1
__CONFIG(WDTDIS & XT & UNPROTECT & PWRTDIS); // PIC16F84A __CONFIG(WDTDIS & XT & UNPROTECT & PWRTDIS & CCPRB0 & DEBUGDIS & LVPDIS & BORDIS & MCLREN & FCMDIS & IESODIS); // PIC16F88
1 2 3
En algunos casos Proteus no har a caso de esto y ser a necesario comprobar mediante el Simulation es la correcta. log que la palabra de conguracion
3 4