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. 5.1. TIPOS Y CARACTERISTICAS GENERALES Los PIC16F87x disponen de un potente conjunto de temporizadores para manejar eficientemente to- das las operaciones que involucran al tiempo y al contaje. Dichos temporizadores son tres y se de- nominan técnicamente TMRO, TMR1 y TMR2. EI TMRO es idéntico al que tiene el PICL6F84 y sus funciones més representativas son: En el tema anterior, se presenté al registro OPTION, encargado del control del TMRO y cuyas funciones son conocidas del PICI6F84. Los nuevos temporizadores que incluyen los PIC16F87x son mds potentes y flexibles que el sen- cillo TMRO. Asi, el TMRI se caracteriza por: Finalmente, el TMR2 tiene las siguientes caracteristicas fundamentales. 87 88 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES 5.2, ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMRI EI TMRI es el tinico Temporizador/Contador ascendente con un tamaiio de 16 bits, lo que requiere el uso de dos registros concatenados de 8 bits: TMRIH:TMRIL, que son los encargados de guardar el valor del contaje en cada momento, Dicho valor evoluciona desde 0000h hasta FFFFA, instante en el que se activa el sefializador TMRIIF y se regresa al valor inicial 0000h. También, si se desea, se puede provocar una peticién de interrupcién. El valor contenido en TMRIH:TMRIL puede ser lefdo o escrito y los impulsos de reloj que ori- ginan el contaje ascendente pueden provenir del exterior o de la frecuencia de funcionamiento del microcontrolador (Fos¢/4). EL TMRI es capaz de funcionar de tres formas: 2% Como contador sineromc: << 84 Como contador asincrona. En el modo Temporizador el valor concatenado TMR1H:TMRIL se incrementa con cada ciclo de instruccién (Fosc/4). En el modo contador, el incremento se puede producir con tos flancos as- cendentes de un reloj extemo, cuya entrada se aplica a las Iineas RCO y RCI de ta Puerta C, © por impulsos aplicados en la linea RCO. En la Figura 5.1 se muestra el diagrama por bloques del TMR1, en el que destacan las diversas seftales de control y el predivisor de frecuencia, i om en Figura $.1. | Esquema interno de los principales bloques del TMRI con sus seftales de control. LOS TEMPORIZADORES 89 5.3. REGISTRO DE CONTROL DEL TMR1 (TICON) El funcionamiento del TMR1 esta gobernado por el valor con el que se programan los bits del re- gistro TICON, que ocupa la direccién 10h de la memoria RAM y cuya denominacién y distribucién se presentan en la Figura 5.2 EL bit TMRION gobierna el permiso o la prohibicién de funcionamiento del Timer!. En caso de poner un 0 en dicho bit el TMRI no funciona. EL bit MRICS selecciona la fuente de los impulsos de contaje. Si vale 0 elige el reloj interno (Fosc/4) y si vale 1 el reloj externo que se aplica por las patitas RCO y RCI. Cuando los impulsos proceden de un reloj externo, es preciso que el bit T/OSCEN tenga valor 1, en cuyo caso las patitas RCO/TIOSO/TICKI y RC1/TIOSI/CCP2 actian como entradas del os- cilador extemo. Si TIOSCEN vale 0 los impulsos vendran a través de RCO/TOSO/TICKI. En am- bos casos, el TMRI funciona como contador de eventos extemnos y los bits 1 y 0 (utilizados) del re- gistro TRISC carecen de significado, ya que una o ambas patitas RC1 y RCO no pueden actuar al mismo tiempo como entrada de impulsos y como lineas de E/S. Entre las patitas RC1_y RCO se puede poner un cristal de hasta una frecuencia de 200 KHz. En estas condiciones, el oscilador puede seguir funcionando aunque se fuerce el estado de bajo consu- mo o SLEEP. EI predivisor de frecuencia (Preescaler) es un simple divisor de la frecuencia de los impulsos que se aplican al TMR1 por I, 2, 4 u 8. El rango de divisi6n lo eligen los bits T/CKPS/ y T]CKPSO segtin la siguiente tabla. [ROS TROT NCO DE RREDTNOR | [ie a ec ee [eee Sore eters meriice| EL bit T/SYNC# determina la posible sincronizacién 0 no de los impulsos del reloj extemno con los del reloj interno, segiin valga 0 o 1 respectivamente, EI TMR1 puede generar una peticién de interrupcién cuando se produce el sobrepasamiento del contaje, es decir, cuando se pasa desde FFFFh a 0000h. En esta situacién, se pone automati- amente a | el flag TMRIF, que es el bit 0 del Registro Espe ‘0 PIRI, que est ubicado en la direccién 0Ch de la RAM. El permiso o prohibicién de la produccién de interrupcién del TMR1, estd controlada por el bit TMR IIE, que ocupa la posiciGn de menos peso del Registro Esp PIEI (8Ch), REGISTRO TICON Figura 5.2. Nomenclatura y distribucién de los bits del registro de control det TMRL. 90 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES, ‘Cuando el médulo CCP (captura-comparacién-PWM) esté configurado como comparador para generar un «disparo especial» (CCPIM3-CCPIMO = 1011), dicha sefial resetea el TMR1. Para aprovechar esta caracteristica, el TMRI debe estar configurado en modo temporizador 0 contador sincrono. En otro caso no se produce el Reset. 5.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL TMR1 En la Figura 5.3 se ofrece una tabla con los registros principales que controlan el comportamiento del TMR1 y la distribucién de los bits. 5.5. FUNCIONAMIENTO Y PROGRAMACION DEL TMR2 Se trata de un Temporizador ascendente de 8 bits, que se puede leer y escribir, y que también pue- de realizar funciones especiales para la Puerta Serie Sincrona (SSP) y con los médulos de captura y comparacién. Ocupa la direccién 11h del mapa de los registros especfficos. La sefial de reloj del TMR2 es interna Fosc/4, y antes de ser aplicada pasa por un predivisor de frecuencia con rangos de 1:1, 1:4 y 1:16. La salida del TMR2 atraviesa un postdivisor de frecuen- cia con rangos de divisién desde 1:1 a 1:16, pasando por los 16 valores posibles. Al entrar el microcontrolador en modo de reposo o SLEEP, se detiene el oscilador interno y al no existir la seftal Fosc/4 deja de funcionar e! TMR2. Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la direccién 12h del mapa de los registros especificos y cuya distribuci6n y asignacién de bits se muestra en la Figura 5.4. ra] Peon Fer [oe fe [nee | oe ae Figura 5.3. Resumen de los registros mas importantes que se encargan de programar el funcionamiento del TMRI, con la nomenclatura de sus bits, sus direcciones y el estado que toman después de di- versas situaciones de Reset. El valor ‘x’ significa indeterminado,‘u’ que permanece invariable y 10s no implementados (-) se leen como 0 LOS TEMPORIZADORES 91 REGISTRO T2CON 7 0 Figura 5.4. Distribucién y asignacién de los bits del registro T2CON, que sirven para programar el traba~ jo del TMR2 Los bits I y 0 del T2CON (T2CKPS1:T2CKPSO) sirven para seleccionar el rango de division del predivisor de impulsos de la siguiente forma: El (1) 0 prohibir (0) el funcionamiento del TMR2. El bit de més peso no es significativo y los cuatro bits restantes (TOUTPS3-TOUTPSO) determinan el rango por cel que divide la frecuencia el postdivisor, de acuerdo al siguiente cédigo: El sefializador de desbordamiento del TMR2 es el bit | (TMR2IF) del registro PIR1, que ocupa la direccién OCh. Ver la chuleta-resumen de registros de la Figura 5.6. El predivisor y el postdivisor se ponen a 0 al escribir el TMR2, al escribir el T2CON o con un Reset. Sin embargo, cuando se escribe el T2CON no se borra el TMR2. Pasa a valer 0 el contenido del TMR2 cuando se produce un Reset. EI TMR2 tiene asociado un Registro de Perfodo PR2, que ocupa la direccién 92h, Cuando el valor de contaje del TMR2 coincide con el valor cargado en PR2 se genera un impulso en la salida EQ (Figura 5.5) y se resetea el TMR2. Estos impulsos en EQ pueden ser divididos por el postdivi- sor antes de activar el sefializador TMR2IF. Este temporizador también tiene la capacidad de producir una petici6n de interrupcién si se po- ne a | el bit TMR2IE de habilitacién, que reside en el registro PIEI (8Ch). Ademés, con la progra- macién adecuada, los impulsos de salida del TMR2 (antes del postdividor) pueden actuar como ba- se de tiempos para el médulo SSP. 92 MICROCONTROLADORES «PIC». DISENO PRAC’ |CO DE APLICACIONES SALA MRA SP wes prone . we ef LO EMC ar y Fostwson [cowmmnnor Froid ¥ Figura 5.3. Esquema por bloques de la estructura del TMR2, 5.6. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL TMR2 En la Figura 5.6 se ofrece una tabla que resume los bits de los registros que se utilizan en el mane- jo del TMR2, iRec GION | Noman] arr 7 Soares VALOR pra] wits | ora | Gir | Biro [eNPoR, Jen tL RESTO. BOR e eee a a aa [ nF war_[ var [ sor | corre | mar fir fooo moa) oom oom [aoe [nce [ime | sre [cern [anne ane [ono own_soon too Teg ol maha [= fours [ooraf omapormpemfronfaor| asa) eam | Gaeta Registro de periodo del TMR> Figura $.6. Resumen de los bits de los registros que se utilizan en el manejo y programacién del TMR2. LOS TEMPORIZADORES 93 MIDIENDO EL TIEMPO La mayoria de los programas tienen una o més rutinas de temporizacién. Dicha temporizacién se puede realizar mediante bucles anidados en que se van decrementando el valor de varios contado- res hasta llegar a 0 0, més eficientemente, descargando de esta tarea a la CPU, utilizndola para otras cosas, mientras un temporizador especial que leva la cuenta. En este capitulo se ha hablado del as- pecto tedrico de los temporizadores; vamos ahora a llevarlo a la prictica mediante un ejercicio. El uso de los temporizadores es tan comtin que en capftulos posteriores se seguirdn mostrando ejem- plos de utilizacién aunque no sea el recurso a estudiar. Enunciado Se quiere que el temporizador TMR1 se comporte como un contador de eventos extemnos. Dichos eventos vendran por la linea RCO/TICKI desde el generador de onda del Micro’ PIC I/O. Si cuenta los eventos durante 0,250 seg y el resultado se multiplica por 4, se obtiene el nimero de pulsos por segundo (herzios). Cambiando el intervalo de tiempo de medicién se podrfan medir KHz, MHz, etc. Si en lugar de ser el generador el que proporcionara los pulsos, fuera el optoacoplador asociado al motor del Micro' PIC 1/0, estariamos consiguiendo medir su velocidad. Los herzios se van a mos- trar, ademés, por la pantalla LCD del Micro' PIC Trainer. El TMRO va a funcionar como tempori- zador auxiliar. Esquema eléctrico La tinica conexién que deberd realizarse entre el Micro’ PIC 1/0 y el Micro’ PIC Trainer, ademés del PICBUS, es entre la salida del generador y la patita RCO/TICKI de entrada de pulsos para el TMR1 En la Figura 5.7 se muestran las conexiones al completo. Organigrama Una vez més, el organigrama del programa principal es tan simple como la inicializacién de los di ferentes registros y recursos a utilizar, y la espera en un bucle a que se produzca una interrupcién, que serd la que realmente realice las operaciones necesarias. (Figura 5.8.) 94 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES: Vss Vdd Vo RS R/WHE DO D1 D2 D3 D4 DS D6 D7 y 2 3) | 6] 7 8 9 1011 12 1314 & Vv ~~ CONTRASTE eV 10K NA |i reser rictsr73 GENERADOR MICROPC YO Figura 5.7. Esquema eléctrico del ejercicio propuesto. LOS TEMPORIZADORES 95. ura 58, Organigrama del ejercicio. Se entrard en la rutina de interrupcién cada 50 ms. Este es el tiempo aproximado que tarda el ‘TMRO en desbordarse con los valores cargados. Como se requiere una temporizacién de 250 ms, se entraré en dicha interrupcién 5 veces, antes de hacer el tratamiento «verdadero». Una vez legado a este punto se visualizara el TMR1, que se habré ido incrementando con los pulsos proporcionados por el generador, en Ia pantalla LCD y, tras reponer los valores adecuadamente, se volverd al pro- grama principal hasta que se produzca una nueva interrupcién. (Figura 5.9.) ¥ —— ¥ — Figura 5.9. Organigrama de la rutina de tratamiento de interrupcién 96 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Programa comentado eae ete 16 SAYOAVZIAOAWAL SOT 98 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES LOS TEMPORIZADORES 99. Prueba del programa Se deberdn conectar las Iineas tal y como muestra el esquema eléctrico. Ademis, se deberd tener en cuenta: La Figura 5.10 muestra una fotografia del programa funcionando. En el LCD puede observarse el valor numérico que muestra los herzios y el osciloscopio los pulsos generados por el oscilador del Micro’ PIC 10. Figura 8.10. Fotografia del ejercicio propuesto en ejecucién. 100 MICROCONTROLADORES «PIC». DIS! (0 PRACTICO DE APLICACIONES APLICACION DE LOS PIC AL CONTROL DE MOTORES Y SENSORES Tarjetas como la Micro’ PIC Trainer Plus y ta Micro’ PIC 1/0 pueden ser muy adecuadas para la de- puraciGn de programas, ya que cada una de ellas dispone de periféricos de E/S variados junto con sus controladores. Esto permite 1a prueba de diferentes rutinas facilitando asf el aprendizaje. Sin embargo, cuando se acomete un proyecto real, a menudo los sensores y actuadotes no se en- cuentran sobre Ia tarjeta, sino sobre el elemento al cual controlan. Para esto se hace necesario que la circuiteria de control guarde cierta independencia de los sensores y actuadores, La tarjeta MSx84 Se trata de una controladora de motores y sensores que puede contener un PIC16F84 de 18 patitas para su gobiemio 0 puede conectarse a otro sistema como el Micro’ PIC Trainer que, a través del PICBUS, puede pasarle las sefiales de un PIC de un maximo de 28 patitas. Las partes més importantes se muestran en la Figura 5.11 Figura SLL. Fotografia que muestra las partes mas importantes de la MSx84 LOS TEMPORIZADORES 101 1." Alimentacién: se alimenta mediante um transformador de 12 VAC. 2? Interruptor SW3; para el encendido y apagado de la placa. 3° Entrada de baterfa J: que permite la posibldad de alimentacion a plas 0 con baterias, fo cual Ja hace muy-apta para entornos on que se necesita aulonorhia de almentacion. 4. Conexién de Motores J6 y J7: con el driver L293B que contiene ja placa, que permite controlar a través de estos bornes 2 motores OC uno PAP Fain asociados a les tineas RAQ-RAS del PIC 5° PICBUS: para Ja conexién.con e! Micro'PIC. Trainer a.través de este bus que permite, ademas.de Ja dieposicion de las lineas ie 6S de un PIC externa, la grabacion del PIC que se encuenita en la pronie tarjeta sin necesidad-de sacarlo del zécalo. ‘Conectores JOsd4: asociados alas Iinaas ABO-AES y FAA del PIC y que siven para la Conexion de 6 sensores, usando dos circuitos integrados HF40 106. 7 Dip-Switch SW: son los encargados de realizar la asociacion periféricoslingas del PIC, tal y co- ‘mo se muesta on la Figura 5:12, donde S0-S4 8@ reliere a las sensores, INx al sentido de los mo- tores y EN a su endendidolapagado, Fn el caso de que se quiera realizar otra asociaci6n, se de- ‘eran quitar los microtruptores einlerconectar las ineas mooiante cables 8." PIC18: zécalo sobre of que.se alojara-el PICIEF84. Descripcién del esquema electrénico En la Figura 5.13 se muestra el esquema de la tarjeta MSx84, que est compuesto de cuatro bloques principales: 1° Fuente de-alimentacién: 2° Seccién def microcontrolador 3° Control de motores: 4® Seccion de sensores. REFERENCIA REFERENCIA gura $.12. Zécalos que muestran la asociacién de lineas con los sensores y actuadores MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES 102 pp pad pax nbs “erg candy, SaHOSNaS Ty Boar LOS TEMPORIZADORES 103 Fuente de alimentacion Esté formada por dos secciones. La primera recibe en el puente rectificador (D1) por J8 una tension de 12 VAC y proporciona una tensién de 13 VDC, mediante el regulador UA7812 (U4) y los di dos D2, D3, D4 y DS. Al cerrar el interruptor SW3, se consigue una tensi6n de 5 VDC a través del regulador UA7805 (US) en el borne +V.¢c, mientras que en el borne +V., 7 8e tienen los 13 VDC, En lugar de la seccién rectificadora del UA7812 se puede introducir una tensién de CC por me- dio de una bateria en el conector JS. Microcontrolador La tarjeta contiene su propio microcontrolador PIC16F84, que pone a disposicién del usuario todas sus patitas a través del conector PICBUS. Igualmente, usando este conector PICBUS puede cone: tarse al Micro’ PIC Trainer para grabar y borrar el microcontrolador directamente sobre la tarjeta de aplicacién. La circuiterfa que envuelve al PIC16F84 es la minima necesaria: cristal XI de 4 MHz, junto a los condensadores C7 y C8, y el circuito de Reset formado por el pulsador SW2 y la resistencia RII. Secci6n de sensores La tarjeta MSx84 puede controlar las seftales digitales procedentes de 5 sensores externos que se aplican por los conectores J0-J4. Dichas sefiales se aplican a puertas Trigger inversoras para la adap- tacién de niveles, evitando ruidos y deformaciones, mediante dos circuitos integrados HF40106. Los microrruptores de SW! permiten que cada una de las cinco sefiales de los sensores puedan desconectarse de las Iineas del microcontrolador, caso de no emplearse. 6.1. INTRODUCCION A LOS MODULOS CCP Los microcontroladores PIC6F87x disponen de dos médulos CCP, lamados CCP y CCP2, que son idénticos excepto en lo referente a la modalidad de «Disparo Especial», que luego se comenta. Dada esta similitud, la descripcién se orienta hacia el médulo CCP]. Estos médulos pueden reali- zar tres funciones principales: 1° Mado caatura: una pareja de regstvos de Uni médlilo CCPX captua él Valor que tiene of TMR ‘cuando ocurre un everito especial en ia patita ‘RCZ/CCP modulo CCP1).0 en ta ACITOSUCCP2 (para el médulo CCP2) 2° Made comatacic: se compara et valor 616 bits dol TMP contr valor cargad on una pare- Ja de registros de un madulo CCPx-y cuando coinciden se prodiice Un ‘evento en la/s patitals EGOCUES ie ReWTACSIPCES: |: denira det. intervaio del periods. impulso. El médulo CCPI utiliza un registro de trabajo de 16 bits que esté formado por la concatenacién de los registros CCPRIH-CCPRIL (direcciones 16h y 15h). El registro de control del médulo CCPI es el CCPICON, que ocupa la direcci6n 17h. (Figura 6.1.) El médulo CCP2 tiene como re- gistros de trabajo a CCPR2H-CCPR2L (direcciones ICh y 1Bh) y como registro de control @ PE a sae ae] Figura 6.1. Asignacién de los bits de los registros CCPxCON para los médulos CCP] y CCP2. Todos sus bits son leibles y escribibles y pasan a 0 cuando se produce un Reset. 105 106 — MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES [m0 | Mowers | [au | Mecocanrvn cate fons cenenes enn a] [00] [oor] CCP2CON en la direcci6n IDh. Las parejas de registros son las encargadas de capturar el valor del TMI, de comparar el valor que tienen con el del TMR1 0, en el modo PWM, de modular la an- chura del impulso. 6.2. MODO CAPTURA En este modo, la pareja de registros CCPxH-L del médulo CCPx captura el valor de 16 bits que con- tiene el TMRI cuando sucede un evento en la patita RCy/CCPx de la Puerta C, que previamente ha sido configurada como entrada poniendo a 1 el bit correspondiente del registro TRISC. Los eventos posibles que pueden ocurrir sobre la patita RCy/CCPx para producir la captura del valor del TMR1 sobre la pareja de registros CCPxH-L son: Los cuatro bits CCP1M3-0 del registro CCPICON seleccionan el evento adecuado en el médu- Jo CCPL y otro tanto sucede con el médulo CCP2. Al efectuar la captura, se activa el seftalizador CCP LIF del registro PIR. Ademés, si se pone a 1 el bit de permiso de interrupcién PIEL, se genera una peticién de interrupcién cuando se carga en CCPRIH-L el valor del TMR1. En la Figura 6.2 se muestran los elementos més signifi- cativos que intervienen en el trabajo del modo Captura. Cuando se emplea el médulo CCPI en modo captura, el TMR1 debe estar configurado para tra- bajar como Temporizador 0 como contador sincrono. Nunca en modo asinerono, Si se van a cambiar las condiciones de funcionamiento en el modo captura, conviene detener 0 desactivar al médulo CCP para evitar que se produzcan falsas interrupciones durante la operacién. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DEPULSOS 107 ReaIocP) ‘igura 6.2. Esquema de los bloques principales del Médulo de Captura det CCPI. Si no se ha lefdo el contenido de los registros CCPRIH-L y se produce una nueva captura, di- chos registros pasan a contener el nuevo valor. ‘Cuando se desactiva el médulo CCP o deja de funcionar en modo captura se borra la codifica- ci6n del predivisor de frecuencia que determinan los bits CCP1M3-0. Una aplicacién muy interesante del modo captura puede ser la medicién de los intervalos de tiempo que existen entre los impulsos que Ilegan a la patita RC2/CCPI que se halla configurada co- mo entrada, EI TMRI debe trabajar con entrada de reloj extemno sincronizada, 6.3, MODO COMPARACION En esta forma de trabajo, la pareja de registros CCPRIH-L compara su contenido, de forma conti- ‘nua, con el valor del TMR1. Cuando coinciden ambos valores, a la patita RC2/CCPI, que se halla configurada como salida, la acontece uno de los siguierites eventos, de acuerdo con la programacién de los bits CCPIM3-0: Al coincidir los valores del TMR 1 con los de la pareja de registros CCPRIH-L se pone a | el se- ffalizador CCPHF. EL TMRI debe trabajar en modo temporizador 0 contador sincrono, nunca en modo asincro- no. Si el bit de permiso de interrupcién esté a 1, cuando coinciden los valores mencionados se ori- gina una peticién de interrupcién, En la Figura 6.3 se ofrece un esquema por bloques de la estruc- tura general del médulo CCP1 en modo comparacién, 108 MICROCONTROLADORES «PIC». DI BNO PRACTICO DE APLICACIONES DISPARO SECUENCIAL (EN CCP2) react C2 HABLITADA ‘COMO SALIDA Figura 6.3. Exquema por bloques del médulo CCP1 cuando funciona en modo Comparador Si con los bits CCP1M3-0 se selecciona el modo de trabajo de «disparo especial», el médulo CCPI pone a0 el TMR1 y el CCPR1 funciona como un Registro de Perfodo, capaz de provocar pe~ riddicamente interrrupciones. En ese modo de disparo especial, el CCP2 pone a0 el TMR1 y, ade- mis, inicia una conversi6n en el conversor A/D, con lo que también y, con cardcter periédico, pue- de realizar conversiones analégico/digitales sin el control del programa de instrucciones. 6.4, CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MODULO DE CAPTURA Y AL DE COMPARACION En la tabla de la Figura 64 se presentan los registros, con la distribucién de sus bits, que participan en la programacién de los médulos de captura y comparacién de los dispositivos CCP1 y CCP2. DIREC: VALOR | VALOR GON = ew ane Bird “EN POR, JEN EL RESTO. BOR. | DERESETS pee RSC | Resivo de conigracion dela PooraE Tago de os del ie de ehoy pes el ear de V6 bis TART +—+——| Tra | Reso de aa de bye rads ps del gio de 16 bio TRY [ie [ncor| = [= [rows rarsfnoxeroncfwmay] nao [atm] va Tago de bie de eros ddl do de cnoonparcionodulaen | Tames] amt | egal bys de ls es el mode Capuracomparaen nkdacion [em feerconl = [= [crn Tecan [ocr [ecrmafecrna] corm | coco] a0] Figura 6.4, Tabla resumida con los registros que manejan los modos de captura y comparacién de los mé- dulos CCP, MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 109 6.5. MODO DE MODULACION DE AN CHURA DE PULSOS (PWM) Con este modo de trabajo, se consiguen impulsos légicos cuya anchura del nivel alto es de duracién variable, que son de enorme aplicacién en el control de dispositivos tan populares como los moto- res y los triacs. La patita RC2/CCPI esté configurada como salida y bascula entre los niveles I6gicos 0 y 1 a in- tervalos variables de tiempo. Lo que se intenta es obtener un impulso cuyo nivel alto tenga una an- chura variable (Duty Cycle) dentro del intervalo del periodo de trabajo. (Figura 6.5.) Para lograr el basculado de la patita de salida RC2/CCPI se usa un comparador que pone a | (Set) un flip-flop cuando el valor del registro PR2 coincide con la parte alta del TMR2, momento en que el TMR? toma el valor 00h. Luego el flip-flop se resetea (se pone a 0) cuando otro compa- rador detecta la coincidencia del valor existente en CCPR1H con el de la parte alta del TMR2. (Fi- ‘gura 6.6.) De esta manera, variando los valores que se cargan en PR2 y en CCPRIL (que luego se traspasa al CCPRIH) se varfa el intervalo de tiempo en el que Ia patita de salida esta aI y a 0. Cuando se trabaja con una precisién de 10 bits, los 2 bits CCPICON<5:4> se concatenian con los 8 de CCPRIL y, de la misma forma, los 8 bits de mas peso del TMR2 se concatenan con los dos bits de menos peso del reloj interno, haciendo que el TMR2 cuente cada Tosc en vez de cada 4*Tosc El tiempo que dura el periodo de la onda depende del valor cargado en PR2, segtin la f6rmuta si- guiente: Periodo = [(PR2) + 1]# 4 © Tas: © Valor Prodivisor TMR2 Cuando el valor del TMR2 coincide con el del PR2 suceden tres acontecimientos: 1! Se borra ef TMZ 2° La patita ROZICOPI se pone a1. 3. El valor de CCPRIL, que es el. que determina la anchure del tnpulso, 6e carga en CCPRIH. eRIODO —<—»> : ANCHRAINPASO 0 oun cre TR? = PRE Me = PR Figura 6.5. Se desea conseguir un impulso de nivel alto con anchura controlada dentro del period. 110 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Rewecr C2 HABLITADA ‘COMO SALIDA Figura 6.6. Esquema de la estructura interna del médulo CCP1 cuando funciona en modo PWM. EL tiempo que la patita de salida esté a nivel alto, que es la anchura del impulso, depende del contenido cargado en CCPRIL y de los dos bits 5 y 4 del CCPICON, cuando se trabaja con una precisién de 10 bits, El valor CCPRIL:CCPICON puede cargarse en cualquier momento, puesto que el mismo no se traspasa a CCPRIH y se compara hasta que coincidan PR2 con TMR2. En el modo PWM el registro CCPRIL s6lo puede ser leido. Los pasos a seguir para realizar la configuracién del modo PWM son los siguientes: ee 6.6, CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MODULO PWM En la Figura 6.7 se ofrece una tabla resumida de los registros que intervienen en la programacién del modo PWM. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 111 [oe [esr [rf aoe [nce | ne ne [cone [raze [ante [conan] ooo | Regiro DE CONFIGURACION DEA PUERTAC Damn) min | [Tre [ara [esr at mat [earl wane | [ax racon | — Toursifouresfrours [yours | maon| news [now | men | aun] Sa eaves il bjs Seta nan od HORE LIPNRORRDTTTMIRLNA eoaioort Gemini] Regio del byte de mas peso del modulo de captralcomparacionimedulacion | oncoox| 00000" | [ons Toerscony = T= Pcersx Poche Fccriacs Focruvf oceans Pccrine fea once fovea] Figura 6.7. Tabla que recoge los registros que se manejan en la programacién del modo PWM. 112 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES TRABAJO CON LOS MODULOS CCP En este capftulo, se ha visto la teorfa concemiente a los médulos CCP. Vamos ahora a mostrar con dos ejemplos los tres modos de funcionamiento posibles: captura/comparacién/modulacién de an- chura de pulsos. Enunciado primero Se quiere hacer trabajar al médulo CCP1 en modo comparacién. EI TMR1 asociado a este modo tra bajard en modo contador de impulsos externos, donde la sefial que se le aplica es proporcionada por el generador de la Micro’ PIC I/O. Los pulsos que deberé contar vienen determinados por una cons- tante n. A su ver, la sefial de salida generada por el médulo CCP1 cuando el 'TMR1 Ilegue a su valor, es aplicada a la patita RA4/TOCKI, de modo que incremente el valor del TMRO, que estaré configura- do como contador de eventos extemnos. El tratamiento se realizaré con interrupciones y un LED bas- cularé cada vez que el TMRO se desborde. Jugando con los valores de los predivisores de frecuencia y de la constante 7 se pueden obtener diferentes temporizaciones. Esquema eléctrico Con este ejercicio se pueden obtener grandes temporizaciones, ya que se esté enlazando el funcio- namiento de dos temporizadores. Para ello, la sefial de salida del médulo CCP1 (RC2/CCPI) debe- 14 unirse fisicamente con la sefial de entrada de impulsos del TMRO (RA4/TOCKD. (Figura 6.8.) La entrada de impulsos del TMR1, por su parte, vendra dada por la unidn de la patita RCO/TICKI con el generador del Micro’ PIC 1/0. El LED se corresponderé con la linea RBO, por lo que se puede utilizar uno de los diodos de la barra de LEDs del Micro’ PIC Trainer Organigrama En el cuerpo principal del programa sélo se realizara la configuracién e inicializacién de los regis: tros que se van a utilizar, tal y como se muestra en Ia Figura 6.9. Luego el programa deberd quedar- se en un bucle infinito a la espera de que se produzca una interrupci6n. A la vuelta de la interrup- ci6n se seguird en dicho bucle. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DEPULSOS 113 5v 10K, inatas veser PICt6FB73 uct coxenoce enOPC TO Figura 68. Esquema eléctrico del ejercicio propuesto. Cuando se trabaja con interrupciones se necesita utilizar, al menos, dos organigramas: uno para el tratamiento de la interrupcién y otro para el programa principal. Si el programa principal o la in- terrupci6n son complejos, sus organigramas mostrarén los llamamientos a subrrutinas y éstas debe- én especificarse en otros organigramas. La Figura 6.10 muestra el organigrama de tratamiento de interrupeién, El primer recuadro INTER no se traduce en ninguna instrucci6n; representa la entrada a la ruti- na. La salida, asimismo, también debe ser Gnica. ‘Siempre que se habilite ms de una interrupcién, el primer paso sera discriminar de entre los ti- pos posibles aquel que la ha producido. En nuestro caso, tenemos la interrupcién del TMRO al des- bordarse, lo cual hard cambiar de estado al LED conectado en RBO, y la interrupcién provocada cuando el comparador del médulo CCP! detecta la igualdad del TMR | con el valor programado. En ambos casos se debe poner a 0 el sefializador de interrupciGn antes de volver. 114 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Figura 6.9, Organigrama del cuerpo principal del ejercicio propuesto. igura 6.10. Organigrama de la rutina de tratamiento de interrupci6n. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 115 Programa comentado El programa correspondiente al enunciado dado queda como sigue: 116 MICROCONTROLADORES «PIC» DISENO PRACTICO DE APLICACIONES Prueba del programa semas Micro’ PIC Trainer y Micro’ PIC 110. iis, deberd te- 1os a hacer uso de los sist {los anteriores. Ademas, ara la prueba del programa vam Tador se realizara como en capftul ‘La grabaci6n de! microcontrel nerse en cuenta: MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 117 Figura 6.11. Fotografia del programa en ejecucion La Figura 6.11 muestra la conexién de las tarjetas Micro’ PIC 110 y Micro’ PIC Trainer para la ejecucién del programa. De los dos LED encendidos en el Micro’ PIC Trainer, uno de ellos es el de conexién de la placa y el otro el que bascula cuando el TMRO se desborda. El poliscopio, por su parte, muestra los pul- Sos aplicados por el generador del Micro’ PIC 1/0 al TMR1 Enunciado segundo Los médulos CCP1 y CCP2 pueden trabajar simulténeamente en diferente modo. En este ejercicio ‘vamos a hacer trabajar al médulo CCP2 en modulacién de anchura de pulsos para el gobierno de un motor, y al médulo CCP1 en comparacién para controlar el desplazamiento de dicho motor. El ‘TMRI actuard en modo contador de eventos externos, donde los impulsos serdn generados por el en- coder asociado al motor. La se uencia que se pretende realizar con este programa es 18 Arrancar el motor suavernibnte en’ él'sentido horario haste llegar a la velocidad maxima 2° Girrar en sentido horario tantas pasos camo determine le constante “HORARIO» 3° Parar un segundo. 4° Girar en sentido antihorario tantos pasos como indiqué la constante’ «ANTIHORARIOn, a la velo: ccidad que determinen los interruptores (RA4-RAD)e 8 x 8° Decrecer la velocidad hasta liegar a detener el motor. 6° Parar un Segundo: 7° Vuelta al paso 1. 118 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Esquema eléctrico Para la realizacién de este ejercicio se deben hacer las conexiones mostradas en la Figura 6.12 y que se enuncian a continuacién: 12 La'saiida dtl ebcocer debe tite are enrade os pos 0b) TWA (RCOTICK). 2°-La salida del modulo COP2 (RO1/CGP2) se conecte: 2 la entrada de: activacion de! motor: {3° Las saldas RB FBO se consetan con as liteas INZIN cet motor pare controlar el sentido de gio Organigrama Los pasos a realizar tras configurar los registros adecuadamente se pueden ver como una secuencia de acciones. En este caso, cada recuadro se corresponderd con un bloque de instrucciones. Se trata de comenzar con una velocidad nula en el motor e ir incrementéndola en uno de los sen- tidos de giro, Esto se haré mediante PWM, aumentando la anchura del pulso en un bucle hasta lle- gar al maximo. En esa velocidad, e! motor girard un ntimero dado de pasos. Dichos pasos seran pul- 508 que el encoder acoplado al motor introduce en la patita RCO/TICKI del TMR 1. + “> anensn0r on wine MICROPIC VO MOTOR MCROPE VO Figura 6.12. Esquema de conexionado del PIC con el motor y el encoder, MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 119 GRO anTeorAeO SCS ESI ORO yLocoAD secin gna faa, Figura 6.13. Organigrama del segundo ejercicio propuesto. Se parari el motor de golpe y permaneceré asi durante un segundo. A velocidad marcada por ‘unos interruptores el motor volvers a girar, esta vez en sentido contrario al anterior y, por ultimo, por la misma PWM se ird decrementando la velocidad del motor hasta pararlo durante otro segundo. Du- rante el programa, ademés, se va a controlar el estado del perro guardian, introduciendo instruccio- nes de borrado para que resetee el PIC en el caso de que se produzca un fallo en el sistema. 120 MICROCONTROLADORES «PIC». DISENO PRACTICO DE APLICACIONES Programa comentado El programa para este segundo enunciado queda: HORARIO ANTIHORARIO PERIODO TEMPORAL, DELAY_CONT ‘ORG DELAY DELAY1 ust RADIX INCLUDE EQU. EQU EQU BQU EQU 0x00 ‘goto ORG moviw movwt clrwat Diss ‘goto bef. decks, 20K retum ; Comienzo-del programa principal INICIO let out cre bf bet rmiovlw P=16F873, HEX «PL6F873.INCo 1500 1000 255 0x20. 0x21 INICIO 0x05 =78 ‘TMRO INTCON, TOF DELAY INTCON, TOF DELAY_CONTF DELAY. PORTB PORTA PORTC STATUS.RPO STATUS.RPI 67000001 10" + Se indica el tipo de + procesador ; Sistema de numeracién ‘hexadecimal { Se incluye la definicion de $ los registros internos en + una libreria N2'de pasos en sentido ‘horario Né'de pasos en sentido, }antihorario } Periodo de 255 © predivisor de 16 (4 m8) + Variable temporal + Variable de temporizacion Inicio en el Vector de Reset > Va a la primera instruccion 3 del programa + Salta vector de interrupcién ; Inicializacién del TMRO + para cuenta de 20 mS. refresco del perro guardién Si. Reponer el flag {Se ha repetido tantas veces como indica ;DELAY_CONT? No. Repetir otros 20 mS £1. Volver de la ‘+ temporizacién + Limpia salidas + Cambio-al banco 1 3 Puerta A B/S digitales, MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 121 movwt ADCONI of TRISB. Puerta B como salida moviw BrO0011 LIL" Puerta A como entrada movwt TRISA ‘moviwe DItiior* ; RCO entrada, RCT salida movwt ‘TRISC moviw b'L1000117" + Predivisor de 256 asociado movwt OPTION_REG sal TMRO- movi PERIODO-1 movwe PR2 bef STATUS,RPO BUCLE, clewdt +: Refresca el perro guardian movlw. 700001 100" $ Configuracién de CCP2 movwi CCP2CON ‘moviy. “255 j Méima velocidad deseada movwt TEMPORAL. ‘let CCPRIL 3 Velocidad inicial nata movlw. b:00000i 11" + Habilitacion del TMR2 con movwt TRCON +s predivisor de 16 + Paso 1. Partiendo de velocidad 0 irfa incrementando hasta llegar ata jméxima girando en sentido horatio. movlw: 16700000010" 2 Motor en marcha en. movwt PORTB + sentido horario PASO_1 movlw: 2 temporizacién de 40 mS. movwt ‘DELAY_CONT call DELAY inet CCPRILF ;Ineremento de velocidad on el aumento de la ¥anchura de pulso dectia TEMPORALF + Ha llegado a la maxima? 010 PASO_I No. Seguirincrementando { Paso 2. Avance en sentido horario tantos pasos como indique HORARIO. PASO2 teh TMRIL + Ihicializacin del TMR1 let TMRIH movlw HIGHHORARIO. —_Ihicializacicon de tos pasos movwt CCPRIE “.contar en sentido horario ‘moviw LOW HORARIO. mover CCPRIL- movlw broovo1011” + Configuracién de CCP movwt CCPICON con reset en el TMRi movi 00000011 + Configuracién del MRI move ‘TICON }con predivisor de 1. Activ. bef. PIRI,CCPUF 3 Reposicién del flag de- 3 CCPL 122 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 123 Prueba del programa Como en el ejercicio anterior, se usan los sistemas Micro’ PIC Trainer y Micro’ PIC I/O, teniendo en ‘cuenta que se deben conectar las lineas del PIC a los diferentes periféricos utilizados, tal y como se explica en el apartado del esquema eléctrico, En la Figura 6.14 se muestran dichas conexiones, do de se puede apreciar la modulacién aplicada al motor en el poliscopio. Figura 6.14. Fotografia del montaje propuesto. 124 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES APLICACION DE LOS MICROCONTROLADORES: LA MICROBOTICA La Microbstica es una tecnologia derivada de la Robstica Industrial que se esté imponiendo en mul- titud de aplicaciones y que proliferaré masivamente en la primera década del siglo XXI. El microbot es un dispositivo mévil que reacciona ante el entorno de acuerdo con un plan de ac- ciones programados por el usuario, Para moverse utiliza motores y para reconocer el entorno emplea sensores de todo tipo. Finalmente, para controlar motores, sensores y actuadores dispone de un com- putador en miniatura programado en funcién de la finalidad a la que se destina. Existen multitud de tareas sencillas y rutinarias que nos ocupan una gran parte del dia como co- cinar, limpiar, controlar pardmetros como la temperatura del agua y la calefaccién, lavar, conducir, vigilar, transportar, y muchos més, a gran funcién de los microbots es resolver estas pequefias tareas con rapidez y precisién: ex- plorar, medir y tomar el valor de magnitudes, cuidar jardines, recolectar frutos, vigilar zonas de se- ‘guridad, acompaiar a los visitantes, transportar todo tipo de objetos, guiar a invidentes, ayudar a mi- nusvélidos, trabajar en entornos peligrosos como los radioactivos 0 submarinos, y hasta ser excelentes compafieros, En la Figura 6.15 se presenta al microbot que en 1997 exploré el planeta Marte. Figura 6.18. Fotografia del Sojourner, que la NASA utilizé para explorar Marte. MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DE PULSOS 125 Un microbot consta de 4 partes principales: El cerebro del microbot es un microcontrolador programado. Recibe informacién de los senso- res, la procesa y de acuerdo con su aplicacién ordena las acciones precisas a los rganos motrices, Entre los microcontroladores més usados en Espaiia destacan los PIC y los Motorola, El armazén debe soportar rigidamente a todos los componentes del microbot. La estructura pue- de ser mecénica, plastica o hecha a medida. Los motores més usados en Microbstica son los de cortiente continua y los PAP. Son muy po- pulares los servomotores de Futaba, que incluyen un grupo reductor y una gran estabilidad en la ve- locidad de giro. Ademés, se caracterizan por tener una baja inercia en los instantes de arranque y pa- rada, (Figura 6.16.) En cuanto a sensores y actuadores que maneja un microbot, el abanico de modelos es muy am- plio, Los més utilizados en esta tecnologia son los sensores de rayos infrarrojos, los mecénicos de posicién y contacto (bumpers), los de proximidad de tipo magnético y por efecto hall, los de lumi- nosidad, distancia, luz, temperatura, etc. EL PIC-BOT 2 Utilizando la tarjeta MSx84, descrita en un tema anterior, se ha desarrollado el microbot de bajo pre- cio PICBOT-2. (Figura 6.17.) Figura 6.16. Fotografia de un servomotor de corviente continua modelo $303 de Futaba. 126 MICROCONTROLADORES «PIC», DISENO PRACTICO DE APLICACIONES Figura 6.17. Fotografia del microbot PICBOT-2 controlado por un PICIOF84, E] armaz6n del PICBOT-2 est hecho a medida a base de placas de metacrilato trasparente, que tunidas mediante tomillerfa especial conforman una s6lida estructura donde se sitdan los motores, los sensores y la tarjeta MSx84. Las posibilidades de la tarjeta MSx84, basada en un PICI6F84, incluyen el control de hasta dos motores DCV, que en esta aplicacién son los dos servomotores Futaba a los que se les ha eliminado los topes extremos en el giro; ademés, también soporta hasta 5 sensores digitales, 4 de los cuales en el caso del PICBOT-2 vienen con el kit (dos de tipo éptico CNY70, que se usan para distincién de tonos y colores, y dos bumpers). Los PICBOT ya se han usado en el desarrollo de proyectos tales como: MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHURA DEPULSOS 127 Figura 6.18. Fotografia de un momento del Certamen de Robots Rastreadores celebrado en la Universidad de Deusto en 1999, S6lo la imaginaci6n de los ingenieros que proyectan y programan estas bestias inteligentes cons- tituye el limite de sus posibilidades, Prueba de su importancia y su proyecciGn de futuro en las facultades de Ingenieria Informética y Electrénica de todo el mundo es la organizacién de Certémenes anuales en los que participan los ingenios mas inverosimiles. (Figura 6.18.)

También podría gustarte