Microcontroladores PIC Diseño Practico de Aplicaciones
Microcontroladores PIC Diseño Practico de Aplicaciones
Microcontroladores PIC Diseño Practico de Aplicaciones
MADRID BUENOS AIRES CARACAS GUATEMALA QUILPU MXICO ARAUCO PANAM SAN JUAN SANTAF DE BOGOT SANTIAGO SO PAULO AUCKLAND HAMBURGO LONDRES MILN MONTREAL VALPARASO PARS SAN FRANCISCO SIDNEY SINGAPUR ST. LOUIS TOKIO TEMUCO
El software contenido en el CD destinado a la edicin, ensamblage, simulacin y depuracin de programas son propiedad de sus respectivos fabricantes: Microchip Technology Inc., Parallax Inc. e Ingeniera de Microsistemas Programados S.L. El simulador SIM2000 es propiedad de los autores.
MICROCONTROLADORES PIC. Diseo prctico de aplicaciones. Primera parte: El PIC16F84. Lenguajes PBASIC y Ensamblador. Tercera edicin No est permitida la reproduccin total o parcial de este libro, ni su tratamiento informtico, ni la transmisin de ninguna forma o por cualquier medio, ya sea electrnico, mecnico, por fotocopia, por registro u otros mtodos, sin el permiso previo y por escrito de los titulares del Copyright. DERECHOS RESERVADOS 2003, respecto a la tercera edicin en espaol, por McGRAW-HILL/INTERAMERICANA DE ESPAA, S. A. U. Edificio Valrealty, 1. planta Basauri, 17 28023 Aravaca (Madrid) ISBN: 84-481-3788-4 Depsito legal: M. 16.641-2003 Editora: Concepcin Fernndez Madrid Asistente Editorial: Susana Santos Prieto Diseo de cubierta: Design Master DIMA Compuesto en: FER Fotocomposicin, S. A. I mpreso en: EDIGRAFOS, S. A. I MPRESO EN ESPAA - PRINTED IN SPAIN
Prlogo .............................................................. XIII Captulo 1. 1.1. 1.2. MICROCONTROLADORES PROGRAMABLES: LA SOLUCIN EST EN UN CHIP ........................................
1 1 3 5 5 6 8 8 8 9 9 15 15 16 17 17 19 20 21 23 27 27 28 v
1.3. 1.4.
Qu es un microcontrolador? .................................... 1.1.1. Diferencia entre microprocesador y microcontrolador ........... Arquitectura interna .................... . ........... . .... . ...... 1.2.1. El procesador ........................................... 1.2.2. Memoria de programa .... . . .............................. 1.2.3. Memoria de datos ........................................ 1.2.4. Lneas de E/S para los controladores de perifricos . ............ 1.2.5. Recursos auxiliares ...................................... Programacin de los microcontroladores ............................ Instrumental de trabajo .......................................... MICROCONTROLADORES DE 8 BITS: LOS PIC ...........
2.3.
La eleccin ................................................... La familia de los PIC ..... . ... . ....... . .............. . .......... 2.2.1. Gama baja o bsica: PIC 16C5X con instrucciones de 12 bits ...... 2.2.2. Gama media: PIC16CXXX con instrucciones de 14 bits ......... 2.2.3. Gama alta: PIC17CXXX con instrucciones de 16 bits ........... 2.2.4. Gama mejorada: PIC18CFXXX con instrucciones de 16 bits ...... 2.2.5. Los enanos de 8 patitas ................................... Descripcin general y aplicaciones ................................ LOS SELLOS MGICOS DE PARALLAX ................. . . .
vi
CONTENIDO
El microcontrolador es el cerebro del sistema ........................ La memoria EEPROM. Presentacin del bus I2C ..................... Seccin de la entrada/salida serie del PC ............................ Seccin del regulador de tensin .................................. Seccin de las lneas de E/S para informacin con el mundo exterior ...... PBASIC: EL LENGUAJE MS FCIL DEL MUNDO ...........
32 35 38 39 39 43 43 43 44 46 49 52 56 56 57 57 57 58 58 59 60 60 60 61 61 61 61 63 63 63 63 64 65 65 65 67 67 68 70 70 71 73
4.6.
4.7.
BASIC: el lenguaje ms fcil del mundo .................. . ......... 4.1.1. Ventajas e inconvenientes .................................. 4.1.2. Los lenguajes usados pra microcontroladores .................. El editor Stamp ....... . ........................................ El repertorio de instrucciones PBASIC ............................. El primer programa ............................... . ............. Prctica 1: Manejando luz y sonido ................................ 4.5.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2. Fundamentos tericos bsicos e instrucciones empleadas ......... 4.5.3. Esquema electrnico ..................................... 4.5.4. Materiales necesarios ..................................... 4.5.5. Montaje prctico ........................ . ............... 4.5.6. Desarrollo de la prctica y ejecucin del programa .............. 4.5.7. Trabajo personal ......................................... Prctica 2: Control de un semforo sonoro ........................... 4.6.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2. Fundamentos tericos bsicos e instrucciones empleadas ......... 4.6.3. Esquema electrnico ..................................... 4.6.4. Materiales necesarios ..................................... 4.6.5. Montaje prctico ........................................ 4.6.6. Desarrollo de la prctica y ejecucin del programa .............. 4.6.7. Trabajo personal ......................................... Prctica 3: Contador binario de 8 bits con alarma ..................... 4.7.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.2. Fundamentos tericos bsicos e instrucciones empleadas ......... 4.7.3. Esquema electrnico ..................................... 4.7.4. Materiales necesarios ..................................... 4.7.5. Montaje prctico ........................................ 4.7.6. Desarrollo de la prctica y ejecucin del programa .............. EL PRIMER CONTACTO CON EL PIC16F84 .................
Pequeo, pobre, pero resultn .................................... 5.1.1. Variantes del PIC 16X8X .................................. 5.1.2. Diferencias entre los modelos PIC 16X8X . . ................... El aspecto externo ....................... . ...................... La frecuencia de funcionamiento. El reloj .... . ...................... 5.3.1. Tipos de osciladores ......................................
CONTENIDO vii
Reinicializacin o Reset ........................................ . El primer circuito prctico ....................................... Una solucin al diseo de proyectos: la tarjeta de prototipos ............ EN EL INTERIOR DEL PROCESADOR ......................
75 75 77 81 81 84 85 85 86 89 91 93
Captulo 6. 6.1.
Una arquitectura moderna y revolucionaria .......................... 6.1.1. Diferencias de la arquitectura del PIC16C84 con la de sus variantes. 6.2. Memoria de programa ............................ . ............. 6.2.1. El Contador de Programa y la Pila ........................... 6.3. Memoria de datos RAM ... . .................................... . 6.3.1. Memoria de datos RAM en el PIC16F84 y el PIC16CR84 ........ 6.3.2. Direccionamiento de la memoria de datos ..................... 6.4. El registro de ESTADO ......................................... Captulo 7. 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. LOS RECURSOS FUNDAMENTALES: TEMPORIZADORES, PUERTAS DE EIS Y EEPROM DE DATOS ....................
95 95 95 98 99 1 01 1 02 1 04 1 04 106 1 06 111 111 112 1 12 116 117 118 118 119 1 21 123 1 23
El papel de los temporizadores .................................... Temporizador/contador TMRO .................................... 7.2.1. El registro OPTION ...................................... El Perro Guardin (WDT) .......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Las puertas de E/S ............................................. 7.4.1. La Puerta A ............................... . . . . . . . . . . . . . 7.4.2. La Puerta B ............................................. La Palabra de Configuracin .......................... . . . . . . . . . . . 7.5.1. Palabras de Identificacin (ID) ............................. La memoria EEPROM de datos ................................... INTERRUPCIONES, RESET Y RECURSOS AUXILIARES ......
Importancia de las interrupciones .................................. Causas de interrupcin .......................................... 8.2.1. El Registro de Control de Interrupciones INTCON .............. 8.2.2. Interrupcin externa INT .................................. 8.2.3. Interrupcin por desbordamiento del TMRO .............. . .... 8.2.4. Interrupcin por cambio de estado en las lneas RB4 : RB7 de la Puerta B ............................................... 8.2.5. Interrupcin por finalizacin de escritura en la EEPROM de datos .. Reinicializacin o Reset ......................................... 8.3.1. Reset por fallo en la alimentacin (Brown Out) .............. El modo de Reposo o de bajo consumo ............................. Programacin en serie de los PIC16X8X ............................
viii
CONTENIDO
125 125 126 127 128 129 129 1 29 1 30 1 32 133 1 34 135 136 139 1 39 1 41 142 1 42 1 42 143 143 144 145 1 45 146 1 51 1 53 155 155 159 1 59 159 1 68 174 181 1 85 193 193
Repertorio RISC . ............... . ...... . ....... . ....... . ....... Tipos de formato ...................................... . ........ 9.2.1. Operaciones orientadas a manejar registros de tamao byte .... . . . 9.2.2. Operaciones orientadas a manejar bits ........................ 9.2.3. Operaciones que manejan un valor inmediato o literal ........... 9.2.4. Operaciones incondicionales de control de flujo del programa ..... 9.2.5. Operaciones de salto condicional ............................ Precisiones sobre nomenclatura y smbolos .......................... Instrucciones que manejan registros ................................ Instrucciones que manejan bits .................. . ................. Instrucciones de brinco (skip) ..................................... Instrucciones que manejan operandos inmediatos ..................... Instrucciones de control y especiales ............................... HERRAMIENTAS Y DISEO DE PROYECTOS ..............
Fases de diseo ................................................ Herramientas accesibles ......................................... 1 0.2.1. La cabeza ..................................... . ....... 1 0.2.2. Editor de textos ........................................ 10.2.3. Ensamblador o Compilador ............................... 10.2.4. Simulador software ..................................... 10.2.5. El grabador............................................ 10.2.6. Sistema de desarrollo .................................... 10.2.7. Tarjeta de prototipos ..................................... Emulador en circuito ................ . ........... . . ............. Introduccin al diseo de proyectos: puesta en hora ....... . ........... Un dado electrnico ............................................ Semforo regulable ............................................. Presentador de mensajes ......................... . ......... . ..... Clave de acceso ................................................ EJERCICIOS DE PROGRAMACIN EN ENSAMBLADOR ....
Captulo 11. 11.1. 11.2. 11.3. 11.4. 11.5. 11.6. 11.7. 11.8.
Introduccin .................................................. El primer programa: Aprendiendo a sumar .......................... El segundo programa de calentamiento: Explorando interruptores y encendiendo luces .................................................. El tercer programa con diseo hardware ............................ El cuarto programa: Contando y visualizando ...... . . ........ . . ...... El quinto programa de aprendizaje: Controlando el tiempo .............. Las interrupciones .............................................. El sexto ejercicio prctico: Manejando interrupciones ..................
CONTENIDO i
11.9.
Sptimo ejercicio: Programas con un poco de todo, manejando el registro de trabajo W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LOS PRIMEROS DISEOS PRCTICOS ....................
199 207 207 207 207 208 210 213 214 214 214 215 215 216 216 216 217 217 217 218 218 219 219 219 219 219 220 221 221 221 222 222 223 223 223 223 224 224 224 226 226 226 226
12.3.
1 2.4.
12.5.
1 2.6.
1 2.7.
Presentacin ................................................. PRCTICO 0: Herramientas de desarrollo ......................... 12.2.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2. Herramientas hardware ................................. 12.2.3. Herramientas software ................................. . 12.2.4. Tutoria l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRCTICA l: Sencillo ejemplo de manejo de la E/S .......... . ..... . 12.3.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3.2. Fundamentos tericos bsicos . ........................... 1 2.3.3. Esquema electrnico ................................... 12.3.4. Materiales necesarios ................................... 12.3.5. Montaje prctico ...... . .................. . ............ 1 2.3.6. Desarrollo de la prctica ................................ 1 2.3.7. Trabajo personal....................................... PRCTICA 2: Control de una lmpara desde dos interruptores ......... 12.4.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4.2. Fundamentos tericos bsicos ............................ 1 2.4.3. Esquema electrnico ................................... 12.4.4. Materiales necesarios ............................... . ... 12.4.5. Montaje prctico .... . ................................. 1 2.4.6. Desarrollo de la prctica ................................ 12.4.7. Trabajo personal ............... . ...... . ............. . . . PRCTICA 3: Ejemplo combinacional .... . ......... . ............. 12.5.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.2. Fundamentos tericos bsicos ............................ 12.5.3. Esquema electrnico ....... . ........................... 12.5.4. Materiales necesarios ................................ . . . 12.5.5. Montaje prctico ...................................... 12.5.6. Desarrollo de la prctica ............................. . . . 12.5.7. Trabajo personal ....................................... PRCTICA 4: Ejemplo secuencial ............................... 1 2.6.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.6.2. Fundamentos tericos bsicos ............................ 12.6.3. Esquema electrnico ..................... . ............. 1 2.6.4. Materiales necesarios ................................... 12.6.5. Montaje prctico ........... . .... . .................... . 1 2.6.6. Desarrollo de la prctica ................................ 12.6.7. Trabajo personal ....................................... PRCTICA 5: El TMR0, juego de luces .................. . . ....... 12.7.1. Objetivo s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.2. Fundamentos tericos bsicos .................... . .......
CONTENIDO
12.7.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.4. Materiales necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.7.5. Montaje prctico ...................................... 12.7.6. Desarrollo de la prctica ................................ 1 2.7.7. Trabajo personal ....................................... 12.8. PRCTICA 6: Usando el preescaler, otro juego de luces .............. 1 2.8.1. Objetivos ............................................ 12.8.2. Fundamentos tericos bsicos ............................ 12.8.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.8.4. Materiales necesarios .................. . ... . ........ . ... 12.8.5. Montaje prctico ............ . ......................... 12.8.6. Desarrollo de la prctica ...... . ......................... 1 2.8.7. Trabajo personal ....................................... 12.9. PRCTICA 7: Manejando el WDT y el modo SLEEP . . .............. 12.9.1. Objetivos ............................................ 12.9.2. Fundamentos tericos bsicos ............................ 12.9.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1 2.9.4. Materiales necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.9.5. Montaje prctico ...................................... 12.9.6. Desarrollo de la prctica ............................ . ... 12.9.7. Trabajo personal ...................... . ................ 12.10. PRCTICA 8: El TMRO como contador de pulsos externos ............ 1 2.10.1. Objetivos ........................................... 12.10.2. Fundamentos tericos bsicos ................... . ....... 12.10.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.10.4. Materiales necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.10.5. Montaje prctico ........ . ............................ 12.10.6. Desarrollo de la prctica ............................... 12.10.7. Trabajo personal ......... . ............................ 12.11. PRCTICA 9: La interrupcin del TMRO .......................... 12.11.1. Objetivos ........................................... 12.11.2. Fundamentos tericos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.11.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.11.4. Materiales necesarios ............ . ............ . ........ 12.11.5. Montaje prctico ..................................... 12.11.6. Desarrollo de la prctica ............................... 1 2.11.7. Trabajo personal ...................... . ............... 12.12. PRCTICA 10: Ms interrupciones ............................... 12.12.1. Objetivos ........................................... 1 2.12.2. Fundamentos tericos bsicos ........................... 12.12.3. Esquema electrnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.12.4. Materiales necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.12.5. Montaje prctico ..................................... 12.12.6. Desarrollo de la prctica ............................... 1 2.12.7. Trabajo personal ...................................... Apndice A: Gua Rpida del PIC16X84 ................................ ...
227 227 227 227 229 229 229 229 230 230 230 230 232 232 232 232 233 233 233 233 235 235 235 235 235 236 236 236 238 238 238 238 238 239 239 239 240 241 241 241 241 242 242 242 243 245
CONTENIDO
Xi
Apndice B: Gua del usuario del SIM2000 . ............. . ........ . ...... . . Apndice C: Breve descripcin del Micro'PIC Trainer ..... . .... . .......... . . Apndice D: La familia PIC al completo .......... . ........................ Apndice E: Contenido del CD .......... . ............................. ... Apndice F: Proyectos con el PIC16F84 ......... . .............. . .......... Bibliografa y direcciones de inters relacionadas con los PIC ................. ndice................................................................
Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los telfonos y en los hornos microondas y los televisores de nuestro hogar. Pero la invasin acaba de comenzar y los albores del siglo xxi sern testigos de la conquista masiva de estos diminutos computadores, que gobernarn la mayor parte de los aparatos que fabricamos y usamos los humanos. Las extensas reas de aplicacin de los microcontroladores, que se pueden considerar ilimitadas, exigirn un gigantesco trabajo de diseo y fabricacin. Aprender a manejar y aplicar microcontroladores slo se consigue desarrollando prcticamente diseos reales. Sucede lo mismo que con cualquier instrumento musical, cualquier deporte y con muchas actividades. El objetivo primordial que nos ha movido al escribir este libro es facilitar el camino al lector para que se entusiasme y utilice los microcontroladores, por eso est plagado de programas para confeccionar y simular, as como de proyectos reales para manejo de los perifricos tpicos. La filosofa y el mtodo que hemos empleado nos ha dado excelentes resultados en nuestros entornos de trabajo. Un autor es profesor y ensea los microcontroladores en la universidad, y el otro tambin los aplica en los proyectos que dirige en una empresa. Se trata de describir un modelo simple de microcontrolador de manera lo suficientemente clara para que el lector quiera usarlo. Cuando se conoce un modelo y se han desarrollado proyectos sencillos, es inmediato pasar a manejar otros microcontroladores y acometer complejos diseos. En ese momento, las posibilidades slo estn limitadas por la imaginacin y la capacidad de trabajo. Esta obra consta de dos libros. Hemos elegido para ambos una familia de microcontroladores: los PIC de Microchip Technology Inc. Dentro de ella seleccionamos un modelo concreto para la primera parte: el PIC16F84. Las razones que nos han empujado a esta decisin es que este microcontrolador es sencillo, moderno, rpido, barato y en l se pueden escribir los programas y borrarlos montones de veces, dispone de una excelente documentacin y las herramientas de desarrollo son asequibles para todos los bolsillos. Hay millares de aplicaciones realizadas con el PIC 16F84 en todo el mundo. Para dar consistencia a nuestro inters por la experimentacin, el libro incluye un CD que contiene varios tutoriales, un simulador y los programas necesarios para editar, ensamblar, xi
xiv
PRLOGO
depurar y simular todos los ejercicios y proyectos que se proponen en el texto y que se hallan resueltos. Adems, para que el lector no encuentre una barrera en el coste de las herramientas, se han elegido aquellas que por su precio se acomodan a cualquier presupuesto. En esta nueva edicin se ha modificado el contenido y la estructura de los captulos de esta primera parte de iniciacin que es la que tiene entre sus manos. Se ha enfocado preferentemente a estudiar terica y prcticamente al PIC16F84, modelo que ha logrado un xito a nivel mundial. Adems, se ha intentado ofrecer un solo tema en cada captulo y proporcionar programas, diseos y manejo de herramientas una vez presentados los conceptos tericos previos. El libro que conforma la segunda parte de esta obra se destina a los microcontroladores PIC 16F87X, de mayor complejidad, que exigen el uso de herramientas ms avanzadas y se utilizan en aplicaciones mucho ms exigentes. En el Captulo 1 se describen las caractersticas generales del hardware y software que envuelven a los microcontroladores en general y sus aplicaciones. El Captulo 2 se dedica a presentar las gamas de microcontroladores PIC y las razones por las que se les ha elegido en esta obra. Una importante novedad la constituyen los Captulos 3 y 4 que contienen todo el material preciso para conocer, manejar y programar los mdulos de Parallax con el lenguaje PBASIC, el ms fcil del mundo. Consideramos que este acercamiento al diseo con microcontroladores pone en manos de las personas con escasos conocimientos de Electrnica e Informtica un camino sencillo y apropiado. Mediante los mdulos BASIC Stamp se ensea a desarrollar experiencias al alcance de todos. El Captulo 5 toma el primer contacto con el PIC16F84 y presenta los circuitos bsicos que le rodean, destinando el Captulo 6 a la arquitectura interna. En el 7 se describen los recursos fundamentales: temporizadores, puertas de E/S y EEPROM. El Captulo 8 expone el manejo de las interrupciones y de algunos circuitos auxiliares. El repertorio de instrucciones con ejercicios de manejo se analiza en el Captulo 9. En el 10 se muestran las herramientas ms comunes para el uso de microcontroladores y la implementacin de proyectos. El Captulo 11 ensea a programar aplicaciones en Ensamblador de una forma clara y progresiva y el 12 ofrece una coleccin de prcticas reales de carcter didctico que son muy asequibles. Como complemento a los 12 captulos, en la parte final del libro, existen varios apndices muy tiles. El A es una gua rpida del PIC 16X84. El B es una gua para el usuario del simulador software SIM2000 que se incluye en el CD del libro y que ha sido cedido por sus autores, Pablo Martnez y Francisco Jos Hernndez, que lo desarrollaron en la Universidad de Cartagena bajo la direccin del profesor Manuel Snchez. El Apndice C explica las caractersticas y el funcionamiento del sistema de desarrollo Micro'PIC Trainer. El E muestra el contenido del CD que acompaa al libro y el F propone una coleccin de proyectos clsicos con el PIC 16F84 para implementar con componentes muy comunes y econmicos. Finalmente hay una seccin de Bibliografa y de direcciones interesantes para trabajar con PIC y un ndice Alfabtico. Gran parte de la informacin ofrecida en el libro se ha obtenido de las documentaciones tcnicas de Microchip (www.microchip.com), de Parallax (www.parallaxinc.com) y de Ingeniera de Microsistemas Programados, S. L. (www.microcontroladores.com), a quienes agradecemos su colaboracin.
1.1.
QU ES UN MICROCONTROLADOR?
Es un circuito integrado programable que contiene todos los componentes de un computador. Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamao, suele ir incorporado en el propio dispositivo al que gobierna. Esta ltima caracterstica es la que le confiere la denominacin de controlador incrustado (embedded controller). El microcontrolador es un computador dedicado. En su memoria slo reside un programa destinado a gobernar una aplicacin determinada; sus lneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar, y todos los recursos complementarios disponibles tienen como nica finalidad atender sus requerimientos. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada.
Un microcontrolador es un computador completo, aunque de limitadas prestaciones, contenido en el chip de un circuito integrado y se destina a gobernar una sola tarea.
que est
El nmero de productos que funcionan en base a uno o varios microcontroladores aumenta de forma exponencial. No es aventurado pronosticar que en el siglo xxi habr pocos elementos que carezcan de microcontrolador. En esta lnea de prospeccin del futuro, la empresa Dataquest calcula que en cada hogar americano existirn varios centenares de microcontrol adores en los comienzos del tercer milenio. La industria Informtica acapara gran parte de los microcontroladores que se fabrican. Casi todos los perifricos del computador, desde el ratn o el teclado hasta la impresora, son regulados por el programa de un microcontrolador (vase Figura 1.1). Los electrodomsticos de lnea blanca (lavadoras, hornos, lavavajillas, etc.) y de lnea marrn (televisores, vdeos, aparatos musicales, etc.) incorporan numerosos microcontroladores. Igualmente, los sistemas de supervisin, vigilancia y alarma en los edificios utilizan estos chips. Tambin se emplean para optimizar el rendimiento de ascensores, calefaccin, aire acondicionado, alarmas de incendio, robo, etc. 1
Las comunicaciones y sus sistemas de transferencia de informacin utilizan profusamente estos pequeos computadores incorporndolos en los grandes automatismos y en los modernos telfonos. La instrumentacin y la electromedicina son dos campos idneos para la implantacin de estos circuitos integrados. Una importante industria consumidora de microcontroladores es la
de automocin, que los aplica en el control de aspectos tan populares como la climatizacin, la seguridad y los frenos ABS.
Las comunicaciones y los productos de consumo general absorben ms de la mitad de la produccin de microcontroladores. El resto se distribuye entre el sector de la automocin, los computadores y la industria.
1.1.1.
El microprocesador es un circuito integrado que contiene la Unidad Central de Proceso (UCP), tambin llamada procesador, de un computador. La UCP est formada por la Unidad de Control, que interpreta las instrucciones, y el Camino de Datos, que las ejecuta. Las patitas de un microprocesador sacan al exterior las lneas de sus buses de direcciones, datos y control, para permitir conectarle con la Memoria y los Mdulos de E/S y configurar un computador implementado por varios circuitos integrados. Se dice que un microprocesador es un sistema abierto porque su configuracin es variable de acuerdo con la aplicacin a la que se destine (Figura 1.3).
Un microprocesador es un sistema abierto con el que puede construirse un computador con l as caractersticas que se desee, acoplndole los mdulos necesarios. Un microcontrolador es un sistema cerrado que contiene un computador completo y de prestaciones limitadas que no se pueden modificar.
Figura 1.3.
Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses en el exterior- permite que se configure a la medida de la aplicacin.
Figura 1.4.
El microcontrolador en un sistema cerrado. Todas las partes del computador estn contenidas en su interior y slo salen al exterior las lneas que gobiernan los perifricos.
Si slo se dispusiese de un modelo de microcontrolador, ste debera tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciacin supondra en muchos casos un despilfarro. En la prctica cada fabricante de microcontroladores oferta un elevado nmero de modelos diferentes, desde los ms sencillos hasta los ms poderosos. Es posible seleccionar la capacidad de las memorias, el nmero de lneas de E/S, la cantidad y potencia de los elementos auxilares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseo es la seleccin del microcontrolador a utilizar.
EJEMPLO Un horno microondas se gobierna mediante un microcontrolador en el que se almacena el programa de control de 382 instrucciones, cada una de las cuales ocupa una palabra de la memoria de cdigo. Para soportar el teclado y la pantalla LCD se necesitan 12 lneas de EIS. Cul de los tres siguientes microcontroladores ser el ms recomendable utilizar?
SOLUCIN Pat - a esta aplicacin es suficiente el PIC16F83 y su empleo supone una importante economa.
1.2.
ARQUITECTURA INTERNA
Un microcontrolador posee todos los componentes de un computador, pero con unas caractersticas fijas que no pueden alterarse. Las partes principales de un microcontrolador son:
1. 2. 3. 4. Procesador Memoria no voltil para contener el programa Memoria de lectura y escritura para guardar los datos Lneas de EIS para los controladores de perifricos: a) b) c) Comunicacin paralelo Comunicacin serie Diversas puertas de comunicacin (bus
l2C, USB,
etc.)
5. Recursos auxiliares: a) b) c) d) e) f) g) Circuito de reloj Temporizadores Perro Guardn (watchdog) Conversores AD y DA Comparadores analgicos Proteccin ante fallos de la alimentacin Estado de reposo o de bajo consumo
A continuacin se pasa revista a las caractersticas ms representativas de cada uno de los componentes del microcontrolador. 1.2.1. El procesador
La necesidad de conseguir elevados rendimientos en el procesamiento de las instrucciones ha desembocado en el empleo generalizado de procesadores de arquitectura Harvard frente a los tradicionales que seguan la arquitectura de von Neumann. Esta ltima se caracterizaba porque la UCP (Unidad Central de Proceso) se conectaba con una memoria nica, donde coexistan datos e instrucciones, a travs de un sistema de buses (vase Figura 1.5).
Figura 1.5.
En la arquitectura de von Neumann la UCP se comunicaba a travs de un sistema de buses con la Memoria, donde se guardaban las instrucciones y los datos.
En la arquitectura Harvard son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso. Esta dualidad, adems de propiciar el paralelismo, permite la adecuacin del tamao de las palabras y los buses a los requerimientos especficos de las instrucciones y de los datos. Tambin la capacidad de cada memoria es diferente (Figura 1.6).
El procesador de los modernos microcontroladores responde a la arquitectura RISC (Computadores de Juego de Instrucciones Reducido), que se identifica por poseer un repertorio de instrucciones mquina pequeo y simple, de forma que la mayor parte de las instrucciones se ejecuta en un ciclo de instruccin. Otra aportacin frecuente que aumenta el rendimiento del computador es el fomento del paralelismo implcito, que consiste en la segmentacin del procesador (pipe-line), descomponindolo en etapas para poder procesar una instruccin diferente en cada una de ellas y trabajar con varias a la vez.
El alto rendimiento y elevada velocidad que alcanzan l os modernos procesadores, como el que poseen los microcontroladores PIC, se debe a la conjuncin de tres tcnicas: - Arquitectura Harvard - Computador tipo RISC - Segmentacin
1.2.2.
Memoria de programa
El microcontrolador est diseado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. No hay posibilidad de utilizar memorias externas de ampliacin. Como el programa a ejecutar siempre es el mismo, debe estar grabado de forma permanente. Los tipos de memoria adecuados para soportar esta funcin admiten cinco versiones diferentes:
1 . ROM con mscara En este tipo de memoria el programa se graba en el chip durante el proceso de su fabricacin mediante el uso de mscaras. Los altos costes de diseo e instrumental slo aconsejan usar este tipo de memoria cuando se precisan series muy grandes. 2. EPROM La grabacin de esta memoria se realiza mediante un dispositivo fsico gobernado desde un computador personal, que recibe el nombre de grabador. En la superficie de la cpsula del microcontrolador existe una ventana de cristal por la que se puede someter al chip de la memoria a rayos ultravioletas para producir su borrado y emplearla nuevamente. Es interesante la memoria EPROM en la fase de diseo y depuracin de los programas, pero su coste unitario es elevado. 3.' OTP (Programable una vez) Este modelo de memoria slo se puede grabar una vez por parte del usuario, utilizando el mismo procedimiento que con la memoria EPROM. Posteriormente no se puede borrar. Su bajo precio y la sencillez de la grabacin aconsejan este tipo de memoria para prototipos finales y series de produccin cortas. 4. EEPROM La grabacin es similar a las memorias OTP y EPROM, pero el borrado es mucho ms sencillo al poderse efectuar de la misma forma que el grabado, o sea, elctricamente. Sobre el mismo zcalo del grabador puede ser programada y borrada tantas veces como se quiera, lo cual la hace ideal en la enseanza y en la creacin de nuevos proyectos. El fabuloso PIC16C84 dispone de 1 K palabras de memoria EEPROM para contener instrucciones y tambin tiene algunos bytes de memoria de datos de este tipo para evitar que cuando se retira la alimentacin se pierda informacin. Aunque se garantiza 1.000.000 de ciclos de escritura/borrado en una EEPROM, todava su tecnologa de fabricacin tiene obstculos para alcanzar capacidades importantes y el tiempo de escritura de las mismas es relativamente grande y con elevado consumo de energa. 5. FLASH Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero suelen disponer de mayor capacidad que estas ltimas. El borrado slo es posible con bloques completos y no se puede realizar sobre posiciones concretas. En las FLASH se garantizan 1.000 ciclos de escritura-borrado. Son muy recomendables en aplicaciones en las que sea necesario modificar el programa a lo largo de la vida del producto, como consecuencia del desgaste o cambios de piezas, como sucede con los vehculos. Por sus mejores prestaciones est sustituyendo a la memoria EEPROM para contener instrucciones. De esta forma Microchip comercializa dos microcontroladores prcticamente iguales, que slo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y
la del otro tipo Flash. Se trata del PIC 16C84 y el PIC 16F84, respectivamente. En la actualidad Microchip tiene abierta una lnea de PIC con memoria Flash cada vez ms extensa y utilizada. 1.2.3. Memoria de datos
Los datos que manejan los programas varan continuamente, y esto exige que la memoria que les contiene debe ser de lectura y escritura, por lo que la memoria RAM esttica (SRAM) es la ms adecuada, aunque sea voltil. Hay microcontroladores que tambin disponen como memoria de datos una de lectura y escritura no voltil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimentacin no ocasiona la prdida de la informacin, que est disponible al reiniciarse el programa. El PIC16C84, el PIC16F83 y el PIC16F84 disponen de 64 bytes de memoria EEPROM para contener datos.
La memoria tipo EEPROM y la tipo Flash pueden escribirse y borrarse elctricamente. Sin necesidad de sacar el circuito integrado del zcalo del grabador pueden ser escritas y borradas numerosas veces.
1.2.4.
A excepcin de dos patitas destinadas a recibir la alimentacin, otras dos para el cristal de cuarzo, que regula la frecuencia de trabajo, y una ms para provocar el Reset, las restantes patitas de un microcontrolador sirven para soportar su comunicacin con los perifricos externos que controla. Las lneas de E/S que se adaptan con los perifricos manejan informacin en paralelo y se agrupan en conjuntos de ocho, que reciben el nombre de Puertas. Hay modelos con lneas que soportan la comunicacin en serie; otros disponen de conjuntos de lneas que implementan puertas de comunicacin para diversos protocolos, como el I2C, el USB, etc. 1.2.5. Recursos auxiliares
Segn las aplicaciones a las que orienta el fabricante cada modelo de microcontrolador, incorpora una diversidad de complementos que refuerzan la potencia y la flexibilidad del dispositivo. Entre los recursos ms comunes se citan a los siguientes: a) Circuito de reloj, encargado de generar los impulsos que sincronizan el funcionamiento de todo el sistema. b) Temporizadores, orientados a controlar tiempos. c) Perro Guardin (watchdog), destinado a provocar una reinicializacin cuando el programa queda bloqueado. d) Conversores AD y DA, para poder recibir y enviar seales analgicas. e) Comparadores analgicos, para verificar el valor de una seal analgica. f) Sistema de proteccin ante fallos de la alimentacin.
g) Estado de Reposo, en el que el sistema queda congelado y el consumo de energa se reduce al mnimo. 1.3. PROGRAMACIN DE MICROCONTROLADORES
La utilizacin de los lenguajes ms cercanos a la mquina (de bajo nivel) representan un considerable ahorro de cdigo en la confeccin de los programas, lo que es muy importante dada la estricta limitacin de la capacidad de la memoria de instrucciones. Los programas bien realizados en lenguaje Ensamblador optimizan el tamao de la memoria que ocupan y su ejecucin es muy rpida. Los lenguajes de alto nivel ms empleados con microcontroladores son el C y el BASIC, de los que existen varias empresas que comercializan versiones de compiladores e intrpretes para diversas familias de microcontroladores. En el caso de los PIC es muy competitivo e inte resante el compilador de C PCM de la empresa CCS y el intrprete PBASIC de PARALLAX.
El lenguaje que utilizan los profesionales para la programacin de las microcontroladores es el Ensamblador, que es el ms cercano a la mquina. Tambin son frecuentes los programas en lenguaje C y en BASIC, siendo este ltimo el ms fcil de aprender.
1.4.
INSTRUMENTAL DE TRABAJO
Siempre que se disea con circuitos integrados programables se precisan herramientas para la puesta a punto del hardware y del software. Con referencia al software, adems de los compiladores o intrpretes de los lenguajes usados, es muy interesante disponer de simuladores software, que consisten en programas que simulan la ejecucin de instrucciones representando el comportamiento interno del procesador y el estado de las lneas de E/S. Como se simula por software al procesador, el comportamiento no es idntico aunque proporciona una aproximacin aceptable, especialmente cuando no es esencial el trabajo en tiempo real. Microchip pone libremente a disposicin de sus usuarios, a travs de Internet (http:// www.microchip.com), ensambladores como el MPASM y simuladores como el MPSIM. Ingeniera de Microsistemas Programados, S. L., comercializa un simulador muy completo para el PIC16X84 y varios compiladores e intrpretes de lenguaje C y BASIC (http://www.microcontroladores.com).
Respecto a las herramientas hardware, una indispensable es el grabador, encargado de escribir el programa en la memoria del microcontrolador. Existen grabadores muy completos, capaces de trabajar con muchos modelos de diferentes familias, pero su elevado precio los aleja de los usuarios personales. Para estos ltimos existen bastantes versiones de sencillos grabadores, especficos para ciertos modelos de microcontroladores, que gobernados desde un computador personal se ofrecen por un precio ligeramente superior al de un libro (vase Figura 1.7). Los fabricantes de los microcontroladores disponen de numerosas herramientas apropiadas para sus productos (vase Figura 1.8).
10
11
En la puesta a punto de proyectos industriales una potentsima herramienta es el emulador en circuito, que consiste en un complejo dispositivo fsico que, controlado por un programa desde un computador personal, dispone de una cabeza con las mismas patitas que el microcontrolador que se trata de emular. La cabeza se introduce en el zcalo donde ir el microcontrolador con el programa definitivo en la placa de prototipo. El emulador en circuito hace funcionar al sistema como si hubiese un microcontrolador real, pero presentando en la pantalla del computador toda la informacin necesaria para conocer el desarrollo del programa y la actuacin de los perifricos. Los resultados que as se obtienen son idnticos a los del producto final, puesto que la ejecucin se realiza en tiempo real, a diferencia de los simuladores software (Figura 1.9). Finalmentc, reciben el nombre de sistemas de desarrollo equipos que mediante una combinacin de hardware y de software consiguen realizar la mayora de las fases que exige un diseo basado en microcontrolador. Como la mayora de las herramientas, tambin sta se gobierna por un programa desde un computador personal. Mantienen una buena comunicacin y gestin de la edicin de programas y su compilacin o ensamblado. Tras la depuracin del software y la obtencin del cdigo binario ejecutable disponen de un grabador que escribe el programa obtenido sobre la memoria (le instrucciones. Tambin puede verificar lo escrito en la memoria o incluso borrarlo, cuando es del tipo EEPROM o FLASH.
12
Una vez grabado el microcontrolador sus patitas quedan conectadas a travs de juniper con los perifricos que hay que controlar y se procede a la ejecucin en tiempo real del programa. La inclusin de los perifricos clarifica el resultado final. Mediante el programa de comunicacin con el PC se puede conocer en todo momento el estado de todos los elementos del computador. Por su sencillez, potencia y economa destacamos el sistema de desarrollo MICRO'PIC TRAINER (Figura 1.10) de Ingeniera de Microsistemas Programados, S. L., que incorpora las siguientes prestaciones:
- Grabador de PIC. - Hardware y software de adaptacin a PC. -Programa de comunicaciones. -Tarjeta que incluye la mayora de los perifricos tpicos: interruptores, leds, display de siete segmentos, potencimetros para seales analgicas y pantalla LCD. -Tutorial con fases de montaje y funcionamiento y ejercicios de experimentacin y diseo de proyectos
Para facilitar el montaje de los prototipos se comercializan diversas tarjetas de circuito i mpreso predefinidas. En ellas existe una zona comn donde se aloja el zcalo del microcontrolador y su circuitera auxiliar (reloj, pulsador de Reset, regulacin de voltaje, cte.), Hay otra zona libre para situar los perifricos propios de la aplicacin, que pueden conec-
13
tarse fcilmente con todas las lneas de E/S presentes en determinadas puntos de la tarjeta (vase Figura I.11).
2.1.
LA ELECCIN
Entre casi un centenar de fabricantes de microcontroladores que existen en el mundo es muy difcil seleccionar el mejor. En realidad no existe, porque en cada aplicacin son sus caractersticas especficas las que determinan el ms conveniente. Los PIC tienen ngel y una gran aceptacin en la comunidad de tcnicos y aficionados que trabajan con microcontroladores. Cunto durar este xito? Hasta que salga al mercado otro producto que les robe esa imagen. Cul es la razn de la excelente acogida? Hay detalles que nos vuelven locos a los profesionales de la Microelectrnica y Microinformtica; citamos los ms importantes a nuestro juicio.
Sencillez de manejo
Buena isftormacin , Precio Buen prbmedio de parmetros: velocidad, consumo, tamao, alimentacin, ~go compacto, etctera Herr~s de deaarrOUo tkilel y baratas
Diseo rpido
+ Disponibilidad inmediata Compatib+lidad dei software en todos los modelos de la misma gama Los PIC deslumbran a quienes los usamos porque; Su coste es comparativamente inferior al de los competidores Poseen una elevada velocidad de funcionamiento Tienen un juego reducido de instrucciones; 35 en la gama media
Los programas son cornpactos Bajo c onsumo:unido a un amplio rango de voltajes de alimentacin ,
15
16 MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES Muchas herramientas software se pueden recoger libremente a travs de Internet desde Microchip (http://www.microchip.com) Existe una gran variedad de herramientas hardware que permiten grabar, depurar; borrar y comprobar el comportamiento de los PIC La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicacin
Lo cierto es que en la primera dcada del siglo XXI y en su corta vida, los PIC ocupan las posiciones de cabeza en el ranking mundial, compitiendo codo a codo con gigantes como Intel y Motorola. En 1990 ocupaba el puesto vigsimo y actualmente son ms de 100 millones de PIC l os que vende Microchip cada ao, lo que le ha alzado al segundo puesto del ranking mundial. Dentro de los diferentes tipos de microcontroladores los hay que procesan datos de 4, 8, 1 6 y 32 bits, sin embargo, el ms representativo y popular es el de 8 bits, al que pertenecen los PIC, porque resulta el ms flexible y eficaz para la mayora de los diseos tpicos (Figura 2. l).
2.2.
Una de las labores ms importantes del ingeniero de diseo es la eleccin del modelo de mi- crocontrolador que mejor satisfaga las necesidades del proyecto con el mnimo presupuesto.
17
En el 2003 el fabricante de los PIC dispone de ms de un centenar de versiones diferentes y cada ao aumenta considerablemente su lista. (Ver en el Anexo D la familia completa de microcontroladores PIC). Microchip dispone de cuatro gamas de microcontroladores de 8 bits para adaptarse a las necesidades de la mayora de los clientes potenciales.
2.2.1.
Se trata de una serie de PIC de recursos limitados, pero con una de las mejores relaciones coste/prestaciones. Sus versiones estn encapsuladas con I8 y 28 patitas y pueden alimentarse a partir de una tensin de 2,5 V lo que les hace ideales en las aplicaciones que funcionan con pilas. Tienen un repertorio de 33 instrucciones cuyo formato consta de I2 bits. No admiten ningn tipo de interrupcin y la pila slo dispone de dos niveles.
EJEMPLO Cuntas patitas destina un PICI6C54 (Figura 2.2) para lneas de E/S, sabiendo que se las denomina RAx y RBx?
SOLUCIN 12 patitas.
2.2.2.
Es la gama ms variada y completa de los PIC. Abarca modelos con encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran abundantes perifricos. Dentro de esta gama se halla el fabuloso PIC 16F84.
18
El repertorio de instrucciones es de 35 a 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. Tambin dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento de subrutinas. La gama media puede clasificarse en las siguientes subfamilias:
a) b) c) Gama media estndar (PIC16C55X); Gama media con comparador analgico (PIC16C62X/64X/66X); Gama media con mdulo de captura (CCP), modulacin de anchura de impulsos (PWM) y puerta serie (PIC16C6X); d) Gama media con CAD de 8 bits (PIC16C7X); e) Gama media con CAD de precisin (PIC14000); f) Gama media con memoria Flash y EEPROM (PIC16F87X yPIC16X8); Gama media con driver LCD (PIC16C92X).
Encuadrado en la gama media tambin se halla la versin PIC14C000, que soporta el diseo de controladores inteligentes para cargadores de bateras, pilas pequeas, fuentes de alimentacin ininterrumpidas y cualquier sistema de adquisicin y procesamiento de seales que requiera gestin de la energa de alimentacin. Los PIC14C000 admiten cualquier tecnologa de las bateras como Li Ion, NiMH, NiCd, Pb y Zinc.
EJEMPLO Segn la Figura 2.5, la nomenclatura de la subfamilia 16x8x diferencia a sus modelos por la letra intermedia (C, F o CR). Qu significado tienen dichas letras?
19
SOLUCIN C: Significa que la memoria de instrucciones es EEPROM. F: Indica que la memoria de instrucciones es tipo Flash. CR: La memoria de instrucciones es ROM y se graba en fbrica. Slo se usa para grandes series. En la Figura 2.4 se ofrece el diagrama de conexiones del PIC 16C74 de 40 patitas, que es un paradigma de la variedad de recursos que pueden incluir los PIC de esta gama.
2.2.3.
Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema de gestin de interrupciones vectorizadas muy potente. Tambin incluyen variados controladores de perifricos, puertas de comunicacin serie y paralelo con elementos externos y un multiplicador hardware de gran velocidad. Quizs la caracterstica ms destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliacin del microcontrolador con elementos externos. Para este fin, las patitas sacan al exterior las lneas de los buses de datos, direcciones y
control, a las que se conectan memorias o controladores de perifricos. Esta filosofa de construccin del sistema es la que se empleaba en los microprocesadores y no suele ser una prctica habitual cuando se emplean microcontroladores. En la Figura 2.6 se muestran las caracte-
20
rsticas ms relevantes de algunos modelos de esta gama, que slo se utilizan en aplicaciones muy especiales con grandes requerimientos.
EJEMPLO Localizar en la tabla de la Figura 2.6 el PIC de la gama alta que tenga mayores capacidades en sus dos memorias.
SOLUCIN El PIC17C756 con 16 K palabras de 16 bits cada una en la memoria de instrucciones y 902 bytes en la memoria de datos.
2.2.4.
En los inicios del tercer milenio de nuestra era Microchip present la gama mejorada de los microcontroladores PIC con la finalidad de soportar las aplicaciones avanzadas en las reas de automocin, comunicaciones, ofimtica y control industrial. Sus modelos destacaron por su alta velocidad (40 Mhz) y su gran rendimiento (10 MIPS a 10 Mhz). Entre las aportaciones ms representativas de esta serie de modelos que crece cada ao, destacan. a) Un espacio de direccionamiento para la memoria de programa que permite alcanzar los 2 MB, y 4 KB para la memoria de datos. b) Inclusin de la tecnologa FLASH para la memoria de cdigo. c) Potente juego de 77 instrucciones de 16 bits cada una. Permiten realizar una multiplicacin 8 x 8 en un ciclo de instruccin, mover informacin entre las memorias y modificar el valor de un bit en un registro o en una lnea de E/S. d) Orientacin a la programacin en lenguaje C con la incorporacin de compiladores muy eficientes para este lenguaje. e) Nuevas herramientas para la emulacin.
21
Inicialmente aparecieron cuatro modelos (PIC18C242/252/442/452) con 28 y 40 patitas que tenan hasta 16 KB de memoria de programa y hasta 1.536 bytes de RAM, ambas ampliables. Podan funcionar a 40 MHz, con 16 causas de interrupcin, 4 temporizadores, 2 mdulos CCP, Conversor A/D de 5 u 8 canales, y comunicacin serie y paralelo. Luego aparecieron los PIC18FXXX que incorporaron la memoria FLASH para contener el cdigo. Entre ellos destaca el modelo PIC18F720 con 128 KB de memoria FLASH y 3.840 bytes de RAM, estando encapsulado con 80 patitas. En la tabla de la Figura 2.7 se ofrecen las principales caractersticas de los primeros modelos de la gama mejorada y en la tabla de la Figura 2.8 los ms potentes.
2.2.5.
Se trata de un grupo de PIC (PIC12C(F)XXX) que ha acaparado la atencin del mercado. Su principal caracterstica es su reducido tamao, al disponer un encapsulado de 8 patitas. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de
Aunque los PIC enanos slo tienen 8 patitas, pueden destinar hasta 6 como lneas de E/S para los perifricos porque disponen de un oscilador interno R-C.
22
1 2 o de 14 bits y su repertorio es de 33 o 35 instrucciones, segn pertenezcan a la gama baja o media, respectivamente. En la Figura 2.8 se muestra el diagrama de conexionado de uno de estos PIC. En la Figura 2.9 se presentan las principales caractersticas de algunos modelos de esta subfamilia, que el fabricante tiene la intencin de potenciar en un futuro prximo. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamao de las instrucciones de 12 bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria FLASH para el programa y EEPRONI para los datos.
EJEMPLO Segn el esquema de la Figura 2.2, para funcionar un PIC12C508 precisa una tensin de alimentacin comprendida entre 2,5 y 5,5 V, que se aplica a las patitas VDD y Vss. Cuntas patitas quedan disponibles, como mximo, para trabajar como lneas de EIS?
23
2.3.
La diversidad de los modelos de PIC tiene una finalidad: poder seleccionar el ms adecuado para cada aplicacin. Por este motivo conviene tener un conocimiento completo y actualizado de cada gama. En cuanto a la serie enana, la familia PIC 12C5XX, se trata de un conjunto de microcontroladores CMOS encapsulados con 8 patitas. Tienen un precio muy bajo y resultan altamente competitivos. Todos los PIC enanos tienen un formato nico para sus instrucciones, aunque hay modelos con 12 bits, otros con 14 y otros con 16. En este grupo los ms usados son los de 14 bits, que proporcionan una extraordinaria compactacin en el cdigo de los programas, pudindose cifrar en el doble con respecto a otros similares. La arquitectura RISC, tipo Harvard, unida a la segmentacin del procesador, consigue que el ciclo de ejecucin de una instruccin sea de 1 microsegundo cuando funciona a una frecuencia de 4 MHz. Todas las instrucciones duran este tiempo menos las de salto, que duran el doble.
Los PIC enanos son muy apreciados en las aplicaciones de control de personal, en sistemas de seguridad y en dispositivos de bajo consumo que gestionan receptores y transmisores de seal es. Su pequeo tamao los hace ideales en muchos proyectos donde esta cualidad es fundamental.
Dentro de la gama media los PIC 14000 resultan muy interesantes por los recursos que incorporan: conversor A/D de media a alta resolucin (de 10 a 16 bits), sensor interno de temperatura, comunicacin serie I2C y muy bajo consumo. Son aptos para el control de cargadores de bateras, monitores del estado de pilas y bateras, fuentes de alimentacin ininterrumpibles, gestin del consumo de la energa de alimentacin y sistemas de adquisicin de datos, especialmente de temperatura. La gama baja, representada por los PIC16C5X, tiene proyeccin sobre los dispositivos de alta velocidad usados en la industria de la automocin, el control de motores y los receptores/transmisores y procesadores de bajo consumo encargados de la gestin de comunicaciones. Dentro de esta gama se encuentra la subfamilia PIC 16C55X, que incorpora recursos propios de la gama media. As, dispone de Pila de 8 niveles y mltiples fuentes de interrupcin.
Los microcontroladores PIC de la gama baja consiguen superar a sus competidores en velocidad, a los que aventajan en un factor cercano a 4; y tambin en compresin del cdigo, que llega a ser del doble.
En la gama media hay una subfamilia, PIC16C62X, con recursos muy especiales, pero manteniendo el bajo precio y el consumo reducido, que es muy recomendable en aplicaciones relativas a la gestin de cargadores de bateras, control de sensores remotos con bajo consumo, etctera.
24
Con ms de diez versiones diferentes, la subfamilia PIC16C6X de la gama media se caracteriza por la incorporacin de numerosos recursos (varios temporizadores, mdulos de captura/comparacin, puerta serie SPI e I 2C, puerta paralela PSP, etc.). Mejorando estos modelos, la serie PIC16C7X es una muestra de las posibilidades del procesador RISC funcionando a 20 MHz, con un ciclo de instruccin de 200 ns. Los componentes de esta serie son muy apreciados en los sistemas de alarma y seguridad, as como en el control remoto de sensores en automocin.
El PIC16x8x y sus variantes pertenecen a la gama media y su novedad es la inclusin de memoria EEPROM o Flash para contener el programa.
La memoria EEPROM, de igual forma que la FLASH, puede grabarse y borrarse elctricamente, sin someterla a rayos ultravioleta como sucede con el borrado de las EPROM con ventana. Adems, se puede realizar la grabacin y el borrado en serie, lo cual posibilita la grabacin de un programa, su depuracin y su borrado tantas veces como se desee y manteniendo insertado el PIC en el zcalo de la aplicacin. La memoria EEPROM admite hasta 1.000.000 de ciclos de escritura/borrado y almacena la informacin durante ms de 40 aos. La memoria FLASH tiene un valor tpico de 1.000 ciclos de escritura/borrado, pero aventaja tcnicamente en varios aspectos a la EEPROM. Destacan en la gama media los PIC 16F87X con memoria FLASH de gran capacidad y numerosos recursos. El hecho de poder emplear el mismo dispositivo cuando se realizan numerosos diseos o cuando se prueban muchos programas en la fase de aprendizaje resulta muy prctico y econmico. Aplicaciones tpicas de estos microcontroladores son el control de puertas de garaje, instrumentacin, inmovilizadores de vehculos, tarjetas codificadas, pequeos sensores, etc. La grabacin de los PIC16X8X en el propio circuito les hace recomendables para el almacenamiento de datos de calibracin y para la modificacin del programa al variar las condiciones
MICROCONTROLADORES DE 8 BITS: LOS PIC 25 del entorno; por ejemplo, al cambiar una pieza de un automvil, el programa de control del motor se modifica para su adecuacin. La serie PIC16C9XX tiene como novedad la inclusin de un controlador programable de LCD, que gestiona ntegramente cualquier pantalla de cristal lquido. Dentro de la gama alta, la subfamilia PIC17C4X, con 58 instrucciones de 16 bits, tarda en ejecutar cada una 121 nanosegundos cuando funciona a 33 MHz (las de salto tardan el doble). El ncleo del procesador est mejorado respecto al de la gama media y la Pila dispone de 16 niveles. Tambin se han aumentado las fuentes de interrupcin y se ha incorporado un multiplicador hardware de 8 x 8 bits en un ciclo, para aplicaciones que exijan un clculo matemtico intensivo. Aplicaciones industriales que requieran alta velocidad y clculos complejos, instrumentacin y telecomunicaciones, son las ideales para los componentes de la gama alta. El PIC17C752 y el PIC17C1756 son los modelos ms representativos de la gama alta y estn encapsulados con 64 y 68 patitas respectivamente. Tienen una elevada capacidad de memoria que alcanza los 8 K x 16 y 16 K x 16 en el rea reservada a las instrucciones y 454 y 902 bytes en la reservada a los datos, respectivamente. Poseen 12 canales para un conversor AD de 10 bits, 4 canales para un mdulo de captura de 16 bits, 2 USART, bus 1 2 C, ele.
26
A las puertas del siglo xxi, Microchip ha obtenido un importante xito en el mercado mundial con los microcontroladores RISC FLASH. Se trata de la serie PIC16F87X (3, 4, 5, 6 y 7). Son unos modelos mucho ms potentes que el PIC16F84, pero que mantienen sus ventajas en la grabacin y borrado elctrico. Es una serie que encaja dentro de la gama media y que alcanza una memoria de cdigo de hasta 8K palabras de 14 bits en memoria FLASH. Soporta hasta 386 x 8 bytes de RAM y 256 x 8 bytes de memoria de datos EEPROM. Pueden programarse slo con +5 VDC y existe acceso a lectura y escritura de la memoria de programa. Estos potentes microcontroladores disponen de hasta tres Timer o temporizadores, dos mdulos de Captura, Comparacin y PWM, un Convertidor Analgico/Digital de 10 bits, Canal de comunicaciones sncrono SSP con modo I2C y SPI, canal USART/SCI, puerto paralelo esclavo asncrono de 8 bits y deteccin de fallo de alimentacin (BOR). Los lectores que completen con xito el primer escaln en el manejo del PIC16F84, debern tener muy en cuenta esta potentsima familia de PIC con memoria FLASH para superar sus diseos. A ella se destina gran parte del segundo volumen de esta obra. Desde el 2000 Microchip se esfuerza por potenciar y ampliar los PIC de la gama mejorada destinados a aplicaciones muy avanzadas y orientadas a su programacin en lenguaje C.
3.1.
ACERCANDO LA TECNOLOGA
No suele ser habitual coincidir los planteamientos de dos generaciones, ni la opinin de los profesionales que se dedican a aplicar la tecnologa y los que se encargan de ensearla. Sin embargo, en este tema los autores coinciden plenamente. Los mdulos BASIC Stamp de Parallax
constituyen el camino ms sencillo y asequible para disear sistemas basados en microcontroladores.
En el mundo de la enseanza es frecuente encontrar a jvenes que estudian carreras de Ingeniera que no estn convencidos de su vocacin. La labor del ingeniero es una de las ms apasionantes a las que el ser humano puede dedicarse. Es el encargado de disear e implementar los proyectos que le proponen. Es un gran creador de realidades que sirven para mejorar la calidad de vida de todos. La vocacin por la ingeniera debe fraguarse en los jvenes de 15 a 18 aos y para conseguirlo slo hay que demostrarles prcticamente en qu consiste nuestra profesin. Los mdulos de Parallax no precisan tener grandes conocimientos de Informtica ni de Electrnica, basta un poco de inters para generar en la juventud una inclinacin y admiracin por la Ingeniera. Dotar a un laboratorio universitario, de Formacin Profesional o IES de un equipo para aprender a programar y disear con estos dispositivos exige muy poco presupuesto. En el campo profesional hay dos colectivos a los que estas herramientas les interesa en sobremanera: el de los nefitos y el de los experimentados. Para los primeros, entre los que se encuentran los aficionados que no han tenido oportunidad de conocer la Informtica y la Microelectrnica en profundidad, sta es la nica oportunidad para adentrarse en este mundo del diseo programado sin necesidad de realizar un esfuerzo intelectual ni econmico. Para los tcnicos experimentados la filosofa de trabajo con los mdulos BASIC Stamp les proporciona la solucin ms eficaz para desarrollar sus proyectos con la mxima rapidez y seguridad. La necesidad de optimizar los tiempos de desarrollo de los proyectos que realizaban basados en microcontroladores, impuls a dos ingenieros americanos, en la dcada de los ochenta del siglo pasado, a construirse un mdulo hardware que simplificase el desarrollo electrnico, y un lenguaje de programacin que se adaptara a sus diseos y fuese asequible para cualquier tcnico con escasos conocimientos en Electrnica e Informtica. Mejoraron la productividad hasta tal punto que tuvieron la idea de comercializar las herramientas que haban ideado. Y 27
28
en 1992 Parallax ofert a nivel mundial los mdulos BASIC Stamp, que adquirieron tal xito de ventas que pasaron a erigirse como el producto estrella de la empresa. La gran aportacin de los mdulos BASIC Stamp reside en la conjuncin de un hardware seguro, completo y listo para acoplarle los dispositivos a controlar, y un software accesible a cualquier tcnico al estar basado en el lenguaje ms fcil del mundo, el BASIC. El lenguaje PBASIC es una versin sencilla del BASIC, de pocas instrucciones y adaptadas a las caractersticas de las aplicaciones y del microcontrolador. Al mezclarse estos dos ingredientes con una poltica comercial de total informacin y libre disposicin de manuales, tutoriales y software de manejo, una excelente asistencia tcnica y una red de distribuidores profesionales en todo el mundo, estas herramientas se convierten en el mejor sistema para iniciarse y desarrollar profesionalmente este apasionante trabajo del diseo de proyectos con microcontrolador que va a precisar en un futuro cercano la colaboracin de muchos proyectistas. Por estas razones hemos decidido incorporar en esta edicin un par de captulos que traten del equipo fsico y el sistema lgico de los mdulos BASIC Stamp, que aporten una idea clara de las posibilidades de los mismos. Quienes se interesen en profundizar en el tema slo deben acudir a los magnficos Manuales de Prcticas que tanto en ingls como en castellano pueden recogerse de las pginas en Internet de Parallax (www.parallaxinc.com) y de sus distribuidores como Ingeniera de Microsistemas Programados, S. L., para Espaa (www.mi- crocontroladores.com). Esperamos poder demostrar que manejar estos mdulos y confeccionar y ejecutar programas en PBASIC se puede llevar a cabo sin apenas conocimientos, y por eso estos captulos se han insertado antes de explicar la arquitectura del microcontrolador y su repertorio de instrucciones mquina, temas que acometeremos posteriormente para formar al lector slidamente y as permitirle desarrollar proyectos completos utilizando el lenguaje Ensamblador. 3.2. EL NACIMIENTO Y DESARROLLO DE UNA EMPRESA
El diseo ideal basado en microcontroladores exige un hardware semiacabado y un lenguaje de programacin sencillo y potente. La guinda al pastel la pondra la posibilidad de poder grabar un programa, probarlo y volverlo a regrabar con las modificaciones oportunas para poder comprobar su efectividad inmediatamente. Si estas tareas slo precisan un PC y se pueden realizar muchos miles de veces con el mismo mdulo, dispondramos de una codiciada herramienta de trabajo. Todas esas caractersticas las echaba de menos un joven estudiante llamado Chip Gracey cuando en 1980 se formaba al mismo tiempo que enredaba con el lenguaje BASIC sobre microcomputadores APPLE II. Despus, su aficin le empuj a analizar y modificar el cdigo fuente de electrodomsticos y videojuegos para inventar nuevas aplicaciones. Al acabar sus estudios en 1986 se asoci con su amigo Lance Walley para abrir desde su casa la empresa Parallax, cuyos primeros catlogos estaban formados por programadores para el microcontrolador 8051 y digitalizadores de sonido para APPLE II. Luego se fue agrandando la gama de productos construidos con microcontroladores, especialmente del modelo PIC. Como su labor de ingeniera les exiga optimizar los tiempos de desarrollo de los proyectos, idearon un hardware que contena el ncleo del sistema controlador (microcontrolador, reloj, reset, alimentacin, memoria para programa y adaptacin al PC). Dicho hardware se controlaba con un revolucionario lenguaje de programacin derivado del BASIC pero con instrucciones especficas para aprovechar los recursos del microcontrolador. Lo llamaron PBASIC, tiene algo ms
29
de una treintena de instrucciones y se aprende en muy poco tiempo. De esta manera resolvieron sus problemas de diseo y pensaron que tambin poda servir para otros colegas, y as comercializaron en 1992 los mdulos BASIC Stamp. Los diminutos sellos microcontroladores que utilizan el lenguaje PBASIC se comercializan en diversos modelos de diferente velocidad, capacidad de memoria, recursos y precios (Figura 3.1). Parallax dispone de un mdulo de poca potencia, que es el BS1-IC, basado en un microcontrolador PIC 16(756 a 4 MHz, lo que permite la ejecucin de 2.0(1(1 instrucciones PBASIC por segundo. Slo tiene 16 bytes de RAM y 8 lneas de E/S. La capacidad de la EEPROM donde se almacenan temporalmente los programas es de 256 bytes, que admite hasta 80 instrucciones PBASIC. Slo soporta 32 comandos de dicho lenguaje y este mdulo puede ser una excelente solucin en el control y automatizacin de productos y sistemas sencillos que exijan prestaciones mnimas. El siguiente mdulo, un poco ms avanzado que el anterior. es el Basic Stamp 2. Existen dos presentaciones de este mdulo. Una se llama BS2-IC, y es un mdulo montado sobre una pequea PCB con componentes de montaje superficial y la forma de un circuito integrado DIP. Su fotografa se muestra a la izquierda de la Figura 3.2. La otra versin, OEM BS2-IC, dispone de componentes convencionales y un PCB ms grande con pines para conexin en una tarjeta protoboard, como puede apreciarse a la derecha de la Figura 3.2. Ambos estn basados en el microcontrolador PIC16C57 funcionando a 20 MHz, lo que permite la ejecucin de unas 4.000 instrucciones PBASIC por segundo. La capacidad de la EEPROM es de 2 KB con
30
posibilidad de almacenar programas de hasta 500 instrucciones. El tamao de la RAM es de 32 bytes, de los cuales 6 se dedican a E/S y 26 para las variables del programa. Soporta un repertorio de 36 comandos PBASIC y posee 16 lneas de E/S. Este mdulo se ha convertido en un estndar de la enseanza y de la industria y a l, sobre todo en la versin OEM BS2-IC, nos referiremos principalmente. En esta versin se usan componentes convencionales sobre una tarjeta de circuito impreso que posibilita la comercializacin en kit y la fcil sustitucin de los elementos averiados.
El mdulo BS2e-IC
Este mdulo utiliza un microcontrolador Scenix SX28AC a 20 MHz del fabricante UBICOM y proporciona mayor capacidad de memoria RAM para guardar variables y de memoria EEPROM para almacenar programas de hasta 4.000 instrucciones. Adems del repertorio de comandos PBASIC que ejecutaba el mdulo BS2-IC, ste soporta tres ms: GET, PUNT y RUN. En la Figura 3.3 se muestra una fotografa de este mdulo.
El mdulo BS2sx-IC
Con el mismo microcontrolador que el mdulo anterior, pero funcionando a una frecuencia de 50 MHz, este modelo puede ejecutar 10.000 instrucciones PBASIC por segundo. Acepta las mismos comandos que el mdulo BS2e-IC.
31
Mdulos BS2p24-IC
y BS2p40-IC
El BS2p24-IC utiliza el microcontrolador Scenix SX48AC a 20 MHz Turbo y est encapsulado con 24 patitas en formato DIP. Hay otro modelo de 40 patitas que slo se diferencia en que posee 32 lneas de E/S en lugar de las 16 que posee el de 24 patitas. Tienen una elevadsima ve~ locidad de ejecucin de instrucciones y soportan un repertorio de 55 comandos PBASIC. destacando algunos especficos para la adaptacin en paralelo de pantallas LCD, de adaptacin de dispositivos 12C y de componentes de DALLAS SEMICONDUCTOR conectados por el interfaz One Wire .
Finalmente, se presenta una tabla que recoge las caractersticas ms importantes de los diversos mdulos microcontroladores de Parallax.
32 3.3.
La estructura fsica de los mdulos BASIC Stamp puede descomponerse en cinco grandes bloques: 1. 2. 3. 4. 5. Seccin del microcontrolador. Seccin de la memoria EEPROM. Seccin de la Entrada/Salida de la informacin serie del PC. Seccin del regulador de tensin. Seccin de las lneas de E/S de informacin para el mundo exterior.
33
Cindonos al mdulo OEM BS2-IC, todas las operaciones que realiza estn gobernadas por el microcontrolador PIC 16C57. Se trata de un pequeo computador que maneja datos de 8 bits y que acta como el cerebro ejecutor de todas las misiones que se encomienda al mdulo. Las funciones que desarrolla el microcontrolador al ejecutar las instrucciones de los programas son las siguientes: 1. Entrada y salida de la informacin serie que proviene y se dirige al PC. 2. Carga en la memoria EEPROM del programa PBASIC recibido desde el PC. 3.a Descarga de las instrucciones contenidas en la EEPROM sobre el PIC 16C57 para su interpretacin y ejecucin. 4. Introduccin de informacin desde los perifricos externos y salida de los resultados del procesamiento de los programas por las patitas del mdulo hacia los perifricos.
La filosofa de un mdulo BASIC Stamp comienza con la confeccin del programa en PBASIC, mediante un editor apropiado, en el PC. Despus, se transfiere dicho programa por el puerto serie del PC al mdulo de Parallax y se almacena completamente en una memoria EEPROM independiente que dispone dicho mdulo. A continuacin, las instrucciones guardadas en la EEPROM van dirigindose al microcontrolador una a una para ser interpretadas y ejecutadas. El programa Intrprete de PBASIC est grabado en la memoria de cdigo del PIC junto a otros que se encargan de supervisar la comunicacin con el PC y la EEPROM.
34
tud. Esto significa que el mximo tamao del programa de instrucciones mquina (no PBASIC) es de 2.048. En el mdulo OEM BS2-IC el programa que tiene grabado el PIC, adems de contener el Intrprete de PBASIC, se encarga de recibir y transmitir la informacin serie con el PC, la escritura y lectura de la EEPROM donde se guarda el programa PBASIC, y el control de las patitas de entrada y salida. Aprciese que en la memoria de programa del PIC no reside el programa PBASIC editado en la pantalla del PC, para la aplicacin a desarrollar. Dicho programa se graba en la EEPROM 24LC16B desde donde el PIC va recibiendo una a una esas instrucciones y las va traduciendo a instrucciones mquina y ejecutndolas. Microchip dispone de una versin del PIC 16C57 cuya memoria de programa es de tipo EPROM, que puede grabarla el usuario con un grabador y borrarla para volverla a reescribir. El borrado hay que hacerlo sometiendo el circuito integrado a rayos ultravioleta, por lo que dispo ne de una ventana en su parte frontal. Hay una versin OTP, barata, que la puede escribir el usuario una vez nada ms. El mdulo OEM BS2-IC soporta el modelo PIC16CR57, cuya memoria es de tipo ROM, de slo lectura. Se escribe en fbrica y slo se puede leer, si se permite. Adems de las memorias, el PIC 16C57 posee un temporizador de ocho bits para controlar el tiempo, que se llama TMR0. Para medir el tiempo el TMR0 puede usar los impulsos de reloj del microcontrolador, o bien los que se introducen desde el exterior por la patita RTCC. Como en el mdulo de prcticas OEM BS2-IC no se usa el TMR0 con impulsos externos, la patita RTCC se enva a tierra. Finalmente, el PIC16C57 maneja 20 lneas de E/S implementadas fsicamente mediante 20 patitas por las que se enva y se recibe informacin, a y desde el exterior a lo largo del procesamiento de las instrucciones del programa. Las lneas de E/S se distribuyen en grupos que se llaman Puertas A, B y C. La Puerta A slo tiene 4 lneas que se implementan fsicamente por las patitas RA0-RA3, la Puerta B tiene 8 con las patitas RB0-RB7 y la Puerta C otras 8 con RCO-RCT
Diagrama de conexionado
Aunque el PIC 16C57 se comercializa con varios encapsulados, en el OEM BS2-IC se emplea el DIP de 28 patitas en doble hilera. Este mdulo utiliza componentes convencionales y cual-
35
quier avera la puede resolver el propio usuario sustituyendo el que se halla averiado, por eso se ha elegido en esta descripcin de carcter docente. Incluso se puede comprar el mdulo en kit y soldar sus componentes para ponerlo en marcha. El microcontrolador se inserta sobre un zcalo soldado a la PCB y tambin puede reemplazarse rpidamente.
Las lneas de E/S para intercambio de informacin con el mundo exterior ocupan 20 patitas. Las cuatro de la Puerta A (RA0-RA3) estn destinadas a la recepcin y transmisin de la informacin serie al PC y a la escritura y lectura de la memoria EEPROM. Las 16 patitas restantes, 8 de la Puerta B y 8 de la Puerta C, quedan a disposicin de los perifricos a gobernar en la aplicacin. Dichas lneas estn disponibles en el mdulo OEM BS2-IC por las patitas denominadas PO a P15. Por las patitas VDD y Vss se recibe la tensin de alimentacin que puede estar comprendida entre +2,5 y +5,5 VDC y que en el mdulo de prcticas se usa +5 VDC, obtenida de la salida del regulador de tensin. Los terminales de un resonador cermico que oscila a 20 MHz se aplican a las patitas OSC 1 y OSC2 para conseguir que el microcontrolador funcione a dicha frecuencia. Hay dos patitas que no se conectan (NC). La patita RTCC se usa para controlar los tiempos del temporizador TMR0 mediante la frecuencia externa introducida por esta patita; como en el mdulo OEM BS2-IC no se emplea esta posibilidad se conecta a tierra. Finalmente, la patita MCLR# (#: seal activa con nivel bajo) sirve para producir un Reset o reinicializacin del programa cuando se produce un flanco descendente.
3.4.
En todos los mdulos BASIC Stamp existe una memoria EEPROM independiente en la que se vuelca el programa PBASIC confeccionado en el PC. Despus, desde la EEPROM se van pa-
36
sando, una a una, las instrucciones al PIC para que all se interpreten y se ejecuten. Esta memoria EEPROM se comunica con el PIC en formato serie y segn el protocolo de comunicacin del bus I2C. El bus 12C lo desarroll Philips Corporation para resolver sus propias necesidades en la i nterconexin de circuitos integrados. 12C significa Interconexin de Circuitos Integrados. Su gran xito radica en su sencillez, ya que slo emplea dos lneas para comunicarse con los dispositivos que intervienen en este protocolo y que pueden llegar a 128 en un mismo sistema. La lnea bidireccional SDA transfiere los bits de informacin serie y la SCL los impulsos de reloj para sincronizar la informacin entre quien la manda y la recibe. En cada momento hay un dispositivo que funciona como Maestro y que determina las caractersticas de la transferencia y genera los impulsos de reloj por SCL.
Cada uno de los 128 posibles Esclavos responde a una direccin formada por 7 bits (A0A6), y el Maestro al iniciar una transferencia es lo primero que enva en su comunicacin. Despus de especificar el Maestro la direccin del Esclavo con el que se quiere comunicar, enva la orden de lectura o escritura y luego otras complementarias. Existen muchos circuitos
37
integrados con diversas funciones para el bus 12C y los fabricantes determinan por hardware la direccin a la que responden y sus caractersticas tcnicas. Sin embargo, es habitual que la direccin a la que responde un circuito integrado I2C no est totalmente definida. Se suelen dejar sin especificar las lneas de menos peso de la direccin para poder colocar varios circuitos integrados iguales en el sistema, respondiendo cada uno a una direccin distinta. En el caso de la memoria 24LC16B tiene sin definir las tres lneas de menos peso de la direccin (A0-A2), cuyo valor debe determinar el usuario por hardware, enviando las patitas correspondientes a tierra o a VDD. En el mdulo OEM BS2-1, como slo se utiliza un circuito integrado EEPROM, las tres lneas de la direccin se mandan a tierra.
La patita WP (PROTECCIN CONTRA ESCRITURA) si se conecta a la tensin positiva no se puede escribir la EEPROM y funciona como una memoria ROM de slo lectura. En el mdulo OEM BS2-IC se deben escribir constantemente nuevos programas y por eso dicha patita se conecta a tierra.
V DD (+5V)
38
La informacin procedente del PC se introduce al mdulo de Parallax por el conector 13139 y atraviesa un circuito de adaptacin de niveles con tres transistores (Q1, Q2 y Q3) para finalmente cargarse en la EEPROM a travs del PIC16C57. El circuito transistorizado acta de forma bidireccional porque existen instrucciones PBASIC como DEBUG que envan informacin del mdulo al PC. La misin de dicho circuito transistorizado es transformar los niveles con los que trabaja el puerto serie del PC (RS-232-C), que implementan los niveles lgicos con +12 y -12 VDC, a niveles TTL (+5 y 0 VDC) con los que trabaja el PIC16C57. Las patitas RA2 y RA3 del microcontrolador se encargan de manejar la informacin serie que entra y sale por el circuito transistorizado desde o hacia el PC. Las instrucciones PBASIC recibidas desde el PC, las carga el microcontrolador en la EEPROM envindolas por la lnea SDA del bus 12C. RAO y RA1 soportan las dos lneas del bus 12C en el PIC.
Las cuatro patitas de la Puerta A del PIC16C57, RAO-RA3, se destinan a soportar la comunicacin del mdulo con el PC y con la memoria EEPROM.
3.5.
En el PC se edita el programa PBASIC y por su puerto serie se enva al mdulo de Parallax. Tambin desde dicho mdulo hay ocasiones en las que se enva informacin al PC, como sucede con la instruccin DEBUG. La entrada y salida de esta informacin serie con el PC se acondiciona mediante un circuito transistorizado que recoge y entrega el microcontrolador por sus patitas RA2 y RA3. Las instrucciones PBASIC que llegan desde el PC las recoge el PIC por su patita RA2 y luego las enva por RAO a la EEPROM, donde queda almacenado.
39
3.6.
Est compuesta por el circuito integrado LM2940-5.0, que es un regulador de tensin a + 5 VDC. Tambin existe un condensador electroltico auxiliar. Por la patita Vin del regulador se recibe una tensin que puede oscilar entre +5,5 y +I5 VDC. Por la patita de salida VOUT se obtiene una tensin V dd de + 5 VDC regulada, que se emplea para alimentar los circuitos electrnicos del mdulo y tambin se pone a disposicin de los perifricos externos por la patita I9 del mdulo.
Cuando se disponga de una fuente de alimentacin que proporcione los + 5 VDC precisos se puede eliminar la intervencin del regulador LM2940-5.0, evitando el calor que disipa. De esta manera no se introduce nada por V i,, y se aplican los + 5 VDC de la fuente por la patita 20 del mdulo (Vdd).
3.7.
El mdulo OEM BS2-IC dispone de 20 patitas por las que se aplica la alimentacin elctrica, la seal de Reset y las lneas de E/S de las puertas B y C del microcontrolador, por las que se recibe y se saca la informacin que se maneja en el procesamiento de las instrucciones del programa. Las patitas Vdd, GND y V; corresponden a las descritas del regulador de tensin LM29405.0. Cuando por la patita Vin se aplica una tensin comprendida entre + 5,5 y + I5 VDC, el citado regulador alimenta al circuito electrnico del mdulo con + 5 VDC regulados y presenta dicha tensin en la patita V dd (20) del mdulo para su posible utilizacin por circuitos o perifricos externos. Cuando se dispone de + 5 VDC regulados, se pueden aplicar entre V dd y GND, dejando sin conectar V;, para alimentar al circuito electrnico sin funcionar el regulador. La patita I7 del mdulo, denominada MCLR#, se usa para reinicializar el programa cuando desde el exterior se aplica un nivel bajo.
40
El mdulo OEM BS2-IC dispone de 16 patitas para Entrada/Salida de informacin que se denominan PO-P 15 y sirven para conectar los perifricos que se desean controlar. En realidad, el PIC 16C57 que soporta el mdulo tiene 20 lneas de E/S, que se agrupan en tres grupos que reciben el nombre de puertas A, B y C. La Puerta A consta de 4 lneas (RA0-RA3) que se utilizan para la recepcin y transmisin de informacin serie con el PC y para realizar la transferencia con la memoria EEPROM que almacena el programa PBASIC. Cada una de las Puertas B y C posee 8 lneas de E/S (RB0-RB7 y RC0-RC7) que son las que quedan disponibles para el usuario en el mdulo de Parallax.
Las lneas digitales de E/S del microcontrolador son configurables por software y pueden actuar como entrada o salida. Incluso a lo largo de una aplicacin pueden cambiar su actuacin si lo permiten los perifricos a los que controlan.
41
La importancia del consumo Cada lnea de E/S del microcontrolador puede absorber una corriente mxima de 25 mA y puede suministrar hasta 20 mA. Adems, el conjunto de lneas de una puerta tiene una corriente mxima admisible tanto si entra como si sale. Las puertas B y C pueden absorber un mximo de 150 mA entre todas las lneas de cada puerta y pueden suministrar un mximo de 100 mA. Esta limitacin obliga a controlar la mxima corriente que disipa cada puerta. Segn la conexin de los perifricos la corriente puede ser de entrada o de salida. As, si en el interruptor de la figura se conecta el terminal libre a tierra, cuando est abierto por la patita del microcontrolador se absorbe una corriente que depender del valor de la resistencia.
Cuando por una patita del microcontrolador se gobierna el encendido y apagado de un LED la resistencia de absorcin determina la corriente que circula y la luminosidad del mismo.
Si se eleva el valor de la resistencia colocada en serie con el diodo LED la corriente que lo atraviesa baja. As, si la resistencia fuese de 270 ohmios la corriente quedara reducida a 11 mA y descendera la luminosidad del LED. Cuando se colocan varios perifricos en las patitas del mdulo hay que comprobar las limitaciones existentes por lnea y por puerta para evitar averas y fallos de funcionamiento. As, por ejemplo, si interesa colocar 8 LEDs en las lneas de una puerta, como el valor mximo de la corriente suministrada es de 100 mA el consumo de cada LED debera ser inferior a 13 mA
4.1.
Aprender a manejar el lenguaje BASIC para computadoras es una labor muy sencilla, tan simple como escribir (en ingls). En BASIC las instrucciones coinciden con el nombre en ingls de la operacin que se debe llevar a cabo. Por ejemplo, escribir o visualizar un valor en la pantalla utiliza la instruccin PRINT; para introducir por el teclado un valor se emplea la instruccin INPUT y si se desea realizar una suma basta con poner el signo + de la misma. Un lenguaje para una computadora es un conjunto de instrucciones y comandos, que la mquina es capaz de interpretar y ejecutar. Fjese en un programa en BASIC.
Este programa se entiende slo. Se introduce por el teclado en primer lugar el valor de la variable a, despus se introduce por el mismo procedimiento el valor de b y, finalmente, se visualiza el resultado de la operacin a+b. Consiste en una sucesin ordenada de las instrucciones que debe ejecutar el computador para ir procesando los datos hasta alcanzar el resultado deseado. El lenguaje BASIC fue desarrollado en I960 por J. Kemeny y T. Kurtz con la finalidad de simplificar la programacin. 4.1.1. Ventajas e inconvenientes
Se trata de un lenguaje muy sencillo que est orientado a las personas y por eso sus instrucciones recuerdan las palabras inglesas con las que se describe la operacin que realizan. Dado su parecido con el lgebra elemental es muy til para resolver problemas tcnicos de inge43
44
niera, aunque tambin es muy cmodo en las aplicaciones que manejan mucha informacin literal, tpico en los negocios. Las grandes ventajas del lenguaje BASIC desgraciadamente estn acompaadas por algunos defectos, que suelen empujar a los programadores profesionales a repudiarlo. Como mayor defecto se dice que es un lenguaje no estructurado o no procedural, de lo cual la mayor culpa tiene la instruccin GOTO, que es capaz de desviar el flujo de la ejecucin de instrucciones a cualquier parte del programa, impidiendo la posibilidad de dividir la tarea en trozos pequeos e independientes. Las normas puristas de la programacin proponen la confeccin del software en base a un pequeo programa principal, que se compone de llamadas a rutinas y procedimientos autnomos e independientes en los que se descompone la tarea a resolver. Para implementar esta estructura es necesario poder salir con facilidad del programa principal a las rutinas traspasando algunos parmetros, as como tambin poder regresar a dicho programa principal desde la rutina trayendo resultados obtenidos en esta ltima. El lenguaje BASIC no soporta completamente estas estructuras en los programas.
4.1.2.
Un mcrocontrolador es un computador metido dentro de un circuito integrado. Son computadores muy pequeos y baratos por lo que se utilizan para controlar muchos productos comunes en los que se halla incrustado dentro de los mismos, como sucede con el telfono mvil, el teclado y el ratn del computador, etc. Adems, al ser tan pequeos tienen una potencia limitada y slo sirven para realizar una tarea. En el siglo xxi la realizacin de proyectos para aplicar los microcontroladores en el gobierno y automatizacin de multitud de productos y procesos se presenta como una ingente labor que va a requerir la colaboracin de multitud de profesionales y va a ofrecer una oportunidad inigualable para quienes estn preparados adecuadamente. Los proyectos con microcontroladores exigen un trabajo con hardware consistente en adaptar las patitas del microcontrolador a los perifricos externos que hay que controlar. Adems, tambin requieren la confeccin de un programa con las instrucciones precisas para que su ejecucin origine el procesamiento de la informacin para obtener los resultados apetecidos. Para construir los programas de los microcontroladores se usan tres lenguajes:
El lenguaje Ensamblador se dice que es de bajo nivel porque sus instrucciones son exactamente las que el procesador sabe interpretar y ejecutar. En realidad, el computador digital sl o acepta instrucciones en cdigo binario y el Ensamblador facilita su escritura al programador permitiendo expresarlas mediante nemnicos, que son tres o cuatro letras significativas que referencian, en ingls, la operacin que conlleva la instruccin. Por ejemplo, una instruccin que mueve un dato de un sitio (A) a otro (B), en Ensamblador se escribe MOV A,B. El problema surge en el Ensamblador por la poca potencia de las instrucciones que es capaz de ejecutar el procesador. Normalmente las correspondientes a los microcontroladores de 8 bits que manejamos en este libro, consisten en sumar, restar, hacer operaciones lgicas AND,
45
OR, XOR, tambin rotar un dato de 8 bits, moverlo de un sitio a otro y muy poquito ms. Si deseamos hacer una multiplicacin hay que confeccionar un programa que para conseguirlo repita las sumas las veces necesarias. Es un lenguaje de bajo nivel. El programa Ensamblador lo nico que hace es traducir los nemnicos con los que se escriben las instrucciones a cdigo binario para que el procesador sea capaz de interpretarlas y ejecutarlas. Los lenguajes de alto nivel tienen instrucciones ms potentes: saben multiplicar, sacar la raz cuadrada y realizar funciones y operaciones mucho ms complicadas que las que pueden hacer las instrucciones de la mquina. Pero como la mquina es la misma, la realizacin de esas instrucciones se tiene que hacer con programas de instrucciones elementales. Cada instruccin de alto nivel se convierte en un programita de instrucciones de bajo nivel. Por eso para que el procesador pueda ejecutar las instrucciones de un lenguaje de alto nivel precisa otro programa que las descomponga en las instrucciones de bajo nivel correspondientes. A estos programas se les llama compiladores. Los compiladores se encargan de traducir un programa confeccionado con instrucciones de alto nivel a otro equivalente con instrucciones de bajo nivel. Hay una variante de estos programas que reciben el nombre de intrpretes que realizan dicha traduccin pero instruccin por instruccin, o sea, traducen una instruccin de alto nivel en las correspondientes de bajo nivel que ejecuta el procesador y a continuacin pasan a la siguiente. El microcontrolador de los mdulos BASIC Stamp contiene en su memoria de programa un Intrprete de PBASIC. Desarrollar programas en lenguaje Ensamblador exige un conocimiento profundo de la arquitectura interna del procesador, lo que requiere una buena base en Electrnica, as como formacin en Informtica. Las instrucciones de bajo nivel realizan operaciones directamente con los elementos existentes en el interior del procesador. El lenguaje C es de tipo profesional, muy completo y potente, pero su manejo exige una buena formacin en Informtica. Tambin es muy conveniente conocer la arquitectura interna del procesador y en muchas ocasiones hay que combinarlo con el lenguaje Ensamblador. El lenguaje BASIC tiene potentes instrucciones que se escriben igual que se denominan en ingls y su manejo no requiere conocimientos de arquitectura de procesadores, de Electrnica y tampoco de Informtica. Es para todos. Entiende este programa diseado para calcular el rea de un crculo introduciendo el radio?
Como se ha estudiado en el captulo anterior, el modo de funcionamiento de los mdulos BASIC Stamp est basado en depositar el programa confeccionado en PBASIC y editado en el PC en una memoria EEPROM, que puede leerse y borrarse para volver a escribirse un milln de veces. Despus, en el interior del mdulo y de forma automtica, se va pasando el programa, ordenadamente instruccin a instruccin, a un microcontrolador PIC en cuya memoria est grabado un programa Intrprete que traduce cada instruccin PBASIC en las instrucciones mquina correspondientes y procede a su ejecucin. Los dos elementos principales del mdulo BASIC Stamp son el microcontrolador, grabado con el Intrprete PBASIC en fbrica, y la EEPROM que contiene el programa editado en el PC.
46
El programa para editar (Editor) los programas en PBASIC en el PC y posteriormente transferirlos al mdulo microcontrolador est disponible libremente en el sitio de Parallax en Internet. Hay una versin para MS-DOS y otra para Windows que es la que recomendamos emplear y que conviene actualizarla de vez en cuando.
4.2.
EL EDITOR STAMP
Al ejecutar cualquiera de los dos programas de edicin en el PC disponibles en Internet o en el CD, para MS-DOS (STAMP2.EXE) o para Windows (STAMPWEXE), aparece en la pantalla del PC una ventana para la confeccin de programas. Con los iconos se pueden abrir programas ya guardados, salvar los que se crean, mandar ejecutarlos, depurar la edicin, depurar el programa de diversas maneras y un sinfn de otras funciones que slo la prctica permiten su dominio (Figura 4.l ).
FORMATO DE EDICIN DE PROGRAMAS EN PBASIC Etiquetas. Los programas en PBASIC no numeran las lneas y es una de las novedades ms interesantes respecto a los BASIC clsicos. Cuando se desea hacer mencin a una instruccin como no tiene nmero se le antepone una etiqueta identificativa.
47
El nombre de las etiquetas no puede coincidir con el de las instrucciones o variables usadas; su primer carcter no puede ser un nmero, y la primera vez que se usan deben estar seguidas por dos puntos (:). Constantes. Se pueden declarar en decimal, hexadecimal, binario y ASCII. Ejemplos:
Variables y constantes. Para facilitar la programacin se utilizan etiquetas para hacer referencia a variables y a constantes. Se emplea el comando CON. Ejemplos:
Comentarios. Detrs de cada instruccin se recomienda escribir algn comentario para facilitar la finalidad de la misma. El procesador ignora los comentarios. Delante del comentario se puede poner REM o un apstrofe. Ejemplos:
Operaciones aritmticas y lgicas. En la tabla de la Figura 4.2 se indican los smbolos utilizados para las diversas operaciones posibles en PBASIC. En la realizacin de las operaciones el PBASIC opera siempre de izquierda a derecha; por ejemplo, 5 + 4 * 7 se lleva a cabo como (5 + 4) * 7. Reserva de posiciones en la memoria de datos. El lenguaje PBASIC reserva las primeras posiciones de la memoria de datos del procesador. Las tres primeras palabras se reservan para Pines de Entrada INS, que es un registro que almacena la informacin de los pines de E/S cuando son entrada; Pines de Salida OUTS, registro que contiene la informacin a sacar por los pines que actan como salida, y Bits de direccionamiento de los Pines DIR. Si a un bit de este ltimo registro se carga con un 0 el pin correspondiente queda configurado como entrada, mientras que si se carga con un I acta como salida. Las I3 siguientes palabras (WO-W I2) que pueden utilizarse en tamao byte (130-1325) estn disponibles para guardar variables y datos del usuario en los programas. (Vase la tabla de la Figura 4.3 en la que se expresa esta distribucin de la memoria).
48
49
El mdulo BS2-IC tiene I6 Pines de entrada y salida disponibles para el usuario en donde se pueden colocar los perifricos a controlar. Para configurar a los I6 Pines como salida hay que escribir en el programa: DIRS = %11111111111111111. 4.3. EL REPERTORIO DE INSTRUCCIONES PBASIC
Se ofrece un breve resumen del cometido de las instrucciones del PBASIC para los lenguajes del Intrprete del mdulo BS2-IC. Manejndolas prcticamente se llega a dominarlas en muy poco tiempo. Para obtener una completa informacin de las instrucciones PBASIC le recomendamos acuda al Manual del PBASIC en Internet y al tutorial Qu es un microcontrolador?.
INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES
50
INSTRUCCIONES DE SALTO
INSTRUCCIONES NUMRICAS
51
52
4.4.
EL PRIMER PROGRAMA
Vamos a ir describiendo con esquemas y fotos la realizacin de un primer programa muy sencillo. Para la implementacin fsica de este y otros ejercicios didcticos hemos escogido al Laboratorio de Prcticas UNIVERSAL TRAINER que junto con el Mdulo PBASIC contienen todos los elementos necesarios para desarrollar multitud de proyectos propuestos en sus Manuales as como diseo reales. En el volumen 2 de la obra Laboratorio de Prcticas de Microelectrnica, editada por McGraw-Hill, se describe una coleccin de ejercicios con los mencionados recursos que posibilitan formarse en el diseo real de proyectos con microcontrolador tanto en PBASIC como con Ensamblador (Mdulo PIC I) cmoda y rpidamente con un coste muy asequible. Todos estos materiales los comercializa Ingeniera de Microsistemas Programados, S. L. (www.microcontroladores.com).
53
Con objeto de adaptar el mdulo OEM BS2-IC a las caractersticas especficas del entrenador Universal Trainer se han realizado unas pequeas modificaciones en el conexionado de sus pines. A esta tarjeta ligeramente transformada la llamaremos OEM BS2-IC / MSE, se muestra una fotografa en la Figura 4.5 y tiene las siguientes peculiaridades: Las lneas PO a P15 y la lnea RES disponen de espadines para conexionado horizontales que sita al mdulo paralelo a la protoboard del entrenador en lugar de vertical. De esta forma se leen mejor los pines y se puede cerrar la tapa del maletn con el circuito montado. 2. Para diferenciar y facilitar la conexin de la alimentacin las patitas Vin, Vss y VDD disponen espadines verticales sobre la tarjeta PCB. 3. Se proporciona un conector para los tres espadines de alimentacin que dispone de dos cables, uno rojo que va a V DD y otro negro que va a Vss. El espadn Vin queda sin conexin. El cable rojo hay que conectarlo al terminal + 5 V de la fuente de alimentacin regulada del entrenador. El cable negro se conecta a la GND de dicha fuente del Universal Trainer. Cuando se dispone de una fuente estabilizada de + 5 VDC se evita el funcionamiento del regulador LM2940 del mdulo OEM BS2-1C y su calentamiento, ya que al disponer de tensin de +5 V estabilizada en el entrenador se aplica directamente a V DD, como se aprecia en el esquema de la Figura 4.4. La adaptacin del mdulo OEM BS2-1C con la puerta serie del PC se realiza con un cable con dos conectores DB9 en sus extremos que tienen cortocircuitados los terminales 6 y 7 para la deteccin automtica del puerto usado (vase la Figura 4.6).
1. 1. Parte: Nos reconoce y obedece el mdulo?
54
SS
Soy tu esclavo. Ejecutar todas tus rdenes en PBASIC 2." Parte: Comprobar que el mdulo emite sonidos
56
A continuacin, proponemos al lector una serie de prcticas propuestas en el Mdulo PBASIC y que vienen recogidas en el volumen 2 de Laboratorio de Prcticas de Microelectrnica, de la editorial McGraw-Hill.
4.5. 4.5.1.
Comprender, manejar instrucciones, habituarse a trabajar con las herramientas hardware y software y ejecutar programas en PBASIC para gobernar perifricos digitales simples.
57
4.5.2.
En esta prctica se va a combinar el funcionamiento del zumbador con un diodo LED luminiscente. El Universal Trainer dispone de un zumbador y ocho diodos LED. Cada uno de estos sencillos perifricos digitales dispone de una entrada en la que si se aplica un nivel lgico alto el zumbador pita y el LED se enciende. Los circuitos elctricos de conexionado de dichos perifricos se presentan en la Figura 4.1.
Se describen de forma resumida las instrucciones PBASIC que se van a utilizar: HIGH pin: Configura como salida al pin especificado y saca un nivel alto por l. LOW pin: Configura como salida al pin especificado y saca un nivel bajo por l. PAUSE valor: Retardo o pausa de un tiempo en milisegundos indicado en valor. DEBUG xxx: Visualiza en la pantalla del depurador el valor indicado en xxx.
4.5.3.
Esquema electrnico
En la Figura 4.I0 se ofrece el esquema de conexionado del mdulo OEM BS2-IC / MSE con los perifricos y la fuente de alimentacin del Universal Trainer.
4.5.4.
Materiales necesarios
Entrenador Universal Trainer. Mdulo OEM BS2-IC / MSE. Cable serie para conectar el PC. Cables de conexin.
58
4.5.5.
Montaje prctico
La fotografa de la Figura 4.11 muestra la disposicin del mdulo Parallax sobre el Universal Trainer y los cables que conectan los dos perifricos que se emplean en esta prctica y la fuente de alimentacin.
4.5.6.
En esta experiencia se trata de encender durante 2 segundos el diodo LED conectado en la patita P0, mientras durante ese tiempo el zumbador est en silencio. Luego, durante 3 segundos. el zumbador produce un pitido mientras el LED permanece apagado. Adems, el programa debe visualizar en la pantalla del depurador el nombre del ejercicio LUZ Y SONIDO , as
59
como el mensaje de ILUMINA mientras el LED est encendido y el mensaje PITA cuando suena el zumbador. El programa propuesto es:
Una vez editado el programa conecte el PC al mdulo OEM BS2-IC, que ya estar conexionado con los cables a la fuente y a los perifricos, y conecte la energa al Universal Trainer. Ejecute el programa y si todo sale bien se enciende 2 segundos el LED y luego pita durante 3 segundos el zumbador. Adems, en la pantalla del depurador aparece el mensaje ILUMINA cuando est encendido el LED y el mensaje PITA cuando el zumbador suena. Pero todos estos mensajes y el primero de LUZ Y SONIDO salen todos seguidos de la siguiente forma: LUZ Y SONIDOILUMINAPITAILUMINAPITAILUMINAPITAILUMINA...
4.5.7.
Trabajo personal
El resultado ofrecido en la pantalla del depurador en el programa anterior no es muy atractivo y le proponemos que le mejore. Para ello cada vez que salga un mensaje va a indicar que se produzca un Retorno de Carro (cr) para que el siguiente mensaje salga en la lnea siguiente. Adems, detrs del mensaje PITA va a colocar dos retornos de carro para diferenciar cada secuencia de encendido y pitido. Las instrucciones de debug quedarn modificadas de la siguiente forma:
Haga las correcciones sintcticas en el programa y ejectelo. Debern quedar presentados los mensajes uno en cada lnea y dejando dos lneas entre cada secuencia de luz y sonido. Si todo le sale bien cambie los retardos y procure modificar el programa para obtener diferentes resultados. Si tiene problemas, enhorabuena! Va a aprender mucho ms y debe ser capaz de alcanzar los objetivos marcados. Pero recuerde no est solo. Ingeniera de Microsistemas Programados, S. L., y Parallax le pueden ayudar (www.microcontroladores.com).
60 4.6.
4.6.1. Objetivos
Manejar perifricos de entrada que gobiernen el funcionamiento de otros de salida. Emplear instrucciones de salto condicional y de salto a subrutina, y aprender a definir variables.
4.6.2.
En esta prctica vamos a regular el comportamiento de dos diodos LED que simulan las luces roja y verde de un semforo. Adems. cuando se encienda la luz verde un zumbador pitar durante cortos perodos. Finalmente, existe un interruptor que permite el funcionamiento del semforo cuando introduce un nivel alto por una patita del mdulo microcontrolador. Si introduce un nivel bajo el semforo tiene encendida la luz roja y el zumbador est en silencio. En la Figura 4.11 se muestra un esquema del conexionado del perifrico de entrada. o sea, el interruptor utilizado por primera vez en esta coleccin de ejemplos. El programa del semforo sonoro utiliza las siguientes nuevas instrucciones: INO: La patita o pin 0 del mdulo queda asignada como entrada digital. IF condicin THEN etiqueta : Si se cumple la condicin se pasa a ejecutar la instruccin de la etiqueta y si no se cumple se ejecuta la siguiente. GOSUB etiqueta: Se salta a una subrutina que comienza en la instruccin de la etiqueta. RETURN: Es una instruccin que se pone al final de una subrutina y que devuelve el control de la ejecucin a la siguiente instruccin despus de gosub. x VAR bit: No es una instruccin PBASIC sino un comando del Editor para indicar que la variables tiene el tamao de un bit.
61
4.6.3.
Esquema electrnico
En la Figura 4.I2 se muestra el conexionado de las patitas del mdulo OEM BS2-IC / MSE. con los perifricos del diseo y las salidas de la fuente de alimentacin del Universal Trainer.
4.6.4.
Materiales necesarios
4.6.5. Montaje prctico En la fotografa de la Figura 4.I3 se presenta la disposicin del mdulo microcontrolador sobre la tarjeta protoboard del entrenador y el conexionado con los perifricos y la fuente de alimentacin. 4.6.6. Desarrollo de la prctica y ejecucin del programa
Las especificaciones del proyecto son las siguientes: Hay que gobernar las luces roja y verde de un semforo, que estn simuladas con diodos LED que se conectan a las patitas P15 (roja) y P14 (verde) del mdulo. Para avisar a los viandantes de que pueden atravesar la calle cuan-
62
do la luz verde est encendida, hay un zumbador que pila en esa circunstancia a intervalos de 400 milisegundos. Normalmente el semforo slo deja pasar los coches y tiene encendida la luz roja de peatones y el zumbador en silencio. Cuando se desea poner en marcha para pasar los viandantes se desplaza un interruptor, que al introducir un nivel lgico alto por la patita PO del mdulo inicia la secuencia de encendido de la luz verde durante 2 segundos, mientras la roja est apagada. Luego se produce el encendido de la roja y el apagado de la verde durante 2 segundos y se repite continuamente el ciclo hasta que se desplaza el interruptor para introducir un nivel bajo y el semforo pasa su condicin habitual de luz roja encendida y verde apagada. Cuando la luz verde est encendida, el zumbador pita durante 400 ms y se calla durante los 400 ms siguientes hasta finalizar los 2 segundos.
63
4.6.7.
Trabajo personal
Una gran parte del programa de este ejercicio lo ocupaban las instrucciones de la subrutina pit que haca generar un pitido interminente de 400 ms de duracin durante 2 segundos. Todava esta subrutina sera mucho ms larga si la intermitencia del pitido fuese cada 250 ms. Se pide rehacer la subrutina de pitido para confeccionarla con el mnimo nmero de instrucciones y con una intermitencia de 250 ms.
4.7. 4.7.1.
Implementar un contador binario de 8 bits en base a 8 diodos LED conectados a las 8 lneas de salida de menos peso que soportan los pines PO-P7 del mdulo OEM BS2-IC / MSE. Poner en marcha el contador al pulsar brevemente un pulsador y al cabo del contaje desde 0 a 255 cada 100 ms activar el zumbador de alarma. Aprender a manejar las variables OUTL y DIRL. Aplicar la instruccin FOR...NEXT para repetir un bucle de instrucciones un nmero conocido de veces. 4.7.2. Fundamentos tericos bsicos e instrucciones empleadas
Se propone manipular a 8 diodos LED colocados en las patitas PO-P7 que conforman OUTL, para direccionarlas como salidas con la asignacin de DIRL = % 11111111. Estos 8 diodos luminiscentes van a visualizar el contaje en tiempo real de un contador binario de 8 bits que va a ir pasando unidad a unidad desde el valor 0 hasta 255, que es el mximo y en el que los 8 LED quedarn encendidos. La puesta en marcha del contador desde el valor inicial se produce al apretar durante un breve perodo de tiempo un pulsador conectado a la patita P14 del mdulo BS2-IC. Finalmente, al llegar al valor final 255 en binario se activa un zumbador conectado a la patita P15.
64
La instruccin fundamental que gobierna esta experiencia es la que se encarga de repetir un nmero predeterminado de veces un bucle de instrucciones. Dicha instruccin ejecuta un bucle DESDE UN VALOR MNIMO A UNO FINAL de la variable que se incrementa una unidad cada vez que pasa por el bucle. Se trata de la instruccin FOR VARIABLE=MIN TO VARIABLE=MAX... ejecuta instrucciones del bucle e incrementa la variable con NEXT. El programa del contador binario con alarma utiliza las siguientes nuevas instrucciones: LED VAR OUTL: Asigna el nombre LED a los elementos conectados a las 8 lneas de menos peso de las lneas de salida OUTL. DIRL = % 11111111: Configura como salidas las 8 lneas de menos peso (PO-P7) de la puerta de Entrada/Salida. FOR CONTA = 0 TO 255...... NEXT: Realiza una serie de instrucciones que forman un bucle un nmero de veces determinado por la transicin de la variable (CONTA) desde el valor 0 hasta el 255. Cada vez que ejecuta el bucle incrementa una unidad la variable. LED = CONTA: Los 8 LED conectados a las patitas PO-P7 toman el valor binario de la variable CONTA cada vez que se realiza el bucle y visualizando el nmero binario correspondiente.
4.7.3.
Esquema electrnico
En la Figura 4.I4 se muestra el conexionado de las patitas del mdulo OEM BS2-IC / MSE. con l os perifricos del diseo y las salidas de la fuente de alimentacin del Universal Trainer.
65
4.7.4.
Materiales necesarios
4.7.5.
Montaje prctico
En la fotografa de la Figura 4.15 se presenta la disposicin del mdulo microcontrolador sobre la tarjeta protoboard del entrenador y el conexionado con los perifricos y la fuente de alimentacin.
4.7.6.
La prctica pone en marcha el contador CONTA desde el valor inicial 0 cuando se pulsa brevemente el pulsador conectado a la patita de entrada 14. Desde ese instante cada algo ms de 1 00 milisegundos se ejecuta un bucle que visualiza en 8 diodos LED conectados a las patitas PO-P7 (OUTL) el valor binario del contador, incrementa el conteo y hace un retardo de 100 milisegundos. Cuando alcanza el conteo final de 255 que corresponde a 8 bits 1 en las patitas PO-P7 activa el sonido de un zumbador conectado a la patita P15 del mdulo microcontrolador. El programa es el siguiente:
66
5.1.
Nuestro maravilloso PIC pertenece a la familia de la gama media y dentro de ella es uno de l os ms pequeos; slo tiene 18 patitas. Adems es el que dispone de menos recursos. El resto de sus parientes tiene conversores AD y DA, comparadores analgicos, tensin interna de referencia, ms lneas de E/S, ms capacidad en sus memorias, varios temporizadores y un largo etctera de dispositivos de los que el PIC16X84 carece. Es pobre de nacimiento. Pero nosotros hemos elegido a este PIC, en sus dos versiones C y F, porque cumple con los requisitos esenciales para ensear a manejar los microcontroladores y comenzar a disear proyectos. Es prctico, es sencillo y es econmico, pudiendo considerar como el paradigma para su empleo en todos los pequeos proyectos que realizan los aficionados, los estudiantes y quienes prefieren progresar en sus conocimientos de lo fcil a lo difcil. Creemos que sabiendo manejar un PIC, el hacerlo con todos los dems es muy fcil.
La razn exclusiva de su inters se debe al tipo de memoria de programa que posee. En el caso del PIC 16C84 se trata de una EEPROM de 1 K palabras de 14 bits cada una. El PIC 16F84 tiene la misma capacidad de memoria de instrucciones, pero de tipo FLASH. Ambos disponen de 64 bytes de EEPROM como memoria de datos auxiliar y opcional. La memoria EEPROM y la FLASH son elctricamente grabables y borrables, lo que permite escribir y borrar el programa bajo prueba, manteniendo el microcontrolador en el mismo zcalo y usando el mismo dispositivo para grabar y borrar. Esta caracterstica supone una gran ventaja con la mayora de los microcontroladores, que tienen como memoria de programa reescribible una tipo EPROM. Se graban elctricamente, pero para borrarlas hay que someterlas durante cierto tiempo a rayos ultravioleta, lo que implica sacar del zcalo al circuito integrado y colocarlo en un borrador de EPROM. 67
68
Microchip ha introducido la memoria FLASH porque tiene mejores posibilidades de aumentar su capacidad con relacin a la EEPROM. Tambin por su mayor velocidad y menor consumo. No obstante, la EEPROM es capaz de soportar 1.000.000 de ciclos de escritura/borrado, frente a los 1.000 de la FLASH. Otra ventaja del PIC16X84 en cuanto a simplificar el proceso de escritura, borrado y reescritura de programas, tan necesario en la fase de diseo, es su sistema de grabacin de datos, que se realiza en serie. Para escribir un programa en la memoria se manda la informacin en serie usando slo dos patitas: la RB6 para la seal de reloj y la RB7 para los bits de datos serie. Mostramos a continuacin la tarjeta de presentacin de los PIC 16X84 con sus datos personales ms significativos.
5.1.1.
Se comercializan diferentes modelos que responden a la nomenclatura genrica PIC16X8X, atendiendo a diversas caractersticas. 1. Frecuencia mxima de funcionamiento. 2. Tipo de oscilador externo usado para generar la frecuencia de reloj. 3. Margen del voltaje de alimentacin.
69
Los modelos que tienen las letras C, F o CR intermedias admiten el rango de voltaje de alimentacin estndar, que es el que oscila de 4 a 4,5 V DC como mnimo, hasta 5,5 a 6 V DC como mximo. Los modelos con las letras LC, LF o LCR intermedias admiten el margen de voltaje extendido, que abarca desde los 2 V hasta los 6 V DC. En la tabla de la Figura 5.1 se indican las principales caractersticas de algunos modelos, atendiendo a la frecuencia mxima y al tipo de oscilador usado.
La buena aceptacin en el mercado del primognito PIC 16C84 ha animado al fabricante Microchip a comercializar nuevas versiones. Ha diseado cuatro nuevos modelos que se muestran en la Figura 5.2. Dos de ellos intercalan la letra F, que significa que la memoria
70
EEPROM se ha sustituido por otra tipo FLASH. Los otros dos modelos la sustituyen por memoria ROM con mscara, pero todos ellos mantienen los 64 bytes de EEPROM para datos. Tambin existen los modelos PIC16F87X enormemente ms potentes que el PIC16F84 y que se estudian en el segundo volumen de esta obra.
5.1.2.
Diferencias
5.2.
EL ASPECTO EXTERNO
Nuestro fabuloso PIC est fabricado con tecnologa CMOS de altas prestaciones y encapsulado en plstico con 18 patitas (Figura 5.3). Se comenta brevemente la misin de cada una de las patitas. VDD: Patita por la que se aplica la tensin positiva de la alimentacin. Vss: Patita conectada a tierra o negativo de la alimentacin. OSC1/CLKIN: Patita por la que se aplica la entrada del circuito oscilador externo que proporciona la frecuencia de trabajo del microcontrolador. OSC2/CLKOUT: Patita auxiliar del circuito oscilador. MCLR#: Esta patita es activa con nivel lgico bajo, lo que se representa con el smbolo #. Su activacin origina la reinicializacin o Reset del PIC. Tambin se usa esta patita durante la grabacin de la memoria de programa para introducir por ella la tensin, V pp, que est comprendida entre 12 y 14 V DC.
71
La lnea RA4 multiplexa otra funcin expresada por TOCKI. En este segundo caso sirve para recibir una frecuencia externa para alimentar al temporizador interno TMR0.
RBO - RB7: Estas 8 patitas corresponden a las 8 lneas de E/S digitales de la Puerta B.
La lnea RBO multiplexa otra funcin, que es la de servir como entrada a una peticin externa de una interrupcin, por eso se la denomina RBO/INT.
EJEMPLO
SOLUCIN
5.3.
La frecuencia de trabajo del microcontrolador es un parmetro fundamental a la hora de establecer la velocidad en la ejecucin de instrucciones y el consumo de energa. Cuando un PIC16X8X funciona a 10 MHz, le corresponde un ciclo de instruccin de 400 ns, puesto que cada instruccin tarda en ejecutarse cuatro perodos de reloj, o sea, 4 x 100 ns = 400 ns. Todas las instrucciones del PIC se realizan en un ciclo de instruccin, menos las de salto, que tardan el doble. Los impulsos de reloj entran por la patita OSC1/CLKIN y se dividen por 4 internamente, dando lugar a las seales Ql, Q2, Q3 y Q4, mostradas en la Figura 5.4. Durante un ciclo de instruccin, que comprende las 4 seales mencionadas, se desarrollan las siguientes operaciones:
Para conseguir ejecutar cada instruccin en un ciclo de instruccin (excepto las de salto, que tardan dos), se aplica la tcnica de la segmentacin o pipe-fine, que consiste en realizar en paralelo las dos fases que comprende cada instruccin.
72
En realidad, cada instruccin se ejecuta en dos ciclos: en el primero se lleva a cabo la fase de bsqueda del cdigo de la instruccin en la memoria del programa, y en el segundo se decodifica y se ejecuta (fase de ejecucin). La estructura segmentada del procesador permite realizar al mismo tiempo la fase de ejecucin de una instruccin y la de bsqueda de la siguiente. Cuando la instruccin ejecutada corresponde a un salto no se conoce cul ser la siguiente hasta que se complete, por eso en esta situacin se sustituye la fase de bsqueda de l a siguiente instruccin por un ciclo vaco, originando que las instrucciones de salto tarden en realizarse dos ciclos de instruccin (Figura 5.5).
73
La tcnica de la segmentacin unida a la arquitectura Harvard del procesador permite al PIC16F84 superar la velocidad de sus competidores directos. As, por ejemplo, es 1,54 veces ms rpido que el microcontrolador de Motorola 68HC05, cuando ambos funcionan a la misma frecuencia de 4 MHz. EJEMPLO
SOLUCIN
5.3.1.
Tipos de osciladores
Los PIC admiten cuatro tipos de osciladores externos para aplicarles la frecuencia de funcionamiento. E1 tipo empleado debe especificarse en dos bits (FOSC1 y FOSCO) de la Palabra de Configuracin, como se comenta ms adelante. Oscilador tipo RC Se trata de un oscilador de bajo coste formado por una simple resistencia y un condensador. Proporciona una estabilidad mediocre de la frecuencia, cuyo valor depende de los valores de los dos elementos de la red R-C (Figura 5.6).
74
EJEMPLO
SOLUCIN
Oscilador tipo HS Se trata de un oscilador que alcanza una alta velocidad comprendida entre 4 y 10 MHz y est basado en un cristal de cuarzo o un resonador cermico. Oscilador tipo XT Es un oscilador de cristal o resonador para frecuencias estndar comprendidas entre 100 KHz y 4 MHz. Oscilador tipo LP Oscilador de bajo consumo con cristal o resonador diseado para trabajar en un rango de frecuencias de 35 a 200 KHz. El cristal de cuarzo o el resonador cermico se coloca entre las patitas OSC1 y OSC2 (Figura 5.7).
75
EJEMPLO
SOLUCIN
5.4.
REINICIALIZACIN O RESET
Cuando se aplica un nivel lgico bajo en la patita MCLR# el microcontrolador reinicializa su estado. Dos acciones importantes se producen en la reinicializacin o Reset:
1. E1 Contador de Programa se carga con la direccin 0, apuntando la primera direccin de la memoria de programa en donde deber estar situada la primera instruccin del programa de aplicacin. La mayora de los registros de estado y control del procesador toman un estado conocido y determinado.
2.
Se puede ocasionar el Reset de varias maneras, que estudiaremos ms adelante. El circuito ms simple para provocar un Reset manualmente al presionar un pulsador se muestra en la Figura 5.8. 5.5. EL PRIMER CIRCUITO PRCTICO
Con lo poco que sabemos ya se puede poner en marcha el PIC 16X84. Conocemos la funcin de todas las patitas, 13 de las cuales se emplean para adaptarse con los perifricos externos. De las 5 patitas restantes, dos (V DD y V ss ) aplican la tensin de alimentacin, otras dos (OSC1 y OSC2) soportan el cristal de cuarzo del reloj externo, y la que queda (MCLR#), ya se ha expuesto cmo hay que conectarla para generar el Reset. En los circuitos donde se usa un PIC 16X84 es muy habitual utilizar como tensin de alimentacin la de 5 V normalizada y como circuito de reloj externo uno de tipo XT a una fre-
76
cuencia de 4 MHz. Con esta configuracin, el conexionado fijo para cualquier aplicacin del PIC es el mostrado en la Figura 5.9. Las patitas que no se hallan conectadas en la Figura 5.9 son las dedicadas a transferir informacin con los perifricos que utilice la aplicacin. Para hacer operativo dicho esquema vamos a conectar algunos perifricos sencillos, que no por eso son los menos usados.
Como perifrico de entrada utilizaremos un interruptor (11) que se conecta a la lnea RA1 de la Puerta A. Como perifrico de salida se colocar un diodo led (L3) en la lnea RB3 de la Puerta B. Segn el interruptor se abra o se cierre introducir un nivel lgico alto o bajo. Cuando est abierto aplica a la patita RA1 un nivel lgico alto a travs de la resistencia de pullup de 10 K. Si se cierra, al conectarse con tierra, introduce un nivel bajo (Figura 5.10). Aprovechando la corriente de salida de las lneas de la Puerta B, en torno a los 25 mA, conectaremos directamente el diodo led L3 a la patita RB3, a travs de una resistencia de absorcin de 330 ohms.
77
5.6.
El PIC precisa una circuitera auxiliar comn para cualquier aplicacin, cambiando nicamente el conexionado de las lneas de E/S a los perifricos. Existe una forma muy eficaz de desarrollar el prototipo de un diseo mediante una tarjeta de circuito impreso premontada y con una zona libre para instalar y tablear los perifricos. Una tarjeta de prototipos consta de dos zonas. En una se ubica el zcalo que alojar al mi-crocontrolador con el programa ya grabado junto a la circuitera comn (alimentacin, reloj y Reset). En la otra zona slo existe un rea de agujeros perforados y estaados, sobre los que se conectarn los perifricos y se unen 'fcilmente con las lneas de E/S que quedan accesibles. En l a Figura 5.11 se muestra una tarjeta de prototipos para PIC de 18 patitas, diseada por Ingeniera de Microsistemas Programados, S. L. Una ventaja adicional de esta tarjeta es que adems del zcalo donde se ubica el PIC, existe otro de 18 patitas, donde quedan disponibles las del microcontrolador, que puede conectarse por cable plano con un sistema de desarrollo o un grabador para que el PIC 16X8X resida en el propio grabador y se pueda escribir y borrar el programa hasta que quede definitivamente a punto. Llegado ese momento, se quita el cable plano del grabador y se coloca el PIC grabado en el zcalo de la tarjeta de prototipos. En la Figura 5.12 se muestra el esquema elctrico de la circuitera que viene montada en la tarjeta de prototipos PIC 1 8-ME y que es la imprescindible para el funcionamiento del mi-
78
79
crocontrolador. La alimentacin es de 12 VAC procedente de un transformador externo y aplicada a travs del conector J2. El diodo DI rectifica la corriente alterna y el condensador C1 acta como filtro. E1 regulador de tensin U2, modelo mA7805, junto con C2, proporciona la tensin de trabajo estabilizada de + 5 V Tambin es posible alimentar al circuito con una pila de 9V. Las patitas de las Puertas A y B del PIC colocado en el zcalo de la tarjeta quedan accesibles desde el conector de aplicacin por el que se unen con los perifricos alojados en la zona libre. Dichas patitas tambin estn disponibles, junto a la lnea de Reset MCLR#, en el conector J1 PIC-BUS, capaz de conectarse con el sistema de desarrollo Micro'PIC Trainer con un cable plano de 26 hilos. Adems de las patitas de las lneas de E/S de las Puertas, en el conector de aplicacin existen dos contactos para la seal de Reset, MCLR#, y para la seal de salida del oscilador interno, CLKOUT. La tarjeta de prototipos PIC18-ME es una herramienta rpida, compacta y segura para construir el prototipo de cualquier diseo que utiliza un PIC de 18 patitas. Existen modelos para alojar microcontroladores de 28 y 40 patitas.
6.1.
Para lograr una compactacin del cdigo ptima y una velocidad superior a la de sus competidores los microcontroladores PIC incorporan en su procesador tres de las caractersticas ms avanzadas en los grandes computadores:
Con la incorporacin de estos recursos los PIC son capaces de ejecutar en un ciclo de instruccin todas las instrucciones, excepto las de salto, que tardan el doble. Una condicin imprescindible es la simetra y ortogonalidad en el formato de las instrucciones, que en el caso de los PIC de la gama media tienen una longitud de 14 bits. De esta forma se consigue una compactacin en el cdigo del programa para un PIC16F84 2,24 veces superior al de un 68HC05, funcionando a la misma frecuencia. El juego de instrucciones se reduce a 35 y sus modos de direccionado se han simplificado al mximo. Con la estructura segmentada se pueden realizar simultneamente las dos fases en que se descompone cada instruccin. Al mismo tiempo que se est desarrollando la fase de ejecucin de una instruccin se realiza la fase de bsqueda de la siguiente.
El aislamiento y diferenciacin de los dos tipos de memoria (instrucciones y datos) permite que cada uno tenga la longitud y el tamao ms adecuados. De esta forma en el PIC 16F84 la longitud de los datos es de un byte, mientras que la de las instrucciones es de 14 bits (vase Figura 6.1). 81
82
Otra caracterstica relevante de los PIC es el manejo intensivo del Banco de Registros, los cuales participan de una manera muy activa en la ejecucin de las instrucciones. Como se muestra en la Figura 6.2, la ALU efecta sus operaciones lgico-aritmticas con dos operandos, uno que recibe desde el registro W (Work), que hace las veces de Acumulador en los microprocesadores convencionales, y otro que puede provenir de cualquier registro o del propio cdigo de instruccin. El resultado de la operacin puede almacenarse en cualquier registro o en W. Esta funcionalidad da un carcter completamente ortogonal a las instrucciones que pueden utilizar cualquier registro como operando fuente y destino. La memoria de datos RAM implementa en sus posiciones los registros especficos y los de propsito general. La arquitectura interna del PIC 16C84 se presenta en la Figura 6.3 y consta de siete bloques fundamentales.
83
Para analizar de forma global el funcionamiento del procesador nos vamos a centrar en la ejecucin de una instruccin. Todo comienza con la fase de bsqueda, que la inicia el Contador de Programa facilitando la direccin de la memoria de instrucciones donde se ubica. Su c-
84
digo binario de 14 bits se lee y se carga en el Registro de Instrucciones, desde donde se transfiere al Decodificador y a la Unidad de Control. A veces, dentro del cdigo de la instruccin, existe el valor de un operando (literal) que se introduce como operando a la ALU, o bien una direccin de la memoria de datos donde reside otro operando. La ALU es la encargada de realizar la operacin lgico-aritmtica que implica la instruccin decodificada. Uno de los operandos lo recibe desde el registro W y el otro desde un registro o de la propia instruccin. Tanto el banco de registros especficos, en el que cada uno tiene una misin concreta, como el de registros de propsito general residen en la RAM. La EEPROM de datos puede contener datos que no se desee perder al desconectar la alimentacin, pero su acceso est controlado con unos registros especiales.
Las operaciones de E/S con los perifricos las soportan las Puertas A y B. Existe un Temporizador, TMRO, para encargarse de las funciones de control de tiempos. Finalmente, hay unos circuitos auxiliares que dotan al procesador de unas interesantes posibilidades de seguridad, reduccin del consumo y reinicializacin. 6.1.1. Diferencias de la arquitectura del PIC16C84 con la de sus variantes
La arquitectura del PIC16C84 se mantiene para todos los modelos que se derivan de ella, con las siguientes diferencias: PIC16F84: La memoria de programa es de 1K x 14 bits, pero de tipo FLASH. La memoria de datos RAM tiene 68 registros de tamao byte de propsito general, en lugar de 36. PIC16CR84: La memoria de programa es de 1K x 14 bits tipo ROM y la de datos tiene iguales caractersticas que el PIC16F84. PIC16F83: La memoria de programa es de 512 palabras de 14 bits y la RAM de datos tiene 36 bytes de registros de propsito general. PIC16CR83: Igual que el PIC16F83, pero la memoria de instrucciones es de tipo ROM, o sea, slo grabable en fbrica y utilizada en grandes series.
85
6.2.
MEMORIA DE PROGRAMA
La arquitectura de los PIC de la gama media admite un mapa de memoria de programa capaz de contener 8.192 instrucciones de 14 bits cada una. Este mapa se divide en pginas de 2.048 posiciones. Para direccionar 8 K posiciones se necesitan 13 bits, que es la longitud que tiene el Contador de Programa. Sin embargo, el PIC16C84 slo tiene implementadas 1 K posiciones, por lo que ignora los 3 bits de ms peso del PC. En la gama media, la verdadera aportacin del PIC16C84 es la utilizacin de una memoria de programa del tipo EEPROM, capaz de ser escrita y borrada elctricamente. Lo mismo sucede con el PIC16F84, cuya memoria de instrucciones es de tipo FLASH.
6.2.1.
Tal como se presenta en la Figura 6.4, el rango de direcciones que cubre el PIC 16X84 en su memoria de programa llega desde la 0000 H a la 03FF H, o sea, un total de 1.024 posiciones.
86
En el PC se ignoran los 3 bits de ms peso, de forma que apuntar a la direccin 33 H es lo mismo que hacerlo a la 433 H, 833 H, C33 H, 1033 H, 1433 H o a la 1C33 H.
Al igual que todos los registros especficos que controlan la actividad del procesador, el Contador de Programa est implementado sobre un par de posiciones de la memoria RAM. Cuando se escribe el Contador de Programa como resultado de una operacin de la ALU, los 8 bits de menos peso del PC residen en el registro PCL, que ocupa, repetido, la posicin 2 de los dos bancos de la memoria de datos. Los bits de ms peso, PC< 12 :8>, residen en los 5 bits de menos peso del registro PCLATH, que ocupa la posicin OA H de los dos bancos de la memoria RAM. En las instrucciones GOTO y CALL de la gama media los 11 bits de menos peso del PC provienen del cdigo de la instruccin y los otros dos de los bits PCLATH <4 :3> (vase Figura 6.5). Con los 11 bits que se cargan en el PC desde el cdigo de las instrucciones GOTO y CALL, se puede direccionar una pgina de 2 K de la memoria. Los bits restantes PC< 12 :11> tienen la misin de apuntar una de las cuatro pginas del mapa de memoria y, en los modelos de PIC que alcanzan ese tamao, dichos bits proceden de PCLATH<4 :3>. La Pila es una zona aislada de las memorias de instrucciones y datos. Tiene una estructura LIFO, en la que el ltimo valor guardado es el primero que sale. Tiene 8 niveles de profundidad, cada uno con 13 bits. Funciona como un buffer circular, de manera que el valor que se obtiene al realizar el noveno desempilado (pop) es igual al que se obtuvo en el primero. La instruccin CALL y las interrupciones originan la carga del contenido del PC en el nivel superior o cima de la Pila. El contenido del nivel superior se saca de la Pila al ejecutar las instrucciones RETURN, RETLW y RETFIE. El contenido del registro PCLATH no es afectado por la entrada o salida de informacin de la Pila.
6.3.
La memoria de datos del PIC16C84 dispone de dos zonas diferentes: l.a rea de RAM esttica o SRAM, donde reside el Banco de Registros Especficos (SFR) y el Banco de Registros de Propsito General (GPR). El primer banco tiene 24 posiciones de tamao byte, aunque dos de ellas no son operativas, y el segundo 36. 2.a rea EEPROM de 64 bytes, donde opcionalmente se pueden almacenar datos que no se pierden al desconectar la alimentacin. La zona de memoria RAM se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno. En el PIC16C84 slo se hallan implementadas fsicamente las 48 primeras posi-
87
ciones de cada banco, de las cuales las 12 primeras estn reservadas a los Registros de Propsito Especfico (SFR), que son los encargados del control del procesador y sus recursos. Algunos de dichos registros se hallan repetidos en la misma direccin de los dos bancos, para simplificar su acceso (INDF, ESTADO, FSR, PCLATH e INTCON). La posicin apuntada por la direccin 7 H y la apuntada por la 87 H no son operativas. Los 36 registros restantes de cada banco se destinan a Registros de Propsito General y, en realidad, slo son operativos los 36 del banco 0 porque los del banco 1 se mapean sobre el banco 0, es decir, cuando se apunta a un registro general del banco 1, se accede al mismo del banco 0 (vase Figura 6.6). Para seleccionar el banco a acceder hay que manipular el bit 5 (RPO) del registro ESTADO. Si RPO = 1 se accede al banco 1 y si RPO = 0 se accede al banco 0. Tras un Reset se accede
88
89
automticamente al banco 0. Para seleccionar un registro de propsito general no hay que tener en cuenta el estado del bit RPO, porque al estar mapeado el banco 1 sobre el banco 0, cualquier direccionamiento de un registro del banco 1 corresponde al homlogo del banco 0. En el direccionamiento directo a los registros GPR se ignora el bit de ms peso, que identifica el banco, y sus direcciones estn comprendidas entre el valor OxOc y Ox2f en hexadecimal. Los registros SFR se clasifican en dos grupos. En uno se incluyen aquellos que controlan el ncleo del microcontrolador (ESTADO, OPTION, INTCON, etc.) y en el otro los que determinan la operatividad de los recursos auxiliares y perifricos. La Figura 6.7 presenta la estructura de estos registros y los valores que toman despus de un Reset. El PIC16F83 y el PIC16CR83 tienen una memoria RAM con la misma organizacin que el PIC16C84.
6.3.1.
Estos dos modelos disponen de 68 registros de propsito general que ocupan las direcciones comprendidas entre OxOc y la Ox4f en hexadecimal (vase Figura 6.8).
90
91
6.3.2.
En los PIC de la gama media la memoria de datos est organizada para alojar un mximo de 4 bancos de 128 bytes cada uno. El PIC16C84 slo tiene implementados los 48 primeros bytes de los bancos 0 y 1, que en el PIC16F84 se elevan a 80. En el resto de los PIC de esta familia se destinan dos bits del registro ESTADO (RPO y RP1) para determinar el banco y otros siete para elegir una de las 128 posiciones del banco seleccionado (Figura 6.9).
Direccionamiento Directo
El operando que utiliza la instruccin en curso se referencia mediante su direccin, que viene i ncluida en el cdigo OP de la misma, concretamente en los 7 bits de menos peso. El banco a acceder lo determinan los bits RPO y RP1 del registro ESTADO. En el caso del PIC16C(F)84 slo se usa el bit RPO al tener implementados nicamente dos bancos (vase Figura 6.10).
Direccionamiento Indirecto
Este modo de direccionado se usa cuando en una instruccin se utiliza como operando el registro INDF, que ocupa la direccin 0 de ambos bancos. En realidad el registro INDF no est implementado fsicamente y cuando se le hace referencia, se accede a la direccin de un banco especificada con los 7 bits de menos peso del registro FSR. El bit de ms peso de FSR junto al bit IRP del registro ESTADO se encargan de seleccionar el banco a acceder, mientras que los 7 bits de menos peso del FSR apuntan a la posicin. Como slo hay dos bancos en el PIC 16C(F)84 en este modo de direccionamiento, el bit IRP = 0 siempre (vase Figura 6.11).
92
93
6.4.
EL REGISTRO DE ESTADO
Hasta ahora ESTADO es el registro ms usado y es el momento de describirle en su totalidad. Ocupa la direccin 3 tanto del banco 0 como del banco 1 de la memoria de datos RAM. Sus bits tienen tres misiones distintas.
En la Figura 6.12 se muestra el diagrama de distribucin de los bits del registro ESTADO. Los bits TO# y PD# indican el estado del procesador en algunas condiciones y no se pueden escribir. Por este motivo la instruccin clrf ESTADO deja el contenido de dicho registro con el valor 000u ul uu, siendo u el smbolo de no cambia. Slo se ponen a 0 los tres bits de ms peso, el bit Z (cero) se pone a 1 y los restantes no alteran su valor. A continuacin se describe la misin de los bits del registro ESTADO. C: Acarreo/llevada en el bit de ms peso 1: 0: Cuando este sealizador vale 1 indica que se ha producido acarreo en el bit de ms peso del resultado al ejecutar las instrucciones addwf y addlw. No se ha producido acarreo. C tambin acta como sealizador de llevada en el caso de la instruccin de resta, como En este caso la correspondencia es inversa (si vale 1 no hay llevada y si vale 0 s).
subwf y sublw.
DC: Acarreo/llevada en el 4.- bit Igual significado que C pero refirindose al 4.- bit. De inters en operaciones en BCD.
94
Z: Cero 1: 0: El resultado de una instruccin lgico-aritmtica ha sido 0. El resultado de una instruccin lgico-aritmtica no ha sido 0.
PD#: Power Down 1: 0: Se pone automticamente a 1 despus de la conexin de la alimentacin al microcontrolador o al ejecutar la instruccin clrwdt. Se pone automticamente a 0 mediante la ejecucin de la instruccin sleep.
TO#: Time Out 1: 0: Se pone a 1 despus de la conexin de la alimentacin o al ejecutarse las instrucciones
c1rwdt y sleep.
RP1 - RPO: Seleccin de banco en direccionamiento directo Como el PIC 16X84 slo tiene dos bancos, nicamente emplea el bit RPO, de forma que cuando vale 1 se accede al banco 1 y cuando vale 0 se accede al banco 0. Despus de un Reset RPO=0. IRP: Seleccin del banco en direccionamiento indirecto Este bit junto con el de ms peso del registro FSR sirven para determinar el banco de la memoria de datos seleccionado en el modo de direccionamiento indirecto. En el PIC16X84 al disponer de dos bancos no se usa este bit y debe programarse como 0.
7.1.
Los PIC disponen de un procesador rpido y potente. En l se incluye la memoria de programa, la de datos, la ALU, la Unidad de Control y algunos registros especiales. Si dentro de un microcontrolador nicamente existiese un procesador, slo se podran ejecutar instrucciones lgico-aritmticas y de transferencia. Pero un microcontrolador es mucho ms que un procesador, es un computador integral en el que, adems del procesador, hay puertas de E/S para conectarse con perifricos, canales de comunicacin, temporizadores para controlar tiempos, sistema de interrupciones capaz de detectar anomalas o sucesos especiales, sistemas de seguridad, modo de funcionamiento con bajo consumo y un largo etctera de recursos que configuran la potencia integral de un computador.
Los PIC 16X8X contienen pocos recursos en comparacin a otros familiares, pero poseen los suficientes para resolver gran parte de las aplicaciones tpicas de los microcontroladores. Sobre todo disponen de una memoria de programa tipo EEPROM (PIC16C84) o FLASH (PIC16F8X), que les posibilita regrabar el programa las veces necesarias hasta su total puesta a punto. En este captulo se describen los recursos ms importantes de los PIC16X8X, que son:
7.2.
TEMPORIZADOR/CONTADO R TMRO
Una de las labores ms habituales en los programas de control de dispositivos suele ser determinar intervalos concretos de tiempo, y recibe el nombre de temporizador (timer) el ele95
96
mento encargado de realizar esta funcin. Tambin suele ser frecuente contar los impulsos que se producen en el exterior del sistema, y el elemento destinado a este fin se denomina contador. Si las labores del temporizador o contador las asignamos al programa principal robaran mucho tiempo al procesador en detrimento de actividades ms importantes. Por este motivo se disean recursos especficamente orientados a estas misiones. Los PIC16X8X poseen un temporizador/contador de 8 bits, llamado TMRO, que acta de dos maneras diferentes: 1.a Como contador de sucesos, que estn representados por los impulsos que se aplican a la patita RA4/TOCKI. Al llegar al valor FF H se desborda el contador y, con el siguiente impulso, pasa a 00 H, advirtiendo esta circunstancia activando un sealizador y/o provocando una interrupcin. Como temporizador, cuando se carga en el registro que implementa al recurso un valor inicial se incrementa con cada ciclo de instruccin (Fosc/4) hasta que se desborda, o sea, pasa de FF a 00 H, y avisa poniendo a 1 un bit sealizador y/o provocando una interrupcin (Figura 7.1).
2.a
Para que el TMRO funcione como contador de impulsos aplicados a la patita TOCKI hay que poner a 1 el bit TOCS, que es el que ocupa la posicin 5 del registro OPTION. En esta situacin, el registro TMRO, que es el ubicado en la direccin 1 del banco 0 de la memoria de datos, se incrementa con cada flanco activo aplicado en la patita TOCKI. El tipo de flanco activo se elige programando el bit TOSE, que es el que ocupa la posicin 4 del registro OPTION. Si TOSE = 1, el flanco activo es el descendente, y si TOSE = 0, es el ascendente. Cuando se desea que TMRO funcione como temporizador el bit TOCS = 0. En realidad, los PIC16X8X y los de la gama baja disponen de dos temporizadores, el TMRO y el Perro Guardin (Watchdog). El primero acta como principal y sobre l recae el control de tiempos y el contaje de impulsos. El otro vigila que el programa no se cuelgue, y para ello cada cierto tiempo comprueba si el programa se est ejecutando normalmente. En caso contrario, si el control est detenido en un bucle infinito a la espera de algn acontecimiento que no se produce, el Perro Guardin ladra, lo que se traduce en un Reset que reinicializa todo el sistema. A menudo el TMRO y el Perro Guardin precisan controlar largos intervalos de tiempo y necesitan aumentar la duracin de los impulsos de reloj que les incrementa. Para cubrir este re-
97
quisito se dispone de un circuito programable denominado Divisor de frecuencia, que divide la frecuencia utilizada por diversos rangos. Para programar el comportamiento del TMRO, el Perro Guardin (WDT) y el Divisor de frecuencia se utilizan algunos bits del registro OPTION y de la Palabra de Configuracin, que se explicar ms adelante. En la Figura 7.2 se proporciona un esquema simplificado de la arquitectura del circuito de control de tiempos usado en los PIC 16X8X. El Divisor de frecuencia puede usarse con el TMRO o con el WDT. Con el TMRO acta como Pre-divisor, es decir, los impulsos pasan primero por el Divisor y luego se aplican al TMRO, una vez aumentada su duracin. Con el Perro Guardin acta despus, realizando la funcin de Post-divisor. Los impulsos, que divide por un rango el Divisor de frecuencia, pueden provenir de la seal de reloj interna (Fosc/4) o de los que se aplican a la patita TOCKI. El TMRO se comporta como un registro de propsito especial (SFR) ubicado en la direccin 1 del banco 0 de la memoria de datos. En igual direccin, pero en el banco 1, se halla el registro OPTION. TMRO puede ser ledo y escrito en cualquier momento al estar conectado al bus de datos. Funciona como un contador ascendente de 8 bits. Cuando funciona como temporizador conviene cargarle con el valor de los impulsos que se quiere temporizar, pero expresados en com-
98
plemento a 2. De esta manera, al llegar el nmero de impulsos deseado se desborda y al pasar por 00 H se activa el sealizador TOIF y/o se produce una interrupcin. Para calcular los tiempos a controlar con TMRO se utiliza la siguiente frmula prctica:
En cualquier momento se puede leer el valor que contiene TMRO, sin detener su contaje. La instruccin adecuada al caso es movf tmrO,w. En la Figura 7.3 se ofrece el esquema de funcionamiento del TMRO. Obsrvese que hay un bloque que retrasa 2 ciclos el contaje para sincronizar el momento del incremento producido por la seal aplicada en TOCKI con el que producen los impulsos internos de reloj. Cuando se escribe TMRO se retrasan 2 ciclos su reincremento y se pone a 0 el Divisor de frecuencia.
7.2.1. El registro OPTION
La misin principal de este registro es gobernar el TMRO y el Divisor de frecuencia. Ocupa la posicin 81 H de la memoria de datos, que equivale a la direccin 1 del banco 1. El bit TOCS (Timen 0 Clock Edge Select) selecciona en el multiplexor MPX1 la procedencia de los impulsos de reloj, que pueden ser los del oscilador interno (Fose/4) o los que se aplican desde el exterior por la patita TOCKI. El bit TOSE (Timen 0 Clock Source Select) elige el tipo de flanco activo en los impulsos externos. Si TOSE = 1, el flanco activo es el descendente y si TOSE = 0 el ascendente. El bit PSA del registro OPTION asigna el Divisor de frecuencia al TMRO (PSA = 0) o al WDT (PSA = 1). Los 3 bits de menos peso de OPTION seleccionan el rango por el que divide el Divisor de frecuencia los impulsos que se le aplican en su entrada. La Figura 7.4 muestra la distribucin y funcin de los bits de OPTION. El bit 6 INTEDG (Interrupt Edge) sirve para determinar el flanco activo que provocar una interrupcin externa al aplicarse a la patita RBO/INT. Un 1 es ascendente y un 0 descendente.
99
El bit 7 RBPU# (RB Pull-Up) activa, si vale, 0, o desactiva, cuando vale 1, las resistencias Pull-Up que pueden conectarse opcionalmente en las lneas de la Puerta B.
7.3.
Se trata de un contador interno de 8 bits que origina un Reset cuando se desborda. Su control de tiempos es independiente del TMRO y est basado en una simple red R-C. Su actuacin es
100
opcional y puede bloquearse para que no funcione programando el bit WDTE de la Palabra de Configuracin.
Para evitar que se desborde el Perro Guardin hay que refrescarle previamente. En realidad este refresco consiste en ponerle a cero mediante las instrucciones clrwdt y sleep. El programador debe analizar las instrucciones de la tarea y situar alguna de esas dos en sitios estratgicos por los que pase el flujo de control antes de que transcurra el tiempo asignado al WDT. De esta manera, si el programa se cuelga no se refresca el Perro Guardin y se produce la reinicializacin del sistema. La instruccin clrwdt borra al WDT y reinicia su cuenta. Sin embargo, la instruccin sleep, adems de borrar WDT, detiene al sistema y lo mete en un estado de reposo o de bajo consumo. Si no se desactiva el Perro Guardin al entrar en el modo de reposo, al completar su contaje provocar un Reset y sacar al microcontrolador del modo de bajo consumo. Para desactivar al Perro Guardin hay que escribir un 0 en el bit 2 (WDTE) de la Palabra de Configuracin. En el registro ESTADO existe un bit denominado TO# que pasa a valer 0 despus del desbordamiento del WDT.
101
En la Figura 7.6 se aprecia el comportamiento del Divisor de frecuencia como pre-divisor para el TMRO y como post-divisor para el WDT.
7.4.
Los PIC 16X8X slo disponen de dos puertas de E/S. La Puerta A posee 5 lneas, RAO - RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de la RA4/TOCKI, que puede actuar como lnea de E/S o como patita por la que se reciben los impulsos que debe contar TMRO. La Puerta B tiene 8 lneas, RBO - RB7, y tambin tiene una con funciones multiplexa-
102
das, la RBO/INT, que, adems de lnea tpica de E/S, tambin sirve como patita por la que se reciben los impulsos externos que provocan una interrupcin. Cada lnea de E/S puede configurarse independientemente como entrada o como salida, segn se ponga a 1 o a 0, respectivamente, el bit asociado del registro de configuracin de cada puerta (TRISA y TRISB). Se llaman PUERTAA y PUERTAB los registros que guardan la informacin que entra o sale por la puerta y ocupan las direcciones 5 y 6 del banco 0 de la memoria de datos. Los registros de configuracin TRISA y TRISB ocupan las mismas direcciones, pero en el banco 1 (Figura 7.7).
7.4.1.
La Puerta A
Las lneas RA3 - RAO admiten niveles de entrada TTL y de salida CMOS. La lnea RA4/TOCKI dispone de un circuito Schmitt Trigger que proporciona una buena inmunidad al ruido y la salida tiene drenador abierto. RA4 multiplexa su funcin de E/S con la de entrada de i mpulsos externos para el TMRO.
En el circuito de la Figura 7.8 se muestra la adaptacin de las patitas RA3 - RAO a las seales internas del procesador. Cuando se lee una lnea de la Puerta A (instruccin movfw puertaa) se recoge el nivel lgico que tiene en ese momento. Las lneas cuando actan como salidas estn lacheadas, lo que significa que sus patitas sacan el nivel lgico que se haya cargado por ltima vez en el registro PUERTAA. La escritura de una puerta implica la operacin lectura/modificacin/escritura. Primero se lee la puerta, luego se modifica el valor y finalmente se escribe en el latch de salida. De la Figura 7.8 se desprende que cuando se saca un nivel lgico por una lnea de la Puerta A, primero se deposita en la lnea correspondiente del bus de datos y se activa la seal WRITE, lo que origina el almacenamiento de dicho nivel en la bscula de datos. En esta situacin, la bscula de configuracin debera contener un 0 para que actuase como salida. Con estos
103
valores la puerta OR tendra un 0 en su salida y la AND tambin. Estos valores producen la conduccin del transistor PMOS superior y el bloqueo del NMOS. As, la patita de E/S queda conectada a la Vpp y tiene nivel alto. Como la lnea de salida est lacheada conserva su valor hasta que no se reescriba en la bscula D. Si una lnea acta como entrada, el nivel lgico depositado en ella desde el exterior pasa a la lnea correspondiente del bus interno de datos cuando se activa la seal READ y se hace conductor el dispositivo triestado que les une. Al programarse como entrada, los dos transisto res MOS de salida quedan bloqueados y la lnea en alta impedancia. Tngase en cuenta que cuando se lee una lnea de entrada se obtiene el estado actual que tiene su patita correspondiente y no el valor que haya almacenado en la bscula de datos. La informacin presente en una lnea de entrada se muestrea al iniciarse el ciclo de instruccin y debe mantenerse estable durante su desarrollo.
104
Al reinicializarse el PIC todos los bits de los registros TRIS quedan a 1, con lo que las lneas de las puertas quedan configuradas como entradas. Cada lnea de salida puede suministrar una corriente mxima de 20 mA y si es entrada puede absorber hasta 25 mA. Al existir una limitacin en la disipacin mxima de la potencia del chip, se restringe la corriente mxima de absorcin de la Puerta A a 80 mA y la de suministro a 50 mA. La Puerta B puede absorber un mximo de 150 mA y suministrar un total de 100 mA. Con movf puerta,w se lee una puerta y con la instruccin movwf puerta se escribe. Tambin existen instrucciones para modificar el valor de un bit particular correspondiente a una lnea de una puerta con las instrucciones bsf puerta,bit (pone a 1 el bit indicado de la puerta) y bcf puerta,bit. Existen instrucciones de salto condicionales que chequean el valor de un bit de una puerta y brincan si vale 1 (btfss) o si vale 0 (btfsc).
7.4.2.
La Puerta B
Consta de 8 lneas bidireccionales de E/S, RB7 - RBO, cuya informacin se almacena en el registro PUERTAB, que ocupa la direccin 6 del banco 0. El registro de configuracin TRISB ocupa la misma direccin en el banco 1. La lnea RBO/INT tiene dos funciones multiplexadas. Adems de patita de E/S, acta como patita para la peticin de una interrupcin externa, cuando se autoriza esta funcin mediante la adecuada programacin del registro INTCON, del que se hablar ms adelante. A todas las lneas de esta puerta se las permite conectar una resistencia pull-up, de elevado valor, con el positivo de la alimentacin. Para este fin hay que programar en el registro OPTION el bit RBPU# = O, lo que provoca la conexin de una resistencia a todas las lneas. Con el Reset todas las lneas quedan configuradas como entradas y se desactivan las resistencias pull-up. Las 4 lneas de ms peso, RB7 - RB4, pueden programarse para soportar una misin especial. Cuando las 4 lneas actan como entradas se las puede programar para generar una interrupcin si alguna de ellas cambia su estado lgico. Esta posibilidad es muy prctica en el control de teclados. En la Figura 7.9 se muestra el esquema de conexionado entre las patitas RB7 - RB4 y las lneas correspondientes del bus de datos interno. El estado de las patitas RB7 - RB4 en modo entrada se compara con el valor antiguo que tenan y que se haba lacheado durante la ltima lectura de la Puerta B. El cambio de estado en algunas de esas lneas origina una interrupcin y la activacin del sealizador RBIF. La lnea RB6 tambin se utiliza para la grabacin serie de la memoria de programa y sirve para soportar la seal de reloj. La lnea RB7 constituye la entrada de los datos en serie, cuando se graba un programa en la memoria de cdigo.
7.5.
LA PALABRA DE CONFIGURACIN
Se trata de una posicin reservada de la memoria de programa situada en la direccin 2007 H y accesible nicamente durante el proceso de grabacin. Al escribirse el programa de la aplicacin es necesario grabar el contenido de esta posicin de acuerdo con las caractersticas del sistema.
105
En la Figura 7.10 se muestra la distribucin y asignacin de los 14 bits de la Palabra de Configuracin de los PIC16F8X, que tienen las siguientes funciones:
106
7.5.1.
Son 4 posiciones reservadas de la memoria de programa ubicadas en las direcciones 2000 H 2003 H, que no son accesibles en el funcionamiento normal del microcontrolador y slo pueden ser ledas y escritas durante el proceso de grabacin. Slo se utilizan los 4 bits de menos de cada palabra de identificacin (ID), en donde se almacena un valor que puede consistir en un nmero de serie, cdigos de identificacin, numeraciones secuenciales o aleatorias, etc.
7.6.
Los PIC 16X8X tienen 64 bytes de memoria EEPRONI de datos, donde se pueden almacenar datos y variables que interesa que no se pierdan cuando se desconecta la alimentacin al sis-
107
tema. Soporta 1.000.000 de ciclos de escritura borrado y es capaz de guardar la informacin sin alterarla ms de 40 aos. La memoria EEPROM no est mapeada en la zona de memoria de datos donde se ubican los registros SFR y GPR. Para poder leerla y escribirla durante el funcionamiento normal del microcontrolador hay que utilizar 4 registros del banco SFR:
En el registro EEADR, ubicado en la direccin 9 del banco 0, se carga la direccin a acceder de la EEPROM de datos. Las 64 posiciones de un byte ocupan las direcciones de un mapa que comienza en 00 H y termina en 3F H, por eso los 2 bits de ms peso del registro EEADR siempre valen 0. En el registro EEDATA, ubicado en la direccin 8 del banco 0, se depositan los datos que se leen o se escriben. El registro EECONI, que ocupa la direccin 88 H de la memoria de datos, o la direccin 8 H del banco 1, tiene misiones de control en las operaciones de la EEPROM, y la distribucin de sus bits se presenta en la Figura 7.11, mientras que la misin de cada uno se explica a continuacin:
108
El registro EECON2 en realidad no est implementado fsicamente. Al leerlo todos sus bits son 0. Slo se emplea como un dispositivo de seguridad durante el proceso de escritura de la EEPROM, para evitar las interferencias en el largo intervalo de tiempo que precisa su desarrollo.
Se inicia un ciclo de lectura colocando la direccin a acceder en el registro EEADR y poniendo el bit RD = 1 en el registro EECONl. El dato ledo estar disponible en el registro EEDATA en el siguiente ciclo y permanecer en l hasta que se realice una nueva lectura o escritura en la EEPROM.
Para escribir una posicin de la EEPROM de datos el usuario debe seguir una determinada secuencia de instrucciones en las que participa el registro EECON2. Este registro, que en realidad no se halla implementado fsicamente, slo asume funciones de seguridad en el proceso, cargndose en l dos valores concretos: 55 H y aa H. La duracin tpica de un ciclo de escritura es de 10 ms, que es notablemente larga en comparacin con la velocidad del PIC. El ciclo de escritura comienza cargando en EEADR la direccin de la posicin a escribir y en el registro EEDATA el valor a grabar.
109
Al acabar el proceso de escritura el bit WR pasa a valer 0 automticamente, mientras que el sealizador EEIF se pone a l. Este ltimo bit hay que ponerlo a 0 posteriormente mediante software. Una buena precaucin es verificar si la escritura de la EEPROM ha sido correcta, para lo cual se suele restar el dato escrito con el que existe en el registro EEDATA. Si no se ha producido error, el sealizador Z pasa a valer 1. Dada la importancia de conocer el fin de la escritura de una posicin de la EEPROM, no slo se informa activando el sealizador EEIF, sino que adems, si se desea, se puede provocar una interrupcin.
8.1.
Las llamadas a subrutinas mediante la instruccin CALL son desviaciones del flujo de control del programa originadas por instrucciones, por lo que se consideran sncronas. Se producen cada vez que se ejecuta dicha instruccin. Las interrupciones son desviaciones del flujo de control del programa originadas asncronamente por diversos sucesos que no se hallan bajo la supervisin de las instrucciones. Dichos sucesos pueden ser externos al sistema, como la generacin de un flanco o nivel activo en una patita del microcontrolador, o bien internos, como el desbordamiento de un contador. El comportamiento del microcontrolador ante la interrupcin es similar al de la instruccin CALL de llamada a subrutina. En ambos casos se detiene la ejecucin del programa en curso, se salva la direccin actual del PC en la Pila y se carga el PC con una direccin, que en el caso de CALL viene acompaando a la propia instruccin, y en el caso de una interrupcin es una direccin reservada de la memoria de cdigo, llamada Vector de Interrupcin.
La RSI suele comenzar guardando en la memoria de datos algunos registros especficos del procesador. Concretamente aquellos que la RSI va a emplear y va a alterar su contenido. Antes del retorno al programa principal se recuperan los valores guardados y se restaura completamente el estado del procesador. Algunos procesadores salvan estos registros en la Pila, pero los PIC no disponen de instrucciones para meter (push) y sacar (pop) informacin de la Pila, utilizando para este fin registros de propsito general de la memoria de datos. Los PIC16XSX pueden ser interrumpidos por cuatro causas diferentes, pero todas desvan el flujo de control a la direccin 0004 H, por lo que otra de las operaciones iniciales de la RSI 111
112
es averiguar cul de las posibles causas ha sido la responsable de la interrupcin en curso. Para ello se exploran los sealizadores de las fuentes de interrupcin. Otro detalle importante en la RSI de los PIC16X8X es que estos microcontroladores poseen un bit GIE (Global Interrupt Enable) que cuando vale 0 prohbe todas las interrupciones. Pues bien, al comenzar la RSI dicho bit GIE se pone automticamente a 0, con objeto de no atender nuevas interrupciones hasta que se termine la que ha comenzado. En el retorno final de la interrupcin, GIE pasa a valer automticamente 1 para volver a tener en cuenta las interrupciones. Dicho retorno de interrupcin se realiza mediante la instruccin RETFIE. Antes del retorno conviene borrar el sealizador de la causa de interrupcin que se ha atendido, porque si bien los sealizadores se ponen a 1 automticamente en cuanto se produce la causa que indican, la puesta a 0 se hace por programa. En la Figura 8.1 se muestra un organigrama de las fases ms importantes que se desarrollan durante el proceso de ejecucin de una interrupcin. 8.2. CAUSAS DE INTERRUPCIN
Cuando ocurre cualquiera de los 4 sucesos indicados se origina una peticin de interrupcin, que si se acepta y se atiende comienza depositando el valor del PC actual en la Pila, poniendo el bit GIE = 0 y cargando en el PC el valor 0004 H, que es el Vector de Interrupcin donde se desva el flujo de control. Cada fuente de interrupcin dispone de un sealizador o flag, que es un bit que se pone automticamente a 1 cuando se produce. Adems, cada fuente de interrupcin tiene otro bit de permiso, que segn su valor permite o prohbe la realizacin de una interrupcin. 8.2.1. El Registro de Control de Interrupciones INTCON
La mayor parte de los sealizadores y bits de permiso de las fuentes de interrupcin en los PIC16X8X estn implementados sobre los bits del registro INTCON, que ocupa la direccin OB H del banco 0, hallndose duplicado en el banco 1 (vase Figura 8.2).
1: 0:
Permite la ejecucin de todas las interrupciones, cuyos bits de permiso individuales tambin las permitan. Prohbe todas las interrupciones.
113
114
EEIE: Permiso de Interrupcin por fin de la escritura en la EEPROM 1: 0: Permite se origine una interrupcin cuando termina la escritura de la EEPROM de datos. Prohbe que se produzca esta interrupcin.
TOIE: Permiso de Interrupcin por sobrepasamiento del TMRO 1: 0: Permite una interrupcin al desbordarse el TMR0. Prohbe esta interrupcin.
INTE: Permiso de Interrupcin por activacin de la patita RBOIINT 1: 0: Permite la interrupcin al activarse RBO/INT. Prohibe esta interrupcin.
RBIE: Permiso de Interrupcin por cambio de estado en RB7.RB4 1: 0: Permite esta interrupcin. Prohibe esta interrupcin.
T0IF: Sealizador de sobrepasamiento del TMRO 1: 0: Se pone a 1 cuando ha ocurrido el sobrepasamiento. Indica que el TMRO no se ha desbordado.
INTF: Sealizador de activacin de la patita RBOIINT 1: 0: Se pone a 1 al activarse RBO/INT, al recibir un flanco activo desde el exterior. Indica que RBO/INT no ha recibido un flanco activo.
RBIF: Sealizador de cambio de estado en las patitas RB7:RB4 1: 0: Pasa a 1 cuando cambia el estado de alguna de estas 4 lineas. No ha cambiado el estado de RB7:RB4.
Siempre que se produzca una interrupcin por cualquier causa, GIE = 0 y el PC se carga con el valor 0004 H, que es el Vector de Interrupcin. Para conocer qu causa ha provocado la interrupcin se exploran los sealizadores, tres de los cuales se ubican en el regis-
115
tro INTCON y el cuarto, EEIF, que se pone a 1 cuando finaliza la escritura de la EEPROM, se halla en el bit 4 del registro EECONl. Los sealizadores deben ponerse a 0 por programa antes del retorno de la interrupcin y son operativos aunque la interrupcin est prohibida por su bit de permiso correspondiente. En la Figura 8.3 se ofrece el esquema de la lgica de control que origina la interrupcin.
116
8.2.2.
Esta fuente de interrupcin es sumamente importante para atender acontecimientos externos en tiempo real. Cuando ocurre alguno de ellos, se activa la patita RBO/INT y se hace una peticin de interrupcin. Entonces, de forma automtica, el bit INTF = 1 y, si el bit de permiso INTE = 1, se autoriza el desarrollo de la interrupcin. Mediante el bit 6, llamado INTDEG, del registro OPTION se puede seleccionar cul ser el flanco activo en RBO/INT Si se desea que sea el ascendente se escribe un 1 en dicho bit, y si se desea que sea el descendente se escribe un 0. El procesador explora el sealizador INTF al final del primer ciclo de reloj de cada ciclo de instruccin. Recurdese que cada ciclo de instruccin constaba de 4 ciclos de reloj: Q1, Q2, Q3 y Q4. Al terminar Ql se exploran los sealizadores, producindose un perodo de latencia de 3 o 4 ciclos de instruccin desde el momento que hay un sealizador activado hasta que se i nicializa la interrupcin. En la Figura 8.4 se muestra un esquema prctico para generar una interrupcin por activacin en la patita RBO/INT. Los dos inversores del 74LSO4 realimentados constituyen un filtro antirrebotes para pulsador, y la red R-C y el ltimo inversor controlan la duracin del impulso.
11 7
8.2.3.
Cuando TMRO se desborda y pasa del valor FF H al 00 H, el sealizador TOIF se pone automticamente a 1. Si, adems, el bit de permiso de la interrupcin del TMRO, TOIE = 1 y el bit de Permiso Global de Interrupciones GIE = 1, se produce una interrupcin. Si no se recarga el TMRO cuando se desborda, sigue contando desde 00 H a FF H. En cualquier momento se puede leer y escribir este registro, pero cada vez que se escribe se pierden dos ciclos de reloj para la sincronizacin. Cuando se carga inicialmente TMRO con el valor N, o, cuenta 256 -N impulsos, siendo el tiempo que tarda en hacerlo el que expresa la siguiente frmula:
11 8
8.2.4.
Esta interrupcin est diseada especficamente para detectar la pulsacin de una tecla correspondiente a un teclado matricial, que se explora con 4 lneas de E/S. Para esta funcin se destinan las lneas RB7 : RB4 de la Puerta B, que cada vez que cambia el estado lgico de una de ellas se fuerza al sealizador RBIF a ponerse a 1, y si los bits de permiso RBIE = GIE = 1 se autoriza la interrupcin.
8.2.5.
El tiempo tpico que tarda en desarrollarse una operacin de escritura en la EEPROM de datos de los PIC 16X8X es de 10 ms, que es considerable comparado con la velocidad a la que el procesador ejecuta instrucciones. Para asegurarse de que se ha completado la escritura y puede continuarse con el flujo de control del programa es aconsejable manejar la interrupcin que se origina al finalizar la escritura, que pone automticamente el sealizador EEIF a 1, y se autoriza siempre que los bits de permiso EME = GIE = l. Cuando se describi el proceso de escritura de la EEPROM de datos se indic que se usaba un registro no real para asegurar la misma. Se trataba del EECON2, en el que se grababan dos valores, el 55 H y el AA H. Durante la escritura de este registro debe prohibirse la aceptacin de interrupciones para salvaguardar la operacin de escritura, por eso en ese mdulo se pone GIE = 0, tal como se indica en el siguiente trozo de programa orientado a escribir la memoria EEPROM. Se supone que la direccin a acceder ya se ha cargado en el registro EEADR y el dato a escribir en EEDATA.
119
En los PIC 16C84 y el PIC 16F8X se puede leer y escribir la EEPROM de datos aunque se haya protegido el cdigo. En los PIC16CR8X, que disponen de memoria ROM para el cdigo, existen dos bits para el cdigo de proteccin: uno dedicado a la ROM de cdigo y el otro a la EEPROM de datos.
8.3.
REINICIALIZACIN O RESET
Los PIC16X8X tienen cinco causas que provocan la reinicializacin del sistema, consistente en cargar al PC con el valor 000 H (Vector de Reset) y poner el estado de los bits de los registros especficos (SFR) con un valor conocido.
En la Tabla 8.1 se presenta el estado lgico que adquieren los bits de los registros SFR de la memoria de datos cuando se provoca un Reset por una de las cinco causas posibles. En la Figura 8.5 se muestra el esquema electrnico de los PIC 16X8X para la generacin del Reset. La patita MCLR# dispone de un filtro interno para eliminar los ruidos y los impulsos muy pequeos. El temporizador PWRT (Power-up Timer) activa una salida al cabo de un cierto tiempo tras la conexin de la alimentacin, que se aplica a una entrada de la AND4, encargada de controlar el Reset del Flip-flop que gobierna la generacin interna del Reset del sistema. Slo es
120
vlida la salida de PWRT si el bit de permiso del PWRT est activo a nivel bajo (PWRT# = 0), dado que tambin se aplica a la OR7 de la Figura 8.5. El bit PWRT reside en la Palabra de Configuracin y una de las pocas diferencias que tena el PIC16C84 con el PIC16F84 era que aqul tena como nivel activo del bit PWRT el alto, mientras que este ltimo tiene el bajo. El Reset del Flip-flop final se produce cuando la AND4 saca nivel alto, lo que requiere que sus tres entradas tengan dicho nivel, y eso supone: a) b) c) Que no haya peticiones de Reset y la puerta OR2 tenga su salida a nivel bajo. Que si est activo PWRT finalice su retardo de 72 ms. Que tambin finalice la temporizacin del oscilador OST, que retarda 1.024 - Tosc, tras completarse el retardo de PWRT.
El temporizador OST (Oscillator Start-up Timer) proporciona un retardo de 1.024 - Tosc (perodo de los impulsos aplicados en la patita OSC1/CLKIN). Sirve para asegurar que el cristal de cuarzo o resonador cermico empleado en los osciladores tipo XT, LP o HS est estable y en marcha. OST comienza a funcionar cuando termina el retardo de PWRT debido a la conexin de la salida de la OR7 con la AND5. La activacin de la entrada Set del Flip-flop se consigue cuando se activa la patita MCLR#, cuando se desborda el Perro Guardin o cuando se detecta un flanco ascendente en la patita Vp (POR). En la Figura 8.6 se ofrece un cronograma de las principales seales que participan en la generacin del Reset y en el que se aprecia la secuencia de los retardos TPwRT y ToST-
121
En el registro ESTADO hay dos bits que indican las condiciones en las que se ha originado el Reset. Se trata de TO# (Timer Out) y PD# (Power Down) (Figura 8.7).
8.3.1.
Se produce un fallo en la alimentacin cuando el voltaje de alimentacin VDD desciende por debajo del valor mnimo, sin llegar a cero, y luego se recupera. En esta situacin es preciso provocar un Reset. Para generar un Reset en un PIC16X8X cuando hay un fallo en la alimentacin hay que colocar un circuito externo de proteccin, como los dos que se muestran en las Figuras 8.8 y 8.9.
122
La patita MCLR# puede conectarse directamente con VDD, pero debe colocarse una resistencia de valor superior a 100 S2 cuando se conecta con tierra, para evitar los problemas que puede originar la corriente que circula.
123
8.4.
Este modo de funcionamiento de los PIC est caracterizado por el reducido consumo de energa que requiere y est muy recomendado en aquellas aplicaciones en las que hay largos perodos de espera hasta que se produzca algn suceso asncrono, como la pulsacin de una tecla. En dichos perodos el procesador est inactivo.
Para entrar en el modo de Reposo hay que ejecutar la instruccin SLEEP y se produce una situacin muy especial de funcionamiento que parece como si el sistema se ha congelado, requiriendo el mnimo suministro de energa para mantener el estado del procesador sin ninguna actividad. En Reposo la patita TOCKI se conecta a VDD o a tierra para eliminar la entrada de impulsos externos al TMRO. Por otra parte, como se detiene el oscilador principal que genera los impulsos Tosc, tambin se para TMRO. Las patitas de E/S mantienen el estado anterior al modo de Reposo y las que no se hallan conectadas a perifricos y actan como entradas de alta impedancia se aconseja conectarlas a VDD o a tierra para evitar posibles fugas de corriente. La patita MCLR# debe conectarse a nivel alto. Sin impulsos de reloj, el procesador se congela y deja de ejecutar instrucciones hasta que despierte y salga de ese estado. Si el Perro Guardin contina activo en el modo de Reposo, al entrar en l se borra, pero sigue funcionando. Los bits del registro de ESTADO PD# y TO# toman los valores 0 y 1, respectivamente. Para salir del estado de Reposo (despertar) existen tres alternativas: I .a Activacin externa de MCLR# para provocar un Reset.
2.a
3.
Desbordamiento del Perro Guardin si qued operativo en el modo de Reposo. Generacin de una interrupcin. En este caso, como TMRO est parado slo pueden producirse los otros tres tipos de interrupcin.
Los bits TO# y PD# se emplean para conocer la causa del Reset que despierta al sistema. PD# = 0 cuando se ejecuta la instruccin SLEEP TO# = 0 cuando se desborda el Peno Guardin.
8.5.
Los PIC que estamos estudiando permiten que se grabe en su memoria de cdigo el programa sobre el mismo circuito de la aplicacin. Esto permite a los fabricantes de productos finales construir la tarjeta electrnica con el microcontrolador sin grabar y realizar la escritura del programa justo cuando se realiza la venta. As se puede aportar el firmware ms reciente que se disponga.
124
La programacin en serie de los PIC 16X8X requiere 5 lneas, dos de las cuales se destinan a soportar los impulsos de reloj de la transmisin (RB6) y los bits de informacin (RB7), mientras que las otras tres soportan VDD, tierra y la tensin especial de programacin Vpp, que oscila entre 12 y 14 V (Figura 8.10). El microcontrolador pasa al modo de programacin/verificacin colocando a nivel bajo las lneas RB6 y RB7 y aplicando la tensin de programacin V pp a la patita MCLR#/ Y pp. A partir de ese momento por RB6 se transmiten los impulsos de reloj y por RB7 se transfieren los bits de datos en serie.
9.1.
REPERTORIO RISC
Todos los modelos de microcontroladores PIC responden a la arquitectura RISC, que significa Computador de Juego de Instrucciones Reducido. No slo implica que el nmero de instrucciones mquina que es capaz de interpretar y ejecutar el procesador es pequeo, como sucede en los PIC16X8X, que consta de 35, sino tambin que posee las siguientes caractersticas:
La falta de complejidad en la operacin que realizan las instrucciones de los procesadores RISC permite que sean ejecutadas, mayoritariamente, en un solo ciclo de instruccin. Los PIC tardan en ejecutar todas las instrucciones un ciclo, excepto las de salto, que tardan el doble.
Apenas tienen restricciones en el uso de operandos. Cualquier instruccin puede usar cualquier operando.
Todas las instrucciones tienen la misma longitud, 14 bits en los PIC16X8X, y todos los datos tambin, un byte. La arquitectura Harvard del procesador asla la memoria de instrucciones de la de datos, pudiendo tener sus palabras diferente tamao.
125
126
9.2.
TIPOS DE FORMATO
Las instrucciones de los PIC de la gama media, entre los que se encuentran los modelos PIC 16X8X, tienen 14 bits de longitud. Dicho formato se divide en diferentes campos de bits, cada uno de los cuales referencia a operandos o elementos que maneja la instruccin en la operacin que realiza en el procesador. Se describen dichos campos:
Los bits de este campo sirven para definir la operacin que realiza la instruccin.
Estos campos de bits definen los registros que actan como operandos en la instruccin. Suelen referenciar la direccin que ocupan en la memoria de datos.
Suele ser un campo de 3 bits que indica la posicin de un bit concreto dentro de un registro de 8 bits.
En las instrucciones de salto CALL y GOTO hay un campo de bits que contiene la direccin de la siguiente instruccin que hay que ejecutar. Dicho campo de bits se carga en el PC en las instrucciones de salto incondicional. Para estudiar los diversos formatos que admiten las instrucciones del repertorio de los PIC 16X8X se clasifican en cinco grandes grupos, atendiendo al tipo de operacin que desarrollan.
127
9.2.1.
Las instrucciones de este grupo tienen como sintaxis: nemnico f d. Cuando d = 1 el registro destino coincide con el fuente. Por ejemplo, si se desea incrementar el contenido de un registro, reg1, y guardar el nuevo valor en el mismo, se usa la instruccin inc reg1,1.
128
9.2.2.
12 9
9.2.3.
9.2.4.
Este tipo de instrucciones afectan al contenido del Contador de Programa (PC) y sirven para romper la secuencia ordenada de las instrucciones del programa. Las instrucciones de este grupo tienen un formato con slo dos campos: 1. 2. Campo del Cdigo OP de 3 bits. Campo de la direccin del salto que se carga en el PC de 11 bits.
9.2.5.
Los PIC disponen de unas pocas instrucciones muy efectivas que cuando se cumple una condicin dan un brinco (skip). Llamamos brinco a un saltito muy pequeo, concretamente slo se salta una instruccin, la que hay detrs de la condicional. La condicin es el estado de un bit de un registro o la puesta a cero de un registro tras un decremento o un incremento. La instruccin decfsz f d responde al grupo de instrucciones que manejan registros de un byte. En este caso, si d = 1, el destino es el propio registro fuente y lo que hace la instruccin es decre-
130
mentar el contenido de f y dejar el resultado en f. Pero, adems, si el nuevo valor de f es cero se produce un brinco. Si no es cero el flujo de control contina con la siguiente instruccin.
9.3.
Hemos tomado la decisin de utilizar la nomenclatura y los smbolos que emplea MICROCHIP para su lenguaje Ensamblador MPASM. Recordamos los ms especficos.
131
132 9.4.
Responden a la sintaxis nemnico f d, siendo f y d los dos operandos fuente y destino que se hallan implementados por registros de 8 bits de la memoria de datos. El registro f viene referenciado por la direccin de 7 bits que ocupa, mientras que el destino slo por uno, que si vale 0 es el W y si vale 1 es el fuente. En la Tabla 9.1 se muestran las instrucciones de este grupo con sus caractersticas ms interesantes.
133
9.5.
Slo hay dos instrucciones en este grupo, pero son muy flexibles. Una de ellas pone a 1 (bsf) cualquier bit de un registro, mientras que la otra lo pone a 0 (bcf) (vase Tabla 9.2).
134
9.6.
Slo hay cuatro instrucciones de salto condicional en los PIC de la gama media. Dos de ellas testan un bit de un registro y segn valga 1 o 0, brincan o no. Recurdese que un brinco es un saltito pequeo, slo se salta la instruccin siguiente a la condicional. Las otras dos instrucciones incrementan o decrementan un registro y la posibilidad del brinco se efecta si con esa operacin el valor del registro ha llegado a cero. Cuando estas instrucciones no brincan porque no se cumple la condicin, tardan 1 ciclo de instruccin en ejecutarse. En caso de que brinquen, tardan el doble (vase Tabla 9.3).
135
9.7.
Se trata de media docena de instrucciones que realizan una operacin con un valor inmediato de 8 bits que se proporciona dentro del formato de la instruccin, el cual slo tiene dos campos: el del Cdigo OP (6 bits) y el del operando inmediato (8 bits) (Tabla 9.4).
135
9.7.
Se trata de media docena de instrucciones que realizan una operacin con un valor inmediato de 8 bits que se proporciona dentro del formato de la instruccin, el cual slo tiene dos campos: el del Cdigo OP (6 bits) y el del operando inmediato (8 bits) (Tabla 9.4).
136
9.8.
En este grupo se incluyen las instrucciones que rompen la secuencia normal del programa porque alteran el contenido del PC y tambin las instrucciones especiales. La instruccin de salto incondicional goto carga en el PC la direccin de la nueva instruccin. La instruccin call de Llamada a Subrutina, antes de cargar el PC con la direccin de la i nstruccin a saltar, salva la direccin de partida guardando en la cima de la Pila el valor actual del PC. De esta manera, al retornar de la subrutina se saca de la Pila la direccin de regreso en el programa principal. Para realizar un retorno de una subrutina se pueden emplear dos instrucciones. La ms habitual es return, que se limita a extraer de la cima de la Pila el valor que carga en el PC. Otra ms compleja es retlw k, que, adems de hacer lo mismo que return, carga en W el valor inmediato k que contiene. Es decir, devuelve un parmetro desde la subrutina. Para el final de las interrupciones hay otra instruccin cuyo nemnico es retfie. La operatividad de esta instruccin consiste en cargar en el PC el contenido de la cima de la Pila y poner el bit GIE = 1, pues al comenzar la interrupcin este bit se pone automticamente a 0 para evitar que cuando se atiende una interrupcin se produzca otra. GIE es el bit de permiso de todas las interrupciones. En cuanto a las instrucciones especiales, se han incluido dos en este grupo: clrwdt y sleep. La primera pone a 0 el contenido del Perro Guardin, es decir, lo refresca o lo reinicializa. El Perro Guardin si se desborda (pasa de Oxff a 0x00) provoca un Reset. La instruccin clrwdt hay que colocarla estratgicamente en ciertos puntos del programa para evitar la reinicializacin.
137
La instruccin sleep introduce al procesador en un modo de funcionamiento que se llama de Reposo o de Bajo Consumo. Detiene el oscilador y el procesador queda congelado, no ejecutando instrucciones y manteniendo el mismo valor las Puertas de E/S. Tambin pone los bits PD# = 0 y TO# = 1 y borra al Perro Guardin y al Divisor de frecuencia (Tabla 9.5).
En la Tabla 9.6 se presentan las principales caractersticas de las 35 instrucciones de los PIC de la gama media, agrupadas por funciones, tal como se han descrito.
138
10.1.
FASES DE DISEO
En el despertar del siglo XXI asistimos a una impresionante carrera mundial por incorporar microcontroladores a los productos de mayor consumo para mejorar la imagen, las prestaciones, el tamao, el consumo y el precio. Cada nuevo diseo nace con una idea y termina con el prototipo que la implementa. Durante ese proceso suceden ordenadamente una serie de etapas que hay que cubrir para llegar a un final feliz. En el desarrollo de cada fase se utilizan un conjunto de herramientas hardware y software, que segn su potencia reducen ms o menos el tiempo que se consume en completarla. Pero, aunque sean muy valiosas dichas herramientas, no hay que olvidar que, al igual que pasa con la mayora de las cosas en nuestro mundo, hay dos pilares fundamentales:
Con este panorama de trabajo se deben manejar excelentes herramientas que sean capaces de mejorar la idea inicial en el mnimo tiempo. Hasta hace poco, nicamente las grandes empresas podan soportar los grandes desembolsos econmicos que exiga la adquisicin de esas herramientas. Actualmente, los fabricantes de chips se van dando cuenta que para venderlos por cientos de millones de unidades tienen que facilitar y popularizar su empleo y poner a disposicin de los usuarios los medios que necesitan. Microchip se ha esforzado siempre en considerar las posibilidades de los profesionales particulares, y puede ser que sta haya sido la razn de haber escalado puestos en el ranking mundial de venta de microcontroladores durante la dcada de los noventa y ocupar uno de los puestos de cabeza. La disponibilidad de herramientas eficaces y econmicas justifica la espectacular 139
14 0
aceptacin de los PIC. Cualquier aficionado, estudiante, diseador particular o pequea empresa puede adquirir el instrumental requerido para el desarrollo de proyectos con PIC y cientos de empresas de todo el mundo compiten por mejorar, ampliar y abaratar todo tipo de herramientas. Para analizar las prestaciones y funciones que deben soportar las herramientas de desarrollo, se presentan las fases tpicas de un proyecto basado en un microcontrolador y que se muestran grficamente en el organigrama de la Figura 10.1. Se ha supuesto que no se dispone de una herramienta muy potente y cara llamada emulador en circuito y que se comenta ms adelante.
Fi
141
Tanto el organigrama de la Figura 10.1 como la tabla de la Figura 10.2 se han hecho pensando en personas particulares que no dispongan de la herramienta de trabajo por excelencia, el emulador en circuito, cuyo coste suele ser superior a los 1.000 dlares. No obstante, con las herramientas que se proponen se pueden alcanzar las mismas metas, de manera ms artesanal y con igual precisin y eficacia. La Figura 10.2 contiene una tabla que describe las caractersticas fundamentales de cada fase de un diseo con microcontrolador, cuando no se dispone de un emulador en circuito. 10.2. HERRAMIENTAS ACCESIBLES
Se describen modelos comerciales de las herramientas hardware y software empleadas en los diseos humildes, que pueden adquirir muchas personas a nivel particular.
142 10.2.1.
La cabeza
Es una herramienta que tenemos todos, pero es la ms importante. Con ella se puede obtener la clave del xito, que es la idea, y tambin puede suplir carencias y dificultades que se presentan en todos los diseos. Se usa en todas las fases y de su rendimiento depende todo el trabajo. Cuide bien su cabeza, porque con slo una buena idea que le proporcione puede ser suficiente.
10.2.2.
Editor de textos
Concebida la estructura bsica de la aplicacin, se puede atacar el desarrollo del software y del hardware. Con un equipo de especialistas estas dos partes se atacaran en paralelo, pero si el equipo es usted, como pasa a menudo, no se preocupe. No tendr que compartir xitos y fracasos. Le recomendamos que si est solo comience confeccionando el software. Tendr que escribir el programa de control de la tarea, para lo cual precisar de un editor de textos que trabaje con caracteres ASCII. El ms a mano es el propio editor del sistema MS-DOS de su computador. Teclee EDIT, ejecute y estar dentro de dicho editor. No obstante, le recomendamos usar el entorno MPLAB de Microchip, que contiene todas las herramientas software y lo puede recoger libremente en Internet o en el CD de este libro.
10.2.3.
Ensamblador o Compilador
En el editor tiene que ir tecleando el programa usando las instrucciones del lenguaje que elija. As crear el programa fuente. Dicho programa hay que traducirlo a cdigo binario o cdigo mquina para cargarlo en la memoria de instrucciones del microcontrolador y as poder ejecutarlo el procesador. A este programa ejecutable por el microcontrolador se le llama programa objeto. En los diversos ejercicios que vamos presentando en todos los captulos del libro hemos tratado de resolverlos con lenguaje Ensamblador y con C, para comparar los resultados. Tambin hay lenguajes muy fciles, como el BASIC, que podra utilizar si no es un experto en Informtica. El lenguaje que le recomendamos es el Ensamblador; con l obtendr el mnimo cdigo y as necesitar menos capacidad de memoria y menos tiempo para su ejecucin. Pero usted es libre.
Tambin para los PIC la empresa Microchip dispone del programa Ensamblador MPASM, cuyos nemnicos son similares a los utilizados por Intel. Si trabaja con un lenguaje de alto nivel, como el C, tiene varias opciones de adquirir un compilador que lo traduzca a cdigo mquina. Destaca el compilador de C creado por Byte Craft, cuyo coste ronda los 1.000 dlares. Otro ms barato y muy eficaz es el de la empresa CCS, que distribuye en Espaa Ingeniera de Microsistemas Programados, S. L. En Estados Unidos hay bastantes empresas que ofrecen compiladores e intrpretes del lenguaje BASIC, entre las que se distinguen Parallax, microEngineering Labs y Versa Tech. En Europa este lenguaje no tiene tanta aceptacin.
143
10.2.4.
Simulador software
Es un programa que reproduce por software el comportamiento del microcontrolador en la ejecucin de un programa, presentado en la pantalla del PC el estado ele todos los registros y recursos. No funciona en tiempo real al estar implementada la simulacin con software. Tampoco puede adaptarse con perifricos externos. Su empleo no exige ningn hardware y es muy prctico en la primera fase de depuracin del programa. Elimina muchos errores que agilizan el desarrollo posterior. Los simuladores software no estn recomendados en aplicaciones en las que el tiempo sea un parmetro estricto y determinante, as como en aquellos que tengan mucha dependencia con el mundo exterior. Microchip tiene el simulador MPSIM para los PIC y en el CD de este libro se incluye el SIM2000, slo aplicable a los PICl6X84, pero de un valor didctico y profesional extraordinario. Su gratuidad lo hace muy recomendable en formacin y diseo con esos modelos concretos de PIC. En la Figura 10.3 se muestra una pantalla del SIMUPIC'84, en la que puede apreciarse que el Men Principal dispone de todas las fases para la confeccin del software. Tiene ventanas en las que se visualizan los estados de registros, posiciones de memoria, el programa ensamblado y desensamblado, as como la presentacin del estado lgico que tiene cada una ele las patitas del PICl6X84. 10.2.5. El grabador
El programa objeto, o sea, en cdigo mquina ejecutable, hay que escribirlo en la memoria de i nstrucciones del microcontrolador. Para realizar esta operacin se necesita un grabador . Un grabador consiste en una tarjeta electrnica que soporta varios zcalos con diferente nmero de patitas, en los que se introducen diversos tipos de microcontroladores. Dispone de circuitos auxiliares y de estabilizacin de la alimentacin. La grabacin se controla mediante un programa de comunicacin desde un PC que se adapta al grabador por el puerto paralelo.
144
El grabador Micro'PIC Programmer es un buen exponente de este tipo de herramientas y es capaz de grabar todos los PIC de la gama media de 18, 28 y 40 patitas (Figura 10.4). 10.2.6. Sistema de desarrollo
145
10.2.7.
Tarjeta de prototipos
Consiste en una placa de circuito impreso donde viene montado el zcalo del microcontrolador, l a circuilera auxiliar y la estabilizacin de la alimentacin. Adems, dispone de una zona agujereada para soportar y conectar los perifricos especficos de la aplicacin. Insertando el microcontrolador con el programa grabado en su zcalo queda completado el prototipo definitivo. Confeccionado y depurado el programa, grabado el microcontrolador y comprobado el comportamiento real de gran parte del software mediante los perifricos del sistema de desarrollo, se pasa al montaje del prototipo. Una parte de la circuilera del prototipo siempre es i gual, porque es la que corresponde a la alimentacin y la auxiliar que acompaa al microcontrolador (cristal y Reset). Lo que cambian son los perifricos a controlar y que se conectan con las patitas de E/S. Para ellos se destina el rea agujereada. En la Figura 10.6 se muestra una fotografa de la tarjeta de prototipos PIC18-ME de Ingeniera de Microsistemas Programados, S. L., que es la que hemos usado en la implementacin de los ejercicios presentados en este libro. Est montada sobre un pupitre de metacrilato que tambin contiene el MicroTIC Trainer y un transformador de alimentacin, configurando una utilsima herramienta de laboratorio.
10.3.
EMULADOR EN CIRCUITO
Es una herramienta cara pero muy potente, que permite realizar un seguimiento completo y rpido de todas las fases de un proyecto. Con ella se reproduce el comportamiento del microcontrolador, pero ahora al emplearse hardware y software se consigue una similitud total de las
146
funciones. Se trabaja en tiempo real y se pueden conectar los perifricos externos a controlar para analizar los resultados de forma idntica a la que se producira si fuese el microcontrolador emulado el que estuviese ejecutando el programa de la aplicacin.
10.4.
Presentamos algunos proyectos que hemos considerado suficientes para abrir la mente y estimular la voluntad para que cualquier persona se decida a construir el primero.
147
148
149
segmentos. Las lneas RBO, RB I y RB2 se hallan conectadas a tres pulsadores para el ajuste de horas, minutos y segundos. Tambin RB 1 y RB2, junto con las 5 lneas de ms peso de la Puerta B, excitan a los segmentos de los displays. Para que aprecie las ventajas de usar una tarjeta de prototipos hemos montado el reloj digital sobre una placa de propsito general, que se muestra en la Figura 10.1 I . El enorme
150
tiempo que se malgasta en situar y conectar los componentes, los posibles exores de montaje, el coste similar de ambas tarjetas y la mediocre presentacin del prototipo no hacen recomen-dable utilizar este procedimiento. Usando la tarjeta de prototipos PIC18-ME se reducen al mnimo el tiempo y los fallos del montaje. Las patitas de E/S del PIC estn perfectamente sealizadas y accesibles, haciendo inmediata la conexin de los perifricos. El coste de la tarjeta PICIS-ME es similar a la de una de propsito general del mismo acabado. Finalmente, la presentacin tiene una imagen ms profesional y el riesgo de averas es nulo (Figura 10.12). Otra ventaja de las tarjetas de prototipo es que pueden usarse para muchos diseos, ya que finalizado uno de ellos pueden desoldarse los componentes. Con este fin es recomendable montar los perifricos con rapinado. En este proyecto el mdulo principal consiste en conseguir un tiempo patrn de 1 segundo que vaya incrementando el contador de segundos. Al alcanzar el valor de 60 se pondr a cero cl contador de segundos y se incrementar el de minutos. El de minutos pasar a cero al llegar a 60 e incrementar las horas, y stas pasarn a cero al llegar a 24. No hemos juzgado interesante incluir el programa, pero si le interesa puede solicitarlo a Ingeniera de Microsistemas Programados, S. L., que tambin comercializa el kit y el PIC16C54 grabado.
15 1
10.5.
UN DADO ELECTRNICO
Se describe la construccin de un dado electrnico que simula las seis caras de los reales y que tambin puede tirarse para sacar un nmero aleatorio del 0 al 6. Para la interpretacin electrnica usaremos un display de 7 segmentos sobre el que se visualizar el nmero de cada tirada y, tambin, un pulsador que indique el momento de la tirada. En la Figura 10.13 se muestra la fotografa de un kit comercial basado en el PIC16C54, que implementa esta aplicacin sobre una cajita de baquelita que contiene la pila de 9 V que precisa su alimentacin.
La Puerta B del PIC, que en la fase de diseo y en la comprobacin en el Micro'PIC Trainer puede ser un PIC 16X84, se configura como salida y sus lneas se aplican a los segmentos del display, como se refleja en la Figura 10.14. La lnea de menos peso de la Puerta A recibe el nivel lgico del pulsador de tirada.
152
En la Figura 10.15 se presenta el organigrama resumido para el programa del dado. En la Figura 10.16 se ofrece una fotografa de la implementacin especial del dato sobre una tarjeta de prototipos PIC18-ME. Lo ms llamativo es la sustitucin del display de 7 segmentos por un presentador que simula al display a base de numerosos leds. El programa lo encontrar en el CD. En los juegos de azar hay jugadores de ventaja que hacen trampas. Una podra consistir en modificar el programa para que cada cierto nmero de veces salga un nmero dado, o incluso para generar una secuencia de nmeros preestablecida. Usted no debe emplear sus conocimientos para lucrarse de forma poco honesta.
153
Hay infinidad de juegos que estn esperando su aportacin para que se jueguen ms, sean ms atractivos y hagan disfrutar ms a la gente. Las quinielas, la lotera primitiva, la bonoloto, las damas, la oca, el mus y el ajedrez le necesitan. Aydelos; adems de entretenerse puede entretener a los dems y, de paso, ganar algn premio por su trabajo.
10.6.
SEMFORO REGULABLE
Este sencillo proyecto va a permitir manejar tiempo y usar la memoria de datos EEPROM. Se trata de un semforo corriente con tres luces (roja, verde y mbar), que estn simuladas por tres diodos led de dichos colores. La luz mbar se enciende durante un segundo en la transicin de las otras dos (vase Figura 10.17). Mediante tres pulsadores, conectados a las tres lneas de menos peso de la Puerta A, se regula el tiempo que estarn encendidas las luces roja y verde. Interruptor RAO: Cuando introduce un nivel lgico alto el sistema funciona en modo AJUSTE y se pueden modificar los tiempos de las luces. Si introduce un nivel bajo, funciona en modo NORMAL. Interruptor RAI: Con nivel alto regula el tiempo de la luz roja y con nivel bajo el de la verde. Interruptor RA2: Con nivel alto incrementa el tiempo de la luz seleccionada y con nivel bajo se decrementa.
15 4
Las 8 lneas de la Puerta B se conectan a 8 diodos led integrados en una barra que tienen l a misin de visualizar el nmero de segundos, de 1 a 8, que est encendida la luz. bajo prueba (Figura 10.18).
La duracin establecida para el encendido de las luces roja y verde se registra en posiciones de la memoria de datos EEPROM para no realizar una nueva reprogramacin cuando se desconecta la alimentacin.
10.7.
PRESENTADOR DE MENSAJES
Es un buen ejercicio para experimentar el manejo de pantallas LCD, que en este proyecto se usan para visualizar diversos mensajes previamente grabados. Concretamente, se pueden visualizar hasta 8 mensajes diferentes de acuerdo con el cdigo binario que introduzcan tres interruptores, conectados a las tres lneas de menos peso de la Puerta A. La Figura 10.19 muestra el aspecto de esta aplicacin montada sobre una tarjeta de prototipos PIC 18-ME y la Figura 10.20 el esquema de conexionado. El programa de esta aplicacin, debidamente comentado, se halla en el CD, donde tambin podr encontrar el programa HOLA, que contiene las principales rutinas hsicas que se necesitan para manejar la pantalla LCD.
10.8.
CLAVE DE ACCESO
Como ltimo proyecto se describe una aplicacin que emplea a los dos perifricos ms clsicos en el control de los microcontroladores: teclado y pantalla LCD.
156
157
Para controlar el acceso a un recinto se debe pulsar sobre el teclado la tecla A seguida de otras cuatro con diferentes dgitos, que constituyen la clave. Si la clave es correcta se activa durante un segundo un rel, conectado a la lnea RAd, que abre la puerta. Se dan tres oportunidades para introducir la clave correcta. Adems, se utiliza un zumbador piezoelctrico que genera un sonido beep tras la pulsacin de cada tecla. Con la tecla C se puede cambiar la clave y la pantalla LCD genera una serie de mensjes durante la operacin. La clave queda registrada en la memoria EEPROM de datos de forma permanente. La Figura 1021 muestra la disposicin de los perifricos sobre la tarjeta PIC I S-ME y la Figura 10.22 ofrece el esquema de conexionado de los mismos con el PIC. El programa de la clave se ha incluido en el CD.
158
11.1.
INTRODUCCIN
Se ha reunido en este captulo una coleccin de ejercicios de programacin del PIC 16F84 en lenguaje Ensamblador. Tiene una finalidad exclusivamente didctica y va introduciendo progresivamente conceptos sobre la arquitectura del microcontrolador y nuevas instrucciones. En el desarrollo de programas se van describiendo caractersticas del entorno de programacin MPLAB de Microchip que incluye el programa Ensamblador MPASM y el simulador MPSIM, los cuales se pueden bajar de las pginas de Internet www.microchip.co m . En el CD que acompaa a este libro se incluye una versin del simulador SIM2000 cedida por sus autores, Pablo Martnez Garca y Francisco Jos Hernndez Villaln. Se trata de una extraordinaria herramienta de aprendizaje que permite comprender en profundidad la actuacin de las instrucciones a nivel de registros y de lneas de entrada y salida y perifricos. Adems tiene la opcin de poder simular los programas sobre el sistema de desarrollo Micro'PIC Trainer. La versin ms actualizada y un soporte tcnico acompaado por mltiples ayudas se pueden encontrar en la direccin www.simupic.com.
11.2.
Un computador, como sucede en pequeo con el microcontrolador, es una mquina que procesa datos de acuerdo con un programa de instrucciones. Por ejemplo, a un computador le podramos encomendar la labor de sumar datos. Con tal de que admitiese la operacin de sumar ya podramos resolver esta tarea. Todos los computadores saben sumar y nuestro PIC 16X84, al que vamos a referirnos en particular, tambin. Bueno, el caso es que slo saben sumar en binario, porque son mquinas electrnicas digitales. El sumador del PIC es capaz de sumar dos datos de 8 bits cada uno. Dicho sumador tiene un registro, llamado W (de trabajo), en donde aloja uno de los sumandos. El otro sumando debemos decir lo que vale (literal) o en qu posicin de la memoria de datos est. El resultado de la suma puede ir a ocupar W. Como los dos sumandos son de 8 bits cabe la posibilidad de que exista acarreo al sumar los dos bits de ms peso y el resultado tenga 9 bits. Para resolver tal circunstancia existe un flip-flop FC, sealizador de acarreo, que se 159
160
pone automticamente a 1 cuando sucede este acontecimiento. En la Figura 11.1 se muestra un esquema simplificado del sumador del PIC16X84. Adems del operando que recibe la ALU desde W precisa otro que puede ser un valor inmediato (literal) que se incluye en el cdigo de la instruccin, o bien el valor contenido en alguno de los registros de la memoria de datos. En la Figura 11.2 se muestra el multiplexor que permite la seleccin de una de estas dos posibles fuentes del segundo operando. Antes de exponer el enunciado del primer programa se comenta el comportamiento de las dos instrucciones que vamos a usar:
Esta instruccin es tpica en todos los procesadores y su misin es transferir el contenido de un registro fuente (1) a un registro destino (d). En los microcontroladores PIC todos los datos residen en posiciones de la memoria de datos y slo el registro de trabajo W se salva de esta regla. Esto significa que mov puede mover tres tipos de operandos fundamentales: l. 2. 3. El contenido del registro W. El contenido de una posicin de la memoria de datos o registro. Un literal o valor inmediato que se incluye en el cdigo mquina de la propia instruccin.
Mover el contenido de un registro fuente al registro W es una operacin habitual y sencilla. No est tan claro mover el contenido del fuente al fuente, es decir, dejarlo como estaba. En este ltimo caso hay que tener en cuenta que en esta instruccin se activa el sealizador de cero, FZ, que es un flip-flop que se pone automticamente a 1 cuando lo que se transfiere es cero.
161
En las dos ltimas instrucciones de suma funcionan automticamente tres sealizadores. El FZ, de cero, que pasa a valer 1 si el resultado de la operacin es 0. El de acarreo, FC, que se pone a 1 cuando hay acarreo en la suma de los dos bits de ms peso de los operandos, y finalmente el sealizador de acarreo intermedio, FDC, que adquiere el valor 1 cuando hay acarreo al sumar los dos bits que ocupan el lugar 4. (bit 3) de los operandos. Este ltimo sealizador es muy interesante si se trabaja con dgitos BCD.
162
EDICIN DEL PROGRAMA Para editar el programa se puede usar cualquier editor que use caracteres ASCII. El ms a mano es el propio del sistema operativo MS-DOS. En tal caso y si le damos como nombre a este programa PRIMERO, estando situados con el prompt del DOS se teclea: EDIT PRIMERO.ASM. El texto que existe detrs de las directivas, comandos e instrucciones precedido de ; slo tiene la misin de aclarar su contenido, pero es ignorado por el Ensamblador cuando traduce el programa en cdigo mquina. Son los comentarios.
16 3
El uso de maysculas y minsculas en este fragmento de cdigo obedece a una serie de reglas o normas de estilo, comunes entre los programadores en ensamblador, que aunque no son obligatorias, facilitan la lectura del cdigo fuente. Un resumen de las reglas empleadas es el siguiente:
Una vez editado el programa hay que ensamblarlo. Para ello nos situamos en el directorio del Ensamblador MPASM y se teclea MPASM. Se rellenan los datos que pide el programa y pulsando la tecla F10 se realiza el ensamblado. Obtenido el programa en cdigo binario ejecutable se puede simular el funcionamiento del mismo utilizando un simulador software. Recomendamos el MPASM de Microchip y el SIM2000, que presentamos a continuacin para que pueda editar y ejecutar programas desde el principio. Si usted ha sido capaz de entender el programa y la misin de las instrucciones, de momento ya basta, pero si tiene ganas de comprobar si sus pensamientos son acertados, le proponemos una cuestin.
164
MANEJANDO EL SIMULADOR SIM2000: EL PRIMER CONTACTO El simulador SIM2000 es una herramienta que trata de facilitar la labor del programador de PIC. Acaba de comprobar que para realizar un programa, por muy sencillo que sea, deben utilizarse varios programas: un editor, un ensamblador y un simulador. El SIM2000 trata de integrar todas esas herramientas en un nico entorno. Como habr comprobado, este libro viene acompaado por un CD en el que se incluye una copia del programa. Pues manos a la obra, vamos a probarlo! Lo primero que se debe hacer es instalar el programa; bsicamente eso se realiza siguiendo las instrucciones que sobre este apartado encontrar en el Apndice E, tambin se describe en el contenido del CD. REPETIMOS LA SUMA? Vamos a volver a realizar el programa anterior, pero esta vez con el SIM2000. Para eso ejecutamos el programa del simulador pinchando en el icono SIM2000. Una vez instalado, al iniciar el programa aparece la siguiente pantalla que da la posibilidad de acceder a los proyectos existentes, de consulta (ambos de extensin .asm) y de errores (*.err) simplemente siguiendo la ruta que lleva a donde estn guardados (Figura 11.3).
Como deseamos crear un programa nuevo, no haremos caso de momento a esta posibilidad de la pantalla inicial, pero la tendremos muy en cuenta porque ser de gran ayuda, ya que entre otras utilidades dispone la de consultar otros programas sin necesidad de salir del que estamos creando.
165
Finalmente nos disponemos a escribir el cdigo de este nuestro primer programa en SIM2000 (Figura 11.4).
166
Una vez compilado podremos ver detalladamente los errores (y corregirlos posteriormente) y la ejecucin del programa con o sin placa Micro'PIC Trainer. Se puede comprobar que efectivamente el programa suma los contenidos de las posiciones OxOc y OxOd y deposita el resultado en la 0x0e. Para ello se utiliza el botn Aade o elimina registros de la lista visual... que se encuentra en la consola de control que aparece al compilar el programa. Tiene el aspecto mostrado en la Figura 11.6.
Existe tambin la posibilidad de ejecutar el programa paso a paso mediante el primer botn que aparece en la consola de control, para ver mejor qu es lo que hace cada instruccin. Pero la madre de todo conocimiento es la experiencia, as que piense sus propios programas y simlelos. De momento, una interesante variante del ejercicio podra ser dos nmeros situados en las posiciones OxOc y OxOd de la memoria y almacenar el resultado en la misma posicin OxOd. Adems es interesante pensar en el mnimo nmero de instrucciones con las que se puede resolver este ejercicio; podr hacerlo con 5 instrucciones? La solucin est disponible en el archivo del CD con el nombre PRIMERO3.ASM. LA EFICIENCIA DEL ENSAMBLADOR FRENTE A LA COMODIDAD DEL C Para demostrar al lector la efectividad de la programacin en ensamblador hemos realizado el mismo programa en lenguaje C: suma el contenido de dos variables y almacena el resultado en una tercera variable, llamada resultado. El programa es el siguiente:
167
El programa ha sido compilado con el PCM de la casa Custoun Computer Services que comercializa Ingeniera de Microsistemas Programados, S. L., y se ha empleado el SIMUPIC'84 para desensamblar su cdigo y traducirlo al ensamblador. El resultado ha sido el siguiente:
168
El programa resultante est compuesto por 37 instrucciones! Ms de cinco veces las empleadas para realizar el mismo trabajo en ensamblador (no se preocupe si no entiende algunos de los nemnicos, ya ir comprendiendo su significado segn avance en la lectura). La flexibilidad del C tiene su precio en cuanto a tamao del cdigo y tiempo de ejecucin.
11.3.
Con el primer programa ya se conocen dos instrucciones (mov y add) y todas sus variantes. Vamos a aprender alguna nueva y hacer un segundo programa didctico para probarlo con el SIM2000. Se intenta manejar las lneas de E/S digitales que los microcontroladores suelen agrupar en conjuntos de 8 y que a nosotros nos gusta llamar puertas por la referencia que conllevan con la entrada y salida de informacin para los perifricos externos. El PIC 16X84 dispone de dos puertas, PUERTA A y PUERTA B, que simplificadamente denominaremos PA y PB. En este caso PA slo posee 5 lneas (RA0-RA4) mientras que PB consta de 8 lneas (RB0-RB7). Tanto las lneas de una puerta como de otra pueden actuar de forma independiente como entrada o salida. Todos los recursos del PIC se manejan como registros de 8 bits que estn implementados fsicamente como posiciones de la memoria de datos RAM. El valor de los datos que entran o salen por PA y PB estn materializados en dos posiciones de la RAM, que en el caso del PIC 16X84 corresponden a las direcciones 5 y 6, respectivamente. Existen otros dos registros o posiciones de la RAM que se emplean para configurar las lneas de PA y PB como entrada o salida, de tal forma que cuando en uno de los bits de estos registros se graba un 1, la lnea correspondiente de la puerta afectada acta como entrada; mientras que si se graba un 0, acta como salida. A estos registros de configuracin de las puertas se les denomina TRISA, al que controla PA, y TRISB, al que lo hace con PB.
169
La memoria de datos del PIC 16X84 est dividida en dos banco banco 0 y banco l y la anchura de cada posicin es de 8 bits. En las posiciones 5 y 6 del banco 0 se ubican los registros PUERTAA y PUERTAB, que contienen el byte de informacin que ha entrado o va a salir por las lneas de dichas puertas. Con igual situacin, pero en el banco 1, se hallan situados l os registros TRISA y TRISB que configuran la direccin de cada lnea (vase Figura 11.7). Cuando se conecta la alimentacin al PIC o se reinicializa su funcionamiento mediante un Reset, se activa automticamente el acceso al banco 0. Si se desea acceder a posiciones del banco 1 hay que poner a 1 el bit 5 de un registro llamado ESTADO y que ocupa, duplicado, dos posiciones que tienen la direccin 3 del banco 0 y del banco 1. Si, por ejemplo, se quisiese configurar como entradas a todas las lneas de la PUERTAA y como salidas a las de la PUERTAB, habra que cargar con un 1 a todos los bits de TRISA y con un 0 a todos los bits de TRISB. Suponiendo que el bit 5 del registro ESTADO valiese 1 y se pudiese acceder al banco 1, las instrucciones necesarias para realizar la configuracin de las dos puertas seran:
Cuando se comienza a trabajar por primera vez con el PIC16X84, el bit 5 del registro ESTADO se carga automticamente con un 0, con lo que se permite el acceso a las posiciones del
17 0
banco 0 de la memoria de datos. Para configurar las lneas de las puertas hay que acceder a l os registros TRISA y TRISB que se hallan en el banco 1, por lo que, previamente a cargar en ellos los valores adecuados, hay que poner a 1 el bit 5 de ESTADO. Una vez configuradas las puertas, habr que volver a poner a 0 el bit 5 del registro ESTADO para poder leer la informacin introducida por las lneas que funcionan como entradas o para poder enviar al exterior l os bits colocados sobre las lneas de salida, cuyos valores se hallan en las posiciones 5 y 6 del banco 0. Para resolver el nuevo ejercicio se comentan tres nuevas instrucciones:
171
172
El programa SEGUNDO.ASM puede quedar ms claro si en lugar de utilizar las direcciones reales en cdigo hexadecimal se utilizan etiquetas que las identifiquen.
Con estos ejercicios slo nos proponemos introducir al lector a la programacin del PIC. Si ha seguido nuestro paso hasta ahora, es una persona inteligente. Si lo ve oscuro es un to listo, porque con lo poco que hemos dicho es lgico que tenga sombras en el horizonte, pero lo peor ya ha pasado.
173
i Todava no sabe nada del PIC 16X84 y queremos que encienda varias luces!! Este mtodo es el que usamos con nuestros alumnos en clase y nos va muy bien, aunque, en confianza, el xito no se debe al mtodo sino a los alumnos. PROGRAMANDO EN C Tal como se hizo en el captulo precedente, se muestra el programa anteriormente desarrollado en ensamblador, escrito ahora en lenguaje C. El programa en cuestin es SEGUNDO.C:
PROPUESTA DE UN EJERCICIO PARA SUBIR NOTA Se propone un ejercicio con el que podr comprobar los conocimientos adquiridos hasta el momento. Se trata de sumar el valor introducido mediante cuatro interruptores conectados a las lneas RAO a RA3 de PA con el valor introducido por otros cuatro interruptores conectados a las lneas RBO a RB3 de PB. El resultado de esta suma deber situarse en la posicin de la memoria de datos OxOc. Al tratarse de la suma binaria de 2 operandos de 4 bits slo se debern tener en cuenta los 4 bits de menos peso del registro OxOc, aunque puede haber acarreo. Para comprobar su programa lo mejor es que lo simule con el SIM2000, pero si tiene algn problema o est algo perdido, en el CD que acompaa al libro se encuentra una solucin bajo el nombre SEGUNDO2.ASM. Su versin puede no coincidir con la propuesta aqu y, sin embargo, ser correcta. Para ir a un sitio hay muchos caminos.
174 11.4.
Junto con un nuevo programa se intenta desarrollar la circuitera electrnica asociada para proporcionar al lector una idea completa que aclare el interfaz del hardware con el software. En cuanto a novedades sobre instrucciones slo vamos a emplear una desconocida y muy fcil:
175
Al utilizar el programa Ensamblador MPASM, se comienza indicando el tipo de PIC que se usa y el sistema de numeracin.
Con objeto de no emplear en el programa las direcciones numricas de los registros que se usan, se asigna a cada uno de ellos una etiqueta identificativa que facilita la comprensin del programa. Hay registros que se hallan en los dos bancos de la memoria de datos, pero otros slo en uno. Hay que tener en cuenta que cuando se inicializa el programa tras un Reset, el procesador apunta automticamente al banco 0 y si se desea acceder al banco 1 es preciso poner a 1 el bit del registro ESTADO, que se halla en la direccin 3 de ambos bancos. La informacin que entra o sale por la Puerta A se implementa en la direccin 5 del banco 0, mientras que en esa direccin, pero del banco 1, se halla el registro de configuracin de las lneas de E/S de la Puerta A. Usaremos la etiqueta PUERTAA para ambos registros, pero accederemos a cada uno segn el banco que est activado en ese momento. Lo mismo haremos para los dos registros de la Puerta B, a los que denominaremos PUERTAB y se ubican en la direccin 6.
Una vez asignadas las etiquetas a los registros y elementos que maneja el programa, se pasa a delimitar el mapa de la memoria del programa. Como tras realizarse un Reset el PC apunta la direccin 0 de la memoria de programa, en dicha posicin habr que situar la primera instruccin. Al conectarse por primera vez el microcontrolador a la alimentacin se produce un Reset. La direccin 0 se destina al Vector de Reset y en ella se sita la primera instruccin del programa. El PIC 16X84 admite interrupciones, una de ellas al activarse la patita RBO/INT. Cuando se produce una interrupcin se guarda en la Pila el contenido actual del PC (direccin de retorno) y el PC se carga con la direccin 4, que es la destinada al Vector de Interrupcin. En este programa no se usan interrupciones y por tanto la direccin 4 de la memoria de programa
176
se podra utilizar libremente, pero teniendo en cuenta que es muy frecuente el uso de interrupciones, conviene que el programa de aplicacin no invada dicha direccin y en consecuencia comience en la direccin 5. Para iniciar el programa en la direccin del Reset 0 y al mismo tiempo situar la primera instruccin en la direccin 5, se coloca en la direccin 0 una instruccin de salto a la 5 de la siguiente forma:
La primera instruccin tiene como etiqueta inicio y el Ensamblador MPASM la situar en la direccin 5, gracias a la directiva previa org 5. Para configurar las lneas de la Puerta A como entradas y las de la Puerta B como salidas hay que cargar el registro de configuraciones de la Puerta A con unos y el de la Puerta B con ceros. Aunque la etiqueta que hace referencia al registro de datos y al de configuracin de la Puerta A es la misma PUERTAA, el acceso a uno u otro se efecta segn el banco de la memoria de datos que se halle activo. Para acceder a los registros de configuracin hay que poner a l el bit 5 del registro ESTADO. Cuando un interruptor est cerrado introduce un nivel bajo y como se desea que el diodo led correspondiente se encienda, es necesario complementar dicho bit para que los diodos, que se encienden por nivel alto, respondan al enunciado del proyecto. Para esta operacin se utiliza la i nstruccin de complemento.
177
Si usted es capaz de simular este programa con el simulador SIM2000 que se incluye con este libro y cuyo manejo se ofrece en un apndice; si, adems, dispone de un sistema de desarrollo como el Micro'PIC Trainer o de un grabador de PIC para escribir este programa en uno de ellos y, finalmente, monta en una tarjeta de prototipos el esquema de la Figura 11.9 y al conectar el PIC grabado le-funciona el ejercicio correctamente, ES UN MONSTRUO!! De todas formas, si usted no hace nada de lo que le hemos comentado en el prrafo anterior, pero va entendiendo todo lo que le contamos, YA SABE CMO FUNCIONAN LOS MI~ CRO0ONTROLADORES. Pero tenga en cuenta que hasta que no haga con sus propias manos una aplicacin y disee un programa y ponga todo ello en marcha, USTED NO SE APROVECHAR DE TODO LO QUE LE PUEDEN DAR LOS PIC. PROGRAMANDO EN C El listado que se presenta a continuacin es una de las posibles soluciones, realizadas para el compilador PCM de la casa Custom Computer Services:
178
De forma que primero se copia en W el contenido de la puerta A, de aqu se mueve a la puerta B y luego se complementa. Eso quiere decir que durante un ciclo de instruccin, la puerta A valdr lo mismo que la puerta B y en el siguiente ciclo lo contrario (al complementarse). De ah el efecto de parpadeo y la conclusin de que slo el lenguaje ensamblador nos da un control absoluto sobre la mquina. SE ATREVE CON ESTE EJERCICIO? PRIMEROS PASOS CON EL MICRO'PIC TRAINER Se ha conformado con ver una simple simulacin en la pantalla de su ordenador? No le queda la duda de si el montaje realmente funcionara en condiciones reales? Es normal. Por mucho que nos digan que una simulacin es fiel a la realidad nunca dejar de ser software. Vamos a comprobar que nuestro montaje funciona REALMENTE, con un PIC autntico. Para eso utilizaremos el Micro'PIC Trainer, que nos va a permitir grabar un PIC 16X84 y ejecutar el programa de control. Adems dispone de todos los perifricos necesarios para nues tro montaje, con lo que la comprobacin va a ser realmente sencilla. En el Apndice C se describe el esquema y el funcionamiento del Micro'PIC Trainer. Existe un apndice al final del libro en el que se explica detalladamente el uso del MI~ cro'PIC Trainer, pero como ms de uno estar ansioso por empezar, se describe brevemente su funcionamiento. En el CD encontrar un magnfico tutorial multimedia. Conecte el Micro'PIC Trainer al puerto paralelo de un PC y ejecute en este ltimo el programa de control PICME-TR. En la pantalla del computador seleccionamos la opcin de Borrar. Es importante comprobar que la barra de leds, la pantalla LCD y el display de siete segmentos estn desconectados mediante los jumpers correspondientes antes de escribir cualquier cosa en el PIC, ya que estos perifricos estn conectados a la puerta B, que a su vez es utilizada durante la grabacin serie del PIC. Se carga el programa TERCERO.HEX del disquete que ya est ensamblado, y se vuelca directamente en la memoria de programa del PIC mediante la opcin Programar Todo. Ya est todo listo para ejecutar el programa. En el sistema de desarrollo Micro'PIC Trainer hay cinco interruptores que estn conectados a la puerta A y que seleccionaremos cambiando de posicin los jumpers que se encuentran sobre ellos a la posicin DIGITAL. Adems, los jumpers J9 y J10 debern estar en la posi cin A4 y B0, respectivamente. Tambin se conectar la barra de leds mediante J7. En estas condiciones, al accionar el pulsador de Reset se ejecuta el programa TERCERO. Cada vez que se cierra un interruptor deber encenderse el led correspondiente. Este mismo montaje puede realizarse en una placa de prototipos. Necesitar grabar el PIC16X84 en el Micro'PIC Trainer o un grabador cualquiera. Y dos cosas ms: una tarde y
179
el dinero que se gastara en ella. Usted elige, pero no se pierda un buen plan por ver cmo se encienden y apagan unos leds cuando acciona unos interruptores. La actuacin del Micro'PIC Trainer la puede simular con el SIM2000. PROBANDO EL PROGRAMA CON EL SIM2000 Si simulsemos en SIM2000 el programa se inicia con la pantalla del editor de la Figura 11.10.
Antes de ejecutar el programa se visualizarn los recursos relevantes (Figura 11.1 l).
180
En este caso conviene ejecutar el programa todo seguido y observamos que las entradas RAO a RA4 continan tales mientras que RBO a RB7 son salidas y han cambiado la direccin de las flechas. Este mismo ejercicio lo puedes ejecutar con placa Micro'PIC Trainer y pulsando en el i cono del PIC puedes observar tambin cmo quedan las entradas y salidas del PIC (Figura 11.13).
181
11.5.
182
18 3
LO MONTAMOS Y NO FUNCIONA Si el lector, tal y como le aconsejamos, se ha atrevido a montar el diseo propuesto en este captulo, es probable que se haya llevado una decepcin al observar que en su montaje el valor indicado por los leds no se incrementa de uno, sino que llega a su valor mximo (0x5F) al instante. Esto es debido a que el tiempo en que se produce el incremento del contador y la visualizacin del nuevo valor es tan pequeo que no se puede distinguir a simple vista. En particular, el bucle] consta de 7 instrucciones, con una de salto, con lo que tardar en ejecutarse 8 ciclos de instruccin que suponen 8 ps, ya que a 4 MHz el ciclo de instruccin es de 1 ps.
184
PROGRAMAMOS EN C Se muestra la versin en lenguaje C del ejercicio propuesto en este captulo. Se ha usado el compilador de C PCM de la empresa Custom Computer Services.
ste es otro claro ejemplo de cmo simplifica la programacin el uso de un lenguaje de alto nivel. Aunque la eficiencia del cdigo obtenido es mucho mayor programando directamente en ensamblador. PROBANDO CON EL SIM2000 Tal y como se ha hecho en los ejercicios anteriores, editamos y pulsamos el botn de compilar y aparece en pantalla el informe sobre los Errores y Warnings. Finalmente, pulsamos la opcin de Ejecucin Sin placa. Si nos fijamos en el enunciado del ejercicio, nos damos cuenta de que en l se especifica la frecuencia del reloj a la que debe funcionar el PIC, en este caso a 4 Mhz. Para cambiar la frecuencia de reloj de la simulacin con el SIM2000 se acude a la opcin Proyecto Define Frecuencia, mediante la forma abreviada ALT + F o simplemente pulsando el botn CJ , y una vez all se introduce la frecuencia deseada en Hz. Por tanto, si se desea una frecuencia de 4 Mhz, indicaremos 4.000.000 Hz. Una vez configurada la velocidad de reloj, se ejecuta el programa mediante la opcin DepuracinEjecutar, pulsando directamente F6 o pulsando el botn 1'. Se aprecia cmo efectivamente los valores de PB representados en la ventana de visin externa se incrementan de uno en uno hasta alcanzar 0x05f. Para visualizar la ventana de visin externa ProyectoAgregar Registros, ALT +A o pulsando el botn a, tras lo cual slo tenemos que elegir el registro que deseamos visualizar, en este caso el CONTA.
185
El programa de este captulo termina en un bucle infinito, pero el lector se dar cuenta de que si deja el programa en ejecucin durante el tiempo suficiente, ste volver a su comienzo. Esto se debe al Watchdog o Perro Guardin, que es un temporizador incorporado en el PIC que se encarga de provocar un Reset cada cierto tiempo. Este temporizador es configurable desde un mnimo de 1,8 ms a un mximo de 2,3 segundos. Para evitar problemas volveremos a la ventana de Consola de Control y confirmamos que el WDT est desactivado (off).
11.6.
Una vez que se conoce el comportamiento del temporizador/contador TMRO se pretende manejarlo con este ejercicio en el que se dedica a controlar un tiempo concreto, de relativamente larga duracin. Dicho tiempo (8,2 ms) se usar para regular el parpadeo de un diodo led.
En este ejercicio en vez de esperar a que se desborde el TMRO, se detecta cuando se han contado 16 impulsos y el bit 4 de TMRO vale 1. El nico hardware que hay que aadir al circuito bsico de funcionamiento del PIC es el que corresponde al perifrico a gobernar, tal como se muestra en la Figura 11.16.
186
En la Figura 11.17 se muestra el organigrama que refleja las fases operativas del programa y subrutina RETARDO, que es la que determina el tiempo de 8,2 ms.
187
Para comprobar que el TMRO ha llegado a 16, 0 = 0001 00002, se explora el momento que su bit 4 pasa a valer 1. Observe que en este caso no se desborda el TMRO. Para asignar el Divisor de frecuencia al TMRO con el rango de 1:128 hay que cargar al registro OPTION con el valor indicado en la Figura 11.18. PROGRAMA DE PARPADEO DEL DIODO LED
188
ERROR DE ENSAMBLADO! Este programa da un error al ser ensamblado... Por qu? Para hallar una respuesta a esta pregunta debemos recordar una de las caractersticas ms conflictivas de los PIC: el empleo de varios bancos de memoria. A la hora de etiquetar direcciones de memoria hemos asignado a una direccin de memoria dos etiquetas. En realidad son dos direcciones diferentes, porque estn en bancos distintos que nada tienen que ver la una con la otra, pero eso es algo que el ensamblador no sabe.
Cmo podramos solucionar esto? En principio podramos etiquetar OPTION como 0x81 ya que est en el banco 1 y sta es la direccin que le correspondera si los bancos siguieran un orden de numeracin absoluto. El caso es que esto tampoco funciona. Se suelen utilizar dos trucos para evitar este inconveniente. El primero es etiquetar OPTION como 0x81, pero cada vez que hagamos referencia a esta direccin usamos la etiqueta OPTION^81 H. Esto evita que el ensamblador d error y hace que el programa se ensamble correctamente. La otra solucin, menos engorrosa, es la de utilizar etiquetas compartidas, esto es, una nica etiqueta que se refiera a varias direcciones. Existen varias formas de hacer esto; nosotros empleamos:
De esta manera sabremos que la parte de la etiqueta a la izquierda del subrayado se refiere a la posicin de memoria 001 del banco 0, mientras que la parte derecha se refiere a la misma direccin, pero del banco siguiente. El programa, utilizando etiquetas compartidas, quedara del siguiente modo:
189
190
MONTAJE Y EXPERIMENTACIN EN EL MICRO'PIC TRAINER Existe un problema a la hora de probar este programa con el Micro'PIC Traine, y es que nuestro programa est preparado para funcionar a 1 MHz, mientras que el cristal de cuarzo del que dispone la placa es de 4 MHz. La solucin es fcil: hay que modificar nuestro programa. Como la frecuencia de la placa es cuatro veces mayor habr que multiplicar por cuatro el valor del contador, y esto en binario significa rotar 16 dos veces a la izquierda.
Hay que comprobar el bit 6 en lugar del bit 4, con lo que el nuevo programa queda as:
191
Al ensamblar este programa y cargarlo en el Micro'Trainer, parpadea el led? La respuesta es NO. El led no parpadea porque una temporizacin de 8,2 ms es inapreciable al ojo humano. Si se fija mucho notar que el led se ilumina con una intensidad ligeramente inferior a la led de alimentacin; es el nico efecto apreciable a simple vista. CORRECCIONES AL PROGRAMA Vamos a tratar de conseguir la mayor temporizacin posible utilizando el Divisor de frecuencia con rango 256 y el TMRO con su valor mximo. De esta manera, a 4 MHz obtendremos:
Ya no sirve controlar el cuarto ni el sexto bit de TimerO, porque los necesitamos todos. Aunque vigilsemos el sptimo bit, ste se pondra a 1 al llegar a 128 y no a 255. Qu bit debemos vigilar si queremos saber cundo desborda el Timer0? Usamos el sealizador que nos indica cundo se produce el desbordamiento del temporizador. Est en el registro INTCON, direccin Ox0b y Ox8b (se encuentra en los dos bancos). En concreto es el bit TOIF, que es el bit 2.
192
El sealizador TOIF debe ser borrado por software; de ah la instruccin bcf INTCON,2 antes de retornar a la subrutina de espera. SE ATREVE CON ESTE EJERCICIO? Supongamos que se desea una temporizacin de un segundo. Ya hemos visto que a 4 MHz, utilizando el mayor valor para el Divisor de frecuencia y para el temporizador, lo mximo que hemos conseguido ha sido una temporizacin de 65 ms; valor muy lejano al deseado. Una posibilidad estara en reducir la frecuancia de funcionamiento del PIC, pero vamos a fijarla en 4 MHz, que es la del cristal que lleva el Micro'PIC Trainer. Le proponemos una solucin en el CD bajo el nombre QUINT05.ASM. Una pista: si consigue temporizar 8,192 ms (cosa que ya hemos hecho) 122 veces, tendr 999,424 ms, prcticamente un segundo.
193
11.7.
LAS INTERRUPCIONES
Las interrupciones constituyen un recurso esencial en la resolucin de las aplicaciones reales y los PIC16X8X disponen de 4 fuentes capaces de producir interrupcin:
La interrupcin provocada por la aplicacin de un flanco en la RBO/INT es muy eficaz para controlar cualquier suceso asncrono externo. La interrupcin producida por el cambio de estado en una de las 4 patitas de ms peso de la puerta B est diseada para controlar perifricos especficos, como el teclado. La que controla el fin de la escritura en la EEPROM de datos es muy necesaria cuando se guarda informacin en esta memoria no voltil, porque el tiempo de escritura es relativamente largo (10 ms) y variable. Finalmente, la interrupcin ms empleada es la que origina el desbordamiento del temporizador/contador TMRO, porque con ella se puede controlar con mucha exactitud un perodo de tiempo, sin desviar la atencin del procesador. El ejercicio que se presenta dispone de una tarea principal muy simple y de otra auxiliar basada en el cambio de estado de un perifrico cada cierto tiempo. Existe un retardo que se controlar con la interrupcin producida por TMRO, y as el procesador se dedicar a la tarea principal, excepto cuando le avise el TMRO, instante en el que se desviar temporalmente a atender al otro perifrico.
11.8.
En la Figura 11.19 se ofrece el esquema general de conexionado del PIC16X84 que corresponde a las especificaciones del ejercicio. Para controlar el retardo de 1 segundo para el parpadeo del led conectado en la lnea RB7, se generar una interrupcin cada dicho tiempo por desbordamiento del TMRO.
194
Inicialmente se cargar al TMRO con el valor 12 1 0, con lo que el desbordamiento se producir al cabo de 244 (256 - 12) impulsos aplicados a dicho temporizador. Dichos impulsos sern los del oscilador interno Tosc, pero divididos por 256 en el Divisor de frecuencia, con lo cual la temporizacin total ser:
Como no se alcanza el retardo de 1 segundo se emplea un contador auxiliar CONTA que al cargarse con un valor de 16, 0 y decrementarse una unidad cada 62,4 ms, cuando llegue a 0 conseguir, aproximadamente, el tiempo buscado (62,4 ms x 16). En el programa que resuelve el ejercicio se ha utilizado como instruccin clave la btfss registro,n, que explora el valor del bit n de registro y si vale 1 se salta la siguiente instruccin
195
196
brinco, o sea, el PC se incrementa en 2 unidades. La instruccin inversa es btfsc registro,n, que realiza el brinco si el bit examinado vale 0. Si usted ha seguido nuestras explicaciones sobre el comportamiento de las interrupciones y especialmente la del TMO, es muy posible que entienda la mayor parte del programa del parpadeo. Es muy difcil que lo comprenda todo, porque siempre hay algo que est mal. Comience a pensar seriamente que aquello que no encaja con sus esquemas puede estar equivocado o tratarse de una errata. PROGRAMANDO EN C La principal novedad de este programa con respecto a los anteriores, programados tambin en lenguaje C, es la incorporacin de la rutina que maneja la interrupcin por desbordamiento del Timer 0 y las directivas del compilador para la gestin de las interrupciones. El programa en cuestin es el siguiente:
197
LE PROPONEMOS UN EJERCICIO LLENO DE INTERRUPCIONES El siguiente programa controla una alarma conectada a las cuatro puertas de un coche. Se utiliza la interrupcin por cambio de estado en una de las patitas RB7 : RB4 y la interrupcin por flanco activo sobre la patita RBO/INT. El diseo prctico de esta aplicacin sera algo complicado, por lo que nuestro objetivo ser nicamente mostrar al lector el programa en ensamblador para que se familiarice con el uso de interrupciones. El programa se llama ALARMA.ASM. Para animarle a trabajar con este programa le advertimos que una de las actividades que ms usan los controladores es la que se dedica a las alarmas.
198
199
11.9.
Siendo W el registro de trabajo por excelencia y el ms usado en todos los programas, resulta curioso que no disponga de algunas instrucciones que existen para realizar algunas operaciones con los otros registros. Se presentan algunas soluciones a estas carencias.
200
Para llamar a la subrutina IGUAL en un programa cuando se cumple que el contenido del REG 1 es igual al del REG2 se puede usar las siguientes instrucciones:
201
EXPLORANDO LA CAUSA DE LA INTERRUPCIN Los PIC16X8X disponen de 4 fuentes o causas que provocan una interrupcin. Las cuatro mandan a la direccin 0004 H de la memoria de cdigo el flujo de control (Vector de Interrupcin), por eso hay que comenzar averiguando cul de las cuatro ha sido la causante de la interrupcin para atenderla con su correspondiente rutina. Las mencionadas causas son: 1.a 2.a 3.a 4.a Interrupcin Externa por activacin de la patita RBO/INT (Sealizador INTF). Desbordamiento del TMRO (Sealizador T0IF). Cambio de estado en RB 7:4 (Sealizador RBIF). Fin de escritura en EEPROM (Sealizador EEIF).
Los sealizadores son bits que se ponen a 1 automticamente en cuanto se produce alguna de las causas de interrupcin. Como se aprecia en la Figura 11.20, tres de estos sealizadores se ubican en el registro INTCON y el cuarto en el EECONl. Al iniciarse en el Vector de Interrupcin la Rutina de Servicio de la Interrupcin hay que averiguar la causa explorando los cuatro sealizadores, para saltar a la rutina especfica, que llamaremos EXTERNA, TIMER, PUERTAB y EEPROM, segn que se hallen a 1 los sealizadores INTF, TOIF, RBIF y EEIF, respectivamente. Se ofrece un programa que explora a los sealizadores en el orden comentado y al encontrar al primero que valga 1 enva el flujo de control a su rutina de tratamiento.
PROYECTO PARA MANEJAR UN DISPLAY DE 7 SEGMENTOS Con este ejercicio se pretende manejar todo el conjunto de instrucciones del repertorio, disear el hardware y confeccionar el software para controlar un visualizador de 7 segmentos desde varios interruptores. A las 3 lneas de menos peso de la Puerta A de un PIC16X84 se conectan 3 interruptores por los que se introduce un nmero binario comprendido del 000 al 111. A las lneas de la Puerta B se conectan los segmentos de un display, que como se aprecia en el esquema de la Figura 11.21, son 7 ms el del punto decimal, dp.
202
El ejercicio consiste en visualizar sobre el display el nmero decimal correspondiente al binario que se introduce por los tres interruptores.
203
204
El mdulo anterior realizaba el tratamiento del display; falta explorar los 3 interruptores para averiguar el valor a representar. Se supone que un interruptor cerrado equivale a 1 y abierto a 0. Por esta razn habr que invertir los niveles introducidos por RA2:0 y despus convertir a decimal el cdigo binario. Para efectuar esta conversin se supone que el bit de menos peso corresponde con el valor invertido que se introduce por RAO. Si dicho valor vale 1 el peso de este dgito es 1. Si RA1 = 1, el peso de este dgito corresponde a 2, 0, y si RA2 = 1, el peso de este bit corresponde a 4, 0. Se propone a continuacin la cabecera del programa del proyecto y la parte correspondiente a la exploracin de los interruptores y el clculo del nmero decimal correspondiente que se carga en W, desde donde ya puede enlazarse con el mdulo del DISPLAY expuesto anteriormente.
205
Al ejecutarse este mdulo se consigue que el registro de trabajo W quede cargado con el valor que debe visualizar el display de 7 segmentos, por cuyo motivo la ltima instruccin llama a la subrutina display. En realidad, como el PIC opera en binario, el valor que contiene W es el mismo que el que se obtendra explorando los 3 interruptores e invirtiendo su valor. Sin embargo se ha realizado este intil proceso (convertir el valor binario en el mismo valor binario) para manejar instrucciones muy usuales. Lo que perseguimos es que intente probar el programa, y de lo que nos alegraramos es que no le funcionase, porque trampas, si no las hay, aparecen solas. As que a trabajar, porque si logra implementar el hardware y el software de este ejercicio y le funcionan correctamente, ES UN ARTISTA! PROGRAMANDO EN C Este programa puede confeccionarse en C de la siguiente manera:
Hemos utilizado un array tradicional en lugar de una tabla que haya que recorrer mediante saltos, mtodo que resulta bastante ms sencillo pero que consume memoria RAM. Por otra parte, el clculo del valor decimal introducido por la puerta A se sigue haciendo mediante una serie de condiciones y sumas similar a la programada anteriormente en ensamblador.
206
PROBANDO EN EL MICRO'PIC TRAINER Para probar nuestro programa con el Micro'PIC Trainer se procede de forma parecida al SIM2000, pero usando el display de la propia placa. Cargar el programa en el PIC de la placa y conectar el display de siete segmentos mediante el jumper correspondiente. El display deber visualizar el nmero que se est introduciendo por los interruptores RAO, RA1 y RA2. Se atreve con esto? Ahora que sabemos manejar un display de siete segmentos, sabemos hacer temporizaciones y no tenemos ningn problema a la hora de leer interruptores, le proponemos un ejercicio que combina todo. Se trata de confeccionar un programa que lea tres interruptores en la Puerta A, situados en RAO, RA 1 y RA2, y que introducen un 0 al estar cerrados y un 1 al estar abiertos. Contar en un display conectado a la puerta B (tal y como se muestra en la Figura 11.21) los valores desde el 0 al introducido por los interruptores de la Puerta A a intervalos de 500 ms. Ejemplo: si se i ntroduce el valor 011, en el display deber aparecer 0-1-2-3-0-1-2-3 ..., con una pausa de 500 ms entre nmeros. Suponer que el PIC va a funcionar a una frecuencia de 4 MHz y realizar la temporizacin mediante interrupciones. Tampoco estara de ms que utilizarse el Perro Guardin. Existe una solucin a este ejercicio en el CD bajo el nombre SPTIM02.ASM.
12.1.
PRESENTACIN
Nuestra experiencia profesional nos ha impulsado a seleccionar una herramienta que nos ha proporcionado excelentes resultados didcticos y tcnicos en el desarrollo de proyectos reales basados en microcontrolador. Se trata del laboratorio Universal Trainer, de Ingeniera de Microsistemas Programados, S. L., que dispone de la instrumentacin bsica para la implementacin de diseos electrnicos (fuentes de alimentacin, generadores de funciones, etc.) as como todo tipo de perifricos habituales en las aplicaciones industriales (interruptores, leds, displays de 7 segmentos, zumbadores, potencimetros, etc.) y una amplia placa protoboard para conexionar todos los elementos sin necesidad de soldadura. Junto a dicho laboratorio el fabricante ha desarrollado 7 mdulos de aplicacin desde la Electrnica Digital y los Semiconductores hasta los microcontroladores, pasando por la Electrnica Analgica y los dispositivos lgicos programables PLD. Para el trabajo con microcontroladores existen tres mdulos, uno de los cuales est destinado a trabajar con los PIC desde los dispositivos de Parallax y el lenguaje PBASIC, mientras que los otros dos se orientan a trabajar con el lenguaje Ensamblador sobre el PIC 16F84 o sobre los PIC ms avanzados. Hemos escogido algunas de las aplicaciones contenidas en el mdulo PIC1 destinadas a trabajar en Ensamblador con el PIC 16F84 para iniciar en la implementacin real de aplicaciones a nuestros lectores. Dicho mdulo consta de una coleccin de experiencias, una tarjeta para la grabacin desde el PC del PIC16F84 y un conjunto de componentes auxiliares que conjuntamente con los existentes en el Universal Trainer permiten llevar a cabo todas las prcticas. En el volumen 2 de la obra a todo col or titulada Laboratorio de Prcticas de Microelectrnica, editada por McGraw-Hill, se recogen todas las caractersticas y proyectos destinados a los mdulos con microcontroladores y con PLD. En el CD que acompaa a este libro se incluyen los programas fuente en Ensamblador de los ejercicios que se comentan a continuacin. 12.2. 12.2.1. PRCTICA 0: HERRAMIENTAS DE DESARROLLO Objetivos
Describir las herramientas necesarias para desarrollar las prcticas propuestas en el presente mdulo de Microcontroladores 1, dedicadas al dispositivo PIC 16F84. 207
208 12.2.2.
Herramientas hardware
Se han diseado dos tarjetas de prototipos llamadas PROTO'PIC y PROTO'PIC 2, a elegir por el usuario, y que se entregan totalmente montadas y comprobadas. Ambas incluyen el dispositivo PIC16F84 y son capaces de soportar los dispositivos PIC16F873 y 161`876 de mayores prestaciones. Mediante un sencillo sistema de conexin a base de una regleta de pinos, la tarjeta se inserta en el mdulo board del entrenador Universal Trainer. Sobre este entrenador, se realizan las conexiones elctricas necesarias entre los distintos perifricos y las seales de E/S del PIC en funcin de la aplicacin a realizar. La tarjeta PROTO'PIC o la PROTO'PIC2 se usan tambin en el Mdulo PIC2. La tarjeta PROTO'PIC Es la ms pequea, sencilla y econmica. Est pensada para aquellos usuarios que dispongan de algn tipo de circuito grabador como puede ser el Micro'PIC Trainer o el Micro'PIC Programmer (vase Figura 12.1).
El PIC 161`84 viene montado de serie, junto con el circuito oscilador a 4 MHz. Se ha previsto un zcalo de 28 patillas para insertar y experimentar con los dispositivos PIC de 28 patillas 16F873 y 161`876. De la misma forma, se incluye un cable ICSP (In Circuit Serial Pro que que se conecta en el zcalo apropiado de cualquier grabador de los anteriormente citados. Mediante una hilera de 26 pinos quedan a disposicin del usuario todas las lneas de E/S del PIC, incluidas las de alimentacin. De esta forma, la tarjeta se inserta sobre el mdulo board del entrenador Universal Trainer y de forma rpida y fcil se conectan los perifricos deseados. El PIC puede grabarse sin necesidad de retirar la tarjeta del circuito en el que se est experimentando. Cuando se acciona el conmutador S W l la tarjeta queda en el modo de PROGRAMACIN. El PIC recibe informacin desde el PIC a travs del grabador (Micro'PIC
209
Trainer, Micro'PIC Programmer, etc.). Cuando SW1 est sin accionar, el PIC queda en el modo EJECUCIN. Todas las lneas de E/S del mismo estn disponibles en la hilera de pines. La Figura 12.2 muestra la serigrafa con la disposicin de componentes de la tarjeta de prototipos PROTO'PIC. Se puede apreciar claramente la distribucin de las seales presentes en la hilera de pines de conexin.
La tarjeta PROTO'PIC 2 La finalidad y manejo de esta tarjeta es similar a la anterior. Est diseada para aquellos usuarios que no dispongan de ningn tipo de circuito para la grabacin de dispositivos PIC. Dicho circuito de grabacin est incluido en la propia tarjeta lo que la hace totalmente autnoma y funcional (vase Figura 12.3). Se incluye el cable para la conexin con el canal paralelo de un PC a travs del cual y, mediante el software de grabacin adecuado, se proceder a la grabacin del dispositivo PIC que se vaya a emplear. La tarjeta incluye tambin los circuitos de alimentacin y estabilizacin necesarios para obtener las tensiones de trabajo y grabacin. Es necesario alimentarla desde un transformador que suministre 12 VAC. Dicho transformador no est incluido en el kit.
210
La serigrafa de la Figura 12.4 muestra la disposicin de compomentes de la tarjeta y la distribucin de lneas de E/S a travs de la regleta de conexin de 26 pines. Dicha distribucin es idntica a la de la tarjeta PROTO'PIC 2.
12.2.3.
Herramientas software
Con objeto de proporcionar a los usuarios un kit de prcticas totalmente funcional, se incluye, adems de una de las dos tarjetas anteriormente explicadas, los componentes adicionales necesarios as como el CD que contiene lo siguiente:
Los programas fuente Son ficheros de tipo texto editados con cualquier procesador de textos. El EDIT es el procesador de textos integrado en el MS-DOS ms extendido y fcil de emplear, cuya pantalla de trabajo se muestra en la Figura 12.5. No obstante, cualquier otro procesador del entorno Windows puede ser utilizado. La nica condicin es que los ficheros se guarden en formato ASCII. Se recomienda usar los programas ms actuales recogindolos de la pgina web de Microchip. Los programas fuente se guardan en ficheros con extensin ASM y contienen las instrucciones, directivas, etiquetas, mensajes, etc., con las cuales el PIC desarrollar una determinada aplicacin. Un programa fuente en s mismo no puede ser grabado directamente sobre la me-
21 1
moria de programa del PIC. Es necesaria una traduccin previa de dicho programa fuente a cdigo mquina o hexadecimal. Dicha traduccin recibe el nombre de ensamblado. En el CD de prcticas se proporcionan todos los programas fuente de los ejercicios propuestos. De esta manera, el usuario evita la tediosa tarea de tener que teclearlos. A pesar de todo, pueden ser editados para su modificacin, impresin, etc. El Ensamblador MPASM Es el encargado de traducir las instrucciones del programa fuente en sus equivalentes en cdigo mquina para su posterior grabacin sobre la memoria intena del PIC. En el CD de prcticas se suministra el Ensamblador MPASM de Microchip en su versin MS-DOS. Este fabricante ofrece, en su pgina web, constantes actualizaciones y mejoras. Tambin contiene ensambladores y entornos de trabajo para Windows, as como los respectivos manuales. Todo ello se puede recoger desde la pgina http://www.microchip.com. L e recomendamos utilizar la ltima versin disponible. El MPASM se ejecuta desde MS-DOS tecleando MPASM desde la lnea de comandos en el directorio actual o indicando la ruta donde se encuentre. Aparece una pantalla de trabajo como la mostrada en la Figura 12.6. En el campo superior Source File se indica ruta y/o el nombre del fichero fuente (*.ASM) a ensamblar. El resto de campos se completa con una serie de valores por defecto, como se ve en la figura anterior. El proceso de ensamblado se inicia al pulsar la tecla F10. Tras ensamblar un fichero fuente se obtienen otros tres ficheros de idntico nombre pero con extensiones diferentes:
21.2
El software de grabacin Mediante este software es posible proceder a la grabacin del PIC con el fichero de cdigo mquina obtenido tras el ensamblado. Los usuarios que adquieran la tarjeta de prototipos PROTO'PIC se les supone en disposicin de los grabadores Micro'PIC Trainer y/o Micro'PIC Progranuner (entre otros), y deben estar familiarizados con el correspondiente software de grabacin. Por su parte, aquellos usuarios que hayan adquirido la tarjeta de prototipos PROTO'PIC 2 pueden utilizar el software PROTOPIC que se incluye en el CD de prcticas y que se explica a continuacin. La pantalla de trabajo se muestra en la Figura 12.7 y es muy similar al software de grabacin de Micro'PIC Trainer y Micro'PIC Programmer. En la ventana SELECCIN DE MODELO se selecciona el tipo de PIC que se va a emplear. Las caractersticas ms relevantes del mismo se resumen en la ventana inferior MODELO ELEGIDO. Mediante COMPROBACIN DE BORRADO se activa o no la posibilidad de comprobar si un PIC est borrado antes de proceder a su grabacin. Con la ventana PALABRA DE CONFIGURACIN se seleccionan las distintas modalidades posibles para configurar el PIC: proteger o no el cdigo interno, activar o no el temporizador Watchdog (WDT), activar o no el temporizador de arranque (Power Timer), as como seleccionar el tipo de oscilador. La ventana superior representa el BUFFER DE MEMORIA DE PROGRAMA donde se visualiza los cdigos hex. que sern transferidos hacia o desde el PIC. Los ocho botones de la parte inferior permiten realizar una serie de tareas tpicas. Abrir Fichero permite seleccionar de entre los ficheros ejecutables *.HEX, el que se desea grabar,
transfirindose al buffer de memoria. Programar Todo graba sobre el PIC tanto el contenido del buffer como la palabra de configuracin actual. Por su parte, el botn Programar Palabra slo graba la palabra de configuracin y no el buffer de memoria. El botn de Verificar comprueba si el contenido de la memoria de programa del PIC coincide con el del buffer de memoria. El botn Leer Pic lee el contenido de la memoria de programa de ste y lo visualiza en el buffer. El botn Borrar borra completamente el contenido actual del PIC. La comprobacin de borrado se realiza mediante el botn Comprobar Borrado. Finalmente, el botn Salir termina la ejecucin del software de grabacin devolviendo el control al sistema operativo.
12.2.4.
Tutorial
Mediante este sencillo tutorial se pretende resumir de forma clara y concisa todos los pasos que se deben llevar a cabo para realizar las prcticas propuestas. 1. Realizar las conexiones elctricas del montaje de la prctica en cuestin, siguiendo las instrucciones y esquemas en cada caso particular. Para ello se inserta la tarjeta de prototipos PROTO'PIC o PROTO'PIC2 en el entrenador Universal Trainer, donde se hace el tableado apropiado.
214 2.
3.
4.
Ensamblar, mediante el ensamblador MPASM, el programa fuente correspondiente y que viene editado en el CD de prcticas. Dicho programa se puede editar y modificar mediante el editor EDIT o cualquier otro. Si hubiera errores de ensamblado se locali zan con ayuda del fichero *.ERR, se corrigen en el fuente *.ASM y se vuelve a ensamblar. Grabaremos sobre el PIC el cdigo mquina obtenido y que estar disponible en el fichero *.HEX. Para ello se sigue la siguiente secuencia: a) Se ejecuta el software de grabacin correspondiente. Si se emplea la tarjeta PROTO'PIC2, sta se debe conectar directamente al canal paralelo del PC y se ejecuta el programa PROTOPIC. En caso de utilizar la tarjeta PROTO'PIC, sta debe conectarse con el zcalo del grabador que se vaya a emplear (Micro'PIC Tramer, Micro'PIC Programmer, etc.), mediante el cable plano incluido. Se ejecuta el programa correspondiente. b) Conectar las alimentaciones tanto del Universal Trainer como del grabador (PROTO'PIC2, Micro'PIC Trainer, Micro'PIC Programmaer, etc.). c) Se pulsa el conmutador SW1 para poner la tarjeta de prototipos en el modo de programacin. Se recuerda a los usuarios de Micro'PIC Trainer que los jumpers J5, J6 y J7 deben estar abiertos. d) Se selecciona el modelo de PIC a emplear y se comprueba que est borrado. Se abre el fichero *.HEX deseado y, mediante la palabra de configuracin, se selecciona el oscilador XT y Watchdog como corresponda. Acto seguido se graba y verifica. e) Una vez grabado el programa, el conmutador SW 1 se pone en la posicin RUN de ejecucin. Comprobamos el correcto funcionamiento de la prctica y hacemos las modificaciones que en cada caso sugiera el apartado dedicado al trabajo personal.
12.3. 12.3.1.
Realizar un ejemplo, lo ms sencillo posible, que permita analizar la forma de programar las lneas de E/S de un PIC16F84, para el posterior control de los perifricos conectados a las mismas. 12.3.2. Fundamentos tericos bsicos
El microcontrolador PIC 16F84 dispone de un total de 13 patillas o lneas de E/S a travs de las cuales se conectan los distintos perifricos que se desean gobernar. Esas 13 lneas se agrupan en dos puertas. La puerta A est representada en la posicin 0x05 del rea de datos. Cualquier instruccin de un programa que implique leer o escribir sobre esta posicin, conlleva obtener o sacar informacin binaria por las cinco lneas que componen dicha puerta y que se denominan RA0-RA4. Los tres bits de ms peso de la posicin 0x05 no estn reflejados en ninguna lnea, por lo que no tienen ningn valor.
215
Por su parte, la puerta B est representada en la posicin 0x06 del rea de datos. Al igual que en el caso de la puerta A, cualquier operacin de lectura o escritura sobre esta posicin permite obtener o sacar informacin binaria por las ocho lneas de que consta esta puerta y que se denominan 11130-11137. Paralelamente, asociados a estas puertas existen dos registros llamados TRISA y TRISB. Se localizan en las posiciones 0x05 y 0x06 del banco 1 del rea de datos, respectivamente. Segn el valor binario que se almacene en ellos se determinan si las lneas de las puertas A y B actuarn como entradas o salidas. Un bit 0 en cualquier posicin de cualquiera de estos registros, configura la lnea de la puerta correspondiente como salida, un bit 1 la configura como entrada. Cualquiera de las lneas de ambas puertas pueden configurarse, por tanto, como entrada o como salida de forma independiente.
12.3.3.
Esquema electrnico
La Figura 12.8 muestra el esquema de las conexiones a realizar entre el entrenador Universal Trainer y la tarjeta PROTO'PIC o PROTO'PIC2.
12.3.4.
Materiales necesarios
21 6
MICROCONTROLADORES
12.3.5.
Montaje prctico
Consiste en conectar cinco interruptores de entrada EO-E4 a las lneas RAO-RA4 y cinco Ieds de salida SO-S4 a las lneas RBO-RB4 de la tarjeta PROTO'PIC. La alimentacin de esta tarjeta se realiza por los pines I y 3 (GND) y por el pin 2 (+5 Vcc). La fotografa de la Figura 12.9 muestra el montaje del circuito.
12.3.6.
Desarrollo de la prctica
El programa que se presenta en el fichero PRACTI.ASM realiza la lectura de los cinco interruptores de entrada conectados a RAO-RA4. El estado lgico de los mismos se representa en l os cinco leds de salida conectados a RBO-RB4. La Figura 12.10 presenta el organigrama de trabajo correspondiente.
12.3.7.
Trabajo personal
En esta primera prctica, el trabajo personal consistir en realizar los pasos necesarios para la comprobacin del funcionamiento del programa propuesto. 1. Una vez editado el programa fuente (est editado en el fichero EJER1.ASM i ncluido en el CD de prcticas) se proceder a ensamblarlo. Para ello se utilizar el ensamblador MPASM incluido tambin en dicho disco. Se obtiene as el programa ejecutable EJERl .HEX. Mediante el software de grabacin PROTOPIC, tambin incluido, se proceder a grabar el PIC con el fichero ejecutable obtenido en el paso anterior. La palabra de configuracin debe establecer al WDT en OFF, el oscilador del tipo XT y la proteccin de cdigo en OFF.
2.
217
3.
Suponiendo que el montaje del esquema de la Figura 12.8 ya est realizado sobre el Universal Trainer, se procede a verificar el correcto funcionamiento del programa. Basta cambiar de estado los interruptores EO-E4 del entrenador para apreciar el mismo cambio de estado en los leds SO-S4.
12.4. 12.4.1.
Realizar un programa que controle la salida en funcin de dos seales de entrada distintas. 12.4.2. Fundamentos tericos bsicos
Es muy frecuente tener que controlar una carga (motor, lmpara, etc.) desde dos puntos situados a cierta distancia entre ellos. Es el clsico caso de una habitacin con una instalacin conmutada en la que una lmpara se gobierna desde dos interruptores colocados en posiciones distantes entre s. Desde cualquiera de ellos, se puede gobernar el encendido o apagado de la lmpara.
218
Inicialmente, cuando ambos interruptores estn en reposo (a nivel 0) la lmpara permanece apagada (a nivel 0). A partir de esta situacin, cada vez que cambie el estado de cualquiera de los interruptores, tambin cambiar el estado de la lmpara. La tabla de la verdad mostrada muestra los diferentes estados lgicos del sistema a realizar.
12.4.3.
Esquema electrnico
Se muestra en la Figura 12.11. Se aprecia cmo dos interruptores de entrada se conectan con l as lneas RAO y RA1. La salida a la lmpara se simula mediante un diodo del conectado en S0.
12.4.4.
Materiales necesarios
219
12.4.5.
Montaje prctico
Se muestra en la fotografa de la Figura 12.12. Conectar la alimentacin del [ndulo PROTO'PIC. Las seales de entrada RA0 y RAl se conectan con los interruptores E0 y El respectivamente. La salida RBO se conecta con el led S0 que simula la Impara a gobernar.
12.4.6.
Desarrollo de la prctica
El organigrama de la Figura 12.13 representa la secuencia de trabajo que realiza el programa propuesto. Dicho programa est disponible en el CD de prcticas, en el fichero PRACTIASM.
12.4.7.
Trabajo personal
Analizar las instrucciones del programa para llegar a su total comprensin. Una vez ensamblado mediante el Ensamblador MPASM, proceder a grabarlo en el PIC y comprobar su correcto funcionamiento en base a la tabla de la verdad anterior.
12.5. 12.5.1.
El ejemplo pretende mostrar cmo, mediante el programa adecuado, es posible resolver cualquier automatismo de tipo combinacionel. Un nmero determinado de salidas se activan en funcin de las combinaciones binarias presentes en un nmero determinado de lneas de entrada.
220
12.5.2.
Como novedad, en esta prctica se propone el empleo del WDT. Se trata de un temporizador que est incluido en todos los modelos de dispositivos PIC. Su misin consiste en provocar un reinicio del sistema cada vez que se sobrepase un intervalo de tiempo determinado. Dicho intervalo es de 18,2 ms multiplicado por el valor del preescaler interno.
221
Para evitar que haya sobrepasamiento, el programador debe intercalar estratgicamente en su programa, la instruccin de refresco del WDT (CLRWDT), evitando as el reinicio del sistema. En aplicaciones reales es muy interesante contemplar el empleo del WDT y su correspondiente refresco peridico. De esta manera, si el sistema por cualquier motivo se bloqueara, el programa deja de ejecutarse y con ello la ejecucin de la instruccin de refresco CLRWDT. El WDT sigue su temporizacin hasta que sobrepase el intervalo de tiempo, provocando un reinicio automtico del sistema sin intervencin humana de ningn tipo.
12.5.3.
Esquema electrnico
12.5.4.
Materiales necesarios
12.5.5.
Montaje prctico
Se presenta en la fotografa de la Figura 12.15. Como en ocasiones anteriores se debe asegurar la correcta alineacin de la tarjeta PROTO'PIC.
222
12.5.6.
Desarrollo de la prctica
El programa fuente que resuelve el automatismo propuesto se encuentra en el CD de prcticas, en el fichero PRACTIASM.
12.5.7.
Trabajo personal
Se propone realizar un programa que, en funcin de las combinaciones presentes en las entradas RAO, RA 1 y RA2, gobierne las salidas RBO, RB 1, RB2 y RB3 de acuerdo a la tabla de la verdad mostrada en la pgina siguiente.
22 3
12.6. 12.6.1.
Se pretende resolver un automatismo de tipo secuencial en el que la salida no depende del estado actual de las entradas, sino tambin del estado anterior de stas.
12.6.2.
Efectivamente, en ocasiones el control de una o varias salidas no depende del estado lgico actual de las entradas, tambin depende de la secuencia de estados lgicos que se produjeron sobre esas entradas. El ejemplo propuesto trata de gobernar un zumbador de alarma mediante dos pulsadores: ON y OFF. Cuando se activa durante un breve espacio de tiempo el pulsador ON, la alanna se activa y permanece activada aunque dicho pulsador se desactive. Si se activa el pulsador OFF, la alarma se desconecta y se mantiene en este estado aunque el pulsador OFF vuelva a la posicin de reposo y se desactive. Si ambos pulsadores permanecen activados simultneamente, la alarma permanecer desactivada. Realmente el ejemplo propuesto responde al funcionamiento de un flip-flop tipo R-S asncrono cuya tabla de la verdad se muestra:
12.6.3.
Esquema electrnico
Se muestra en la Figura 12.17. Los pulsadores El 0 y El 1 del entrenador Univeresal Trainer proporcionan las seales de entrada ON y OFF respectivamente, y se conectan a las seales
224
RAO y RA 1. La seal de salida RBO se conecta con el zumbador del entrenador a modo de alarma sonora.
12.6.4.
Materiales necesarios
12.6.5.
Montaje prctico
Se muestra en la fotografa de la Figura 12.18. La tarjeta PROTO'PIC se alimenta con +5 Vcc. Los pulsadores E10 y E11 se conectan con las entradas RAO y RA1, respectivamente. La salida RBO se conecta bien con el zumbador presente en el Universal Trainer o bien con cualquiera de los led SO-S7.
12.6.6.
Desarrollo de la prctica
El programa fuente se encuentra en el fichero PRACT4.ASM del CD de prcticas y se corresponde con el organigrama de trabajo que se muestra en la Figura 12.19.
225
226 12.6.7.
Trabajo personal
Ensamblar el programa fuente y grabarlo sobre el microcontrolador situado en la tarjeta PROTO'PIC. Montar el circuito segn el esquema de la Figura 12.17 para verificar el funcionamiento. Inicialmente la salida permanece desconectada. Basta pulsar E10 para comprobar que la salida se activa y permanece en este estado a pesar de soltar E10. Cuando se acciona E l 1, la salida se desconecta y permanece en estado aun cuando E l 1 deje de accionarse. Finalmente, si se pulsan ambos pulsadores simultneamente, la salida queda desconectada. Al soltarlos, el estado de la salida depender del ltimo pulsador que se dej de accionar.
12.7. 12.7.1.
Explicar el funcionamiento y el manejo del TMR0. Para ello se propone un sencillo ejemplo consistente en un juego de luces en el que cada lmpara permanece iluminada un determinado tiempo controlado por dicho TMR0.
12.7.2.
El TMR0 consiste en un temporizador de 8 bits que est presente en todos los miembros de la familia PIC. Puede trabajar en modo temporizador o en modo controlador. En el primero de los casos, el TMR0 evoluciona a la cuarta parte de la frecuencia de trabajo del sistema (Fosc/4 = 4Tosc), es decir, cada cuatro pulsos del oscilador principal. Suponiendo un PIC trabajando a una frecuencia de 4 MHz, la evolucin del TMR0 se produce cada 1 ps. El TMR0 puede trabajar asociado a un divisor o preescaler que divide los pulsos a contar por un valor seleccionable comprendido entre 2 y 256. De esta forma se puede aumentar el tiempo mximo de temporizacin. En general, dicho tiempo se calcula segn la siguiente frmula:
donde 4 x Tose es cuatro veces el perodo de la frecuencia de trabajo (4 x Tosc), N representa el valor de 8 bits que cuenta el propio TMR0 y P el valor del preescaler seleccionado. Cada vez que el TMR0, como consecuencia de su constante evolucin, alcanza el valor 0, se dice que se ha desbordado. Este suceso queda reflejado en el bit TOIF del registro INTCON, que se pone a nivel 1 . Este bit habr que reponerlo a nivel 0 si se desea controlar una nueva temporizacin. El TMR0 es un contador de tipo ascendente. Para hacer una correcta temporizacin, hay que cargar el complemento a 2 del valor deseado.
227
12.7.3.
Esquema electrnico
Se muestra en la Figura 12.20. Es un circuito muy sencillo en el que basta conectar los led SO-S7 del entrenador Universal Trainer con las seales RB0-RB7 de la tarjeta de prototipos PROTO' PIC.
12.7.4.
Materiales necesarios
12.7.5.
Montaje prctico
Se muestra en la fotografa de la Figura 12.21. Se recuerda una vez ms la necesidad de alimentar correctamente la tarjeta de prototipos PROTO'PIC.
12.7.6.
Desarrollo de la prctica
El fichero PRACT5.ASM del CD de prcticas contiene el programa fuente correspondiente a esta prctica. El organigrama de trabajo se muestra en la Figura 12.22. Consiste en un juego de
22 8
l uces en el que las salidas se van activando secuencialmente una tras otra durante un intervalo de tiempo de 0,1" controlado por el TMRO, dando una sensacin de movimiento. El timer evo-luciona cada 1 microseg. dado que la frecuencia de trabajo es de 4 MHz. Se ha seleccionado un preescaler de 256 y el valor que se carga el TMRO es de 195. La temporizacin as obtenida es de 49,9 ms. Como esto no es suficiente, dicha temporizacin se manda repetir dos veces, con l o que el tiempo final transcurrido es de 99,9 ms (0,1 "). La activacin secuencia) de las salidas se realiza mediante la instruccin de rotacin de derecha a izquierda del valor binario inicial 00000001.
229
12.7.7.
Trabajo personal
Se propone modificar el programa desde dos puntos de vista diferentes. Por un lado, variar la temporizacin que mantiene activada cada salida, haciendo que el efecto de movimiento sea ms o menos rpido. Por otra parte, el programa se puede mejorar haciendo que el sentido de l a rotacin se pueda seleccionar mediante un interruptor de entrada conectado, por ejemplo, a l a lnea RA4.
12.8. 12.8.1.
Estudiar el funcionamiento y el manejo del preescaler mediante un ejemplo que permite modificar el valor del mismo con objeto de realizar temporizaciones variables.
12.8.2.
El preescaler no es ni ms ni menos que un divisor de frecuencia. El factor de divisin se puede ajustar entre una serie de valores. Todos los dispositivos de la familia PIC disponen de un preescaler con un factor de divisin de entre 1:2 y 1:256. Dicho preescaler se puede asociar al TMR0, o bien al WDT del PIC, pero no a los dos al mismo tiempo. Cuando se asocia al TMR0, se puede aumentar el valor mximo posible de la temporizacin, tal y como se analiz en la prctica anterior. El TMR0, evoluciona en funcin del valor seleccionado del preescaler. Si, por ejemplo, se selecciona el valor 1:2, el TMR0, evoluciona cada dos pulsos de reloj o eventos. Un preescaler de 1:256 har que el TMR0, evolucione cada 256 de esos eventos. El bit PSA del registro OPTION permite determinar a quin se asigna el preescaler, al TMR0, o al WDT. Igualmente los bits PS2, PSI y PSO de ese mismo registro permiten seleccionar el factor de divisin segn la tabla siguiente:
230 12.8.3.
Esquema electrnico
Se muestra en la Figura 12.23. Los interruptores EO-E2 se conectan a las entradas RA0-RA2 respectivamente. Los led SO-S7 se conectan con las salidas RB0-RB7
12.8.4.
Materiales necesarios
12.8.5.
Montaje prctico
Se conectan los interruptores de entrada EO-E2 con las lneas RA0-RA2S, que sern utilizadas como entradas. Los led SO-S7 se conectan con las lneas RB0-RB7S, que se emplearn como salidas. Estos led se irn encenciendo secuencialmente a diferentes velocidades (vase Figura 12.24).
12.8.6.
Desarrollo de la prctica
El fichero PRACT6.ASM del CD de prcticas contiene el programa fuente con el ejemplo en cuestin. Habr que ensamblarlo y grabarlo en el PIC para, una vez realizado el montaje, comprobar el funcionamiento. El organigrama de la Figura 12.25 muestra el esquema de trabajo.
2.31
Figura 12.25.
Organigrama
Es muy similar al ejemplo de la prctica anterior. En esta ocasin el valor del preescaler no es fijo, viene determinado por el estado lgico de los i nterruptores EO-E2 de entrada. Segn dicho estado, se selecciona uno de los ocho posibles factores de divisin. Cuando estn a 000, se selecciona el factor 1:2, que corresponder con la temporizacin ms corta. Cuando estn a 111, se selecciona el factor 1:256, que se corresponder con la temporizacin ms larga.
232
EL TMR0, se carga para contar 50 eventos de 1microseg.. Esta cuenta se repite 200 veces, lo que da un lapsus de 10 ms. Si el preescaler elegido es de 1:2, la temporizacin mnima ser de 20 ms. Con un preescaler de 1:256, dicha temporizacin aumenta hasta 2,56"". El efecto que estas variaciones producirn sobre las salidas estar relacionado con la velocidad a la que se van encendiendo secuencialmente cada una de las luces.
12.8.7.
Trabajo personal
Al igual que en la prctica anterior, se sugiere hacer las modificaciones de programa necesarias para variar los tiempos as como las secuencias de encendido de las lmparas de salida.
12.9. 12.9.1.
Explicar el funcionamiento y manejo del temporizador WDT as como sus posibles aplicaciones. Igualmente se emplea la instruccin SLEEP como mtodo para colocar el PIC en el modo standby de bajo consumo.
12.9.2.
El WDT consiste en un temporizador cuya base de tiempos es totalmente independiente del resto del sistema. Esto quiere decir que, a pesar de que el PIC estuviera en standby, o bloqueado, o en cualquier otra situacin, el WDT seguir funcionando. La nica forma de conectarlo o desconectarlo es a travs de la palabra de configuracin durante el proceso de grabacin del dispositivo y no mediante el programa de aplicacin. La temporizacin nominal que realiza es de 18,2 ms. Dicha temporizacin puede verse aumentada si al WDT se le asocia el preescaler estudiado en la prctica anterior. Si durante este intervalo no es refrescado mediante la instruccin CLRWDT se produce o bien un reini cio general del sistema, o bien una reanudacin de la ejecucin del programa (WAKE-UP) si el dispositivo hubiera estado en standby. En el primero de los casos, el PC se carga con la direccin 0000 del vector de RESET. La ejecucin del programa comienza desde el principio. En cualquier caso el bit/TO# del registro STATUS se pone a 0 informando de alguna manera que el reinicio ha sido provocado por desbordamiento del WDT y no por que se acabe de encender el sistema o se haya accionado l a seal de entrada MCLR#, que es activa por nivel bajo. Si, por otra parte, el microcontrolador se encontraba en el modo standby de bajo consumo, el desbordamiento del WDT provoca su despertar (WAKE-UP) y reanuda la ejecucin desde donde se qued. La instruccin SLEEP pone al microcontrolador en el modo standby de bajo consumo. Su ejecucin en cualquier punto del programa detiene toda actividad del microcontrolador. Existen dos formas de cancerlar el modo standby: una por desbordamiento del WDT, como ya se ha comentado, y otra cuando se produce cualquier tipo de interrupcin.
233
12.9.3.
Esquema electrnico
12.9.4.
Materiales necesarios
12.9.5.
Montaje prctico
12.9.6.
Desarrollo de la prctica
La Figura 12.28 muestra el organigrama de trabajo al que responde el programa fuente incluido en el fichero PRACT7.ASM del CD de prcticas. Consiste en un contador binario cuya cuenta se refleja en los leds de salida. El preescaler queda asociado al WDT y el factor de divisin se establece segn el valor binario que se introduce mediante los interruptores EO-E2 a travs de RA0-RA2.
23 4
El microcontrolador se pone en el modo standby al ejecutar la instruccin SLEER A pesar de ello el WEIT sigue funcionando. Cuando se desborda, se reanuda la ejecucin del programa. Se incrementa el contador binario, se lee el estado actual de las entradas RA0-RA2 y se actualiza el valor para el preescaler.
235
IMPORTANTE: Una vez ensamblado el programa se proceder a grabar el microcontrolador asegurndose de que el WDT se activa mediante la palabra de configuracin. En caso contrario, si el WDT est desconectado, el modo standby se mantiene permanentemente no producindose cuenta binaria alguna.
12.9.7.
Trabajo personal
Analizar el funcionamiento del circuito comprobando que, segn el estado de EO-E2, la cuenta avanza ms o menos rpido. Si los tres interruptores estn a 0, el preescaler seleccionado para el WDT es de un factor de 1:1. La cuenta se incrementa cada 18,2 ms. Si por el contrario esos i nterruptores estn a 1 , el factor es de 128 y la cuenta evoluciona cada 2,3 (0,018 x 128).
12.10. 12.10.1.
Analizar otro modo de funcionamiento del TMR0, que consiste en la posibilidad de contar eventos o pulsos externos.
12.10.2.
El TMR0, tiene dos modos de trabajo: modo temporizador y modo contador. Ambos modos son bsicamente iguales. Se dice que el TMR0, trabaja en el modo temporizador, tal y como se ha venido utilizando hasta ahora, cuando la base de tiempos es la propia frecuencia del sistema (Fosc/4 = 4Tosc). Dado que la frecuencia es conocida, resulta fcil controlar con exactitud el valor de una determinada temporizacin. Basta multiplicar 4 veces el perodo de dicha frecuencia de trabajo (4Tosc) por el valor cargado con el propio TMR0, y por el preescaler seleccionado (si ste est asignado al TMR0, Sin embargo, el TMR0, tambin puede temporizar en base a una frecuencia o pulsos externos que se introducen por la patilla RA4/TOCKI. Como esa frecuencia puede ser desconocida o los pulsos no tienen por qu ser peridicos, en lugar de temporizar se habla de contar. El bit TOCS del registro OPTION permite seleccionar entre estos dos modos de trabajo. Por otra parte, el bit TOSE del mismo registro permite establecer si los pulsos externos sern contados en cada flanco ascendente o descendente. El empleo del TMR0, en el modo contador es similar al ya conocido. Se selecciona el preescaler (si procede), se carga el TMR0, con el nmero de pulsos a contar (su complemento a 2, dado que es un contador ascendente) y se detecta el final de la cuenta cuando el bit TOIF del registro INTCON pasa a nivel 1.
12.10.3.
Esquema electrnico
236
12.10.4.
Materiales necesarios
12.10.5.
Montaje prctico
Es el mostrado en la Figura 12.30. Se emplea el generador lgico del entrenador. Se encargar de suministrar los pulsos a contar. Se recomienda seleccionar la mnima frecuencia disponible. Tambin se pueden emplear pulsadores para generar los pulsos, pero stos producen el efecto rebote que se tratar ms adelante, y la cuenta puede verse alterada. 12.10.6. Desarrollo de la prctica
237
El ejemplo emplea una vez ms al WDT como temporizador auxiliar. Efectivamente, el programa queda en standby tras ejecutar la instruccin SLEER El desbordamiento del WDT se producir aproximadamente al de 2" dado que se le asign un preescaler de 128 (0,0182 x 1 28). Cuando esto ocurre, se reanuda la ejecucin del programa habilitando nuevamente el generador lgico (RB 1 = 1) y desconectando el led S0 (RB0 = 0).
238
12.10.7.
Trabajo personal
Ensamblar el programa fuente y grabarlo sobre el dispositivo PIC. Se recuerda que el WDT debe quedar activado, de lo contrario el led SO quedar activado permanentemente al no finalizar nunca la situacin de standby producida por la instruccin SLEER Comprobar igualmente que, variando el valor binario de los interruptores EO-E3 de entrada, se vara el nmero de pulsos a contar.
12.11. 12.11.1.
Ensear el concepto de las interrupciones y manejar la interrupcin que puede producir el TMRO cada vez que desborde y alcance el valor 0.
12.11.2.
Una interrupcin provoca que el procesador cancele temporalmente el trabajo en curso, tambin llamado programa principal, y pase a ejecutar otra tarea o programa, llamado programa de tratamiento de la interrupcin. Cuando se produce una interrupcin, el sistema guarda, de forma automtica, la direccin actual del PC sobre un rea de registros especiales llamada pila. Dicha pila consta de 8 niveles o registros que se gestionan automticamente y no son accesibles por los programas del usuario. Seguidamente, el PC se carga con una direccin fija llamada vector de interrupcin, que en el caso de los PIC es la 0x004. A partir de esta direccin comienza el programa de tratamiento oportuno. Al final de ste se coloca la instruccin RETFIE, que recupera desde la pila y devuelve al PC la direccin de donde parti. Se contina as con la ejecucin del programa principal. El TMRO es uno de los perifricos que pueden provocar, si se desea, interrupcin cada vez que finalice la temporizacin. Para ello basta activar el bit GIE del registro INTCON, que otorga un permiso general de interrupciones, y el bit TOIE que habilita la interrupcin del TMRO en particular. Cuando se provoca y acepta una interrupcin, el bit GIE se pone a 0 automticamente, volviendo a 1 cuando se ejecuta la instruccin RETFIE al final del tratamiento. De esta forma se garantiza que durante un tratamiento de interrupcin no pueda provocarse ninguna otra.
12.11.3.
Esquema electrnico
Para hacer una demostracin del funcionamiento de la interrupcin del TMRO, se propone montar el circuito representado en la Figura 12.32.
239
12.11.4.
Materiales necesarios
12.11.5.
Montaje prctico
Es el mostrado en la Figura 12.33. Basta conectar los interruptres EO y El a las entrads RAO y RA l. Las salidas RBO y RB l se conectan a los leds SO y SI, que reflejarn el estado lgico de los interruptores anteriores. Finalmente, la salida RB7 se conecta al led S7, que producir intermitencia cada vez que haya una interrupcin.
12.11.6.
Desarrollo de la prctica
El organigrama de trabajo se representa en la Figura 12.34 y se corresponde con el programa fuente del fichero PRACT9.ASM del CD de prcticas. El TMR0, se programa para que provoque una interrupcin cada 50 ms. Para ello se carga con el valor 195 y se le asocia un preescaler de 256. Cada vez que se provoquen 5 interrupciones, se produce un cambio de estado de la salida RB8. Este cambio se realiza, por tanto, cada 250 ms (50 ms -5). Al margen de ello, el programa est leyendo constantemente el estado de las entradas RAO y RA 1 y reflejndolo sobre las salidas RBO y RB 1.
240
12.11.7.
Trabajo personal
Ensamblar el programa fuente, grabarlo sobre el PIC y montar el circuito propuesto para comprobar el funcionamiento. Se puede observar que la reaccin de las salidas RBO y RB 1 en respuesta a las entradas RAO y RA l es prcticamente instantnea, pero no por ello la intermitencia de la salida RB7 deja de producirse. Se sugiere aumentar el tiempo de esa intermitencia, hacindola ms lenta. Se observar que l a reaccin de las salidas a l as entradas sigue siendo instantnea.
241
12.12.
12.12.1. Objetivos
Conocer el resto de interrupciones que el dispositivo PIC16F84 es capaz de reconocer.
242
Los led S0 y S7 se conectan a las salidas RAO y RA1 respectivamente. Se activarn durante un cierto tiempo cada vez que se provoque la interrupcin correspondiente.
12.12.4.
Materiales necesarios
12.12.5.
Montaje prctico
Se muestra en la fotografa de la Figura 12.36. Simplemente consiste en conectar los interruptores EO-E3 con las lneas de entrada RB4-RB7, el pulsador El 0 con la lnea de entrada de i nterrupcin externa RBO/INT y, finalmente, los led S0 y S7 se conectan con las lneas RAO y RA I que actuarn como salidas. Desarrollo de la prctica
12.12.6.
El fichero PRACT l O.ASM del CD de prcticas contiene el programa fuente al que responde el organigrama de trabajo en la Figura 12.37. Se trata de demostrar el funcionamiento y manejo de la interrupcin externa INTF y la de por cambio de estado en RB4-RB7. Cuando se produce una de las dos, se activa RAO (el led S0) y RAl (led S7) respectivamente.
243
El programa principal, una vez inicializados los registros, pone al PIC en el modo standby de forma indefinida. Dicho modo queda cancelado cuando se produce una interrupcin. El programa de tratamiento analiza la fuente de interrupcin y realiza los tratamientos oportunos. En caso de producirse la interrupcin externa por RBO/INT se activa el led conectado a RAO. Si se produce la interrupcin por el cambio de estado de cualquiera de las lneas RB4-RB7 conectadas a sendos interruptores, se procede a activar el led conectado a RA1. Ambos led se desactivan tras una temporizacin de 1 segundo controlada por el TMRO. ste, con un preescaler de 256 y con un valor de 195, genera una temporizacin de 50 ms que se repite tantas veces como indique la variable Temp (20). Finalizada la temporizacin, ambas salidas se desconectan. Se reponen los correspondientes flags de interrupcin y se retorna al programa principal que coloca nuevamente al PIC en el modo standby. Merece la pena comentar que la reposicin de las interrupciones se realiza tras la temporizacin. De esta forma se evitan posibles falsas interrupciones provocadas por los rebotes tpicos de los interruptores del entrenador.
12.12.7.
Trabajo personal
Ensamblado el programa y grabado sobre el dispositivo, comprobar el correcto funcionamiento del mismo. El led SO se activa, durante 1", con cada pulsacin de E10. El led S7 se activar cada vez que uno de los cuatro interruptores EO-E3 conectados a RB4-RB7 cambia de estado lgico.
INTRODUCCIN
Todos los programas, ejercicios y proyectos de este libro pueden ser implementados con un PIC16X84, bien sea la versin EEPROM con el PIC16C84, o la versin FLASH con el PIC 16F84. La razn de esta eleccin es que sobre su memoria de instrucciones se pueden grabar y borrar los programas. Ambos modelos de microcontroladores son idnticos, excepto en los siguientes detalles:
Presentamos las caractersticas ms usadas en la programacin y manejo de estos modelos en las aplicaciones, para que al trabajar con ellos se localicen rpidamente los datos precisos. Sabiendo manejar el PIC16F84 es muy fcil pasar a usar los potentes PIC16F87X. CARACTERSTICAS GENERALES
245
246
DIAGRAMA DE CONEXIONES La distribucin y denominacin de las patitas del PIC16X84 se presenta en la Figura A.1
MEMORIA DE PROGRAMA Tiene implementadas 1 K palabras de 14 bits cada una, ocupando las direcciones comprendidas entre la 0x0000 y la 0x03FF. Los modelos de la gama media alcanzan 8 K de capacidad mxima (vase Figura A.2).
247
Las posiciones ID de Identificacin sirven para que el usuario grabe en sus cuatro bits de menos peso los cdigos que desee. La Palabra de Configuracin slo tiene 5 bits vlidos y sus smbolos y misiones se muestran en la Figura A.3.
248
similar, pero los registros de propsito general son 68 en cada banco, siendo efectivos slo 68, puesto que los del Banco 1 se mapean sobre el Banco 0 (vase Figura A.4).
PUERTAS DE E/S
Hay dos puertas de E/S: Puerta A y Puerta B. Puerta A
Puerta B
249
250
REGISTROS DE CONTROL
En las Figuras A.5 a la A.9 se expone grficamente la distribucin y la misin de los bits de los registros de control (SFR) ms importantes, que son:
251
252
253
JUEGO DE INSTRUCCIONES
En la Figura A.10 se ofrece el conjunto de las 35 instrucciones que componen el repertorio del PIC 16X84.
254
PRESENTACIN
El SIM2000 es un programa de simulacin del PIC16F84 y del sistema de desarrollo Micro'PIC Trainer, desarrollado por Pablo Martnez Garca y Francisco Jos Hernndez Villaln, dirigidos por el profesor Manuel Snchez Alonso en la Escuela de Ingeniera Industrial de Cartagena. Est dirigido a quienes se inician en el diseo y programacin de aplicaciones con los microcontroladores PIC y en especial con el PIC16F84. Posee excelentes herramientas para la depuracin y seguimiento de los programas lo que le confiere un valor didctico excepcional. En el CD que acompaa a este libro se incluye una versin del mismo, pero los autores continuamente la actualizan y la potencian, por lo que es recomendable recogerla libremente de Internet en la direccin www.simupic.co m. All tambin se pueden encontrar numerosas ayudas y atencin tcnica. El entorno de programacin del SIM2000 es propio y desde l se puede invocar directamente al compilador MPSAM y se pueden corregir errores sobre el mismo cdigo que se utiliz inicialmente. Dispone de un Editor que mantiene la estructura general de las aplicaciones desarrolladas en el entorno Windows. Al cargar la aplicacin el editor posee un Explorador de Proyectos que muestra todas las unidades del PC en el que se ejecuta el programa. Adems el editor distingue claramente entre las instrucciones y los operandos con distintos colores. Un factor atrayente de este software es el Sistema de Ayuda en Lnea, que proporciona una extraordinaria informacin al usuario cuando se halla en la fase de desarrollo del programa. Tambin es novedosa la forma de gestionar los errores por la comodidad que supone al usuario no tener que consultar el archivo "<Nombre de_programa>.ERR, pues el editor saca una ventana con el listado de todas las incidencias generadas en el ensamblado. El entorno de simulacin del SIM2000 es uno de los ms completos y atractivos de los existentes en el mercado, pues muestra la mayor cantidad de informacin posible durante el tiempo de simulacin. De forma permanente se visualizan registros muy concretos: Banco actual de memoria en donde se encuentra el programa, Asignacin del Divisor de Frecuencia y Valores de la Palabra de Configuracin. 255
256
La Consola de Control permite conocer el nmero de instrucciones ejecutadas, el tiempo de ejecucin del programa, la frecuencia de simulacin y los valores del PC, W, Estado, INTCON, WDT, etc. Adems de la posibilidad de mostrar todos los elementos detallados de la arquitectura del microcontrolador PIC 161784, es capaz de simular la ejecucin de programas sobre el sistema de desarrollo Micro'PIC Trainer presentando una fotografa de dicha placa en la cual el usuario puede seleccionar con el puntero del ratn una determinada zona y producir determinados eventos o llamadas a unos formularios que configuran el funcionamiento general. Dirigimos al lector a analizar y experimentar la instalacin y el manejo de este simulador en los diversos apartados que puede encontrar en el CD y en Internet donde sus autores se brindan a resolver los problemas que puedan surgir en su aplicacin ([email protected] m).
INTRODUCCIN
La prctica totalidad de los ejercicios propuestos en este libro se pueden realizar con el Micro'PIC Trainer (microPIC Trainer) de Ingeniera de Microsistemas Programados, S. L., que nos ha permitido incluir un breve resumen de uno de los captulos del Manual del Usuario que acompaa a dicho sistema de desarrollo. Slo se describe el esquema electrnico y el funcionamiento del sistema, que creemos puede ser de inters para los lectores como ejercicio de aplicacin. El sistema microPIC Trainer consiste en un equipo completo para la evaluacin de aplicaciones basadas en los microcontroladores PIC de gama media de Microchip. Dispone de una serie de perifricos bsicos de E/S con los que se puede verificar el funcionamiento de una aplicacin, as como la circuitera necesaria para la grabacin de todos los modelos de microcontroladores PIC de gama media de 18 y 28 patitas. Un tutorial multimedia de montaje y manejo est contenido en el CD que acompaa al libro. Se denomina sistema de desarrollo el equipo fsico y el conjunto de programas que conforman una herramienta capaz de desarrollar todas las operaciones necesarias para disear un proyecto basado, en este caso, en un microcomputador programable, que al estar incorporado en un circuito integrado recibe el nombre de microcontrolador. Las caractersticas del sistema son las siguientes:
257
258
En la Figura C.1 se presenta el esquema elctrico de conexiones del sistema de evaluacin micro PIC Trainer. En los siguientes apartados se irn explicando las diferentes secciones que lo componen. En el CD existe un tutorial muy didctico que muestra el montaje, paso a paso, de este sistema de desarrollo.
LA FUENTE DE ALIMENTACIN
EL MICROCONTROLADOR
El sistema microPIC Trainer est diseado para trabajar con cualquier modelo de microcontrolador PIC de la gama media encapsulado con 18 o 28 patitas. sta es la razn de la existencia de dos zcalos para soportar ambos tipos. Segn el esquema de la Figura C. l , las diferencias bsicas entre los modelos de 18 y 28 patitas consiste en que los primeros disponen de una puerta A de 5 lneas (RA0-RA4) y una
260
puerta B de 8 (RB0-RB7), mientras que los segundos disponen de una puerta A de 6 lneas (RAO-RB5), una puerta B de 8 (RBO-RB7) y una puerta C de 8 lneas (RCO-RC7). En pPIC Uainer se emplean las 5 lneas de la puerta A y las 8 de la puerta B, que son comunes a los dos modelos de PIC. En cualquier caso, las lneas de estas puertas, junto con las de la puerta C, estn disponibles para el usuario a travs del conector PIC-BUS de expansin. La frecuencia de trabajo para cualquiera de los dos tipos de PIC queda establecida mediante el cristal de cuarzo X1 y los condensadores C6 y C7. Esta es, por defecto, de 4 MHz, aunque el usuario puede modificarla cambiando los valores del cristal y los condensadores segn las caractersticas tcnicas del modelo de PIC elegido.
ENTRADAS DIGITALES
Estn formadas por 5 interruptores (SW2-SW6) conectados a las lneas RAO-RA4 de la puerta A, capaces de introducir niveles lgicos 1 y 0 por las mismas. Dichas lneas pueden programarse para actuar de diferentes formas. As, RAO-RA3 puede actuar, adems, como entradas analgicas y RA4 como entrada exterior de pulsos de reloj para el TMRO (TOCKI). Estas lneas tienen asociados unos jumpers con los que se selecciona el tipo de entrada que se les va a aplicar. Los jumpers J8(0)-J8(3) seleccionan individualmente si por RAO-RA3 se van a introducir entradas digitales con los interruptores SW2-SW5, entradas analgicas con los potencimetros P2-P5 o, simplemente, si estas lneas van a quedar desconectadas tanto de los interruptores como de los potencimetros y poder as usarse con otros perifricos distintos. Con el jumper J9 se selecciona si RA4 acta como entrada digital procedente del interruptor SW6, entrada de seal de reloj para el TMRO (TOCKI), que se aplica desde el exterior mediante el conector J2(1), o simplemente, si esta lnea va a quedar desconectada y libre, poder usarla con otro perifrico distinto.
ENTRADAS ANALGICAS
Estn formadas por 4 resistencias variables o potencimetros (P2-P5), que se alimentan con l a tensin general de +5 V. Segn se mueva el eje de cualquiera de estos potencimetros, se obtiene una tensin variable entre 0 y 5 V por los terminales centrales (cursores) de los mismos. La tensin variable presente en cualquiera de los 4 cursores de los potencimetros P2-P5 va a parar a los jumpers J8(0)-J8(3), respectivamente. Si cualquiera de ellos est en la posicin analgico, la lnea correspondiente (RAO-RA3) recibir dicha tensin para su posterior procesamiento. Conviene recordar que aunque a nivel de hardware una o ms lneas se configuren como entradas analgicas o digitales mediante los jumpers J8(0)-J8(3), el sofware de control del PIC debe ir acorde con las mismas, programando adecuadamente las caractersticas de dichas lneas de entrada.
SALIDAS DIGITALES
Estn conectadas a la puerta B y consisten, por una parte, en una barra de diodos leds luminosos (D8) que representan el estado lgico de las seales RBO-RB7, y por otra, un display alfanumrico de 7 segmentos.
261
EL MDULO LCD
Se trata de un mdulo de visualizacin alfanumrico de cristal lquido, capaz de presentar 21neas con 16 caracteres cada una. Aplicndole los cdigos necesarios se puede provocar diferentes efectos de visualizacin como parpadeo, scroll, activacin de un cursor, etc. Incluso es posible la generacin de nuevos caracteres definidos por el usuario. Las 8 lneas de datos DO-D7 estn conectadas con las 8 lneas de la puerta B (RBO-RB7). Esta puerta, a veces, acta como salida del PIC y entrada hacia el mdulo. Por ella se le aplican los diferentes cdigos de control para realizar diferentes efectos de visualizacin, as como los cdigos ASCII de los caracteres a visualizar. En otras ocasiones la Puerta B debe actuar como entrada hacia el PIC, ya que a su travs el mdulo LCD devuelve cdigos indicando su estado interno, el contenido del buffer de memoria interna, etc. El mdulo est conectado a las lneas RAO, RA1 y RA2 de la puerta A del PIC. Estas lneas actan como salida y se emplean para enviar las siguientes seales de control al mdulo:
262
El mdulo LCD es un perifrico de visualizacin muy utilizado en aplicaciones reales. Permite una cmoda, atractiva y verstil forma de visualizacin alfanumrica e incluso grfica.
EL CIRCUITO GRABADOR
263
265
A continuacin se describe el contenido del CD que acompaa a este libro y que se divide en dos secciones: Ejercicios y Software.
273
274
Leer el estado de los 5 interruptores EO-E4 conectados a RAO-RA4 y reflejar el nivel lgico de los mismos sobre los leds SO-S4 conectados en RBO-RB4. Una lmpara conectada en RBO se controla mediante dos interruptores conectados en RAO y RA l. Cuando cualquiera de los interruptores cambie de estado, la lmpara tambin lo har. Prctica 3 Segn el estado de los interruptores RAO y RA l, activar los leds RBO-RB7 conectados a la puerta B, conforme a la siguiente tabla de la verdad:
CONTENIDO DEL CD
275
Prctica 4
Prctica 5
Prctica 6
Prctica 7
Prctica 8
276
SOFTWARE MPLAB El MPLAB es un entorno de desarrollo integrado que le permite escribir y codificar los microcontroladores PIC de Microchip para ejecutarlos. El MPLAB incluye un editor de texto, funciones para el manejo de proyectos, un simulador interno y una variedad de herramientas
CONTENIDO DEL CD
277
que lo ayudarn a mantener y ejecutar su aplicacin. Tambin provee una interfase de usuario para todos los productos de Microchip, programadores de dispositivos, sistemas emuladores y herramientas de tercer orden. Es un software gratuito y puede descargarse libremente la ltima versin desde la pgina oficial de Microchip http://www.microchip.com. SIM2000 SIM2000 es un proyecto desarrollado por Pablo Martnez Garca y Jos Hernndez Villaln, alumnos de la UPCT, y dirigido por Manuel Snchez Alonso. Se desarroll como alternativa a los entornos de programacin y simulacin existentes en la actualidad para microcontroladores PIC161784. Incorpora una opcin de simulacin con la placa Micro'PIC Trainer que permite simular los programas en dicha placa a travs del entorno del programa, como si tuviramos la placa delante nuestro. MPASM Es el ensamblador oficial de Microchip, soporta todos los modelos de PIC existentes en el mercado y existe en versin MS-DOS (MPASM.EXE) o en versin Windows (MPASMWIN.EXE). Es un software gratuito y puede descargarse libremente la ltima versin desde la pgina oficial de Microchip http://www.microchip.com. E l MPASM no necesita instalacin, es suficiente con copiar todos los archivos contenidos en su carpeta al disco duro o ejecutarlo directamente desde el CD. PICME-TR Software de conexin al PC para el sistema de desarrollo Micro'PIC Trainer, de Ingeniera de Microsistemas Programados, S. L. Soporta gran variedad de microcontroladores PIC. No necesita instalacin, funciona bajo sistema operativo MS-DOS. Es un software libre que puede ser descargado desde la pgina oficial de Ingeniera de Microsistemas Programados, S. L. http://www.microcontroladores.com. WINPICME-TR Software de conexin al PC para el sistema de desarrollo Micro'PIC Trainer. Actualmente slo soporta el microcontrolador PIC16F84, pero peridicamente se le irn aadiendo nuevos modelos. No necesita instalacin, funciona bajo los sistemas operativos Windows 95, 98, Me, NT, 2000 y XP. Es un software libre que puede ser descargado desde la pgina http:// www.microcontroladores.com. QUICKTIME PLAYER 3.0 El reproductor gratuito QuickTime Player es una aplicacin fcil de usar para reproducir, interactuar y ver cualquier vdeo, audio, realidad virtual o archivo de grficos compatible con QuickTime. Es necesario tenerlo instalado para poder ver los diferentes tutoriales multimedia contenidos en el CD.
278
STAMP EDITOR El PBASIC Stamp EDITOR permite comunicar el PC con un mdulo BASIC STAMP2 y grabar su memoria miles de veces. Adems contiene un cmodo editor para introducir el programa que posteriormente ser ejecutado por el BASIC STAMP2 y un sencillo depurador. Existen versiones Windows y MS-DOS, esta ltima no necesita ser instalada aunque cuenta con menos opciones que la anterior. ltimamente Parallax ha desarrollado una nueva versin del STAMP EDITOR, que puede recogerse libremente en el sitio de Internet www.parallaxinc.co m www.parallax.com.
INTRODUCCIN Ante las numerosas peticiones, consultas y recomendaciones que nos han enviado muchos lectores particulares, profesores y profesionales durante las primeras ediciones de esta obra, los autores nos hemos visto obligados a aadir este apndice, el cual describe, de la manera ms sencilla que hemos sido capaces, una coleccin de proyectos que pueden realizarse con un material fcil de encontrar, sencillo de manejar y muy econmico. Pretendemos que esta aportacin anime a todos los indecisos y les permita coger el vuelo. Una vez estn en el aire, ya se arreglarn ellos solos, por la cuenta que les tiene. Para desarrollar las implementaciones fsicas de los proyectos hemos usado como soporte principal el PIC16F84 y la placa de prototipos PIC18-ME de la empresa Ingeniera de Microsistemas Programados, S. L., a la que agradecemos su inestimable colaboracin. Dicha empresa comercializa un kit de Proyectos Bsicos y otro de Proyectos Tpicos que contienen todos los elementos empleados en los diseos, lo que permitir su fcil disponibilidad a los lectores que residan en zonas que carezcan de establecimientos electrnicos especializados o no estn muy versados en el tema. Con la finalidad de conseguir que los materiales de estos kits puedan utilizarse en todas las aplicaciones propuestas, y en otras que acometa el usuario, se recomienda una placa Protoboard para el montaje sin soldadura. Se recomienda adems el uso del sistema de desarrollo MicroPic'Tralner, ya descrito en un apndice anterior, para la puesta a punto del software. La primera parte de este apndice est destinada a describir, con todo lujo de detalles, cinco proyectos sencillos que emplean los componentes del Kit de Proyectos Bsicos, resueltos ntegramente y acompaado cada uno de ellos de una pequea variacin sin resolver. En la segunda parte se exponen otros tres proyectos, tambin resueltos y con una variacin, que utilizan unos perifricos ms verstiles y tpicos en aplicaciones con microcontroladores, como son el teclado y la pantalla LCD, y que forman parte del Kit de Proyectos Tpicos. Ya en la tercera parte, se propone una coleccin de proyectos para que los resuelva el lector empleando los mismos materiales y con distintos grados de complejidad. A continuacin se expone el ndice de este anexo:
279
280
281
En la fotografa de la Figura F.1 se muestran los componentes utilizados en los Proyectos Bsicos.
Enunciado y objetivos Es muy usual tener que gobernar una carga (motor, lmpara, etc.) desde dos puntos situados a cierta distancia entre ellos. Por todos es conocido el control de una lmpara (L) en una sala, que al disponer de dos puertas muy distantes, se desea encenderla o apagarla desde dos interruptores (11 e 12) situados al lado de las puertas. Inicialmente, cuando 11 e 12 estn abiertos (0) la lmpara L est apagada (0). A partir de esta situacin, cada vez que cambia de estado uno de los interruptores, la lmpara cambia tambin su estado. Se muestra la tabla de verdad y la ecuacin lgica de la salida en la Figura F.2.
282
Esquema elctrico
283
Organigrama
284
El programa comentado
285
Propuesta de un nuevo proyecto Para comenzar a disear con microcontroladores, y una vez que ha sido capaz de poner en marcha el proyecto que hemos descrito, le proponemos un ejercicio para que lo implemente usted. Se dispone de tres interruptores, 11, 12 e 13, con los que se desea controlar un diodo LED L, de tal forma que debe encenderse cuando dos, y slo dos, de los interruptores estn cerrados. En todas las dems situaciones el diodo LED debe estar apagado.
Enunciado y objetivos Se trata de simular el funcionamiento de las tres luces de un semforo (verde, mbar y roja) mediante tres diodos LED (L1, L2 y L3) de entre los diez de que dispone una barra DIL. El control del encendido y apagado de los LED se realiza mediante los microrruptores 11 e 12 de
286
los cuatro de que dispone un conjunto DIP-SWITCH. Segn el estado de los microrruptores, se desarrolla una secuencia concreta de tiempo de encendido de los tres LED que simulan las luces del semforo, de acuerdo con la tabla de la Figura F.6. La finalidad primordial de este ejercicio es la de manejar el temporizador TMR0 para que produzca retardos de diversa duracin. Materiales especficos para el Proyecto Bsico 2
Esquema elctrico
287
Como se puede apreciar en la Figura E7, los microrruptores 11 e 12 se conectan a las lneas de entrada RAO y RA 1 de la PUERTAA a travs de sendas resistencias de lOKOhms. En este caso son activos por nivel bajo. Los diodos LED L1, L2 y L3 se conectan a las lneas de salida RB 1, RB3 y RB5 de la PUERTAB a travs de resistencias de 330 Ohm. Los dems elementos del esquema estn presolados en la tarjeta de prototipos PIC18-ME. Organigrama
288
El programa comentado
289
290
291
292
Propuesta de un nuevo proyecto Para continuar con el manejo del TMR0 y el control de tiempos se propone un programa que maneje ocho diodos LED de la barra DIL usada en el Proyecto Bsico 2. Los ocho diodos LED (LO-L7) de menos peso de la barra DIL se conectan a las ocho lneas (RB0-RB7) de la PUERTAB. Los LED se irn encendiendo secuencialmente durante un tiempo de 0,1 segundos de izquierda a derecha, o viceversa, segn que el estado lgico que introduzca el microrruptor 10 conectado a la lnea RAO de la PUERTAA sea un 0 o un 1
293
respectivamente. Para realizar este experimento se precisan los mismos componentes que en el Proyecto Bsico 2.
Enunciado y objetivos Este proyecto, ya descrito de forma general anteriormente, trata de simular un juego de azar. Un dado tpico tiene seis caras, en cada una de las cuales viene marcado un nmero de puntos de 1 a 6. El dado es sustituido por un display de siete segmentos, que ser el encargado de visualizar un nmero aleatorio comprendido entre el 0 y el 6 cada vez que se presione un pulsador. Materiales especficos para el Proyecto Bsico 3
294
En la Figura F.10 se muestra una foto del montaje de los perifricos del dado sobre una Protoboard y su conexionado con las lneas de E/S del PIC instalado en la tarjeta de prototipos PIC 18-ME. Esquema elctrico
En el esquema de la Figura F.11 se muestra la conexin de las siete lneas de menos peso de l a PUERTAB (RB0-RB6) a los segmentos del display a travs de siete de las ocho resistencias de 330 Ohm contenidas en el pack. La lnea de entrada RAO soporta el nivel lgico que introduce el pulsador. Los dems componentes del circuito se hallan premontados en la tarjeta de prototipos. El pulsador introducir un 1 lgico al activarse, aunque podra conectarse para introducir un 0 al ser pulsado. Por su parte, el display de siete segmentos tambin se activa por nivel alto, ya que es de ctodo comn. Para que se activara por ceros tendramos que cambiar el display por uno de nodo comn.
295
Organigrama
El programa comentado
296
297
Propuesta de un nuevo proyecto Se dispone de un display de siete segmentos y de un conjunto de cuatro microrruptores usados en proyectos anteriores. Se trata de visualizar en el display un dgito hexadecimal del 0 al F, segn el valor binario en que se hallen los cuatro microrruptores. De esta forma, si los cuatro microrruptores introducen nivel alto, el display visualizar la F; si introducen nivel bajo, visualizar el 0, etc.
298
Enunciado y objetivos Se propone disear un temporizador que controle un tiempo medido en segundos, hasta un mximo de siete. Para programar el temporizador se dispone de tres de los cuatro microrruptores del pack usado en proyectos anteriores. Segn su posicin, determinan un valor binario, que puede alcanzar el valor siete cuando los tres introducen un nivel alto. El tiempo seleccionado lo visualiza un display de siete segmentos, que se va decrementando hasta llegar a cero. Tambin existe un pulsador para poner en marcha la cuenta del tiempo. Como perifricos de salida, existe, adems del display, un diodo LED rojo y un zumbador acstico, el primero de los cuales se ilumina y el otro genera un pitido mientras dura el perodo de tiempo a regular.
Esquema elctrico
299
300
Organigrama
301
El programa comentado
302
303
Propuesta de un nuevo proyecto En el esquema elctrico de la Figura E 13 se introdujo un cuarto microrruptor, el cual no tena ningn significado en dicho ejercicio. Se propone ampliar el tiempo de contaje del temporizador para que sea capaz de alcanzar hasta 15 segundos. Para ello se usarn los cuatro microrruptores, que introducirn un valor hexadecimal entre 0 y F. Las funciones del display, el LED rojo y el zumbador seguirn siendo las mismas que en el caso anterior, es decir, el display se ir decrementando (en hexadecimal) a medida que transcurre el tiempo programado, y el comienzo y el fin se sealizarn con el diodo y el zumbador.
304
Enunciado y objetivos Se trata de simular una alarma domstica, para lo cual se colocan tres detectores en posibles puntos de entrada a una vivienda y avisadores acsticos y visuales. Cada sensor provoca el encendido de un diodo LED diferente cuando se activa y un pitido por un zumbador, significando que la alarma ha saltado. Los detectores estn implementados por dos microrruptores y un optoacoplador. Un optoacoplador es un sensor que manda una determinada seal (0 o 1 lgico) cuando existe haz luminoso entre el emisor y el detector, y la seal contraria cuando dicho haz se corta. Los tres diodos LED se encontrarn en la barra de LED usada en experiencias anteriores. Un tercer microrruptor servir para conectar y desconectar la alarma.
Esquema elctrico
La Figura F.16 muestra el aspecto externo y la configuracin interna de un optoacoplador estndar. Las resistencias no pertenecen al optoacoplador, sino que deben utilizarse en su conexionado.
305
Foto de montaje
306
En las lneas RB1, RB3 y RB5 de la PUERTAB, configurada como salida, estn colocados l os LED y en RBO el zumbador. Hay dos microrruptores 12 e 13 conectados a las lneas RA1 y RA2 que simulan dos detectores digitales. El tercer detector, que es el optoacoplador, est conectado a RA3. Por ltimo, el microrruptor 11, conectado en RAO, es el que conecta y desconecta la alarma. Organigrama
El programa comentado
307
308
309
Propuesta de un nuevo proyecto Sin modificar el hardware de la alarma, confeccionar un nuevo programa que opere de forma similar, pero con los siguientes cambios:
310
En la fotografa de la Figura F.20 se muestran los componentes utilizados en los Proyectos Tpicos. Se supone que adicionalmente se tienen los componentes que se usaban en los Proyectos Bsicos.
Introduccin. Instalacin y manejo del teclado Un perifrico muy habitual para introducir informacin al sistema por parte del usuario es el teclado. Nos referimos al teclado matricial de 16 teclas que se incluye en el kit y que estn distribuidas en cuatro filas y cuatro columnas (Figura E21). Los ocho terminales del teclado, cuatro para las filas y cuatro para las columnas, se conectarn a las ocho lneas de E/S de la PuertaB del PIC. Cuando se pulsa una tecla, queda en contacto una fila con una columna. Si ninguna tecla est presionada, las filas estn desconectadas de las columnas.
311
Para explorar el teclado y averiguar en cada momento cul es la tecla que se halla pulsada, se sigue el siguiente mtodo. Se va a trabajar con el nivel lgico alto actuando como nivel desactivo, siendo el nivel bajo al que consideraremos activo. Por los terminales de las filas del teclado se introducen cuatro niveles lgicos, uno activo (bajo) y los otros tres desactivos (altos). Si existe alguna tecla pulsada en la fila por la que se ha introducido el nivel bajo, dicho nivel saldr por la columna correspondiente con la que haga contacto. En consecuencia, leyendo los estados lgicos de los terminales de las columnas (RB0-RB3) averiguaremos si hay alguna tecla pulsada en la fila por la que se ha introducido el nivel bajo, puesto que si no hay ninguna en todas las columnas se leer nivel alto inactivo. Procediendo secuencialmente a introducir el nivel bajo por cada una de las cuatro filas y a leer los niveles de salida en las columnas, se podr determinar la tecla pulsada en cada momento.
312
Por ejemplo, si por las lineas RB7-RB4 se aplica a las filas los niveles lgicos 1110, el nivel bajo quedar soportado por la primera fila, la unida a la lnea RB4. Si en esta situacin se halla pulsada la tecla F, al leer los estados de las columnas presentes sobre las lneas RB3RBO, por la lnea RB3 saldr el nivel bajo, mientras que por las restantes habr nivel alto. Se habr obtenido en las columnas el cdigo 0111 (RB3-RB0). En resumen, se ha introducido el cdigo 1110 a las filas por las lneas RB7-RB4 y en las lneas (RB3-RB0). se lee el cdigo 0111 que se corresponde con la tecla F. El programa de exploracin del teclado ir introduciendo por las cuatro lneas de ms peso de PB los cuatro cdigos correspondientes a la introduccin del nivel bajo en cada caso por una de ellas, o sea, los cdigos 0111, 1011, 1101 y 1110. Al introducir cada uno de estos cdigos se explora el nivel en las columnas conectadas a las lneas de menos peso de PB. Cuando sale un nivel bajo por una columna, conociendo en ese momento por qu fila se ha introducido el nivel bajo, se averigua la tecla presionada por la interseccin de dicha fila con dicha columna. Cuando en la exploracin no hay ninguna tecla pulsada se suele generar un cdigo concreto que representa esa posibilidad. En la Figura F.23 se muestra la tabla correspondiente a la pulsacin de cada una de las 16 teclas y el cdigo hexadecimal que existe con los niveles lgicos que se introducen por las filas y los que se obtienen en las columnas.
Cuando no hay ninguna tecla pulsada en una fila aparecen cuatro niveles altos en las cuatro columnas, por estar desconectadas al aire y corresponderlas estado de alta impedancia, que en lgica TTL es equivalente al nivel alto. Para asegurar dicho nivel alto, las lneas de la PUERTAB pueden conectarse al positivo de la alimentacin mediante unas resistencias de pull-up internas.
313
Esta conexin puede realizarse por software, poniendo a 0 el bit 7 (RBPU#) del registro OPTION del PIC 16F84 (en el PIC 16C84 este bit tiene programacin inversa). Se recomienda colocar cuatro resistencias de 2K2, como se muestra en la Figura F.24.
314
Para el manejo del teclado se utilizan las libreras P16CXX.INC y TECLADO.ASM. Se recomienda usar la primera en la cabecera de cualquier programa con un PIC de la gama media. En ella se definen todos los registros internos fundamentales que se manejan en el cdigo que resuelve las aplicaciones. En el CD que acompaa al libro se incluye dicha rutina. TECLADO.ASM recoge rutinas para la gestin especfica del teclado.
315
316
317
Una vez vistas las rutinas que se usan con el teclado y su funcionamiento bsico se pasa a realizar el primero de los proyectos con teclado. Enunciado y objetivos Utilizando las libreras TECLADO.ASM y P16CXX.INC, se trata de realizar un programa que genere un pitido por el zumbador piezoelctrico conectado a RA3, cuya duracin depender del valor de la tecla pulsada. La tecla 0 producir un pitido de una duracin determinada, dicha duracin se ir incrementando con el valor de cada tecla hasta llegar a la F, cuyo pitido ser el de duracin mayor. Materiales especficos para el Proyecto Tpico 1
318
Esquema elctrico
319
Organigrama
320
El programa comentado
321
322
Propuesta de un nuevo proyecto Se propone una modificacin sobre el programa anterior. Esta vez, la pulsacin de la tecla 0 debe generar el pitido ms largo y la de la tecla F el ms corto. Se recomienda introducir una rutina de conversin y su llamada correspondiente como nico cambio en el programa.
Introduccin: instalacin y manejo del LCD La pantalla de cristal lquido, LCD, es un perifrico de salida visualizador muy potente, flexible, eficaz y econmico, siendo los microcontroladores los dispositivos ms adecuados para optimizar sus prestaciones y control. En realidad, el mdulo LCD tiene incrustado un microcontrolador especfico para regular su funcionamiento. Las pantallas LCD ms comunes presentan un nmero variable de caracteres formados por una matriz de 5 x 7 pixels en una o varias lneas. Nos referiremos al mdulo LCD con microcontrolador incrustado, modelo 44780 de Hitachi, que tiene la posibilidad de visualizar dos lneas de 16 caracteres cada una. Dispone de 14 terminales de conexionado, cuya misin es la siguiente:
Para controlar un mdulo LCD con un PIC16F84 se recomienda conectar las lneas de la PUERTAB (RB7-RB0) a las lneas D7-D0. Las lneas de la PUERTAB deben ser bidireccionales y debern configurarse como Entrada o Salida segn el sentido de la informacin. Las tres lneas de menos peso de la PUERTAA (RAO, RAl y RA2) se configuran como salidas y se conectan a las lneas RS, R/W# y E, respectivamente (Figura F.30). El mdulo LCD responde a una serie de comandos con los que se pueden gobernar sus distintas opciones de trabajo y que puede enviarle el PIC por las lneas D7-DO cuando RS = 0 y R/W# = 0, para trabajar en modo escritura. En la Figura F.31 se muestra una tabla con los comandos y los cdigos correspondientes.
323
En la tabla de la Figura 1`.31 existen diversos bits representados por una abreviatura que, segn su valor, seleccionan una opcin de trabajo:
324
325
En la Figura F.32 se ofrece el juego de caracteres que admite el mdulo LCD. Las posiciones marcadas con CGRAM(n) estn destinadas a contener los nuevos caracteres grficos definibles por el usuario.
326
Cuando se aplica adecuadamente la tensin de alimentacin al mdulo LCD, se ejecuta automticamente la siguiente secuencia de inicializacin:
Si la conexin de la alimentacin no rene todas las condiciones que exige el mdulo LCD, habra que realizar la secuencia de inicializacin por software. En cualquier caso, es importante enviar al LCD la primera instruccin de trabajo despus de que hayan transcurrido 15 ms, para completar dicha secuencia de inicializacin.
327
328
329
Enunciado y objetivos Con ayuda de las libreras LCD_CXX.ASM y P16CXX.INC realizar un programa en el que aparezca un mensaje de bienvenida sobre el LCD. Materiales especficos para el Proyecto Tpico 2
Organigrama
330
Esquema elctrico
331
El programa comentado
332
Propuesta de un nuevo proyecto En el programa anterior se ha probado una forma tpica de sacar mensajes, pero esto depende del cdigo que se enve a LCD REG, segn las variantes de la tabla de la Figura E31. Ahora se trata de probar otras combinaciones y meterlas como rutinas independientes (MENSAJE_PARPADEO, MENSAJE_PRIMERA_FILA,...) en el fichero LCD CXX.ASM.
333
Se puede intentar, adems, crear caracteres nuevos y almacenarlos en la CGRAM, para mostrarlo con una nueva rutina MOSTRAR CGRAM.
Enunciado y objetivos Mediante las libreras TECLADO.ASM, LCD CXX.ASM y P16CXX.INC, realizar un programa que visualice sobre el LCD las teclas que se vayan pulsando. Cada pulsacin ir acompaada de un beep de 0,25 segundos sobre el zumbador piezoelctrico conectado a RA3. Materiales especficos para el Proyecto Tpico 3
334
Esquema elctrico
335
Organigrama
336
El programa comentado
337
338
339
Propuesta de un nuevo proyecto En el programa anterior, cuando se mostraba una tecla en el LCD, se haca siempre en la misma posicin, esto es, una tecla se sobrescriba encima de otra. Se trata de modificar ahora el programa para que las teclas vayan saliendo seguidas (como en una calculadora). Cuidado, porque la lnea no es infinita, y llegar un momento en que habr que borrarla o pasar a la de abajo.
Se presenta en este tema una coleccin de proyectos que se pueden programar en el PIC16F84 y comprobar con el sistema de desarrollo Micro'PIC Trainer. Una vez que se asegure su buen funcionamiento se recomienda montarlos en la Tarjeta de Prototipos con la ayuda de la protoboard y de los materiales ya usados en los Proyectos Bsicos y Tpicos anteriores. Estos proyectos son de diferente estilo y complejidad, y su finalidad es la de conseguir que se alcance una experiencia profesional en el diseo de proyectos basados en microcontroladores. El lector puede a su vez plantearse sus propios proyectos y, por qu no, llevarlos a la prctica en un entorno real.
Montar el hardware necesario y confeccionar el programa correspondiente para controlar dos diodos LED, LO y Ll desde el interruptor 10, de forma que LO refleja el nivel lgico que introduce 10 y Ll dicho estado invertido (Figura E39).
340
Mediante dos interruptores, 10 e 11, controlar el estado de ocho diodos LED, de los que dispone una barra DIL, segn la siguiente tabla de verdad y esquema de conexionado.
34 1
La secuencia de funcionamiento del torno se inicia cuando se pulsa I, que activa el cilindro V, el cual, en su avance, empuja la pieza a tornear hasta que acciona el sensor b, que pone en funcionamiento el motor M (Figura F.42).
342
En el avance se llega hasta el sensor c, que detiene el avance de V e inicia su retroceso. Al volver a pasar el cilindro por b se desconecta M. Cuando se llega al final de carrera a, se produce una seal acstica en el zumbador A para avisar al operario de que coloque una nueva pieza, y se repite el ciclo.
Al accionar el pulsador I, el cabezal del taladro realiza un descenso rpido de aproximacin BR. Al llegar al sensor b, se activa el rel M, que hace girar la broca al mismo tiempo que se ejecuta un descenso lento BL durante el taladrado. Al activarse el sensor c, se considera el final del taladrado de la pieza y se inicia una subida rpida SR del cabezal, siguiendo activado M. Cuando se alcanza el sensor a, finaliza la subida rpida SR, se para M y se activa una seal acstica A para avisar al operario del foral de la operacin.
343
344
Los perifricos de entrada de tipo electromecnico (interruptores, pulsadores, etc.) producen rebotes de efectos indeseables. Colocar en los lugares apropiados del programa que controla el taladro del ejercicio anterior unos retardos de 20 ms para eliminar dichos rebotes.
Utilizando el temporizador TMRO de que dispone el PIC16F84, junto a su divisor de frecuencia, conseguir que el diodo LED L7 se encienda y se apague con una intermitencia de 0,5 segundos. Se supone que el PIC que se inserta en la tarjeta de prototipos PIC18-ME funciona a 4MHz.
CONTADOR ASCENDENTE/DESCENDENTE
345
Se desea controlar automticamente la secuencia de apertura para la entrada y salida de vehculos en un garaje, que tiene las siguientes caractersticas:
346
347
En este ejercicio se propone generar un nmero binario de 8 bits de forma aleatoria (00-FF). El nmero debe generarse al aplicar un impulso (cierre/apertura) con el interruptor 10, y quedar visualizado en los ocho diodos LED conectados en la PUERTAB. La visualizacin se mantiene durante tres segundos y luego los LED se apagan.
Sobre el display de siete segmentos conectado en la PUERTAB, se visualiza el estado lgico del interruptor 10, mediante un 0 o un 1. El interruptor 11 enciende o no el punto decimal del display segn est cerrado o abierto.
348
Se desea controlar la capacidad mxima de un local, que no debe superar las 12 personas. Para conocer la entrada y salida de las personas existen dos sensores, 10 e 11, colocados estratgicamente. Cuando hay personas en el local, la lmpara L est encendida, y se apaga automticamente cuando no hay nadie.
349
Si dentro del local hay menos de 12 personas, se ilumina en el exterior un cartel PL que indica PLAZAS LIBRES. Si hay 12 personas, se enciende el cartel C de COMPLETO. Si estando COMPLETO el local alguien intenta entrar, se activa una alarma acstica A.
Se dispone de un optoacoplador destinado a generar un impulso cada vez que pasa entre su detector y emisor una pieza. Las piezas o impulsos del optoacoplador los cuenta el TMRO, pero dividiendo dicho contaje entre un valor del divisor de frecuencia o preescaler interno. El valor entre el que divide el preescaler el nmero de impulsos depende del estado lgico que introduzcan los interruptores 10,11 e 12, segn la siguiente tabla.
350
Se pretende realizar el control de acceso a un local mediante la validacin de una clave almacenada en la EEPROM de datos. Se utiliza un teclado para la introduccin de la clave y el LCD para visualizar los mensajes de Introducir clave, acceso denegado o acceso permitido. Cuando el acceso sea denegado por no coincidir la clave introducida con la almacenada, se activar un zumbador durante 2 segundos. Por el contrario, cuando el acceso sea permitido, se activar un rel que se supone conectado a la puerta de entrada.
LIBROS
REVISTAS
EMPRESAS
353
354
I NTERNET
NDICE
355
356
NDICE
357
PIC 16F87X, 265 PIC 18-ME, 257, 79, 145 Pila, 85 Power Down, 94 Programacin serie, 123 PSA, 98, 251 Puerta, de Entrada/Salida, 101 A, 102 B, 104 PWRT, 119 PWRTE, 104 RAM, 8 RBPU#, 251 Reinicializacin, 75 Registro ESTADO, 93 FSR, 91 INTCON, 112 OPTION, 98 PCH, 85 PCL, 85 W, 82 Repertorio de instrucciones, 125 Reposo, 123 RISC, 125 R. F. SOLUTIONS, 11, 147 ROM, 6 SAGITRON, 353 Segmentacin, 72 Semforo, 153 Sealizador, 93 de acarreo, 93
de cero, 93 de acarreo intermedio, 93 Smbolos, 9, 130 Simulacin, 9, 143 SIM2000, 255 Sistema abierto, 3 cerrado, 3 de seguridad, 155 de desarrollo, 11, 144 de bajo consumo, 123 Skip, 134 Sleep, 136
TOCS, 98 TOCKI, 98 TOSE, 98 Teclado, 157 Temporizador, 95 Time Out, 93 TMRO, 95 Ultravioleta (rayos), 7 Universal Trainer, 52 Vector de Reinicializacin, 119 de Interrupcin, 111 Ventanas, 159, 164 Zumbador, 56