Está en la página 1de 233
hr Segunda parte PICI6F87x/ \ SS Prélogo... Capitulo 1, NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC..... Las nuevas aplicaciones exigen mayores prestaciones .. ‘Dos nuevas lineas de PIC: familias PICI6F87x y PICI8Cxxx, EI PIC pobre (PIC16F84) y los ricos (PICI6F87x) Herramientas para trabajar con los PICIGF87x ... Programar PIC es facil: recordando el viejo PICL6F84. Disefiar con PIC es facil: presentacién de los sensores analégicos més ut zados. Capitulo 2, ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONSES .............. 7 Introduccién Procesador RISC con arquitectura Harvard . Organizacién de la memoria de programa Organizaci6n de la memoria de datos RAM. 2.4.1. Registros espectticos para el control de la memor Control de la memoria de datos. 2.5. Diagrama de conexionado.. 2.6. Repertorio de instrucciones Programar PIC es fécil: el primer programa con los PICL6F87x ... Disefiar con PIC es facil: actuadores para diversas aplicaciones: los motores........ 21 21 22 25 26 26 26 29 33 35 39 vi CONTENIDO Capitulo 3. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS ME- MORIAS FLASH Y EEPROM 3.1. Los registros de control.. 3.2. Registro de estado (STATUS). 3.3. Registro de opciones (OPTION), 3.4. Registro para controlar las interrupciones. 3.4.1. Registro de control de interrupciones (INTCON)... 3.4.2. Registro de permiso de interrupciones 1 (PIEI).. 3.4.3, Registro de permiso de interrupciones 2 (PIE2).. 3.4.4. Registros de los seftalizadores de interrupciones 1 y 2 (PIRI y PIR2). 3.5. Lectura y escritura de las memorias EEPROM y FLASH... Programar PIC es facil: un programa que maneja las memori: cédigo y EEPROM de dato: Disefar con PIC es fi ampli: n de periféricos para el trabajo con PIC Capitulo 4,. LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCE- SADOR.... 4.1. Puertas de B/S... 4.1.1. Puerta A.. 4.1.2. Puerta B 4.1.3. PuertaC 4.14. PuertaD..... 4.15, PuertaE. 4.2. Palabra de configuracién... 4.3. Palabras de identificacién. 4.4, Reinicializaci6n o reset 4.5. Perro guardién (WDT: watchdog timer) 4.6. Modo de reposo o de bajo consumo, 4.7. Programacién de los PICI6F87x ... Programar PIC es facil: utilizacién de los recursos del PIC Disenar con PIC es ampliaci6n de los recursos del PIC Capitulo 5. LOS TEMPORIZADORES ... 5.1. Tipos y caracteristicas generales .... 5.2. Estructura interna y funcionamiento del TMRI 5.3, Registro de control del TMR1 (TICON).. 5.4. Chuleta-resumen de los registros asociados al TMR: 5.5. Funcionamiento y programacién del TMR2 - RRRRRER a 4 6 é 6 7 4 T CONTENIDO Vi 5.6.Chuleta-resumen de los registros asociados al TMR2. 92 Programar PIC es facil: midiendo el tiempo... 93 Disefiar con PIC es facil: aplicacién de los PIC al control de motores y sensores 100 Capitulo 6. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS... 105 6.1. Introduccién a los médulos CCP 105 6.2. Modo captura .. 106 6.3. Modo comparacién sone 107 6.4. Chuleta-resumen de los registros asociados al médulo de captura y al de com- paracién.. 108 6.5. Modo de modulacién de anchura de pulsos (PWM). 109 6.6. Chuleta-resumen de los registros asociados al médulo PWM... sone 110 Programar PIC es facil: trabajo con los médulos CCP .. 112 Disefiar con PIC es facil: aplicacién de los microcontroladores: la microbotic: 124 Capitulo 7, EL CONVERSOR A/D 129 7.1. Presentacién del conversor anal6gico/digital 129 7.2. Registros de trabajo. 129 7.3. Estructura interna y configuracién del C A/D.. 131 7.4. Chuleta-resumen de los registros asociados al conversor analégico/digital 136 Programar PIC es facil: adquisici6n de valores con los conversores A/D... 137 Disefar con PIC es facil: visualizacién de valores por pantallas LCD. 145 Capitulo 8. MODULO DE COMUNICACION SERIE SINCRONA: MSSP. 153 8.1. Introduccién 153 8.2. Modo SPI 155 8.3. Manejo y programacién en el modo SPI. 156 8.4. Médulo MSSP trabajando en modo I2C 159 8.5. Conceptos fundamentales sobre el bus I2C .. 160 8.5.1. Concepto del bus 2C.... 160 8.5.2. Terminologia del bus 2C 162 8.6. Caracteristicas generales 162 8.6.1. Transferencia del bi 163 8.6.2, Transferencia de datos 164 Capitulo 9. EL USAR1 Capitulo 10. EL FUTURO ESTA AQUI: CONTENIDO 8.6.3. Arbitraje sin sincronizacién de reloj 8.6.4. Formato 8.7. Direccionamiento.. 8.7.1, _ Definicién del primer byt 8.8. Especificaciones eléctricas.. 8.8.1. Tiempos... 8.9. El bus I2C y los PICI6F87x 8.10. Chuleta-resumen de los registros usados para el bus I2C 8.11. Funcionamiento del modo maestro 8.11.1. Condicién de inicio (start 8.11.2. Condicién de repeticién de inicio (start) 8.11.3. Modo maestro en transmisién 8.11.4. Modo maestro en recepcién 8.11.5. Secuencia de reconocimiento 8.11.6. Condicién de parada (stop). Programar PIC es facil: comunicacién mediante el médulo MSSP Disefar con PIC es facil: comunicacién de datos digitales por radio frecuencis [RANSMISOR/RECEPTOR SiNCRONO/ASINCRONO SERIE. 9.1. Comunicacién serie asincrona 9.2. Generador de baudios. 9.3. Transmisor asincrono 9.4. Receptor asinerono. comunicacién serie con el USART ... Programar PIC es faci A FAMILIA PICI8CXXX 10.1. Esto es otra historia... 10.2. Las grandes aportaciones.... 10.2.1. Espacio lineal de direccionamient 10.2.2. Complejo juego de instrucciones .. 10.2.3. Disefto optimizado para compilador C 10.2.4, Herramienta modular para la emulaci6n 10.2.5. Otras venta 7 10.3. Diagrama de conexionado... 10.4. Arquitectura interna ..... 10.5. Organizacién de la memoria de program 10.6. Organizacién de la memoria de datos 10.7. Repertorio de instrucciones. 166 168 169 169 170 172 173 177 177 178 178 178 179 179 180. 181 186 191 191 193 195, 198 201 207 207 208 208 21 212 212 215 218 Apéndice A: La familia PIC al completo ... 223 Bibliografia y direcciones de interés relacionadas con los PIC 229 indice. PROLOGO iciones Para completar la formacién de los lectores que avcedieron al estudio y desarrollo de apli con microcontroladores basandose en fa Primera Parte del libro «Mierocontroladores PIC. Disefio Practice de Aplicaciones», y ante la aparicién de los nuevos modelos que MICROCHIP ha comer- cializado recientemente, los autores han escrito una continuacién de dicho libro, reforzados con la colaboracién de fa profesora Susana Romero de ESIDE (Universidad de Deusto). Para seguir esta obra es prerrequisito conocer tedrica y précticamente la primera parte. Las populares y masivas aplicaciones de los microcontroladores de 8 bits en productos con te- clado/pantalla de la década que comenz6 en 1990, ha dado paso a otras mucho més ambiciosas, que requieren dispositivos programables con mils recursos y mejor rendimiento, Los autores han intentado crear una herramients de aprendizaje préctica, eficaz y muy amigable, que vaya mostrando progresivamente el funcionamiento teérico. el comportamiento préctico. la pro- gramacién y la puesta a punto de las aplicaciones con los modernos microcontroladores PIC. Siguiendo la estrategia de la primera parte, dedicada exclusivamente al PIC 16x84, también en ésta se ha elegido una subfamilia de microcontroladores para desarrollar el programa teérico-prdc~ tico, Hemos seleccionade los cuatro modelos que comprende la subfamilia PIC]6F87x, que supo- nen un espectacular avance con respecto al PIC 16x84, Aderuis de disponer de mayor capacidud de memoria v funcionar a més velocidad con mejor rendimicnto, estos microcontroladores poseen in- tegrados todos los recursos que precisan las aplicaciones comerciales de nivel medio y alto. ‘También y como atencién a los lectores mas exigentes, se describe la familia PICT SCxxx. que es- vi llamada u utilizarse en Jos proyectos més exigentes, La mayorfa de los temas 0 capftulos. al igual que en lu primera parte, los hemos dividido en tres seeciones: 1.*Teoria, Se expone con claridad y soncilez el funcionamiento, ias prestaciones, la programacién 1ofo de cada recurso. Cada tema se dedica a un recurso. 2* Programar PIC es fé&ell. Para cava tome y para ceca recurso se han proparado una serie de eer- cies, programas y disefas, con los que progresivamente se utilzan los conceptos axuesios en la tear. Toda la colecci6n de ejercicios propuestos se pueden realizar integramente con las herramien- tas bdsicae comercializadss por Microsystems Engineering. Concretamente se precisa el econdmico si xii PROLOGO ic mpleadios 6 la primera parte (motores, triacs, RLF, sensores analogicos, /se explican algunas tarjetas de aplicacion y nuevos disesios, com : RF, Controladoras de LCD, etc. Bajo esta estructura el libro consta de 10 temas y un anexo, El primer tema se destina a mos- trar la necesidad y las aportaciones de los nuevos PIC. Se recuerda la programacién general del PIC16x84, poniendo de relieve algunos detalles que habré que modificar en los nuevos modelos, y se describe el funcionamiento y control de algunos sensores anal6gicos, que se utilizardn en los ejer- cicios. El segundo tema presenta la arquitectura, el diagrama de patitas y el repertorio de instru: ciones de la subfamilia PICI6F87x. En la programacién se hace un enfoque de las peculiaridades de los nuevos PIC y Jos bancos de memoria y en cuanto a los periféricos se estudian los motores. El tercer tema muestra las caracteristicas y asignacién de funciones de los diversos bits de los prin« pales registros de control y las operaciones de lectura/escritura de las memorias FLASH y El PROM, se realiza un programa de lectura/escritura de dichas memorias y se estudia la tarjeta de am- pliacién de perifiéricos Micro’ PIC IO. A partir del tema 4 se van analizando los nuevos recursos de Jos PICL6F87x, dedicando cada tema a la explicaci6n de un recurso: Puertas de E/S, Temporizado- res/Contadores 1 y 2, Médulos CCP, Conversor AD, Comunicacién Serie, etc. Cada tema contiene ‘un programa resuelto que puede realizarse sobre las herramientas de Microsystems Engineering ci mentadas anteriormente y a la vez se van describiendo periféricos especiales como los médulos de R.F,, los microbots, etc., y las nuevas herramientas usadas en los ejercicios, como el ZOC87x para adaptacién al Micro’ PIC Trainer de los PICI6F87x y las tarjetas de ampliaci6n de periféricos Mi- cro’ PIC Trainer Plus y la MSx84 encargada del control de motores DCV y PAP. Finalmente, la obra se completa con un anexo que ofrece las caracterfsticas de los modelos actuales de mi dores de Microchip. Agradecemos muy sinceramente ta colaboracién de Microsystems Engineering (Bilbao), que ha puesto a nuestra disposicién todas las herramientas que hemos necesitado y toda la informacién so- bre sus productos y los ejercicios que soportaban. Los lectores interesados en conocer més a fondo ichas herramientas pueden dirigirse directamente a sus oficinas en C/Gral. Concha 39, 48012 Bil- ‘bao, o bien, visitarla a través de Internet (www.arrakis.es/~msyseng). Igualmente expresamos nues- tro agradecimiento a los Sres. Benito Moreno y Pepe Bustamante de Sagitron (Madrid) y a nuestros amigos Goyo y Jorge de Bilbao Electrénica. Para no encarecer el libro se ha prescindido de incluir disquete o CD, puesto que toda la infor- macién y programas de interés pueden ser recogidos por Internet (www.microchip.com y www.arra- is.es/~msyseng). Por nuestra parte nos brindamos a ayudar en lo que podamos a nuestros lectores en la direccién autores@inf,deusto.es. 1.1, LAS NUEVAS APLICACIONES EXIGEN MAYORES PRESTACIONES, cEs posible disefiar un PLC comercial con un PICI6F84, con sélo 1 K palabras de memoria de cé- digo, 64 bytes para datos, 13 Iineas de EIS digitales y un contador-temporizador? ‘A nuestro alumno Ivan Trueba no le era suficiente. Por eso, para poder culminar con éxito su proyecto de 3.° de Ingenieria Técnica en Electrénica tuvo que ampliar notablemente los recursos del PICIGF84. Mediante el protocolo del bus 12C aumenté con dos puertas més las lineas de E/S y, en- tre otras cosas, afiadié un conversor A/D que permitiese el tratamiento de sefiales analégicas. De es- ta forma, en lugar de usar un solo circuito integrado que contuviese todo Io necesario, el proyecto requitié mas de media docena. (Figura 1.1.) Figura 1.1. Fotografia det panel frontal del PLC ESIDE de Ivén Trueba. Al estar basado en un humilde PICIOF84, para aumentar sus recursos tuvo que afadir varios circuitos integrados comunicados por el bus I2C. 2 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Todo lo que utiliz6 nuestro alumno para implementar el PLC y mucho ms esté contenido en uno de los modelos de microcontroladores de la subfamilia PIC/6F87x. Dos de los autores de este libro (José Mari y Susana) somos profesores en la Universidad de Deusto y nos dedicamos a ensefiar computadores y microcontroladores a los fuituros ingenieros. So- ‘mos de la opiniGn de que esta tecnologia «se aprende haciendo» y por eso, en cada curso, dirigimos ‘muchos proyectos a nuestros alumnos y a la hora de poner ejemplos siempre nos acordamos de ellos yy sus experiencias. Asf que, para no cambiar de alumno, con motivo de la presentacién del proyec- to final del Grupo Duro, vdn decidi6 ser el mejor y para ello proyects el parking més espectacular y completo que pueda uno imaginar. En la Figura 1.2 se ofrece una fotografia de la maqueta del ‘,stvado en la parte superior del CO, debe estar en la po= Siciéri «B0>. Sj ost Jumper estuviese er Ta posicién INT» 1a salida por la tinea REQ quedaria ene center eee eee ‘8 Dloplny Tegel copay de sete soomentos tabén est conectao a la puerta B del PIC Pan Pee ce en su posi- ih BOs Antes de utilizar los periféricos arriba descritos hay que grabar el programa en el PIC. Se reali- zarén los sig NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 17 8° Dentro de este programa pulsar los siguientes botones, 2) Abrir el Ficharo ensamblado. En el Butter de Memoria de Programa sparecerd l fichéro en foriato HEX. : b) Borrar 6! PIC. ) Comprobar el Borrado de! PIC. @) Pore la Palabra de Contiguracién con las opciones: = Cédigo Protegide: NO. ~ Watchdog Tie NO. ~ Oscilador: XT = Power Timer: Si. @) Programar Todo el programa en ef PIC 1) Verificaria programacion del PIC. 7 Conectar los jumpers que se han quilado antes, corteSpondlentes a los periléricos que'se van a iliac Si vuelve al programa que acabamos de realizar y grabar, comprobard que las Ifneas de E/S han sido configuradas de modo que coincidan con los periféricos dispuestos en el Micro’ PIC Trainer ara este primer programa s6lo necesitamos dos interruptores y la barra de diodos LED, de mo- do que desconecte Ia pantalla LCD y el display de 7 segmentos abriendo sus jumpers correspon- dientes. Asegtirese de que los jumpers A/D de las lineas RA1-RA2 estén en la posici6n Digital ¢ introduz~ ca ahora diferentes combinaciones para comprobar el funcionamiento del programa. Si éste no se com- porta como esperaba no es un fallo sintactico, ya que los errores han sido corregidos hasta obtener un programa correctamente ensamblado. El fallo seré semntico, es decir, deberd repasar el cédigo fuente para comprobar en qué punto difieren el organigrama del programa en ensamblador y corregirlo. ura 1.17, Aspecto del programa de grabacién PICME-TR. 18 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES PRESENTACION DE LOS SENSORES ANALOGICOS MAS UTILIZADOS Aunque el PICI6F84 sirve para realizar un sinfin de aplicaciones comerciales y su aprendizaje es muy didéctico y sencillo, existen ciertas aplicaciones muy comunes para las cuales este PIC no sir- stamos hablando de aquellas que requieren la utilizacién de sensores analégicos. Vamos a pre- sentar en este apartado dos sensores que, aunque muy utilizados en diversos aparatos que maneja- mos a diario, no eran soportados directamente por el PICI6F84. Los nuevos PICI6F87x, al disponer de Conversor A/D, pueden usarlos cémodamente. El sensor de luminosidad: LDR Un sensor de luminosidad tipo LDR es un elemento cuya resistencia entre bornes varia en funcién de la luz que incide sobre su superficie. Asi, cuando no existe luz presenta una resistencia infinita y su resistencia va decreciendo, hasta llegar a cero, segdn va aumentando la luz Su uso puede ser interesante en todas aquellas aplicaciones en las cuales el hecho de existir més © menos luz determine cierto comportamiento del sistema. Por ejemplo, 1a iluminacién de la entra- daa una vivienda, de una habitacidn o de un criadero de peces, puede regularse automsticamente de modo que se active una o varias bombillas con la deteccién de determinados niveles de luminosidad. Es un elemento sin polaridad y se puede encontrar con diferentes didmetros segiin el rango de va- lores de luminosidad que sea capaz de diferenciar. (Figura 1.18.) Figura 1.18. Aspecto y circuito préctico de una LDR. NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 19 A la derecha de la Figura 1.18 se muestra el esquema de conexionado al PIC. La tensién gene- rada segiin el grado de luminosidad se aplicaré por una de las patitas analégicas del PICI6F87x de- bidamente configurada, y seré transformada en un valor digital para su tratamiento posterior. Cuan- do no exista luz, el voltaje de salida, Vocr, sera 5 V y con luminosidad maxima 0 V. El sensor de temperatura esténdar: LM35 Otro sensor analégico ampliamente utilizado es el de temperatura. En el mercado existen muchos modelos de sensores de temperatura y su eleccién depende de diversos pardmetros, como pueden ser el rango de temperaturas que sean capaces de admitir, la precisién necesaria, el coste, la resistencia que debe presentar a ciertas condiciones ambientales, c En la siguiente tabla se presentan los valores de algunos de estos sensores. oa0mvec 40° C1508 oc 100W. tor c-1385w ‘compertamiento lineal Resistente, 50°C 500°C tow - 0c Reducido tamafo ¥ rp respuesta, ‘aja resistencia a baja temperatura y auments ‘pidamente a superae Ta temperatura de referencia Fn ceultos de avis, Proteccién contra sabretensionesy sobrecorientes, ‘Ala tesitencha a baja temperatura yal conta, Buena abildad abajo cose ‘Muy empleados en eleceodomesticos. Altas temperatura. Elevada vida ti spaciosreducidos. Uno de los sensores més utilizados es el LM35, también llamado estandar. Sus caracteristicas son: En la Figura 1.19 se muestra el aspecto externo de un sensor de temperatura esténdar. La pa- tita +Vs se debe conectar a la tensién positiva, comprendida entre +4 V y +30 V. GND sera co- 20 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES aw Vox GNO Figura 1.19. Aspecto de un LM35. La disposicin de las patitas del sensor del dibujo se corresponde con wn sensor cuya parte plana estd orientada hacia arriba, nectada a0 V y Vour se conectard a la Iinea correspondiente del PIC. A éste legard el voltaje proporcional a la temperatura captada, que ser convertida en un valor binario para su posterior tratamiento. 2.1. INTRODUCCION Bajo la denominacién de PICI6F87x se hace referencia a una subfamilia de microcontrolado- res PIC de la gama media, que se identifica por tener como memoria de programa una de tipo FLASH y una serie de recursos semejante a los modelos mas potentes, como por ejemplo los PIC16C73/4, teniendo estos tltimos el inconveniente de que su memoria de programa es de tipo EPROM. Dos de los cuatro modelos que componen esta subfamilia estén encapsulados con 28 patitas (PIC16F873/6), mientras que los otros dos tienen 40 patitas (PIC16F874/7). Con la intencién de se- guir potenciando Ia linea con memoria FLASH, Microchip también comercializa los microcontro- adores PICI6F62x, que con un precio «rompedor» mantiene el encapsulado de 18 patitas, aumen- tando considerablemente los recursos internos en comparacién con el PICI6F84. Como se mostré en el capitulo anterior en la tabla de la Figura 1.5, las principales diferencias en- tre los PIC16F87x con 28 patitas y los de 40 se concentran especialmente en el niimero de lineas de EJS disponibles, pero a continuaci6n se citan las tres diferencias més relevantes: th Iba ito acrid ae aaa eine 5 puoras (PA, PB, PC PD y PE de BS an a eS ane aa oes es eles ae eae ceeetaee ted Con Ia intencién de ir acostumbrando al lector a conocer los recursos de los PICI6F87x se re- sumen seguidamente. (Figura 2.1.) 2 22 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: ‘+ Mods de direccionamiento directo, indirecto y relativo, = Perro Guardian (WOT), ‘* Codigo de proteccién programmable * Modo SLEEP de bajo consumo. y “+ Programacién serie en circuito con dos patitas. |<: : ‘+ Voltaje de alimentacién camprendiga entre 2y 5,6 V0 <= «# Bajo consumo (menos de 2mA.a5 Vy 6 MHz). ® * Conversor A/D de 10 bits. oe 2 Puro Sere Strerono (SSP). con SPI 820, : . SEs: = USART. : “> Puerta ParalelaExciae (PSP). Solo en encapsuledos con 40 patias, Figura 2.1. Tubla de los principales recursos de los microcontroladores PICIOF87x 2.2, PROCESADOR RISC CON ARQUITECTURA HARVARD Esta arquitectura aplicada por Microchip en sus microcontroladores se caracteriza por la indepen- dencia entre la memoria de cédigo y la de datos. Asi, tanto la capacidad como el tamaito de los bu- ses de cada memoria se adaptan estrictamente a las necesidades del disefio, facilitando el trabajo en paralelo de las dos memorias, lo que permite obtener altas cotas de rendimiento. La filosofia RISC se hace patente en el reducido nimero de instrucciones que forman su repertorio. Sélo consta de 35 instrucciones, que se ejecutan en un ciclo de instruccién, equivalente a cuatro perfodos de reloj, ex- cepto las de salto que necesitan dos ciclos. (Figura 2.2.) Una primera aproximaciGn a la arquitectura intema de tos PICIGF87x se muestra en la Figura 2.3. Debe tenerse en cuenta que la mayor diferencia entre los modelos de 40 patitas y los de 28 reside en cel niimero de Puertas de E/S, que en el primer caso asciende a 5 y en el segundo a 3. ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 23 BUS Dé DIRECCION MEMORIA DE nc J] orpatos Scaseene é DATOS ‘(FLASH (RAN) 'BUS DEDATOS Figura 2.2. Los buses para instrucciones y datos son totalmente independientes y se ajustan a las necesi dades de cada memoria, permitiendo el acceso siraultdneo. Obsérvese en la Figura 2.3 que la memoria de eédigo esté direccionada por el PC (Contador de Programa) en conexién con la Pila de 8 niveles. La memoria de datos RAM contiene el Banco de Registros Especificos y el Banco de los Registros de Propdsito General y transfiere informacién bi- direccional por el bus de datos de 8 lineas que interconecta todos los elementos. Finalmente, el Ca- ‘mino de Datos esté formado por una ALU de 8 bits que trabaja conjuntamente con el Registro de Trabajo W. senuéacos Figura Arquitectura tipo Harvard simplificada para los microcontroladores PICI6F87x. 24 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES En el esquema de la Figura 2.4 se presenta con més detalle la arquitectura correspondiente a los modelos PIC16F874/7 de 40 patitas. Los otros dos modelos de la subfamilia tienen idéntica arqui- tectura, pero carecen de las puertas D y E, . ronnon si como de las funciones que éstas soportan. Figura 2.4. Arquitectura de los PICIOF874/7 de 40 patitas. Para los modelos de 28 patitas la arquitectura s6lo difiere en que carecen de las Puertas de EIS D y E 26 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES 2.4. ORGANIZACION DE LA MEMORIA DE DATOS RAM La memoria de datos tiene posiciones implementadas en RAM y otras en EEPROM. En la seccién RAM, se alojan los registros operativos fundamentales en el funcionamiento del procesador y en el manejo de todos sus periféricos, ademés de registros que el programador puede usar para informa- cién de trabajo propia de la aplicacién, Mas adelante, se estudiaré la memoria EEPROM para guar- dar datos de forma no volatil, a la que se considera como un dispositivo especial La RAM estética consta de 4 bancos con 128 bytes cada uno. En las posiciones iniciales de cada banco se ubican los Registros Especificos que gobiernan al procesador y sus recursos. Dos modelos de PICI6F87x tienen 192 bytes de RAM y los otros dos 368 bytes. Los modelos de menor capacidad no tienen implementadas fisicamente algunas posiciones. La Figura 2.6 presenta los cuatro bancos de la RAM, indicando en las primeras posiciones de cada uno los nombres de los registros que contienen. En las Figuras 2.6 y 2.7 las posiciones con trama oscura no estn implementadas fisicamente y siempre se leen como 0. Los registros especfficos marcados con la nota (1) no se hallan implemen- tados en los PIC de 28 patitas. Para seleccionar el banco al que se desea acceder en la RAM se emplean los bits 6 y 5 del Re- sistro de Estado, denominados RP1 y RPO respectivamente, segiin el cédigo siguiente: Para manipular adecuadamente los los bits de los Registros Especificos. slementos internos de los PIC hay que conocer la misién de 2.4.1. Registros especificos para el control de la memoria de programa Los 13 bits contenidos en el PC, que direccionan la memoria de c6digo, estén guardados en dos re- gistros especificos. El registro PCL guarda los 8 bits de menos peso y se puede leer y escribir. Los bits <12:8> del PC se alojan en el registro PCH, que al no poder ser lefdo ni escrito, se accede a él através del PCLATH. Las instrucciones de salto CALL y GOTO sélo proporcionan 1 bits de la direcci6n a saltar. Es- to limita el salto dentro de cada banco de 2 K. Cuando se desea salir del banco actual hay que pro- ‘gramar correctamente los bits PCLATH <4:3> que seleccionan al banco. Es labor del programador modificar el valor de dichos bits en las instrucciones CALL Y GOTO. (Figura 2.8.) 2.4.2. Control de la memoria de datos ara direccionar la memoria RAM de datos estructurada en 4 bancos de 128 bytes cada uno existen dos modos diferentes: ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES NOE con [INDE 80h INDE] 100n [INDE twro_| oir [orrion.res | ain rm] 10th [ OPTION. REG [Po oan [__ Pot 82h 02h o_| svaus_| o3n | starus | an tosh [status FSR oan ean 04h FSR PORTA | o5n 85h 108h i PORTE | Osh 86h to6n [TRIS Porc | o7h 87h 07h PORTO Go] o8n 88h ion | PORTE (7) oh bon tosh | PouaTH | oan | PCLATH | 8An ton | POLATH INTCON | oBh [—INTCON | Bh | INTCON | 108n | INTCON _ PIR och PIE sch [__eeoata | toch | eecoNt PIR oh PIE? aon [__eeapR | 100n | _FECONe Twit] och | POON sen [~ eeoaTH | ten | Reservado Turi | orn REE arn [EEADRH | 1oFn | Reservado Ticon | ion g0h | Regstiosde | 110 | Registros de mura | 1th | sspcona | 9th | Propésito | 11h | Propésito T2con_| 12h PR gen | Generat | 1420 | General SsPBUF__| tah [SSPADD | gah | t6Bytes | 113) | 16Bytes [sspcon | tan | ssPsTar | ah 14h COPRIL | 16h : 96h 18h copa | sen FE sen | 16h copicon | i7h [Eo SS] azn | 117b Resta | 18h gen | 18h TXREG | 19h 9h 119 ROREG | 1Ah 9An 11h copra | 18h 98 18h OPRAH | ich sch 11h ecP2con | 10h SH 90h 410 ADRESH | 1éh | ADRESL | 9h teh ADCONO | 1h [ADCONS | 9h +h Ragistrosde | 20h [| Registtosde | Aon | Regstrosde | 120n | Regisios de Proposito Propésito Propésito Propésito General General General General 96 Bytes 80 Bytes 80 Bytes 80 Bytes Fh 6rh | Mapeados con | F0n | Mapeados con | 170 [Mapeados con | 70n-7Fh 70n-7Fh 70h-7Fh J 7F | Fn 17h Banco 0 Banco 1 Banco 2 Banco 3 Figura 2.6. Distribucidn de la memoria RAM en cuatro bancos con 368 bytes tiles. 27 180h 11h 182h 183h 184h 15h 16h 17h 188h 189h 18An 1Bh 18Ch 18h 18En 18Fh 190h 19th 192h 198h 194h 195h 196h t97h 98h 199h 19h 198h 49Ch 49Dh 19Eh 19Fh 10h 1EFh 1FOh 1FFh 28 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: NOF on INDE 0h INDE] 100h NDE tro __| otn [OPTION REG | 8th Tro | to1n [OPTION REG [Po 2h POL 82h POL 02h POL [-starus | oan | starus | ean [- starus | 1oan [ starus FSA oth FSR aah FSR ‘oan FSR PORTA | ash TRISA ash 4108n [ports | o6n TRISB ash ‘oan Porc | o7h RISC. am 107 PORTB GH) osn [L smso 88n 108h Sines ‘PORTE (1) =| oon fo ATRISE (4). 89h toon fe i PoLaTH | oth | PoLATH | ah | PCLATH | 10am | PCLATH INTCON Bh INTCON Bh INTCON | 108 INTCON PIRI och PIE ech [eeDaTA | toch [ECON PIR dh PIED aon | ceaor | 100n [_ EECONe [Twit | o€n POON aen | ceoatH | toch [7 Reserwvado TMRIH OF 8Fh EEADRH | 10Fh Reservado TicON | 10h 90h 110h TwR2 tin [_ssecone | oth Te2con | 12k PRA 2h SSPBUF | ish [ SSPADD__| 90h ian [__sspsrar_| 94h ocr 15h 98h ccpriH | 16h 96h COPICON | 17h = om RcsTa | teh eh TxREG | 19h gon fo AcREG | tan [ES ean ait copra} 18h 98h CCPR2t 1Ch ee 9Ch a corecon | ton ie 90h ADRESH | 1h | adres | och foes ‘ADCONO | ifn [_ADCONT | ofr [oe a] tm Registros de | 20h | Registosde | Aon | Mapeacos | 120n | Mapeados con Propésto Propésito ‘con 20h-7Fh AOn-FFH General General 96 Bytes 96 Bytes 7h Fen L 17h Bancoo Banco 1 Banco 2 Banco 3 Figura 2.7. Organizacién de la RAM en los modelos PICI6F873/4, con de 192 bytes itiles. 80h 18th 182h 18h 14h 185h 86h 17h 188h 189h tah 188h 48Ch 180h 18en 18Fh 190h 19Fn 1Aoh 1FEh ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 29 PC Pc PCLATH 248. En la figura superior se muestra cémo se carga el PC, Abajo se muestra la carga del PC con tas instrucciones CALL y GOTO. in el modo de direccionamiento directo, los bits RPI y RPO del Registro de Estado <6:5> se en- cargan de seleccionar el banco, mientras que la direccién dentro del banco la determinan 7 bits pro- cedentes del cédigo OP de la instruccién. Para el direccionamiento indirecto se usa el registro FSR, en el que sus 7 bits de menos peso sefialan la direccién, y el banco lo determina el bit de més peso de FSR concatenado con el bit IRP del Registro de Estado <7>. (Figura 2.9.) 2.8. DIAGRAMA DE CONEXIONADO. En la Figura 2.10 se muestra el diagrama de distribucién y asignacién de las 28 0 40 patitas de los, encapsulados PDIP (doble hilera de patitas de pléstico) de los PIC6F87x. Los encapsulados con ‘menos patitas carecen de las puertas D y E. La Figura 2.11 muestra algunas de tas posibles opcion para proteger a sus microcontroladores. La asignacién de funciones para las diferentes patitas es la siguiente: de encapsulado que utiliza Microchip 30 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES [ pinkcoowmiewto necro | [pmECCIONAWIETO WoMECTO] fsrap0 , COICO oF. stAUCCION se ype. eee : DIRECCION DENTRO seurccion oF DDELBANCO, BANCO DIRECION DENTRO DDELBANCO BANCOO BANCOT BANCO2 —-BANCO3 SeUECCION OF ANCO Figura 2.9. Formas de seleccionar el banco y la direccién de la memoria RAM en los direccionamientos di- recto e indirecto. ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 31 cane Rao raoyano <> rewire eavan <—o] RADANIV ys OE ragrocks >| RAZ asjanaysse Rat revere +> e arcsyanr > ve Yo Ro7/P9e7 te rowrsre remnosomon 2 remmar aaroc RASIANAISSE reece BQ/NT Re7/egor ReaiTick, 5/800 Figura 2.10, Diagrama de asignacién y conexionado de las patitas de los dos posibles encapsulados en los ‘modelos de la subfamilia PICIOF87x. 32 MICROCONTROLADORES «PIC. DISENO PRACTICO DE APLICACIONES Los PIC16F87x al carecer de las Puertas D y E tienen 22 lineas de E/S (6 de la Puerta A, 8 de la B y 8 de la C). Ademés, no disponen de puerta paralela esclava y s6lo conectan al conversor A/D ‘mediante 5 canales. ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 33 2.6. REPERTORIO DE INSTRUCCIONES Los mismos formatos, iguales modos de direccionamiento y las mismas 35 instrucciones que te- nia el PIC16F84 sirven para todos los modelos PIC16F87x, por lo que no vamos a volver a repe- tirlos. No obstante, en los nuevos PIC, al contener més recursos, existen nuevos Registros Especificos de control cuyos bits se deberin escribir o leer para su gobierno. Dichos recursos y sus registros aso- ciados serdn el tema de los préximos capitulos. En la Figura 2.12 se ofrece un cuadro resumido del repertorio de instrucciones. MICROCHIP PACKAGE OPTIONS. = a igura 2.11. Opciones de encapsulados para los microcontroladores PIC. (Cortesta de Microchip.) 34 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES sine | 4d | suadeweont coor ata andl iid TAND de W con f [00 oor ait a i BORRADO de on pene BORRADO de Oe BE cant [ha] commewento a 00 0 a de [td] orcreweno der “coon ar inet td INCREMENTO de f | ~ 00 too at joo | : SOOT ined [ed] MOVIMENTO eT 0 100 tee MOVIMENTO de WT a0 ee = RO OPEEACION om Ox oo it $F] noTcOn ow aa omy [oo or a fa [ a] ROTAGON de ade con cry co a bts] nisin tw oan a ah [hd] INTRA de ado oO a “+0850 or los & de peso ‘OR exclasva de W con PUESTA 20 del bit def ‘1 ob bt it ‘oF O1bb bi if PUESTA a | del hitb def TESTEO del bit b def, BRINCO siO (0 10bb bf TESTEO del bit de f BRINCO s 1 111 ba DDECREMENTO def, BRINCO sid) oo 10n ot INCREMENTO def BRINCO si 01111 SUMA de lieral con W 111 ik ke "AND de iteral con W OR de eal con W. [1 Toor ek kkk 1100 kkk Kk 'MOVIMIENTO de eral a W. TOO kkk Ke RESTA W de literal WI T1103 Kk Ke ‘OR exclusiva de iteral con W TH TO1O kik Ki LLAMADA a subrutina 10 Ok Kl Kk TBORRADO del WATCHDOG. (0 0900 0110 0100 SALTO a una deeecin TO Thee Kk RETORNO de iterupeion ‘90;9000 9000 1001 rath E RETORNO devolvende itera en W 11 Or ek Kk aur RETORNO de subrutna ‘20 0000 0000 1000 sleep PLISTA del microprocesador en repos ‘90 0000 0770 0017 Figura 2.12. Principales caracteristicas de las 35 instrucciones que componen el repertorio de los PICIOFS7x ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 38 EL PRIMER PROGRAMA CON LOS PICI6F87X Tras el repaso a la programacién de microcontroladores PIC Hevado a cabo en el tema anterior, va- ‘mos a repetir el mismo ejercicio pero esta vez con los PICIGF87x y, mas coneretamente, con el PICI6F873. Puesto que el enunciado, aparte de trabajar con un nuevo PIC, es el mismo, no vamos a repetirlo. Igualmente ocurre con el organigrama. El esquema eléctrico, sin embargo, presenta al- gunas diferencias, Esquema eléctrico Como puede observarse en la Figura 2.13, el modo de representar los periféricos de entraday/sali- da no varfa mas que en el lugar que ocupan, ya que la distribucién de las patitas del PIC ha cam- biado. Los condensadores que acompafian al cristal de cuarzo ahora son de 15 pF y no de 27 pF como eran en el PICI6F84 para trabajar a la misma frecuencia. Por tltimo, ahora hay 2 patitas Vss en vez de 1. Programa comentado Se presenta a continuacién la resolucién del ejercicio propuesto utilizando un PICI6F873. De- bido a que las funciones de este PIC son mayores, sus patitas tienen asignadas varias tareas, y la discriminaci6n entre dichas tareas es la diferencia més notable con respecto al ejercicio dei te- ‘ma anterior. Asf, ademds de configurar las Ifneas de la Puerta A como de entrada o salida, hay que decir, en el caso de que vayan a ser entradas, si dichas entradas serén analdgicas o digitales. En el tema correspondiente al Conversor Analégico/Digital se verdn todas las combinaciones po- sibles. tra cosa a tener en cuenta es que el ntimero de bancos de la memoria de datos RAM ha au- ‘mentado a cuatro, Esto quiere decir que para movernos por ellos necesitamos estar pendientes no s6- lo del bit 5 del registro Estado , sino del 5 y del 6 . En el programa se ha inclui- do este hecho aunque en este caso no era necesario por partir de los dos bits a 0 al comienzo del programa. Se ha incluido un * en todas las lineas que se han aftadido o han variado. DISENO PRACTICO DE APLICACIONES ONTROLADORES «PIC». 36 MICROC' del ejercicio propuesto para él PICIOF873 Figura 253. Esquema eléetrice ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 37 Prueba del programa: el ZOCF87x Para la prueba de este programa, deberemos seguir los pasos vistos en el tema anterior en cuanto a edicién, ensamblado, etc., teniendo en cuenta que los campos que antes eran rellenados con PIC16F84 ahora lo son con PICI6F873. ‘Una vez obtenido el fichero HEX podemos utilizar el sistema de desarrollo Micro’ PIC Trainer para la grabacién y uso de periféricos, ya que como se vio éste dispone de un zécalo de 28 patitas donde insertar los PICI6F873 y PICI6F876. Para ello, se utiliza el ZOCF87x, que adapta el encapsulado estrecho de estos PICs al ancho del z6calo de la placa. En la fotografia de Ia Figura 2.14 puede observarse dicho z6calo de adaptacién colocado sobre el Micro’ PIC Trainer, Obsérvese ademés que el z6calo para los PIC de 18 patitas (junto al anterior) permanece vacfo, ya que no pueden existir dos PICs en la placa al mismo tiempo. Los pasos a seguir para la grabacidn de un PIC de 28 patitas desde el Micro' PIC Trainer son si- milares a los ya descritos para un PIC16F84 y se resumen en los siguientes: 38 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES, Figura 2.14. Fotografia que muestra la colocacién del zécalo ZOC87x sobre el Micro’ PIC Trainer. (Corte- sia de Microsystems Engineering.) 1° Se inserta ol PIC 16F873 0 PIC 16F876 en el ZOCF87s, hacienda coincidir la patila n.° del chip con fa del zdcalo. Esle a $u vez se inseria en él Z6calo libre del Micro'PIC Trainer, tomando fa misma precaucién, =. 2° Este debe ser al unica PIC insertado en la placa, — 3° Los jumpers J6, J6 y J? deben estar ablertos para la grabacién: Al contrario, el jumper sitvacio en 2! zdcale de adaplacion debe estar cerrado, lo que Conecta la hea ABS con une resistencia pull. down. 42 Lamar al programa PICME-TR y selecciorar of PIC ylos pardmetos apropiades, 5° Seguir los pasos para la grabacion descritos en el Capitulo anterior 6? Una vez grabado, sien la apyicacién la tinea RE3 se emplea como entrada con pull-up, es nece- ‘Sato abrir el jumper del z6calo. En los demas cases puede mantenerse cerrado. ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 39 ACTUADORES PARA DIVERSAS APLICACIONES: LOS MOTORES Unos de los actuadores mas vistosos y versdtiles para el trabajo con PICs son los motores. Los mo- tores pueden mover una cinta transportadora; un motor puede ser lo que suba o baje una polea con un objeto en su extremo; puede abrir o cerrar una puerta e incluso posicionar un brazo articulado. En este apartado se van a ver dos tipos de motores: Diferencias entre los motores DC y PAP Las caracteristicas mas destacables de los motores DC se resumen en: Esto les hace ideales en aplicaciones en que se precisa coordinar la velocidad de varios motores ‘al mismo tiempo, y/o en que el motor tiene que responder instanténeamente a las sefiales de control para un encendido/apagado y cambio de sentido. Su peso y tamafio reducidos les posibilita ademas para formar parte de sistemas méviles sin incrementar el peso ya existente, Los motores PAP a su vez se caracterizan por: EL funcionamiento de un motor PAP se logra aplicando en sus bores un conjunto de sefiales de control especificadas por el fabricante, por lo que un programa realizado para un motor determina- do deberd modificarse si el motor es cambiado, 40 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Sin embargo, el que sea controlado por ese conjunto de sefiales tiene la ventaja de que en todo ‘momento se conoce su dngulo de giro exacto, mimero de vueltas dadas, etc., sin necesidad de sen- sores externos tipo encoder, lo que le hace propicio para aplicaciones en que se necesita gran preci- sién de movimiento, El modelo se clegiré en funcién de la precisién del angulo de giro que se ne- cesite. Motores DC Los motores DC intermamente estén compuestos por un imén (estator) que crea un campo magnéti- co en el cual se encuentra una bobina o electroimsn arrollada en un eje giratorio (rotor). La tension de alimentaci6n aplicada al motor hace que se generen unas fuerzas de atracci6n y repulsi6n entre el campo magnético del estator y del rotor, lo que hace que el motor se mantenga en movimiento. En la préctica, el control sobre dicho motor se realiza con la aplicacién de tensién en los dos hi- los que salen al exterior: con un hilo se determina el encendido/apagado del motor y con el otro el sentido de giro, Como a tensi6n e intensidad que proporcionan las Iineas del PIC no son suficientes para exci- tar un motor DC, se hace necesaria la utilizaci6n de algin circuito integrado espectfico. ‘Uno muy utilizado es el L293B, que consta de 4 drivers. La Figura 2.16 muestra la mitad de es- te circuito integrado con dos de sus cuatro drivers. Figura 2.15. Fotografia de un servomotor de corriente continua modelo $3003 de Futaba, ye ? Ovee iad 412.2938 i} Sov igura 2.16. Mitad del circuito integrado L293B con dos de sus cuatro drivers uilizados en el control de un ‘motor DC. ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 41 Cada pareja de drivers puede ser usada para el control de un motor DC. El significado de las pa- titas del esquema es el siguiente: 12. Vinh: través do esta linea se inlroducird la seftal de encendico 1) oapagad (0) proveriente det PIC. 2° Cy D: variando estas sefiales Se contfola ol sentido de gio del motor Deber set opuestas ya que. {6 lo contrario, provoceria una parada répida. En la préotica estas ineas suelen estar unidasa tra: vés de une ouerta inversora para forzar su valor opuesto. 32 +Vec: &s la alimentacién del circuita. Se corresponde can 5 V. 4° +s: 85 la tonsi6n que se apiicard @ los motores. Admite un maximo de 36 V. El funcionamiento con este tipo de motores es sencillo: a través de una patita del PIC (debida- ‘mente configurada como salida) habilitara el motor, y una segunda patita marcaré el sentido de gi- ro con su sefial. Dependiendo de! voltaje suministrado variaré la velocidad del motor. Dicha veloci- dad también puede ser controlada a través del PIC con las técnicas conocidas como PWM y PFM. En la PWM (Modulacién de Anchura de Pulsos) se aplican al motor (en su linea de marcha/pa- ro) pulsos de amplitud variable. En la PEM (Modulacién de Frecuencia de Pulsos) se mantiene la anchura de impulsos pero varia la frecuencia de los mismos. Motores PAP Los motores PAP, al igual que los DC, se basan en las fuerzas electromagnéticas creadas entre es- tator y rotor, pero ambos constan de més de dos polos. Esto hace que se necesiten conjuntos de im- pulsos para generar unas fuerzas que los hagan girar, y que este giro no sea continuo sino de un cier- to niimero de grados. En la préctica también se usa para su control el circuito integrado L293B, conectado tal y como muestra la Figura 2.18, Figura 2.17. Fotografia de un motor PAP unipolar de 4 fases y giro de 7,5° 42 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Figura 2.18. | Esquema completo del circuito L293B con un motor PAP conectado, En este caso, se necesita el circuito L293B completo para controlar un motor PAP. La forma de actuar sobre él serfa introducir por las lineas A, B, C y D (debidamente conectadas a las lineas del PIC) la secuencia marcada por el fabricante que podrfa ser, por ejemplo, como ta mostrada en la Fi- gura 2.19, Entre paso y paso se debe introducir un pequefio retardo para dar tiempo al motor a realizar el giro. Variando la duracién de dicho retardo se puede modificar la velocidad del motor. BOBINAS BOBINAS SENTIDO HORARIO SENTIDO ANTIHORARIO Figura 2.19, Secuencia de control para el giro de un motor PAP en ambos sentidos. 3.1. LOS REGISTROS DE CONTROL Para gobernar el funcionamiento de los recursos de los PIC existe un conjunto de registros espect- ficos cuyos bits soportan el control de los mismos. Dichos registros estan ubicados en las primeras posiciones de cada banco de la memoria de datos RAM y para aprovechar toda la potencia de los ‘microcontroladores es necesario conocerlos. En las Figuras 2.6 y 2.7 del capitulo anterior se mos- traba el contenido de la memoria RAM de los PIC16F87x y la denominacién y situacién de los re- gistros especificos junto a los de propésito general. Las posiciones 00h, 80h, 100h y 180h no son re- gistros fisicos sino direcciones indirectas. Este tema, en su primera parte, est dedicado a la exposiciGn de la misi6n de los bits de los prin- cipales registros de control, algunos de ellos similares a los del PIC16F84. Las diferencias entre los registros de los PICIOF87x de 28 y 40 patitas se debe a carecer los primeros de las puertas D y E, con lo que no disponen de los registros PORTD, PORTE, TRISD y TRISE. Tampoco tienen los re- gistros que controlan la puerta paralela esclava que s6lo esté implementada en los modelos de 40 pa- titas. 3.2. REGISTRO DE ESTADO (STATUS) Sin duda éste es el registro més usado de todos, pues sus bits estén destinados a controlar las fun- ciones vitales del procesador. Por este motivo, est duplicado en las cuartas posiciones de cada ban- co (03h, 83h, 103h y 183h). (Figura 3.2.) REGISTRO DE ESTADO Figura 3.1. Estructura interna del Registro de Estado, 44 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Los tres bits de menos peso son los gico-aritméticas efializadores de ciertas condiciones en las operaciones 16- Los sefializadores PD# y TO# son activos por nivel bajo (#) y sirven para indicar la causa que ha provocado la reinicializacién del procesador. * PDE 5e activa a 0 al ejecutarse la instrucci6n sleep (modo reposo). Se pone a 1 autométicamente tras la conexién de la alimentacion, o bien, al ejecitarse la instruccién cirwat (refresco del perro guaran) ieee + LLO# Se activa a nivel bajo al desbordarse et perro guardién. Toma ef valor 1 tras la conexion de la alimentacion oa elecutarse las instrucciones chwcto sieap. Los seftalizadores PD# Y TO# son muy importantes en el proceso de Reset porque indican la causa que la ha originado y permiten actuar en consecuencia, No son escribibles. Los PIC se resetean al conectar la alimentacién (POR: Power-on Reset). También se resetean cuando la tensi6n de alimentacién baja de 4 V (BOR: Brown-out Reset), aunque esta funciGn es fac- tible desactivarla poniendo a 0 el bit BODEN, presente en la palabra de configuracién. Tanto en el Reset POR como en el BOR los bits PD# y TO# toman el valor I, mientras que en los demas casos depende de la causa que ha provocado el Reset. Finalmente, los tres bits de mas peso del Registro de Estado se emplean para seleccionar el ban- co de la RAM al que se desea acceder. En el direccionamiento directo, como se vio en el capitulo anterior, se utilizan los bits RP1 y RPO de acuerdo con la siguiente codificacién. [Rei [RP [BANCO SELECCIONADO] Banco 0 (00h-7Fh) Banco 1 (@Oh-FFH) Banco 2 (1OOh-17Fh Banco 3 (ahr FFH) EI bit IRP se usa concatenado con el bit de mas peso del registro FSR para elegir el banco de RAM en el direccionamiento indirecto. IB. Seleccién del banca de RAM art direcéionade inaiiacte! = “0; Banco Oy 1 (00h-FFh). 1 Banco 2 3.(100b-1FFR) : PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 45 En algunas instrucciones, el Registro de Estado puede actuar como destino, en cuyo caso los bits de los sefializadores Z, C y DC no son escribibles en aquellas instrucciones que les afecte la opera- cién que realizan, al igual que sucede con PD# y TO#. Por ejemplo, al ejecutar la instrucci6n clrf STATUS, el Registro de Estado pasa a valer 000uu1uu. Los bits marcados con «u» no cambian el va- lor que tenfan. Por este motivo se recomienda usar las instrucciones bef, bsf, swapf y movf para ma- nejar los bits de este registro, ya que no afectan a los seftalizadores Z, C y DC. Como los tres bits destinados al direccionamiento de la RAM (IRP, RP1 y RPO) toman el valor (0 después del Reset, si se desease acceder al banco 3 de Ja RAM habria que emplear las siguientes instrucciones: = bef STATUSFPO bt STATUS AP if os 3.3. REGISTRO DE OPCIONES (OPTION) ‘Tiene las mismas funciones que tenfa en el PICIOF84: : i “Asli of dveo de frcusocia al Tanrd IMPO}0 al pero puarclin 2° Elige.el rango en él que trabaja el divisor de frecuencia. ie 2 Selecciona el tipo de relo| del TMRO, que puede ser interno extern, @ raves de aoa TOCK!. 48 Selecciena el flanco activo para la internspcion externa por RBOINT. 5: Activa 6 desacina let resistencias de put. de a Puerta 8. + El registro OPTION toma el valor 1111 1111 en cualquier tipo de reinicializacién que se pro- duzca. El valor de sus bits junto con su significado se presentan en la Figura 3.2. 3.4. REGISTRO PARA CONTROLAR LAS INTERRUPCIONES Los PIC16F87x tienen muchas causas que pueden originar una interrupcién; 13 posibles causas los de 28 patitas y 14 los de 40. Al aceptarse una interrupcién se salva el valor del PC en la Pila y se carga aquel con el valor 0004h, que es el Vector de Interrupcién. La mayoria de los recursos 0 peri- {éricos de que disponen los PIC6F87x son capaces de ocasionar una interrupei6n, si se programan adecuadamente los bits de los registros que pasamos a describir a continuacién, El PICI6F84 tenfa 4 causas que generaban interrupcién: desbordamiento del TMRO, activacién de la patita de interrupcién RBO/INT, cambio del estado de una de las 4 patitas de més peso de la Puerta B y finalizacién de Ia escritura de un byte en la EEPROM. Los nuevos PIC, ademés de las causas que producen interrupcién en el PIC16F84, tienen las siguientes: 46 — MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Figura 3.2, Denominacién y asignacién de funciones de los bts del registro OPTION. Ocupa la direccién 81h del banco I yla 18th del banco 3. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 47 Como los PICI6F87x disponen de més causas que provocan interrupcién, también tienen mas registros para contener los bits sefializadores y de permiso o prohibicién. 3.4.1. Registro de control de interrupciones (INTCON) Se trata de un registro lefble y escribible que, para facilitar su acceso, se halla duplicado en los cua- {ro bancos, ocupando las direcciones OBh, 8Bh, 10Bh y 18Bh, respectivamente. Tiene la misi6n de controlar las interrupciones provocadas por el TMRO, cambio de estado en las 4 lineas de mas peso de la Puerta B y activacién de la patita RBO/INT. Es muy parecido al registro que con el mismo nom- bre existfa en el PICI6F84. Solo cambia el bit 6 en los nuevos PIC, que es el PEIE (permiso de in- terrupcién de los periféricos) en lugar del EETE que tenia el PICI6F84 para permitir la interrupcién cuando finalizase la escritura de un byte en la EEPROM. E! bit PEIE acta como una segunda la- ‘ve parcial de permiso 0 prohibicién de las causas de interrupcién que no estén contempladas en INT- CON y que las provocan los restantes periféricos del microcontrolador. GIE es el bit de permiso glo- bal de todas las interrupciones. (Figura 3.3.) 3.4.2. Registro de permiso de interrupciones 1 (PIE1) Contiene los bits que permiten (1) 0 prohiben (0) las interrupciones provocadas por los periféricos internos del microcontrolador y que no estaban contempladas en INTCON. Ocupa la direecién 8Ch y para que cumplan su funcién los bits de PIE es necesario que PEIE = en INTCON <6>. El bit PSPIE solo es valido en los modelos de 40 patitas, manteniéndose a 0 en los que tienen 28 patitas. En la Figura 3.4 se presenta el registro PIEI con el significado de todos sus bits. REGISTRO INTCON Figura 3.3, Designacién y misidn de cada uno de los bits del registro INTCON. 48 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES 3 Registro de permiso de interrupciones 2 (PIE2) Contiene los bits de permiso de interrupcién de las tres causas que no figuraban en PIE. La de fin de escritura en Ia EEPROM, colisién de bus en el modo SSP y produccién de una captura o una compa- raci6n en el médulo CCP2, La Figura 3.5 presenta la funci6n de estos tres bits. El bit 6 es un bit re- servado y su valor es siempre 0. Cuando se leen los bits que no tienen asignada funcién se obtiene 0. 3.4.4, Registros de los sefializadores de interrupciones 1 y 2 (PIRI y PIR2) En correspondencia con los bits de permiso/prohibiciGn de las causas de interrupcién recogidas en los registros PIE! y PIE2, existen otros dos registros, PIR y PIR2, cuyos bits actuan de sefia~ lizadores del momento en el que se origina la causa que provoca la interrupcién, independiente- ‘mente de si est permitida 0 prohibida. Ocupan las direcciones 0Ch y ODh, respectivamente. (Fi- gura 3.6.) 35. fURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH Enel PICIGF84 se podia leer y escribir la memoria de datos EEPROM, En los PIC16F87x también se pue- de leery escribir la memoria de oédigo FLASH. Esto significa que un programa dindmicamente puede ge- nerar informacién que se puede grabar en la FLASH directamente, sin necesidad del grabador extemo. La propia eoticacion so puede reprogram sega las condloenes exemas. Es posible ample ol rea __ dela memoria de dates 70 volétl EEPROM con posiciones lores de a memoria de codigo FLASH. REGISTRO PIE [eee Re See] ; 3 Figura 3.4. Designacién y funciones de permiso y prohibicién de los bits del registro PIED PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM — 49 REGISTRO PIE2 [ees eel eae Tee > 0 Perso de eats Be de era In EEPROM de datos. Sea ocean = emi ee Designacién y funciones de los bits del registro PIE2, Para manejar la memoria EEPROM de 64 bytes del PICI6F84 bastaban dos registros para pro- porcionar la direccién a acceder y para guardar el dato de 8 bits que se lefa o se iba a grabar. Como sdlo existian 64 posiciones en la EEPROM, para contener la direccién bastaba con un registro de 8 bits: el EEADR. El dato lefdo o a escribir, de tamaito byte, se colocaba en el registro EEDATA. Como en los PICI6F87x también se puede leer y escribir la memoria FLASH y ésta puede al- canzar un tamafio de 8 K palabras de 14 bits cada una, No es suficiente con un solo registro para la direccién, que alcanza los 13 bits, y lo mismo sucede para el dato, que tiene una longitud de 14 bits. Para cubrir esta necesidad, el registro EEADR se concatena con el EEADRH, que contienc los 5 bits de més peso de la direcci6n. Por otra parte, el registro EEDATAH se concatena con el EEDATA y contiene los 6 bits de més peso de la palabra lefda o a escribir en la FLASH. Estos dos nuevos re- gistros no se usan en las operaciones que afectan a la EEPROM. (Figura 3.7. Para controlar la operacién de lectura/escritura de las memorias EEPROM y FLASH hay dos re tros denominados EECON1 y EECON2. El EECONI (Figura 3.8) ocupa la direccién 18Ch, mientras que el EECON2, como sucedia con el PICI6F84, no esta implementado fisicamente y solo se utiliza en REGISTRO PIR Ta ee ae De coe ea] : : REGISTRO PIR2 Figura 3.6. Los bits de los registros PIRI y PIR2 contienen los sefializadores de las causas que producen las interrupciones, en correspondencia con los registros PIE! y PIE? 50 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES. la delicada operacién de escritura, que tiene la elevada duracién de 2 milisegundos, aproximadamente. Antes de iniciar la escritura de una palabra se escribe en EECON2 primero el dato Ssh y luego el Ah, Se proponen algunos programas fundamentales para manejar las operaciones de lectura y escri- tura en las memorias EEPROM y FLASH. En la parte dedicada a programacién se incluye un ejer- cicio completo sobre este tema. Es una buena prictica de programacién verificar que todos los valores escritos en las memorias EEPROM y FLASH son correctos. Para evitar escrituras indeseadas en la EEPROM motivadas por esptireos en la inicializacién del microcontrolador, se controla el bit WREN, prohibiendo cualquier operacién de escritura mientras duran los 72 milisegundos que temporiza el Timer de Power-up. Para realizar la misma proteccién < Be ortie fag 02 Ba deesenn” 3 Se profibe la escritura de nuevos aos TADRN GOR EEADR GODH) Ae eee ee ee DIRECCION DE 13 BITS (8 K) EEDATAH (oth EEOATA HOC) eres Tse Pete Tees) DIRECCION DE 14 BITS (FLASH) Figura 3.7, Para contener la direccién y el dato de la memoria FLASH se necesitan dos registros para ca~ da valor. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM — SL REGISTRO EECON1 Selecciona el acceso a la FLASH (1) 0a la EEPROM (0), © Sehalizador de error en eset, WREN. — Permiso.de escitura we Hay que poierio a 1-patainiciar la escritura y pasa a 0 auiométicamente cuando finaliza, RD. Hay que ponerio 21 para iniciar a lectura, Figura 38, Denominacién y misi6n de los bits del registro EECONI PROGRAMA DE LECTURA DE LA MEMORIA FLASH DE CODIGO bat STATUS RPI Con estas dos instrucciones se bet STATUS,RPO {seleccionaclbanco2 mmovf ‘ADDR_HW Se mete en EEADRH fa parte alta de la movwt BEADRH $ direccidn a leer movf ADDR_L.W. Se mete’en EEADR Ja patie baja de la movwt EEADR j direccién a leer bsf STATUS,RPO + Se pasa al banco 3 bof EECONI,EEPGD } Se selecciona el acceso a la FLASH. bef BECONI,RD Seda ta orden de leotura de la FLASH. nop : { Tana 3 ciclos en tener et dato, por fo que é -eualquier instrucci6n es ignorada befnop 'STATUS.RPO, Se pasa al banco 2 movt EEDATA.W FSe coge ta parte baja del dato leldo, movwF DATAL ‘movt EEDATAH.W Se coge la part alta del dato lefdo mowwh DATASH PROGRAMA DE ESCRITURA EN LA MEMORIA FLASH DE CODIGO bal STATUSRPL —__; Conesas dos instmucciones se. bef STATUS RPO. + yelecciona el banco 2 ‘movt ‘ADDR_HW {Se mete en BEADRH la parte alta de la movwt EEADRH 4 direccién a escribir mov ‘ADDR_L.W {Se mete en EEADR la parte baja dea movwf =| «EEADR SS iteceidnaescrbir : movt DATALHW Se mete en EEDATH la parte alta movwt ‘EEDATH 4 flet dato a escribir movf, DATALL.W ©. }Se mete en EEDATA fa parte baja, 52 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES PROGRAMA DE ESCRITURA EN LA MEMORIA FLASH DE CODIGO (consinuacidn) movwh EEDATA. {del datora escribir bef "STATUS.RPO {Se pasa al banéo 3 bef BECON1,EEPOD. } Se selecciona el acceso a la FLASH ‘bf EECONI.WREN hhablite Ia eseritura en Ia FLASH bet INTCON,GIE + Se prohiben las interrupciones: _ movi. 55h +} Se mete el valor Ssh y-el Ah en el movwh EECON2 4 registto de seguridad EECON? tal y moviw AAn GomoTecomniendi el fabricante ‘movwh ‘BECON? bsf EECONT.WR {Se da Ta orden de escritura = nop. El microcontrolador ignora estas dos nop $ instrucciones y no sigue con la siguiente { hasta que-no-fermine fa escritura bat INTCON,GIE {Se habilitan tas interrupciones bet EECONI.WREN : Se prohibe Ja escritura de nuevos datos en la memoria FLASH se debe poner a 0 el bit WRT de la Palabra de Configuracién, que sélo pue- de escribirse desde un grabador extemno, Dependiendo del valor del bit WRT y de los bits de Proteccién de Cédigo CP1 y CPO, ubicados en la Palabra de Configuracién, se consiguen diversas altemnativas de proteccién contra lectura y es- critura de la FLASH. (Figura 3.9.) POSICIONES: LECTURA J ESCRITURA }LECTURA JESCRITURA _DEHLASH INTERNA | INTERNA | ICSP ics. Toda la memoria de programa ‘Areas ao protegidas ‘Areas protegidas ‘Areas no protegidas oft 1 Areas protegidas 1 0 ‘Areas no protegidas 1 a Areas protegidas Areas no protegidas Areas protegidas ‘oda la memoria de programa Toda la memoria de programa Figura 3.9. Diversas posibilidades de proteccién de la memoria FLASH ante operaciones de lectura y es- critura, de acuerdo con los valores de los bits WRT, CPI y CPO de la Palabra dle Configuracién. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM — 53 UN PROGRAMA QUE MANEJA LAS MEMORIAS FLASH DE CODIGO Y EEPROM DE DATOS En este mismo capftulo se han visto trozos de cédigo para leer y escribir la memoria FLASH de ins nes y para escribir la memoria EEPROM de datos. Vamos a realizar ahora un ejercicio que retina la utilizacion de estas dos memorias. Para ello, consideraremos que los cédigos ya vistos, con tuna pequeita modificacién, son subrutinas a las cuales se Hamar para realizar procesos de lect ralescritura sobre las citadas memorias. Asi, tendremos las siguientes subrutinas: struc LEER-FLASH : ESCRIBIR-FLASH LEER-EEPROM ESCRIBIR-EEPROM Falta por realizar el c6digo correspondiente a Ia lectura de la EEPROM, que una vez convertida a subrutina quedarfa como sigue. * LEER-EEPROM bsf STATUS,RPI + instrucciones se bef. STATUS.RPO ; Seleceiona el banco 2. movi ADDR_L,W. Se mete en EEADR mowwt EEADR: Ja direcci6n a leer bsf. STATUS,RPO Se pasa al banco 3 bef EECONI,EEPGD ‘; Se selecciona el z ‘acceso a EEPROM ‘bsf = EECONIRD ; Se da la orden de re slectura bef STATUS.RPO Se pasa al banco 2 movt EEDATA,W ; Se coge el dato lefdo. ‘movwf = DATA L syse dejaen iz DATA_L- ake return Retorno de + Subrutina: 2 54 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES En las Ifneas que empiezan con * se pretende resaltar las modificaciones que habrfa que llevar a cabo en los cédigos anteriores para convertirlos a subrutinas: poner como etiqueta el nombre co- rrespondiente de cada subrutina y como tiltima instruccién la return para volver al programa prin- cipal. Enunciado La posibilidad de escribir la memoria de cédigo mientras se est ejecutando un programa puede re- sultar interesante para ciertas aplicaciones, Imaginemos que en un programa se necesita saber si es la primera vez que se utiliza, para pedir cierta informacién de configuracién por ejemplo, o si ya se ha utilizado mas veces y dicha informacién ya se tiene. Hay muchos modos de hacer esto: se podria preguntar al usuario, mirar cierta variable para determinarlo y ejecutar una subrutina u otra 0, como haremos aqui, modificar el programa la primera vez que se entra para en posteriores ocasiones eje- cutar un c6digo diferente. En nuestro programa, la primera vez que se ejecute se leerd la primera posicién de la EE- PROM (aunque no es estrictamente necesario lo haremos asf para probar las funciones vistas en este capitulo). Si en dicha posicién se encuentra el valor 27h (que anteriormente deberemos gra- bar) significa que el programa no se ha ejecutado anteriormente, en cuyo caso s¢ inicializaran una serie de contadores y se modificard el programa para que la préxima vez que se ejecute los con- tadores no sean inicializados, Puede parecer que serfa més sencillo e igual de 6ptimo no modifi- car el programa, sino el valor de la EEPROM, y simplemente leer cada vez. que se ejecuta el pro- grama la primera posicién de ésta, de modo que se salte a un punto u otro, La ventaja de nuestro método es que, aunque un astuto usuario quisiera hacer trampa a nuestro programa variando el va- lor de la EEPROM para que creyera que era la primera vez que se entraba en él, al haberse modi- ficado el programa y, a no ser que tenga el original, le ser imposible saber cudl era la secuencia que segufa esta primera vez. ;Se imagina que el cuentakilmetros de los coches tuviera un méto- do tan sofisticado? En esta ocasién, para resolver el ejercicio s6lo necesitamos como base el organigrama ya que, al no utilizar periféricos de E/S, el esquema eléctrico no aporta ningdn dato significativo. Organigrama organigrama de la Figura 3.10 representa el funcionamiento més completo del programa, la pri- mera vez que se ejecuta. En siguientes ocasiones, ya desde la primera instruccién se saltard a otras instrucciones. Programa comentado Antes de realizar el programa principal se debe hacer un primer programa con el cual se escriba en la primera posicién de la EEPROM (direccién 00) el valor 27. Este primer programa se gra- bard en el PIC de la forma habitual y su cuerpo consistiré en una llamada a la subrutina ESCRI- BIR-EEPROM, habiendo antes metido en el registro ADDR_L el valor 00 y en DATA_L el va- lor 27. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 55 Figura 3.10. | Organigrama del programa en su primera ejecucién. Antes de grabar un nuevo programa, como ya se expuso en el primer capitulo, es necesario bo- rrar el PIC, pero este borrado no afecta a la EEPROM, por lo que al grabar cl programa que real- mente nos interesa el valor 27 de la primera posicién permaneceré ai. Ahora, intente seguir el desarrollo del programa e imaginar cual ha sido el resultado final. 56 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES CONTI ‘+ Contadores a inicializar ‘CONT? CONTS ADDR, ; MSB de direccion FLASH ADDRL {LSB de direceién ;FLASH/ EEPROM DATA_H MSB del dato FLASH DATAL $LSB del dato, ; FLASH/ EEPROM DEBUG. | Registro de info. de debugging, ende. ORG 0x00. Inicio en el Vector de Reset goto INICIO. ‘ Instrucei6n a cambiar por ;goto OTRAS ORG 0305 ; Salta el Vector de + Interrupciéa | pealizéndose In iniializacién de ciertos valores'si et valor lefdo ere “elesperado, y no haciéndola én caso ontario. En cualquiera de los dos { easos, estas instrucciones se eliminardn. INICIO. uf DEBUG bef DEBUG, 0 + Pto. de comtrol 0 bef STATUS, RPI ; Seleceiona banco | bst STATUS, RPO lee ‘TRISB ; PORTB como salida bef STATUS, RPO 4 Wuelta a banca 0 olf PORTB st STATUS, RPL ; Seleeciona banca 2 clef ADDR _L { Direoci6n 0 EEPROM all LEER_EEPROM —_; Deja dato leido jen DATALL movlw 0327 for para comparar subwt DATA.L,W {con dito feido EEPROM bits STATUS, Z + 2Son iguales? oto NO_INIC goto INIC $84. Se realiza {fa inicializacion + $i seentrsen INICexque es la 1? ver que ae ejecuta el programa y eh x osicifn £00 de In BEPROM se encuenia t Valor 27. Tebricamente, sino Mueraast no estar {pasando por agof, ya que las instrucciones no existirian. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM. 37 58 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES: {Se ha dado cuenta de nuestra pequefia trampa? Hemos introducido puntos de control a lo largo de todo el programa poniendo a 1 los bits de un registro segiin se iban ejecutando partes, y mos- trando el valor total al final del programa, De esta forma, podemos comprobar de una forma répida y fiable el cambio de nuestro e6digo. Estos puntos de contro! no forman parte del programa en sf, por Io que no se muestran en el organigrama ni en el esquema eléctrico. Una vez comprobado el buen funcionamiento pueden ser eliminados. El programa ha cambiado completamente, tal y como se muestra mas abajo. Tras la primera ins- truccién, Ia mayorfa de las instrucciones han sido cambiadas por el cédigo de operacién de la ins: truccién NOP. A partir de ese cédigo, aun teniendo acceso a él, ser‘a imposible conocer el progra- ma original. Este mismo método puede utilizarse para aplicaciones de aprendizaje en el campo de la Inteligencia Artificial, donde microbots controlados por microcontrolador pueden ir variando sus programas dindmicamente para adaptarse a situaciones concretas. Figura 3.11. PICME-TR mostrando el cédigo del programa una vez modificado. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 59 Prueba del programa En un programa donde no hay entradas y salidas el resultado no puede comprobarse a simple vista. Podemos introducir puntos de control, como en nuestro caso, o utilizar herramientas adecuadas pa- ra ello, Los pasos a realizar son los siguientes: 60 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: AMPLIACION DE PERIFERICOS PARA EL TRABAJO CON PIC Con la aparicién de los PICI6F87x, surge la necesidad de disponer de herramientas que saquen to- do el partido a tos nuevos recursos que incorporan. El tratamiento de sensores analégicos y la regu- lacién de motores, que estos PIC son capaces de gobernar mediante su hardware interno, ia impul- sado a Microsystems Engineering a diseitar una plataforma con la que poder experimentar técnicas avanzadas de control. La tarjeta de expansion Micro’PIC /O La Micro PIC 1/0 es una tarjeta de expansién que se conecta al Micro PIC Trainer mediante el PIC- BUS tal y como muestra la Figura 3.1 Se basa en la inclusién de periféricos de E/S relacionados con las nuevas caracteristicas de los PICIGF87x. En la Figura 3.13 se muestra una fotografia del Micro’ PIC 1/0 con sus bloques funda- mentales sefialados. 32, Conexidn de las tarjetas Micro’ PIC Trainer y Micro’ PIC 110. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 6 Figura 3.13, Forografiade la tarjeta de expansién Micro’ PIC 1/0 con las partes mds significativas remarcadas 4° Doble conector PICBUS: con todas las sefiales proporcionadas por los PICS de 28‘patitas. 2" Alimentacién: para conexi6n de un tansformador de 12 VAC. 5° Regleta de conexiones: asdciadas-al PICBUS para disponer de todas fas-senales y conactar ‘mediante Cable de modo flexible e fs aistintos penitéricos. 4° Generador de funciones: que proporciona una onda cuadtada de frecuencia seleccionable por suftches: 5° Gristal de cuarzo: de 32 768 Khe para su uso en aplicaciones de tiempo real. 6° Piezoeléctrica: dispositive para generacion de un pitide cuando se activa: 73 Generador de tensi6n de referencias: necesaria an los conversores analdgico/digitales. 8° Sensores analégicos: de lurninosidad (tipo LDA) y de temperatura (tipo LM35). 9. Cireuito de deteccién de cruce a paso por cero: dc una sefa! alterna sonoidal 10° Clreuito de regulacién de alterna: mediante un opto-triac que regula la potencia aplicada @ una carga resistiva (iémoara) 11° 2 relés: con sus correspondientes circuitos de excitacion. 12° Motor DC: puiede controlarse tanto su encendide/apagado como su sentido, la tension que Jo Blimenta puede ser de 5 VAC 6 de 12 VAC, segun un jumper dlspuesio a ta sfecto. 18? Controlador de motor: con posibillad de regular st velocidad. 14" Optoacoplador infrarrojo de corte: cercano al motor que puede Ser usada coro encoder pa~ 12 controlar fs gitos del rotor Alimentacion Recibe una tensin de 12 VAC y un puente rectificador (D1) junto a un condensador (C1) rectifica y filtra la VAC para entregarla a dos reguladores UA7805 (UI) y UA7812 (U2 VDC y +12 VDC respectivamente. Su esquema electrénico se muestra en la Figura 3.14, que proporcionan {0 PRACTICO DE APLICACIONES vecesy a 1000 62 MICROCONTROLADORI «PIC». DISE! voor leer 1000F Figura 3.14. Esquema electrénico de la fuente de alimentacién, Doble conector PICBUS En la Figura 3.15 se puede observar el doble conector PICBUS. Se trata de dos conectores idénti- cos de 26 vias que soportan las mismas sefiales. Mediante un cable plano se conecta uno de dichos, conectores con el Micro’ PIC Trainer, en donde se aloja el PIC bajo prueba. El otro conector puede usarse para acoplar también al Micro’ PIC Trainer Plus y asf conformar un sistema completo con las tres tarjetas, que pone a disposicién del usuario un abanico extensfsimo de periféricos y un sistema de desarrollo de aplicaciones profesional que facilitaré en gran medida el disefio de aplicaciones. BeRRRSECEEZE EBA = { ( { | ( i sasnaeaes | | | | t Figura 3.15. Esquema electronico del doble conector PICBUS. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM — 63 Generador de funciones En base a un PICI6CS4RC (U3), tal y como se muestra en la Figura 3.16, existe un generador de onda cuadrada cuya frecuencia se puede seleccionar entre 8 valores diferentes con tres microrrup- tores (SWI). . Oseilador de 32.768 KHz Compuesto por un cristal de cuarzo de 32.768 KHz y 2 condensadores de 27 pF, configura un osci- lador de una frecuencia igual a la de resonancia del cristal. (Figura 3.17.) La inclusi6n de este oscilador tiene la finalidad de permitir al temporizador TMR1 trabajar en la modalidad en la que precisa una base de tiempos externa gobemada por un cristal de cuarzo. La raz6n de haber elegido esta frecuencia es su estratégico valor, que tiene la propiedad de que con 215 impulsos se consigue fécilmente el tiempo de 1 segundo. Piezoeléctrico Se trata de un zumbador piezoeléctrico que va a ser muy interesante para todas aquellas aplicacio- nes en las que se precise generar pitidos o «beeps» sonoros a modo de seflales de aviso o alarma, (Fi- gura 3.18.) Generador de Funciones Figura 3.16. | Esquema electrénico del generador de funciones. 64 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: os i —| 7 ——rros0 2 “ . co aero ¥—_ pe 2 oro 2 Oscilador de 32.768KHz Figura 3.17. Esquema electrénico del oscilador ezi \ ENABLE Figura 3.18, Esquema elecirénico del zumbador piezoeléctrico. Sensores analégicos La inclusién de un convertidor anal6gico/digital entre los recursos del PIC16F87x ha animado al fa- bricante a incluir un sensor de temperatura de tipo LM35D y un sensor de luz. de tipo LDR. La tensién de referencia necesaria que precisan los circuitos de alimentacién se ha resuelto con el citcuito 1LM3362z-2.5V de National Semiconductor, que proporciona una tensi6n de 2,5 VDC. Mediante un jumper se puede relacionar como tensién de referencia los +2,5 VDC o los +5 VDC de alimentacién. Amos sensores se muestran en la Figura 3.19 y forman junto a una resistencia un divisor de ten- sin que se alimenta con el voltaje de referencia seleccionado. i . | 10K " the BR Daseev Figura 3.19, Esquema electrénico de los sensores analégicos, PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 65 Para conseguir el control de la potencia de AC que se entrega en la carga es necesario conocer el mo- mento en el que la tensi6n pasa por el valor de 0 VAC. El circuito «detector de paso por cero» pue. de observarse en la izquierda de la Figura 3.20 y consiste en un rectificador en puente Graetz que recibe 12 VAC y saca una tensién rectificada en doble onda de 100 Hz, que se aplica al emisor del optoacoplador 4N33. Cada vez. que la seftal vale 0 VAC no hay generacién de luz y el optotransis- tor se bloquea, y la tensi6n de su colector sube a +Vce avisando del cruce por cero. Cada vez. que la VAC pasa por 0 V se obtiene en el colector del transistor un impulso positivo, que puede provocar una petici6n de interrupcién en el PIC. En la tarjeta I/O se ha utilizado como carga una lampara de incandescencia de 12 VAC gober- nada su potencia mediante un opto-triac MOC3041 Rek Es un dispositive muy usado en la industria y muy fécil de controlar. Basta un sencillo circuito de excitacién para poder controlar la activacién 0 no de las bobinas que abren o cierran los contactos, que controlan la carga. La Figura 3.21 muestra los dos relés alojados en el Micro’ PIC 1/0. Motor DC y driver L293B Para el control de motores en la tarjeta Micro’ PIC I/O se ha elegido el circuito integrado L293B, que s capaz de controlar dos motores DC o uno PAP. Soporta una corriente de 1 A por canal. Consta de 4 canales que son gobernados por sefiales de control EN1 y EN2 fécilmente genera- bles por Jos recursos de los PIC16F87x, especialmente por el PWM. da de la Figura 3,22 se muestra uno de estos drivers. En este caso tiene conectado un nte continua en sus salidas OUT y OUT2, cuyo control se lleva a cabo a través de ENI para el encendido/apagado del motor e IN1-IN2 para el sentido de giro. 1ra 3.20. Esquema electrénico del opto-triac para control AC. 66 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES. ‘neoo? ‘94007 Rie Re 104 10% igura 3.21. Esquema electrdnico de los relés. Optoacoplador encoder Para realizar medidas sobre la velocidad de! motor DC y de su posicionamiento, en el Micro’ PIC 110 existe un optoacoplador de ranura ubicado fisicamente debajo del eje del motor. Ver parte derecha de la Figura 3.22. Para conformar un encoder basta recortar un disco de material rigido trasparente (plastico) y realizar un orificio en su centro para pegarlo al eje del motor. Luego se dibujan unas franjas radia- les opacas a la luz infrarroja. El nimero de franjas determinars la resoluci6n. El disco encaja en la ranura del optoacoplador, que generaré un pulso cada vez que pase una franja opaca. A 10 ennaie © jen wa HE 7 oS 8 Ne wi T 318i outs vera Hee “ew ¢ Se ne See cual : o| Shs ger . FH fa mt _ wo ae Bs i) vooo —otnte za a 1% Figura 3.22, Esquema electrénico del control de motores. 4.1. PUERTAS DE E/S Los microcontroladores PIC16F87x encapsulados con 28 patitas disponen de tres Puertas de E/S (A, B y C), mientras que los que tienen 40 patitas alcanzan las cinco (A, B, C, D y B). Todas las lineas de estas puertas son multifuncionales, es decir, realizan diversas funciones segtin estén programa- das. Sin embargo, todas ellas tienen la capacidad de trabajar como lineas de E/S digitales. Las caracteristicas principales de las puertas son similares a las del PICI6F84, por eso en este tema se intenta resaltar las novedades que afiaden las de los PICI6F87x. 4.1.1. Puerta A Sélo dispone de 6 Ifneas, denominadas RAO-RAS. Son bidireccionales y su sentido queda confi- gurado segiin la programacién de los bits del registro TRISA. Si el bit 0 del registro TRISA se po- ne a 1, la linea 0 (RAO) de la Puerta A funciona como entrada. Si se pone a 1 funciona como salida y el contenido de la bascula de salida se aplica a la patita correspondiente, segtin puede apreciarse en el esquema de la Figura 4.1. Alleer el registro PORTA de la Puerta A se lee el estado de las patitas, que es el que se halla es- crito en la bascula de datos de la Figura 4.1. La escritura entrafla una operacién de «lectura-modif cacién-escritura», 0 sea, se leen las patitas, luego se modifica su valor y finalmente se escribe en la bascula de datos. Las patitas RAO/ANO, RAL/ANI y RA2/AN2, ademis de lineas de E/S digitales también pue- den actuar como los canales 0, | y 2 por los que se puede aplicar una sefial analégica al conversor AID. La patitas RA3/AN3/Veer. también puede actuar como entrada de la Tensién de Referencia pa- ra los periféricos que la precisan. La patita RA4/TOCKI actiia como E/S digital y como entrada de la sefial de reloj para el Timer 0. Por tiltimo, ta patita RAS/AN4/SS# tiene multiplexadas tres fun- ciones: E/S digital, canal 4 para el conversor A/D y seleccién del modo esclavo cuando se trabaja con Ia comunicacién serie sincrona. 67 68 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: BASCULA DE DATOS whereas 098 ve on sscamenrfenn whee s 5 iE pores AscuA TSA [>— w be . sscomnofse ae MODO ENTRADA RASS 1 vec se AL CONVERSOR AD Figura 4.1. Esquema de conexionado de las patitas RAO-RA3 y RAS, que multiplexan la funcién de EIS di gital con la de canal de entrada de una seiial analégica para el Conversor AID. ‘Cuando se produce un Reset al conectar la tensién de allmantaciGn (POR : Power-on Reset) todas las atitas de la Puerta A quedan contiguradas como canales de entrada para ef Conversor A/D y son leldas como 0. Para seleccionar si las lineas de la Puerta A van a trabajar como E/S digitales o como canales de entrada para el conversor A/D, hay que escribir el valor adecuado sobre el registro ADCONI, que se estudiaré con mayor profundidad al describir el conversor. De mottiento es suficiente con saber que si se carga en dicho registro el valor 011x en sus 4 bits de menos peso, todas las lineas de la Puerta A funcionan como E/S digitales y para ello habré que escribir la siguiente secuencia de ins- trucciones: LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR — 69 DIREC Resor Nomere | rz} sie. pia | airs { en 2 | it} iro JEN Por. z EEC” = : BOR PORTA é Rad 05.000 -0u 0000 Tabla que recoge las caracteristicas y bits mas importantes de los registros que manejan la Puerta A. Cuando se pone una x significa desconocido, una u que no cambia y un — que no es- ‘6 implementado y se lee como 0. ‘moviv b'100000130' ——: Los:4 bits de menos paso’son 0410, mow! ADCONE Las lineas dela Pueca A son ES digitales. En la Figura 4.2 se presenta una tabla que recoge los, istros que manejan la Puerta A, 4.1.2. Puerta B Dispone de 8 lineas bidireccionales cuya funcién se elige mediante la programacién del registro ‘TRISB, igual que sucedia en la Puerta A con TRISA. En el siguiente programa, se configuran co- ‘mo entradas las lineas RB<3-0> y RB<7:6>, mientras que RB quedan asignadas como sali- das. bef. STATUS,RPO. ; Seleccién del Banco 0 bet STATUS.RPI lst PORTB ; Inicializa la Puerta B, borrando las basculas. + de datos bst STATUS.RPO ; Seleccin del Banco 1 moviw —_OxCF Valor para configurar las lineas de ta movwf ‘TRISB Puerta B como Entradas = RB<3-0> y ERB: Salidas = RB ‘Como se estudia al final de este tema, los PICI6F87x pueden ser programados con voltaje alto y con voltaje bajo, siendo en este tiltimo caso la misma tensién de alimentaci6n del microcontrola- dor Von = 5 V la que se emplea en la grabacién del programa. En la programacién con voltaje al- to, éste se introduce por la patita MCLR#/Ver y esta comprendido entre 12 y 14 V, En la progra- macién con voltaje bajo por la patita MCLR#/VpP se aplican 5 V y la patita RB3/PGM hay que conectarla a nivel alto. En la programacién con voltaje alto, esta tiltima patita es una E/S digital nor- mal. Como la programacién siempre se realiza sincronamente en serie, por la patita RB6/PGC se in- troducen los impulsos de reloj y por la RB7/PGD los bits de datos en serie. 70 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Todas las patitas de Ia Puerta B disponen de una resistencia interna de pull-up al positivo de la alimentacién, que queda conectada cuando el bit RBPU#, que es el bit 7 del registro OPTION, tie- ne valor 0. La resistencia de pull-up, que es un transistor CMOS tipo P, como se aprecia en la Fi- wutomiticamente siempre que la linea esté configurada como salida, Cuando t por conexién de la alimentacién (POR) se desconectan todas las resistencias gura 4.3, se cone se produce un Re: pull-up. Conexionado interno de las patitas RB<7-4> de la Puerta B. Figura LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 71 }a6n, 186m] TRISB | Registro de configuracién de la Puerta B siiealorearee| eae es | oe oa [ee Figura 44. Estructura de los registros que manejan la Puerta B. mem | im aun Paitin Las lineas RB<7-4> pueden programarse, como en el PICI6F84, para generar una interrup- cién cuando una de ellas cambia de estado. Se deben configurar como entradas y el valor que se introduce por ellas se compara con el anterior para si no coinciden generar una interrupcién, siem- pre que lo autorice el bit de permiso. En cualquier caso, el sefializador RBIF, que es el bit 0 del registro INTCON, se pondré a 1. Esta interrupcién es muy utilizada en el manejo de teclados ma- triciales. La patita RBO/INT también puede programarse como peticién de interrupcién externa, si se autoriza con el correspondiente bit de permiso, que también esté ubicado en INTCON. La Figura 4.4 muestra algunas caracteristicas de los registros que manejan la puerta B. 41.3. Puerta C Consta de 8 Iineas bidireccionales cuyo sentido se configura mediante el registro TRISC. Todas las, patitas de esta puerta tienen multiplexadas diferentes funciones. 4.1.4. Puerta D Esta puerta de 8 Iineas bidireccionales s6lo la tienen los PICI6F87x encapsulados con 40 patitas. Ocupa la direccién O8h, mientras que su registro de configuracién TRISD ocupa la direccién 88h. ‘Todas las patitas disponen en su entrada de un Trigger Schmitt. 72 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: Ademiés de usarse como lineas de E/S digitales normales, implementan una puerta paralela es- lava de 8 Iineas (PSP), que sirve para permitir la comunicacién en paralelo con otros elementos del sistema. Las patitas se denominan RDO/PSPO-RD7/PSP7 y para que funcionen como puerta de comu- nicacién esclava en paralelo es preciso poner el bit PSPMODE = 1. Este bit es el 4 del registro TRI- SE, que se comentaré en la Puerta E. 4.1.5. Puerta E Ocupa la direccién 09h y s6lo la tienen los PICI6F87x con 40 patitas. Dispone de 3 patitas multi- funcién, que se configuran como entrada o salida, segtin el valor de los tres bits de menos peso del registro TRISE, que esté ubicado en la direcci6n 89h, Smee ert moda i pet part eclaleral del con cigita/Senal de esertura en modo PSPIcanal 6 del conversey A/D. : ESdonaeece dete nel mode Peek se8l7 del cooyerea 40. La PSP actiéa como un puerto de comunicacién en paralelo de 8 Iineas y para su activacién hay que poner el bit PSPMODE a 1. Dicho bit es el 4 del registro TRISE. Ademas de las 8 lineas de transferencia de datos, se precisan 3 seftales de control, que determinan si la operacién es de lectu- 1a, de escritura y de permiso de funcionamiento (RD#, WRi#t y CS#). Estas tres lineas de control es- tn implementadas en la Puerta E. La tinica diferencia apreciable entre los PIC16F87x de 40 patitas con los de 28 radica en que los primeros tienen las Puertas D y E y los segundos carecen de ellas. Con esas dos puertas se puede dis- poner de 11 lineas de E/S més, o bien de un canal paralelo de comunicacién (PSP) con sus corres- pondientes sefiales de control. 4.2. PALABRA DE CONFIGURACION Es una posicin reservada de la memoria de programa FLASH, que ocupa la direccién 2007h y que s6lo es accesible durante Ia programacién del PIC. El valor de sus bits determina algunas caracte- risticas fundamentales (Figura 4.5). PALABRA DE CONFIGURACION LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 73 Figura 4.5. Denominacién de los bits de la palabra de configuracién, que ocupa la direccién 2007h de la ‘memoria de programa. 4.3. PALABRAS DE IDENTIFICACION Se trata de cuatro palabras de la memoria de programa que se hallan comprendidas entre la direc- ccién 2000h y la 2003h y estén reservadas para que el usuario las pueda emplear en funciones de comprobaciones 0 «cheksums», cédigos de identificacién, niimeros de serie, fecha, modelo, lote, 74 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES niimeros secuenciales o aleatorios, etc. Estas cuatro posiciones sélo son accesibles en lectura y es- critura durante la operacién de programacién/verificacién. Solo se deben emplear los 4 bits de menos peso de cada una de las palabras de identificacién. 4.4, REINICIALIZACION 0 RESET Los PIC16F87x disponen de diversas maneras de reinicializarse, de forma similar a como ocurria con el PICI6F84, que se citan a continuacién, Los bits TO# y PD# del Registro de Estado toman un valor determinado en cada tipo de Reset, ‘También los bits 0 y I del registro PCON, llamados BOR# y POR#, respectivamente, sirven para es- pecificar las causas de un Reset. En la la tabla de la Figura 4.6 se muestran estos bits y el tipo de Re- set asociado. Las x significan que pueden tener valor 0 0 | indistintamente, ya que no se conoce su valor, y las uu que su valor no varia con respecto al que tenfa antes del Reset. En la Figura 4.7 se muestra el esquema eléctrico en el que se representan las causas y sefiales que originan un Reset. ‘Como se deduce de dicha figura, la generacién del Reset ocurre como consecuencia de la salida de un nivel l6gico alto de la puerta ORI, la cual es controlada por todas las causas que reinicializan al PIC. Figura 4.6. Determinacién de la causa del Reset. LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 75 evemcon ness Figura 4.7, La generaci6n del Reset se produce al activar la entrada $ de la bascula, cuando sucede algu- nna de las condiciones que se aplican a la puerta OR!. Los temporizadores OST y PWRT retar- dan el Reset al actuar sobre la entrada R de la bdscula de salida. El temporizador PWRT retarda el Reset un tiempo fijo de 72 ms con la finalidad de garantizar la estabilidad de Vo, mientras que el temporizador OST produce un retardo de 1.024 ciclos de la fre- cuencia aplicada por la patita OSC, con el objetivo de asegurar que el cristal de cuarzo del oscila- dor principal esté estabilizado y en march: 76 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Tras un Reset, el Contador de Programa queda cargado con el valor 000h en todos los casos, menos cuando se produce por el desbordamiento del WDT o cuando se despierta del modo SLEEP por una interrupcién, en cuyos casos el PC se carga con el valor PC+1 En la tabla de la Figura 4.8 se indican los valores que toman los registros espe controlador tras producirse los diversos tipos de Reset. [Ramm [esormer [Romo [per ara icos del micro- DESPERTAR DE SLEEP. INDE. wi [ora [ove | arr [wa NA NA =] a7 77 [momen was ‘wou au ara 877 [ o000h 0000 cet ri 177 0001 te 0000 qu aug qu = a7 277, [meee non you ws ‘uous ee et eas [onan a] es ni (eee femme fae = are 7 | — me sai =u —_| ome ‘897_| 00000 2.0000 rou TI a7 ‘577 [0000 000% 0000 0008 ad aus i a wa co otro ao jena TE 7_| ooo oon ooo wo i ti —| Pi o7 [100-0 “100-0 q Ta psp fais ra Tico 00000 Sia ini —] Th oo erent ooo aa a 2608) coo i00 foo e000 J smut [an meee vain anae secon [er 900 an69 fot 0000-7 a =] ‘commit = ars [ove amet akon alae cenicow 0 000 00000 Cal RESTA (0000 000% 0000 000% ‘uuu uuu arr 200 60 ont 000 cmvaat ct oo 4n60 00000 aa f CCPRDE XK 2000 -wuuu uguu jwuuu wou oHOH sh 2000 000 uuu uuu guy wu | ccpcon 500 600.0000 ono ana Gome fanan eae iin [ra a atinal Tn =m a wa iit fi ‘aa wu Tr mn ‘eau an 000-111 am ‘000-111, [insia ‘aon | SPaRG can | AORESC aan “ADCONE reat EEDATA at ian eEADR Tali! care e008 corr peer ADR aati a ECON a Perey | EGON ome | 7 as | Figura 48, Valores de los registros especificos tras los diversos tipos de Reset. 45. PERRO GUARDIAN (WDT: WATCHDOG TIMER) El WDT de los PICI6F87x es similar al del PICL6F84, Se trata de un contador que funciona con los impulsos de su propio oscilador y que provoca un Reset cuando se desborda en funcionamiento nor- mal. Si el desbordamiento se produce cuando el microcontrolador se halla en estado de Reposo, se despierta y sigue su comportamiento normal. En la Figura 4.9 se muestra un esquema con los blo- ques principales que constituyen al perro guardién. Las instrucciones CLRWDT y SLEEP borran o ponen a cero el valor de contaje del WDT y el del Postdivisor. Si se ejecuta la instruccién CLRWDT y el Predivisor de Frecuencia esté asignado al perro guardién, se borra, pero no cambia su configuracién, 4.6. MODO DE REPOSO 0 DE BAJO CONSUMO En este modo especial de funcionamiento de} microcontrolador se introduce cuando se ejecuta la instraccién SLEEP, igual que en et PICI6F84. Esta manera de trabajo se caracteriza por su bajo con- sumo y parece que el PIC se ha «congelado». Las Iineas de E/S digitales que se utilizaban mantie- jimo su consumo, se detienen I nen su estado, las que no se empleaban reducen al dores y tampoco opera el conversor A/D. Alentrar en el modo de Reposo, si estaba funcionando el WDT se borra pero sigue trabajando. Para salir de este estado («despertar») y pasar a ejecutar la instruccién direccionada por PC+1 existen varias causas, s temporiza- 78 — MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES 4.7, PROGRAMACION DE LOS PIC16F87X La posibilidad de programar a esta subfamilia de PIC en serie permite grabar en la memoria de c6- digo el programa de trabajo, estando colocado el PIC sobre el circuito 0 producto de aplicacién fi- nal, Esta caracteristica permite a los fabricantes construir y montar completamente la tarjeta de cit- ccuito impreso y dejar pendiente la grabacién del programa en el PIC hasta el momento de la venta, pudiendo incluir el firmware més reciente que se disponga en cada momento. LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 79. La programacién en serie tfpica, que se realiza con un Voltaje Alto de 12.a 14 V aplicado por la patita MCLR#/Vip, requiere el uso de 5 patitas del PIC: ‘Una gran aportacién en los PIC16F87x la constituye la programacién con Voltaje Bajo (LVP: Low Voltage Programming), que no requiere la tensidn de 12 a 14 V. Para grabar en este modo, hay que poner el bit LVP = 1, que reside en la Palabra de Configuracién y la patita RB3/PGM se debe conectar a nivel alto. Entonces por la patita MCLR#/Vpp se aplica la tensién Vop de 5 V mientras dura la operacién de grabado. Cuando no se opera en este modo de programacién se puede usar la patita RB3 como una linea de E/S digital. 80 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES UTILIZACION DE LOS RECURSOS DEL PIC En el capitulo anterior, vimos cémo se trabajaba con las puertas de F/S. Vamos ahora a partir del mismo ejercicio pero se va a introducir el modo de reposo 0 bajo consumo y el perro guardian. El esquema eléctrico no varia con respecto al del capitulo anterior, pero si el organigrama, Organigrama Si n el valor de dos interruptores, se encenderdn 0 apagardn los diodos de la Puerta B pero, antes de volver a mirar el valor de dichos interruptores, se meter al microcontrolador en estado de repo- so, del cual despertaré al desbordarse el perro guardi . iniciéndose de nuevo el proceso. PeSAIDA ‘CONFURACION Det PERO CUAROAN Figura 4.10. Organigrama del ejercicio. LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR Programa comentado El programa, una vez adaptado al uso de estos nuevos recursos, queda de la siguiente manera INICIO. BUCLE APAGAR ENCENDER REPOSO END. List RADIX INCLUDE ORG goto ORG bot bef clef moviw movwt movlw movwt moviw movwt bef ut ‘olf movt bifss ‘goto goto kt goto movlw oto celtyedt sleep. ‘gato PS16F873 HEX «PLGESTR.INC» ‘0x00. INICIO. 0x05. ‘STATUS,RPO. STATUS,RPI ‘TRISB 700000110" ADCONI ¥'00000110" TRISA biTT001 111" OPTION-REG STATUS,RPO PORTB PORTA PORTA.W, STATUSZ APAGAR ENCENDER PORTB REPOSO OxEF PORTB REPOSO BUCLE Se indica el tipo de | procesador ; Sistema de nutmeracién {hexadecimal + Se ineluye fa definicién de + os registros internos en una libresfa Inicio en el Vector de + Reset ; Va la primera instruccién’ j del programa ‘Salta el Vector de ‘-Interrupeion Cambio al banco 1 + Puerta B como salida ;Puerta A E/S digitales :RALRA2 entradas Predivisor de 128 ‘yasociado al perro guard + Cambio a banco 0 ; Borrado de LEDs ; Borrado de tineas no + utilizadas'de Puerta A s Puerta A> W ; Comprobacidn de Z }SiRAI-RA2 no son 0. }SiRALRA2 son 0 Se apagan los LEDs Para entrar en sleep Se encienden los LEDs {Para entraren sleep + Refresca el perro guardidn Entra en bajo consumo + Para volver a Comprobar + Fin de programa 81 82 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Los cambios son minimos y aparecen marcados con *. La configuracién del perro guardién consiste en asignarle el predivisor de frecuencias, de modo que tarde més en desbordarse si no se le refresca, lo cual amplfa considerablemente el tiempo entre refrescos y evita asi muchas instrucciones de ese tipo, ‘Tras encender o apagar los LEDs y, tras borrar el perro guardisin, se entra en estado de reposo 0 bajo consumo, del cual saldré al desbordarse el perro guardin, volviendo asf a comprobar los inte- rmuptores para volver a encender/apagar los LEDs. En este caso no es necesaria la instrucciGn de re- fresco del perro guardién, ya que al entrar en sleep se resetea él solo. Prueba del programa Para la puesta en marcha de este programa, se seguiran los mismos pasos que en el capitulo anterior ‘con excepcién de la grabacién. La Palabra de Configuracién, modifiable en el proceso de graba- Ci6n, sirve entre otras cosas para habilitar o no el perro guardian. Puesto que estamos controlando su funcionamiento, se deberd activar poniendo a SI la opcién Watchdog T. De este modo, a efec- tos del usuario, el programa seguiré funcionando del mismo modo. En caso de no habilitar el perro {guardién, una vez que se hayan encendido 0 apagado los LEDs en la primera ejecucién del progra- ma, éste entraré en estado de reposo, del cual no podra salir. LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR — 83 AMPLIACION DE LOS RECURSOS DEL PIC Aunque la filosofia de los microcontroladores PIC es actuar como sistemas cerrados, limitados a sus propios recursos, a veces se hace necesaria su ampliacién para dotarles de mas memoria, aumentar su capacidad de manejo de periféricos de E/S, e incluso conectarle con otros PIC para delegar en ellos subtareas, de modo que se permita el trabajo en paralelo. Estas son algunas de las posibilida- des que nos presenta la tarjeta de ampliaci6n Micro’ PIC Trainer Plus. La tarjeta de ampliacién Micro’PIC Trainer Plus El Micro’ PIC Trainer Plus es un equipo que conectado al sistema de desarrollo Micro’ PIC Trainer permite ampliar y experimentar con los recursos més avanzados de los microcontroladores PIC. Co- ‘mo se verd en los Capitulos 8 y 9, los PICI6F87x incorporan en su chip distintos médulos que per- miten la comunicacién con dispositivos extemos. Tal es el caso del USART, que permite la comunicacién con, por ejemplo, periféricos como el ordenador. Las partes fundamentales de que consta esta tarjeta se muestran en la Figura 4.11. Figura 4.11. Tarjesa de ampliacion Micro' PIC Trainer Plus con las partes més significatvas sefaladas 84 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES i6n del esquema electrénico En la Figura 4.12 se ofrece el esquema electrénico de la tarjeta de ampliacién de periféricos Mi- cro’ PIC Trainer Plus. Esté compuesta por 6 bloques principales: El teclado La conexién con el Micro’ PIC Trainer de esta tarjeta de ampliacién se realiza a través del conector CNI1, que proporciona todas las Iineas del PIC, asf como las de alimentacién. El teclado matricial de 4x4 est conectado con las lineas de la Puerta B (RBO-RB7). El pro- grama de control del teclado configuraré RB7-RB4 como salidas_para ir activando secuencialmen- te las filas una a una. Las lineas RB3-RBO se configuran como entradas desde las columnas del te- lado y son lefdas para detectar si hay alguna tecla pulsada. En caso de trabajar con un PIC que utilice el bus I2C, se usa RC3 y RC4 para las sefiales SCL y SDA, respectivamente, para lo cual hay que utilizar adecuadamente los jumpers J1 y J2. 9 puonbsy “Zp BANE 29) SAL Dd, O19 Jap O2}UOUK ‘sig s2U $8 YOUVSdDOYd 1H SATVIDdSA SOSUNDTY A SMI IA SVAN SVT 86 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: El canal serie RS-232 El circuito principal de esta seccién es el MAX232 (US), que convierte los niveles TTL presentes en a patita 11 de transmisin (Tx), en niveles légicos RS-232, que se obtiene en la patita 14 (TxD) y se aplican al conector DB9 (CN2). La sefial de recepcién RxD llega desde el canal serie a la patita 13, de US con niveles RS-232, que son convertidos a niveles TTL y se obtienen en la patita 12 (Rx). Las sefiales Tx y Rx se controlan desde RC6 y RC7 si se trabaja con un PIC, que incorpora un USART en su hardware. Si se gestiona la comunicacién con software, se emplean las Iineas RB4 y RBS. La selecci6n de uno u otro modo se realiza mediante los jumpers J3 y 4. Reloj calendario Esté basado en el circuito integrado PCF 8583P (U2), disefiado para conectar al bus I2C. Ademas de las funciones horarias clisicas, también realiza funciones de alarma y temporizaci6n. Contiene 256 posiciones de RAM estatica de 8 bits cada una, de las cuales las 16 primeras estn uusadas para las funciones de reloj, calendario, alarma y temporizacién. Quedan 40 posiciones libres para el usuario, quien puede usarlas como RAM no volatil en caso de alimentar al PCF8583 con una baterfa recargable de Ni/Cd. Médulo de visualizacion Esté compuesto por 4 displays de 7 segmentos controlados por el circuito integrado SAA 1064 (UL) adaptable al bus 12C. Mediante las Iineas SDA y SCL, el PIC maestro envia la informacién a visualizar en los displays, mediante un multiplexado sobre las mismas. Inicialmente, por las Iineas P1-P8 aparece la informa- cién a representar en el dfgito 1 y por P9-P16 la correspondiente al digito 3. Simulténeamente se ac- tiva la sefial MX1 que hace conducir al transistor Q1, que, gobierna los énodos comunes de dichos digitos. Después, por P1-P8 y P9-P16 aparece la informacién a visualizar en los dfgitos 2 y 4.con la sefial MX2 que controla Q2. Este proceso se repite a gran velocidad y de forma indefinida, provo- cando la sensacién visual de tener encendidos los 4 dfgitos a la vez Médulo ADC y DAC Esta centrado en el circuito integrado PCF8591 (U3) para el bus 12C. Consta de un Conversor Ana- légico/Digital ADC de 8 bits con 4 canales de entrada ANO-AN3. También dispone de un Conver- sor Digital/Anal6gico DAC de 8 bits cuya tensidn de salida se obtiene por Aout La sefial analégica de tierra, asi como la tensiGn de referencia necesaria, se aplican por Acxo ¥ Vier Puerta de E/S paralelo cireuito integrado PCF8574A (U4) disefiado para conectarse al bus I2C proporciona una puerta paralelo con 8 Iineas de Entrada o Salida, dependiendo que se lean o escriban PO-P7. De esta ma- nera, usando el bus 12C soportado por dos Iineas, se pueden ampliar las puertas de E/S de un PIC.

También podría gustarte