electronica pic diseno practico aplicaciones pic16f87x

236

Click here to load reader

Upload: belemcamacho

Post on 16-Jul-2016

78 views

Category:

Documents


34 download

DESCRIPTION

lectura

TRANSCRIPT

Page 1: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 2: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

CONTENIDO

.................................................................................................................................... Prólogo

Capítulo 1 . NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC .....................

1 . 1 . Las nuevas aplicaciones exigen mayores prestaciones .......................................... .............................. 1.2. Dos nuevas líneas de PIC: familias PIC 16F87x y PIC 18Cxxx

1.3. El PIC pobre (PIC 16F84) y los ricos (PIC 16F87x) ............................................... 1.4. Herramientas para trabajar con los PIC 16F87x .....................................................

Programar PIC es fácil: recordando el viejo PIC16F84 .............................................

Diseñar con PIC es fácil: presentación de los sensores analógicos más utilizados .........

Capítulo 2 . ARQUITECTURA. DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES ..................................................................................

........................................................................................................... Introducción Procesador RISC con arquitectura Harvard ........................................................... Organización de la memoria de programa ............................................................. Organización de la memoria de datos RAM .......................................................... 2.4.1. Registros específicos para el control de la memoria de programa ........... 2.4.2. Control de la memoria de datos ................................................................ Diagrama de conexionado ...................................................................................... Repertorio de instrucciones ....................................................................................

............................. Programar PIC es fácil: el primer programa con los PIC16F87x

Diseñar con PIC es fácil: actuadores para diversas aplicaciones: los motores .........

Page 3: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Capítulo 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 (PIE I ) ....................................... 3.4.3. Registro de permiso de interrupciones 2 (PIE2) ....................................... 3.4.4. Registros de los señalizadores de interrupciones 1 y 2 (PIR 1 y PIR2) .........

3.5. Lectul-a y escritura de las memorias EEPROM y FLASH .....................................

Programar PIC es fácil: un programa que maneja las iiiemorias FLASH de código y EEPROM de datos ...........................................................................................

Diseñar con PIC es fácil: ampliación de periféricos para el trabajo con PIC ..........

Capítulo 4 . LAS PUERTAS DE EIS Y RECURSOS ESPECIALES DEL PROCE- ........................................................................................................... SADOR

4.1 . Puertas de E/S ........................................................................................................ 4.1. 1 . Puerta A .................................................................................................... 4.1.2. Puerta B .................................................................................................... 4.1.3. Puerta C .................................................................................................... 4.1.4. Puerta » .................................................................................................... 4.1.5. PuertaE ....................................................................................................

4.2. Palabra de configuración ........................................................................................ . , 4.3. Palabras de identificacion .......................................................................................

4.4. Reinicialización o reset .......................................................................................... 4.5. Perro guardihl (W DT: watchdog timer) ................................................................ 4.6. Modo de reposo o de bajo consumo ....................................................................... 4.7. Programación de los PIC 16F87x ...........................................................................

Programar PIC es fácil: utilización de los recursos del PIC ......................................

Diseñar con PIC es fácil: ampliación de los recursos del PIC ....................................

Capítulo 5 . LOS TEMPORIZADORES ..........................................................................

5.1. Tipos y características generales ........................................................................... 5.2. Estructura interna y funcionamiento del TMR 1 .................................................... 5.3. Registro de control del TMR 1 (T 1 CON) ............................................................... 5.4. Chuleta-resumen de los registros asociados al TMR 1 ........................................... 5.5. Funcionamiento y programación del TMR2 ..........................................................

Page 4: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

CONTENIDO vii

5.6.Chuleta.resumen de los registros asociados al TMR2 ................................................ 92

................................................................ Programar PIC es fácil: iiiidiendo el tiempo 93

......... Diseñar con PIC es fácil: aplicación de los PIC al control de motores y sensores 100

Capitulo 6 . MÓDIILOS DE CAPTURA. COMPARACIÓN Y MODULACIÓN 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 ................................................................................................ 107 6.4. Chuleta-resumen de los registros asociados al módulo de captura y al de com-

1 .................................................................................................................. paración 108 6.5. Modo de n~odulación de anchura de pulsos (PWM) .............................................. 109 6.6. Chuleta-resumen de los registros asociados al módulo PWM ............................... 110

.............................................. Programar PIC es f'ácil: trabajo con los módulos CCP 112

Diseñar con PIC es fácil: aplicación de los microcontroladores: la microbótica ............. 124

Capítulo 7 . EL CONVERSOR A/D .................................................................................. 129

7.1. Presentación del conversor analógico/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 conversos analógico/digital .......... 136

................. Programar PIC es fácil: adquisición de valores con los conversores A/D 137

...................... Iliseííar con PIC es fácil: visuali~ación de valores por pantallas LCD 145

............... Capitulo 8 . MODULO DE COMUNICACIÓN SERIE SINCRONA: MSSP 153

8.1 . Introducción ........................................................................................................... 153 8.2. ModoSPI ............................................................................................................... 155

................................................................ 8.3. Manejoyprogram;~ciónenelmodoSPI 156 8.4. Módulo MSSP trabajando en modo I2C ................................................................ 159 8.5. Conceptos fundai~ientales sobre el bus 12C ........................................................... 160

8.5.1. Concepto del bus 12C ............................................................................... 160 ......................................................................... 8.5.2. Ter~ninologia del bus 12C 162

8.6. Características generales ........................................................................................ 162 8.6.1. Transferencia del bit ................................................................................. 163 8.6.2. Transferencia de datos .............................................................................. 164

Page 5: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

viii CONTENIDO

8.6.3. Arbitraje sin sincronización de reloj ........................................................ 8.6.4. Formato ....................................................................................................

8.7. Direccionamiento ................................................................................................... 8.7.1. Definición del primer byte ........................................................................

8.8. Especificaciones eléctricas ..................................................................................... .................................................................................................... 8.8.1 . Tiempos

8.9. El bus 12C y los PIC 16F87x ................................................................................... 8.10. Chuleta-resumen de los registros usados para el bus 12C ...................................... 8.1 1 . Funcionamiento del modo maestro ........................................................................

8.1 1.1. Condición de inicio (start) ........................................................................ 8.1 1.2. Condición de repetición de inicio (start) .................................................. 8.1 1.3. Modo maestro en transmisión .................................................................. 8.1 1.4. Modo maestro en recepción ..................................................................... 8.1 1.5. Secuencia de reconocimiento ................................................................... 8.1 1.6. Condición de parada (stop) .......................................................................

Programar PIC es fácil: comunicación mediante el módulo MSSP .......................... 181

Diseñar con PIC es fácil: comunicación de datos digitales por radio frecuencia ........... 186

Capitulo 9 . EL USART: TRANSMISORIRECEPTOR SÍNCRONOIASÍNCRONO ..................................................................................................................... SERIE 191

............................................................................... 9.1 . Comunicación serie asíncrona 191 ............................................................................................. 9.2. Generador de baudios 193 ............................................................................................. 9.3. Transmisor asíncrono 195

................................................................................................. 9.4. Receptor asíncrono 198

Programar PIC es fácil: comunicación serie con el USART ...................................... 201

Capítulo 10 . EL FUTURO ESTÁ AQUI: LA FAMILIA PIC18CXXX ........................ 207

10.1. Esto es otra historia ................................................................................................ ....................................................................................... 10.2. Las grandes aportaciones

10.2.1. Espacio lineal de direccionamiento .......................................................... 10.2.2. Complejo juego de instrucciones ............................................................. 10.2.3. Diseño optimizado para compilador C ..................................................... 10.2.4. Herramienta modular para la emulación .................................................. 10.2.5. Otras ventajas ...........................................................................................

...................................................................................... 1 0.3. Diagrama de conexionado 10.4. Arquitectura interna ............................................................................................... 10.5. Organización de la memoria de programa ............................................................. 10.6. Organización de la memoria de datos ....................................................................

.................................................................................... 10.7. Repertorio de instrucciones

Page 6: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

CONTENIDO ix

............................................................................ Apéndice A: La familia PIC al completo 223

......................................... Bibliografía y direcciones de interés relacionadas con los PIC 229

...................................................................................................................................... Índice 231

Page 7: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Para completar la foriiiación cle los lectores que accedieroii al estudio y desarrollo de aplicacione\ con microcontroladores basándose en la Primera Parte del libro ((Mi( i~oc~or~ti-olucJo~-e,c PIC. Di\cfio Prácticbo de Aplic cr< ionc\ ),. y ante la aparición de los nuevos modelo\ que MlCKOCHIP ha comer- cializado recientemente, los autores han escrito una continuación de dicho libro, reforzados con la colaboración de la profesora Susana Roinero de ESTDE (Universidad de Deusto). Para seguir esta obra es prerrequisito conocer teórica y prácticamente la primera parte.

Las populares y masiva\ aplicacione\ de lo\ tnicrocontroladorec de 8 bits en productos con te- clado/pantalla de la década que comenzó en 1990, ha dado paja a otras mucho más ambiciosas, que requieren dispositivoc programables con mác recursos y mejor rendimiento.

Los autores han intentado crear una herramienta 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 niicrocontroladores para dejarrollar el programa teórico-prác- tico. Hemos seleccionado los cuatro modelos que comprende la subfamilia PIClóF87.i. que supo- nen un espectacular avance con respecto al PIC 16x84. Además de disponer de mayor c;ipacidad de memoria y funcionar a más velocidad con mejor rendimiento, ectos microcontroladores poseen i i i -

tegrados todos los recursos que precisan las aplicaciones comerciales de nivel medio y alto. También y como atención a los lectores mác exigentes, se describe la familia PICl8Ci i 1, que ec-

tá llamada a utilizarse en los proyectos más exi, centes. La mayoría de los temac o capítulos, al igual quc en la primera parte, los hemos dividido en tres

secciones:

f ,aTeoría. Se expone con clar~dad y senc~llez el funcionamiento, las prestaciones, la programación y el manejo de cada recurso Cada tema se dedlca a un recurso.

2"rogramar PIC es fácil. Para cada tema y para cada recurso se han preparado una serle de ejer- CICIOS, programas y dlseños, con los que progres~vamente se util~zan los conceptos expuestos en /a teoría Toda la colecc~ón de ejerc~c~os propuestos se pueden reallzar íntegramente con las herramlen- tas bas~cas comerc~al~zadas por M~crosystems Englneerlng Concretamente se preosa el económico

Page 8: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

xii PRÓLOGO

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 PIC 16x84, poniendo de relieve algunos detalles que habrá que modificar en los nuevos modelos, y se describe el funcionamiento y control de algunos sensores analógicos, que se utilizarán en los ejer- cicios. El segundo tema presenta la arquitectura, el diagrama de patitas y el repertorio de instruc- ciones de la subfamilia PIC16F87x. En la programación se hace un enfoque de las peculiaridades de los nuevos PIC y los bancos de memoria y en cuanto a los periféricos se estudian los motores. El tercer tema muestra las características y asignación de funciones de los diversos bits de los princi- pales registros de control y las operaciones de lectura/escritura de las memorias FLASH y EE- PROM, se realiza un programa de lectura/escritura de dichas memorias y se estudia la tarjeta de am- pliación de periféricos Mical-o'PIC 10. A partir del tema 4 se van analizando los nuevos recursos de los PIC 16F87x, dedicando cada tema a la explicación 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 Micl-osysterns Engineering co- 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 TI-ainel- de los PIC16FX7x y las tarjetas de ampliación de periféricos Mi- CI-O'PIC TI-ainel- Plus y la MSx84 encargada del control de motores DCV y PAP. Finalmente, la obra se completa con un anexo que ofrece las características de los modelos actuales de microcontrola- dores de Micl-ochip.

Agradecemos muy sinceramente la colaboración de Micnr-osystems Elzgineel-irzg (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 dichas 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.es1-msysen-). Igualmente expresamos riues- tro agradecimiento a los Sres. Benito Moreno y Pepe Bustamante de Sagitr-o17 (Madrid) y a nuestros amigos Goyo y Jorge de Bilbao Electl-ó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- kis.es/-msyseng). Por nuestra parte nos brindamos a ayudar en lo que podamos a nuestros lectores en la dirección [email protected].

Page 9: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

1.1. LAS NUEVAS APLICACIONES EXIGEN MAYORES PRESTACIONES

Es posible diseñar un PLC comer-cial con un PIC16F84, con sólo 1 K palabr-as de memoria de có- digo, 64 bytes para datos, 13 líneas de EIS digitales y un contador-tempot-izadol-?

A nuestro alumno Iván Trueba no le era suficiente. Por eso, para poder culminar con éxito su proyecto de 3 . O de Ingeniería Técnica en Electrónica tuvo que ampliar notablemente los recursos del PIC16F84. Mediante el protocolo del bus 12C aumentó con dos puertas más las líneas de E/S y, en- tre otras cosas, añadió un conversor A/D que permitiese el tratamiento de señales analógicas. De es- ta forma, en lugar de usar un solo circuito integrado que contuviese todo lo necesario, el proyecto requirió más de media docena. (Figura 1.1 .)

Figura 1.1. Fotografía del panel .fiwntul del PLC ESIDE de Ii7án Ti-ueha. Al estus basado en un hunzilde PIC16F84, par-u uunlentucxl- sr4s r.ec.ursos tu~>o yrrr uñudicxl- i~arios c.irc.uitos integrados c.ornunic.udos por- el hlrs 12C.

Page 10: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

2 MICROCONTROL.ADORF<S <(PIC>,. LIISEÑO P R Á C ' T I C ' ~ DE APLICACIONES

Todo lo que utilizó nuestro alumno para implernentar el PLC y mucho más está contenido en uno de los modelos de microcontroladores de la subfamilia PICIhF(Y7.i-.

Dos de los autores de este libro (.José Mari J~ SLISC~I~U) somos profesores eri la Universidad de Deusto y nos dedicamos a enseñar computadores y microcontroladores a los futuros ingenieros. So- mos de la opinión de que esta tecnología CS(I U ~ I . C I I ( ~ C ~ C I C I C ~ I ~ O ) ) y por eso, en cada curso, dirigimos n~uchos proyectos a nuestros alumnos y a la hora de poner ejemplos siempre nos acordamos de ellos y sus experiencias. Así que, para no cambiar de alumno. con motivo de la presentación del proyec- to final del Grupo Duro, 1 ~ ~ Ú i 7 decidió ser el mejor y para ello proyectó el parking más espectacular y completo que pueda uno imaginar. En la Figura 1.2 se ofrece una fotografía de la maqueta del «l~u~-kit?g ii~tcligcutr» controlada desde un PC. No sólo gobiernci las barreras de entrada y salida del gar.je, sino qiie además dispone de sensores en todas las plazas para controlar su liso y tarificar la estancia. Por otra parte, en las ventanas del monitor del PC el encargado tiene acceso a una corn- pletísiina información con un alto nivel de seg~iridad ante robos. incendios, gases, etc.

Para poder soportar las varias decenas de sensoi-es y periféricos que teriía el parking, Ivhn nece- sitó utilizar cinco microcontroladores PIC 16F84 intercornunicados por bus 12C y coinple~i~entados con más de 20 circuitos integrados adaptables al mencionado bus. En dicha circuitería se ampliaba la ~riemoria. las E/S, se aííadían conversores A/D, reloj en tiempo real, memorias no volátiles, etc.

Tdmbién ,Jallicr Ronrpl-a, Director Técnico de Zurlihul, considerado uno de los pioneros de la aplicación de los PIC, Iia pasado por el mismo probleina en el diseño de las ((ho~trs i/lt~ligr',71c'.pi,t que fabrica su empresa. La boya «TUNABAL D+ l~ln~u/..sut» esti revolucionando la pesca del atún me- diante el uso de artilugios a la deriva. Estos artilugios son plataformas construidas con maderas vie- jas y todo tipo de materiales que sueltan los barcos atunervs al mar. Al cabo de un par de semanas estas plataformas han atraído una gran cantidad de plancton que se ha fijado en su estructura y que actúa como suculento cebo de los atunes. Cada barco suelta a la deriva varias decenas de platafor- mas y para optirnizar el rendimiento de la pesca se precisa conocer su situación y la posible atrac- ción de bancos de atúnidos. Para proporcionar esta información cada artilugio incorpora una boya.

Figura 1.2. Fotog~.qfw (1. la nluyurtu del « I > I ( I . X ~ I I ~ i~teligt~llt~)).

Page 11: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 3

La boya de Zltnihal lleva incorporado un transceptor D+ de última generación con el que envía to- dos los datos a través de la Red Inmarsat. La boya incorpora cuatro sondas de pesca y proporciona información sobre la posición, el rumbo, la velocidad, temperatura del agua y concentración de pes- cado. La ecosonda y el sistema de indicadores intermitentes incorporan microcontroladores PIC12C508. Mediante paneles solares, la batería de alimentación se mantiene cargada indefinida- mente. Para desarrollar el sistema de control de la boya Jai.tic.1- Rome~w tuvo que utilizar los micro- controladores más potentes y veloces del mercado. (Figura 1.3.)

Las posibilidades de aplicación de los microcontroladores cada vez son mayores, pero también requieren cada vez mis prestaciones. A continuación, se ofrece una tabla con una relación de posi- bles clientes y aplicaciones.

1.2. DOS NUEVAS LINEAS DE PIC: FAMILIAS PICl6F87X Y PIC18CXXX

M I L E S DE CLIENTES

Mic*i-oc,l?ip lo había anunciado y todos los ingenieros que utilizamos los PIC lo estábamos esperan- do ansiosamente, pero hemos tenido que traspasar la barrera del 2000 para poder disponer fácil- mente y en cantidad de los nuevos PIC adaptados a las exigencias de nuestro tiempo. El ascenso de Mic-I-oc-hip al segundo puesto del ranking mundial de fabricantes de microcontroladores de 8 bits, se- gún la encuesta de Dataqrrcst realizada en junio de 1998, debía mantenerse con la aportación de in- vestigación y desarrollo que ha tenido que hacer la empresa para sacar al mercado estas dos nuevas líneas de ~nicrocontroladores.

Figura 1 .S. I;i)tog~-trfi'tr tlc Itr h o ? r r ( I T ( / N , ~ B A L />+ /11t71o1..\(it ) > , ( otl \ t l i{i(l(r (.o11 I I ~ ~ C I o( o~~ t t . o lu~ lo~ .~ \ ( I I ~ U Y ~ : ~ / -

(10.5 1101. olll / l l- f l . \( / Z l ~ l ~ l I ? ~ ~ l

Industria

A i ~ l e r i c ~ ~ n 5ciisors

Cvde A1'1rni Foxhoro General Electric Honeywell Pitney Bowes Robertshaw Tandy United

Technologies Wayne Systems

Telecomunic.

Codex E i icsson tiayes Kyocera Motorola Nokia Northern

Telecom Pac~fic

Monolithics Rockwell

Ofimática

Alp5 Applc Comp~itt~r C oiiner Compaq DEC IBM Logitech Microsoft Mitsunii NCR

Consumo

Black&Decker Goldstar Hamilton Beach

IVC Mitsubishi Panasonic Philips Samsung Sanyo

Automoción

f3ldup~inkt RMW Forcl CM-Del( o tionda Lexus MercedeslBenz Nissan Robert Bosch S~emens

Page 12: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

4 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 1.4. Tabla de aplicaciones que requieren microcontroladores y clientes que desarrollan dichas apli- caciones.

Equipo de TV Receptor de radio Reproductor de CD Control remoto Vídeo consola Cámara Mando de garaje Detector de monóxido

de carbono Microondas Lavadora Secadora Aparatos de cocina Aspiradora

Figura 1.5. Tabla con las características relevantes de los cuatro nzodelos de PIC16F87x, junto a las del PIC16F84A.

Sistema de seguridad del vehículo

Detector de radar ABS Velocímetro Ciimatizador Inyección de

combustible Suspensión

activa Sensor de airbag

Ratón de ordenador

Teclado Escáner Impresora Plóter Fotocopiadora Lector de código

de barras Unidad de disco

Teléfono celular Teléfono

inalámbrico ldentificador de

llamadas Módem

Control de motores Compresor Termostato Utilidades de medida Robótica Procesos de control Detector de humo Lector de tarjetas

Page 13: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 5

Con la incorporación de esta familia, el conjunto de microcontroladores PIC de 8 bits se distri- buye en cuatro gamas:

Figura 1.6. Principales características de los modelos de 1a.familia PICI8Cxxx.

Page 14: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

GAMA MEJORADA 32 niveles de pila

7 7 instrucciones de 1 6 bits

PlCl7Cxxx 16 niveles de pila GAMA ALTA

4 vectores de interrupción 58 instrucciones de 16 bits

P!Cl2C6xx, PIC16Cxx v PlCl6F87x 8 niveles de pila bAL!P-!ED!A

1 vectur de interrupción 35 instrucciones de 14 bits

PIC 1 2C5xx - .- LPIC - 1 6C5x 2 niveles de pila GAMA BÁSICA -- -- - -- - - -- - .. .. -.

33 instrucciones de 12 bits

En la Fig~iríi 1.7 re puede ver una I-epre\ent~ición gráfica que recoge toda\ la\ f;tmilia<. En este lihrci iros vanlos a centrar en la 5ubi'amilia PIC 16F87x porque con\ider:imo\ que e5 el 4-

guiente paso natiiral de\pué\ del PIC16F84, porque tenemos 121 convicción de yue va a ocupar lor puestos mi¡\ altos del mercado y porque sus característica\ le hacen ideal para aprendel. con ellos to- do\ lo\ nuevor recur\o\. Se destinará un capítulo a coirreirtar el t'uncionamiento y iiiane.jo de lo\ mo- delos de la familia del futuro PIC 1 XCxxx.

1.3. EI, PIC POBRE (PIC16384) Y LOS RICOS (PIC16F87X)

Hasta el año 2000 han sido muchos los rnillone\ de p i e~as del PIC 16F84 que se haii vendido eii to- do el mundo. Este irrodelo había venido precedido por el PIC 16C84, prcícticarneiite igual. col1 ex- cepcicín de la n1eniori;i de programa que era de tipo EEPROM en lugar de FLASH. Con ainbos t i - pos de meri~orias se teiiía la posibilidad de grabar y bol-rar programas eléctricameiite. lo cual suponía que podía estar insertado en el mismo zócalo durante todo el procsw fe diseño y del~iiracicín. Lo\ i~ iode lo de rnicrocontroladores progi-amable5 conocido5 hasta entonces disponía11 úc inei-i~orili de programa EPROM, que exigía soirieterla durante cierto tiempo a rayo\ ultravioleta en el procejo de borrado. Esta operación suponía uii grave inconveiiiente y la pogiblc rotura de las p:~tita\ dcl cir-cui- to integrado cuando se rerrli~aban mucho\ bol-rada\.

La memoria FLASH de los PIC soporta hasta 1.000 operaciones de escritura/borrado, mediante un proceso totalmente eléctrico que no precisa sacar al microcontrolador de sil zócalo. Esta caracterfs- tica hace a esta memoria ideal en los ambientes de diseño y educacionai. La memoria EEPROM para datos que tienen los PIC soportan 100.000 operaciones de grabado/bo- rrado.

Page 15: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Nt:('ESIl)AD Y APORTACIONLS DE 1-OS NUEVOS PIC' 7

iblic 1.oc.llip ha tenido cíi\ponibles de\cle liace iii~iclio tienipo iiiicrocoritrolaciorc\ tiiuy potetite\ LX)-

iiio los fatnosos PIC 16C73 y 73 de Iii gama media, pero con nlemoria EPROM parit el progr:ii~~:i. E\- to\ di\positivo\ alcati~aban c:ipacidade\ de ineinoi-i:i de 3 K, con lC>2 byte\ de K A M de dato\. con c90nver\or A/D de 8 hit\ cte varios canaleí de etitracla, puertas de com~ii~ic:ición \cric (USAR'T. 12C, SPI), ii~ódulo\ C('P, vario\ Timer y frecuencia de funcionriiniento de 20 MI]/. Se tratahlt cic f'iC\ «111u)~ rico\» e11 rec~ir\o\.

El PfC 16FX-C tielle iiitbinoi i;i FLASH. pelo coi1 i i i l ~ i ciipaciclrid de 1 K palal.)i.:is, \6lo tieiie iiir Ti- iner ), 13 líneas de E/S digitale\ y el modelo norrnal soporta una l'recuencia tic 10 MHr. auncluc el <<A>> llega a lo\ 20 MH/ . E\ un inicroconti-olador «pobre», pero su \cncillez y bii~o precio, inicios :i

iii ini:igii~:icitin (le lo\ proy~cti\t;i\. h a logr¿ido qiie \e le ccin\idere <<muy resiiltóii>>

Los nuevos PIC16F87x se pueden considerar como una combinación de las virtudes del PIC16F84 con la inclusión de los recursos de los PIC 16C73 y 74. Incorporan la memoria FLASH, con una capa- cidad de 4 K y 8 K palabras de 14 bifs, sin cambiar la estructura interna del procesador y conservando el m~smo repertorio de instrucciones.

La irienioria RAM de dato\ de lo\ PIC I6FX7x po\ee una capacidad de 102 byte\ en (lo\ de lo\ inodelos y de 368 bytcs en lo\ otro\ dos. Aunque superan ampliamente los 68 byte\ del PIC 16FX4. inantieneii la mi\tna e\tructura ba\ada en 4 bancos de 128 byte\ cada uno, \clcccionables con lo\ hit\ RPO y RPI del Regijti-o de E\tatlo. (Fig~ira 1 .X.)

La memoria de tirito\ no volátil de 64 byte\ tipo EEPROM que tenía el PIC'16FX-C en 104 t-iilevo\ PIC 16F87x de 28 patitaí s~ibe ha\ta 128 bytes, y en loí de 40 patitas a 256 bytes.

En lo\ PIC16FX7x \e manejan ha\ta 14 posibles fuentes de interi.upcióri y 3 Tiriler. frente ;i la\ 3 f~it.i~te\ y 1 Tiinei- del PIC'I6FX-C. El núinri-o dc puesta\ taiiihien se ve auil-ieiiiritlo jii\t:iiici:il~iieiitc. coi1 3 puertas en lo\ PIC <le 28 patitri\ 4 Ii;i\ta 5 eii lo\ de 30. AdcrnAs, lo\ iiut.\o\ I'IC iticorporati lo\ \iguicnte\ recur\os inexi\tet-ite\ en el PIC 16FX3:

1 ) Do\ ~~l( jdl t lo. \ C'CP. Son capaces de capturar y comparar impulsos. La captiira \e efectúa con una pic.ci\ióri de 12.5 ns y una resolución de 16 bit\. iiiientras que la coinpiiracioil con igual rc\oI~iciO~~ ;ilcan~a una precisión de 200 ns. AdemLís, la sección PWM varía Iri :incl~~ii-;i dc lo\ ii~ip~ilso\. tbcnica rnuy empleatia en el control de motores.

BANCO O

OOh

7Fh FFh

BANCO 1 BANCO 2 BANCO 3

Figura 1.8. Mn/lc;jtrrlclo los I7it.v KPí) J . K P I tlcl Kcgi.vt/n tic Esttrtlo sc I ~ ~ ~ . ( I I I : L I I ~ 10,s 308 I ~ J ' I C S ( I c KAM tlo tltr- tos el1 los PIC'1 fik'(S7.V.

Page 16: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

8 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

2 ) Cornunicac-iólz serie. En esta subfamilia se ha potenciado muchísimo el tema de las comuni- caciones y en cuanto a la serie tipo admite dos modelos. La típica USART, orientada a la co- municación entre subsistemas o máquinas (RS-232) y la MSSP, destinada a la comunicación entre diversos circuitos integrados y que admite el protocolo 12C y SPI

3) Cornurzic.ac~ión par-alelo. En los PIC 16F87417 de 40 patitas está disponible el protocolo PSP, más rápido que la comunicación serie, pero que hipoteca muchas líneas de E/S: ocho de la Puerta D y tres de control de la Puerta E. (Figura 1.9.)

4 ) Conversol- AID. En todos los PIC16F87x existe un conversor Analógico/Digital de 10 bits, con 5 canales de entrada en los microcontroladores de 28 patitas y 8 en los de 40 patitas.

1.4. HERRAMIENTAS PARA TRABAJAR CON LOS PIC16F87X

El fabricante se ha esforzado en acompañar a los PIC 16F87x con el complemento adecuado para de- sarrollar las aplicaciones de forma sencilla y cómoda. Para ello, trabajando en su conocido entorno MPLAB Integrated Development Environment (IDE), disponible en la dirección de Internet: www.microchi~.com, ha comercializado el kit MPLAB-ICD, (Figura 1.1 O), caracterizado por:

* PrograrnadordelosP/C16F87x. - Depuración del rn~crocontrolador en el circuito de aplicación.

* Ejecución en tiempo real, con puntos de parada hardware. Ejecución paso a paso, Funcionamiento con alhentación de 3 a 5,5 V y frecuencia de KHz a

Estos PIC con memoria FLASH pueden ser grabados con su programa de aplicación después de su montaje en el producto final. Esta programación llamada ICSP (Progl-arnación Ser-ie en Cir-c-ui- to) tiene las siguientes ventajas:

.íneas de datos

1 Líneas de coi

Figura 1.9. La ( ~ o ~ ~ u n i ~ u ( ~ i ó n en par-ale10 hipoteca ocho líneas pura la tr-ur~~ferencia de i~for-r?zu(.ión y otras tres para e1 c*ont~-ol.

Page 17: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 9

1 ." Reduce considerablemente 2.a Disminuye el tiempo y el cost 3." Hace posible la calibracidn en

Posibilita la inclusión de cód~

El kit MPLAB-ICD consiste en una tarjeta conectada al puerto serie del PC y de la que sale una «cabeza» que incorpora uno de los microcontroladores PIC16F87x, que se inserta en el mismo zó- calo que utilizará el PIC definitivo.

El MPLAB-ICD une a su alto precio relativo, su especificidad para trabajar exclusivamente con los PIC16F87x. Con la idea de abaratar las herramientas y usar un sistema de desarrollo universal, Mici.osystems Engineei-ing ha diseñado un sencillo y económico zócalo adaptador para los PIC 16F87x en el Micr-o'PIC Ti-uinei-, con el que se puede grabar, borrar, depurar y ejecutar progra- mas en los nuevos PIC, con la posibilidad de conectarle todos los periféricos del sistema de desa- rrollo y ver su comportamiento en tiempo real.

El zócalo adaptador ZOC871-, (Figura l . 1 l), se introduce en el zócalo libre de 28 patitas del Mi- ci-o' PIC Trainer.

En el kit ZOC87x que se comercializa, se incluye, junto con el software necesario, un micro- controlador PIC 16F873 grabado con un programa que presenta diversos mensajes sobre la pantalla LCD del Miel-o'PIC Ti-ainei: El mencionado ZOC87x también permite la grabación de los PIC 1 6F87x sobre el programador Micro'PIC P/-og?-ammc~-.

La realización de todos los ejercicios, programas y proyectos que se proponen en este libro exi- gen la siguiente relación de herramientas de la ingeniería bilbaína Mical-osystems Engi~zeering:

Figura 1.10. El kit MPLAB-ICD pel-nlite ti-uhujui- con los PIC16F87'í desde un PC hujo el entor-ízo soj'tnw- 1-e MPLA B.

Page 18: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

IO MICROCONTROLADORES «PIC,,. DISENO PRÁCTICO DE AP1,ICACIOYES

Figura 1.1 1. l;ofog/.c~flcr tlel rcíc,trlo uilrr/~tliclo/. ZOC87\, ylic p~ / . t ? /ir(-' t/.lrh(rltr~. (.oti lo.\ PIC 1 6F87-Y crl rl Mi- c.~-o'PlC Trtrit~cl:

1 " Slstema de desarrollo ~<M1croJPIC Tralner.. 2 " Zocalo de adaptación <<ZOC87xj> para trabajar con los PIC16F87x 3 " Tarjeta de ampilacion de periférlcos <~M~cro'PlC Tralner Plus,., con perlférlcos conectables por bus 12C. 4 " Tarjeta de ampl~ac~ón de per~féricos <<M~cro'PlC /O>,, con motor, sensores analogicos, trlacs, etc

En la Figura 1.12 se aprecia la interconexión de las dos tarjetas de ampliacihn de periféricos al sistema de desarrollo Mic.1-o'PIC Tizrir~el; que lleva alojado el zócalo de adaptación ZOC<Y~-Y, que le permite trabajar con los PIC 16F87x.

A los PIC l6F87x se les puede grabar el programa en el modo ICSP-LV. que re lleva a cabo con una tcnsicín ig~1a1 a la de alimentación de +5 V. La patita RBI/PGM se de\tiiia a seleccionar el Modo de Programación y RB6/RB7 a recibir los datos en serie y los impulso\ de relo-j, respectiv¿irnetite.

Figura 1.12. Itztcr.c*ot~c~.viór~ dr l(n tt11-jcfu Mic.ro'PIC Tlwit~cl- c 011 I r i s tios ttr~.jota.\ (le ~rl///)li(i( ih l .

Page 19: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 11

RECORDANDO EL VIEJO PIC16F84

En esta sección demostraremos, capítulo a capítulo, que la programación de los nuevos PIC hace más sencilla la realización de ciertas tareas en muchos casos. como consecuencia de sus recursos. Todo es cuestión de probar y no quedarse en meros espectadores, así que manos a la obra que co- mienza la función y usted es el principal actor.

Enunciado

Vamos a comenzar recordando cói~io se trabaja con el PIC 16F84 para pasar luego a mayores con los PIC 16F87x.

Tenemos un PIC 16F84 trabajando a 4 MHz, en el cual se han conectado 2 interruptores en las líneas RA1 y RA2 de la Puerta A y 2 LEDs eri las líneas RBO y RB 1 de la Puerta B.

El programa debe mostrar cuándo el valor lógico que introducen ambos interruptores es cero. Pa- ra ello, si los dos interruptores introducen por la Puerta A nivel lógico 0, los LEDs de la Puerta B deben encenderse, y en los demás casos permanecen apagados.

Esquema eléctrico

Tras entender lo que se pide hay que especificar el esquema eléctrico del circuito para saber cómo están conectados los periféricos. (Figura 1.13.) En dicho esquema se representa el PIC, con los ele- mentos auxiliares que siempre necesita (cristal, alimentación y circuito de reset), y los periféricos de entradalsalida que se utilizan en cada moniento.

En este ejercicio tanto los interruptores como los LEDs están conectados para ser activos por ni- vel alto. En el caso de los interruptores este hecho no altera la resolución del problema, pero si los LED estuvieran conectados para activarse por nivel bajo, el valor para encenderlos y apagarlos se- ría justamente el contrario.

Organigrama

Otra práctica muy recomendable antes de empezar a programar es plasmar en un organigrama la for- ma de resolver el problema. (Figura 1.14.)

Cuanto más complicado sea dicho enunciado, más abstracto será el organigrama, pudiendo in- cluso necesitarse varios para llegar a un nivel aceptable de concretización. Al contrario, si el pro- blema es sencillo el programa es casi una traducción inmediata del organigrama a código.

Page 20: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Mhz

Figura 1.13. E.~quema eléctrico correspondiente al ejercicio pi-opuesto.

INICIALIZACI~N PA ENTRADA PB SALIDA

APAGAR LEDs ENCENDER LEDs

Figura 1.14. Organigrama del ejercicio.

Page 21: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Programa comentado

Una vez dados estos pasos previos estamos en disposición de comenzar la programación. Vamos a seguir unas reglas básicas a la hora de escribir los programas que, aunque no son obli-

gatorias, facilitan la lectura y la comprensión.

Siguiendo estas normas y en base al esquema eléctrico y al organigrama se obtiene el programa que aparece bajo estas líneas. Antes de continuar, ¿por qué no intenta resolverlo usted mismo y com- prueba luego cómo anda su práctica de programación con los PIC? Recuerde que no hay un modo único de resolución y que se aprende practicando y cometiendo errores.

LIST

RADIX

INCLUDE

ORG

P= 16F84 ; Se indica el tipo de ; procesador

HEX ; Sistema de numeración ; hexadecimal

«P16F84.INC» ; Se incluye la definición de ; los registros internos en ; una librería

0x00 ; Inicio en el Vector de : Reset

INICIO ; Va a la primera instrucción

END ; Fin de programa

Page 22: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

14 MICROCONTRO1,ADORES «PIC». DISENO PRÁCTICO DE AI'LICACIONES

Llega Iii hora de probar la soluci6n del problema para ver si se coniporta co111o está previsto. Los pasos a realizar serin siempre los siguientes:

l." Llamar a un edltor de textos cualqu~era y copiar el programa Grabarlo sin formato con extensión «ASM».

2." Ensamblarlo con el ensamblador de M~crochip llamado MPASM. Corregir errores si los hubiera volv~endo al paso 7 <

3." Grabar el microcontrolador utilizando el sistema de desarrollo Micro'PlC Trainer y su software de grabación PICME- TR.

4.' Probar la solución utilizando los periféricos contenidos en el MicroJPIC Trainer.

Se explican a continuación detalladamente los tres últimos pasos.

Utilización del ensamblador MPASM

El ensamblador MPASM e s un programa de libre distribución que se puede obtener en la página web de Microchip, y que sirve para ensamblar ficheros con extensión ASM. Su aspecto se muestra en la Figura 1.15.

Para desplazarse por los campos de la pantalla se usan los cursores y el tabulador. Los pasos pa- ra ensamblar un programa son:

Figura

- - - --

1.15. Aspec.to del cnsan~hlaclo~- MPASM.

Page 23: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 15

Grabación y prueba de un programa en el Micro'PIC Trainer

El sistema de desarrollo Micro'PIC Trainer está ideado para grabar en el microcontrolador el pro- grama, una vez ensamblado y convertido en formato HEX, y probar posteriormente dicho progra- ma utilizando los periféricos de que dispone.

Empezaremos nuestro acercamiento a la placa identificando las partes más importantes de la misma, tal y como se muestra en la Figura 1.16.

Figura 1.16. Sistema de desarrollo Micro' PIC Trainer con las partes mús .significativas señalatlas.

Page 24: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

16 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Antes de utilizar los periféricos arriba descritos hay que grabar el programa en el PIC. Se reali- zarán los siguientes pasos:

Page 25: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC 17

Si vuelve al programa que acabamos de realizar y grabar, comprobará que las líneas de E/S han sido configuradas de modo que coincidan con los periféricos dispuestos en el Micro'PIC Ti-ainer.

Para este primer programa sólo necesitamos dos interruptores y la barra de diodos LED, de mo- do que desconecte la pantalla LCD y el display de 7 segmentos abriendo sus jumpers correspon- dientes.

Asegúrese de que los jumpers A/D de las líneas RA1-RA2 están en la posición Digital e introduz- ca ahora diferentes combinaciones para comprobar el funcionamiento del programa. Si éste no se com- porta como esperaba no es un fallo sintáctico, ya que los errores han sido corregidos hasta obtener un programa correctamente ensamblado. El fallo será semántico, es decir, deberá repasar el código fuente para comprobar en qué punto difieren el organigrama del programa en ensamblador y corregirlo.

Figura 1.17. Aspecto del programa de grabación PICME-TR.

Page 26: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

18 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

PRESENTACIÓN DE LOS SENSORES ANALÓGICOS MÁS UTILIZADOS

Aunque el PIC 16F84 sirve para realizar un sinfín de aplicaciones comerciales y su aprendizaje es muy didáctico y sencillo, existen ciertas aplicaciones muy comunes para las cuales este PIC no sir- ve. Estamos hablando de aquellas que requieren la utilización de censores analógicos. Vamos a p're- sentar en este apartado dos sensores que, aunque muy utilizados en diversos aparatos que maneja- mos a diario, no eran soportados directamente por el PIC 16F84. Los nuevos PIC 16F87x7 al disponer derconversor A/D, pueden usarlos cómodamente.

El sensor de luminosidad: LDR

Un sensor de luminosidad tipo LDR es un elemento cuya resistencia entre bornes varía en función de la luz que incide sobre su superficie. Así, cuando no existe luz presenta una resistencia infinita y su resistencia va decreciendo, hasta llegar a cero, según va aumentando la luz.

Su uso puede ser interesante en todas aquellas aplicaciones en las cuales el hecho de existir más o menos luz determine cierto comportamiento del sistema. Por ejemplo, la iluminación de la entra- da a una vivienda, de una habitación o de un criadero de peces, puede regularse automáticamente 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 diámetros según el rango de va- lores de luminosidad que sea capaz de diferenciar. (Figura l . 18.)

f

Figura 1.18. Aspecto y circuito práctico de una LDR.

Page 27: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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 según el grado de luminosidad se aplicará por una de las patitas analógicas del PIC 16F87x de- bidamente configurada, y será transformada en un valor digital para su tratamiento posterior. Cuan- do no exista luz, el voltaje de salida, VOUT, será 5 V y con luminosidad máxima O 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 parámetros, 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, etc.

En la siguiente tabla se presentan los valores de algunos de estos sensores.

Uno de los sensores más utilizados es el LM35, también llamado estándar. Sus características son:

SENSOR

LM335A

PRCl O0

PT l 00

PTC (Coeficiente de Temperatura positivo)

NTC (Coeficiente de Temperatura negativo)

Termopar t i po N

1." Su tensión de salida VoUT es proporcional a la temperatura en una proporción de 10 mV/"C. ZPa Su rango de funcionarnie to estd comprendido entre 0" C y 100" C. ! 3.a Su tensión de funcionarn/ nto V . esta entre 1-4 VDC y +30 VDC. 4." Su precisión es de 2 0,9" C.

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 será co-

PROPIEDADES

Precisión debido a su comportamiento lineal Resistente.

Reducido tamaño y rápida respuesta.

En circuitos de aviso. Protección contra sobretensiones y sobrecorrientes.

Buena fiabilidad a bajo coste. Muy empleados en electrodomésticos.

Altas temperaturas. Elevada vida útil. Espacios reducidos.

R A N G O

-40"C-1OOC

- 4 0 " C - I 5 O C

-50" C - 500" C

Diferentes

D~ferentes

- 5 0 C - 400" C

INCREMENTO

0,lO mV/"C

O C - 1 0 0 W 100"-138,5 W

1 0 0 W -O"C

Baja resistencia a baja temperatura y aumenta rápidamente al superar la temperatura de referencia.

Alta resistencia a baja temperatura y al contrario.

Page 28: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

GND

Figura 1.19. Aspecto de un LM3.5. La disposición de las patitas del sensor del dibujo se corresponde con un sensor cuya parte plana está orientada hacia arriba.

nectada a O V y VoUT se conectará a la línea correspondiente del PIC. A éste llegará el voltaje proporcional a la temperatura captada, que será convertida en un valor binario para su posterior tratamiento.

Page 29: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Bajo la denominación de PIC16F87x 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 más potentes, como por ejemplo los PIC16C73/4, teniendo estos últimos 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 (PIC 16F873/6), mientras que los otros dos tienen 40 patitas (PIC 16F874/7). Con la intención de se- guir potenciando la línea con memoria FLASH, Microchip también comercializa los microcontro- ladores PIC 16F62x, que con un precio «rompedor» mantiene el encapsulado de 18 patitas, aumen- tando considerablemente los recursos internos en comparación con el PIC16F84.

Como se mostró en el capítulo anterior en la tabla de la Figura 1.5, las principales diferencias en- tre los PIC 16F87x con 28 patitas y los de 40 se concentran especialmente en el número de líneas de E/S disponibles, pero a continuación se citan las tres diferencias más relevantes:

Con la intención de ir acostumbrando al lector a conocer los recursos de los PIC16F87x se re- sumen seguidamente. (Figura 2.1 .)

Page 30: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

22 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 2.1. Tabla de los principales recursos de los rnicrocontroladores PIC16F87x

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. Así, tanto la capacidad como el tamaño de los bu- ses de cada memoria se adaptan estrictamente a las necesidades del diseño, facilitando el trabajo en paralelo de las dos memorias, lo que permite obtener altas cotas de rendimiento. La filosofía RISC se hace patente en el reducido número de instrucciones que forman su repertorio. Sólo consta de 35 instrucciones, que se ejecutan en un ciclo de instrucción, equivalente a cuatro períodos de reloj, ex- cepto las de salto que necesitan dos ciclos. (Figura 2.2.)

Una primera aproximación a la arquitectura interna de los PIC16F87x 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 el número de Puertas de E/S, que en el primer caso asciende a 5 y en el segundo a 3.

Page 31: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 23

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 simultáneo.

1 Obsérvese en la Figura 2.3 que la memoria de có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 Específicos y el Banco de los Registros de Propósito General y transfiere información bi- direccional por el bus de datos de 8 líneas que interconecta todos los elementos. Finalmente. el Ca- mino de Datos está formado por una A L U - ~ ~ 8 bits que trabaja conjuntamente con el Registro de Trabajo W.

Direccionamiento h

Dirección

"I Datos

1 1 1 1

I

I

1

I

RECURSOS 1

i INTERNOS I

1

I

1

I 1 1 1 1 1 1

Figura 2.3. Arquitectura tipo Harvard simplificada para los microcontroladores PIC16F87x.

Page 32: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

24 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

En el esquema de la Figura 2.4 se presenta con más detalle la arquitectura correspondiente a los modelos PIC 16F874/7 de 40 patitas. Los otros dos modelos de la subfamilia tienen idéntica arqui- tectura, pero carecen de las puertas D y E, así como de las funciones que éstas soportan.

PUERTA A

13 8

MEMORIA DE c ó ~ l c o (FLASH) PILA 8 NIVELES

MEMORIA DE DE 13 BlTS DATOS (SRAM) - %

PUERTA B

TEMPORIZADOR DE

1 TEMPORIZADOR ' DE INICIO

OSC2/CLKOUT

i BROWN-OUT ' , DEPURACION t

EN CIRCUITO I

PUERTA E

CONVERSOR ND TIMERO

PUERTA SERIE EEPROM CCP2 S~NCRONA USAR1

L

Figura 2.4. Arquitectura de los PIC16F87417 de 40 patitas. Para los modelos de 28 patitas la sólo difiere en que carecen de las Puertas de EIS D y E.

RCO/Tl OSO/Tl CKI

RC l /T l OSI/CCP2

RC2/CCP1

RC3/SCK/SCL RC4/SDI/SDA

RC5/SDO

RC6/TX/CK

RC7/RX/DT

arquitectura

Page 33: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 25

La memoria FLASH, en la que se graba el programa de aplicación en los PIC16F87x, puede tener una capacidad de 4 K u 8 K palabras de 14 bits cada una. Dicha memoria está dividida en páginas de 2 K palabras y está direccionada con el PC, que tiene un tamaño de 13 bits. La Pila, que tiene 8 niveles de profundidad, es transparente para el usuario, es decir, funciona automáticamente y no dis- pone de instrucciones para guardar o sacar de ella información. Con la instrucción CALL y con las interrupciones el valor del PC se salva en el nivel superior. Con las instrucciones RETURN, RET- FIE y RETLW el valor contenido en el nivel superior de la Pila se carga en el PC. Al poseer la Pila sólo 8 niveles le corresponde al programador preocuparse por los anidamientos en las subrutinas pa- ra no sobrepasar dicho valor. El vector de Reset ocupa la dirección OOOOh y el vector de Interrup- ción la 0004h, igual que en el PIC16F84. (Figura 2.5.)

* Sólo implementadas en los modelos de 8 K

OOOOh

0004h

0005h

07FFh 0800h

OFFFh

1 OOOh

17FFh

1 800h

1 FFFh

Figura 2.5. Organización de la memoria de programa tipo FLASH en los PIC16F87x.

MEMORIA DE CÓDIGO

VECTOR DE RESET

VECTOR DE INTERRUPCI~N o

PÁGINA O 2 K

PÁCINA 1 2 K

* PÁGINA 2 2 K

* PÁGINA 3 2 K

L

r NIVEL 1 I

I

1

NIVEL 8 r 12 o

PILA LlFO

13 O

Page 34: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

26 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

2.4. ORGANIZACIÓN 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. Más adelante, se estudiará la memoria EEPROM para guar- dar datos de forma no volátil, 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 Específicos que gobiernan al procesador y sus recursos. Dos modelos de PIC16F87x tienen 192 bytes de RAM y los otros dos 368 bytes. Los modelos de menor capacidad no tienen implementadas físicamente 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 están implementadas físicamente y siempre se leen como O. Los registros específicos 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- gistro de Estado, denominados RP1 y RPO respectivamente, según el código siguiente:

Para manipular adecuadamente los elementos internos de los PIC hay que conocer la misión de los bits de los Registros Específicos.

2.4.1. Registros específicos para el control de la memoria de programa

Los 13 bits contenidos en el PC, que direccionan la memoria de código, están guardados en dos re- gistros específicos. 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 leído ni escrito, se accede a él a través del PCLATH.

Las instrucciones de salto CALL y GOTO sólo proporcionan 11 bits de la dirección 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

Para direccionar la memoria RAM de datos estructurada en 4 bancos de 128 bytes cada uno existen dos modos diferentes:

Page 35: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 27

Banco O Banco 1 Banco 2

Registros de

Propósito

General

80 Bytes

Mapeados con

70h-7Fh

180h

181 h

182h

183h

184h

185h

186h

187h

188h

189h

18Ah

18Bh

18Ch

18Dh

18Eh

18Fh

190h

191h

192h

193h

194h

195h

196h

197h

198h

199h

19Ah

19Bh

19Ch

19Dh

19Eh

19Fh

1 AOh

1 EFh

1 FOh

1 FFh

Banco 3

Figura 2.6. Distribución de la memoria RAM en cuatro bancos con 368 bytes útiles.

Page 36: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

28 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

OOh

01h

02h

03h

04h

05h

06h

07h

08h

09h

OAh

OBh

OCh

ODh

OEh

OFh

10h

I l h

12h

13h

14h

15h

16h

17h

18h

19h

1Ah

1 Bh

1Ch

7Fh

Banco O Banco 1

CCPR1H

CCP1 CON

RCSTA

TXREG

RCREG

CCPRZL

CCPR2H

CCP2CON

ADRESH

ADCONO

Registros de

Propósito

General

96 Bytes

Registros de

Propósito

General

96 Bytes

80h

81h

82 h

83h

84h

85h

86h

87h

88h

89h

8Ah

8Bh

8Ch

8Dh

8Eh

8Fh

90h

91h

92h

93h

94h

95h

96h

97h

98h

99h

9Ah

9Bh

9Ch

9Dh

9Eh

9Fh

AOh

FFh

Banco 2

1 OOh

lOlh

102h

103h

104h

105h

106h

107h

108h

109h

10Ah

lOBh

10Ch

1 ODh

1 OEh

1 OFh

110h

19Fh

1 AOh

1 FFh

Banco 3

Figura 2.7. Organización de la RAM en los modelos PICl6F87314, con de 192 bytes útiles.

Page 37: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 29

PCH PCL - ' 12 8 O

PCLATH <4-O> . t PCL ANTERIOR + x L-

PCLATH

t-- PCH T PCL - 12 11 10 O

PCLATH <4:3> f , DESDEEL C Ó D I G O OP

PCLATH

Figura 2.8. En la figura superior se muestra cómo se carga el PC. Abajo se muestra la carga del PC con las instrucciones CALL y GOTO.

En el modo de direccionamiento directo, los bits RP1 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 señalan 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.5. DIAGRAMA DE CONEXIONADO

En la Figura 2.10 se muestra el diagrama de distribución y asignación de las 28 o 40 patitas de los encapsulados PDIP (doble hilera de patitas de plástico) de los PIC16F87x. Los encapsulados con menos patitas carecen de las puertas D y E.

La Figura 2.11 muestra algunas de las posibles opciones de encapsulado que utiliza Microchip para proteger a sus microcontroladores.

La asignación de funciones para las diferentes patitas es la siguiente:

Page 38: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

30 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

I BANCO O BANCO 1 BANCO 2 BANCO 3

DIRECCIONAMIENTO DlRECTO

I SELECCIÓN DE BANCO

DIRECCiONAMIENTO INDIRECTO

Figura 2.9. Formas de seleccionar el banco y la dirección de la memoria RAM en los direccionamientos di- recto e indirecto.

Page 39: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 31

Figura 2.10. Diagrama de asignación y conexionado de las patitas de los dos posibles encapsulados en los modelos de la subfamilia PIC16F87x.

Page 40: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

32 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Los PIC16F87x al carecer de las Puertas D y E tienen 22 líneas 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 sólo conectan al conversor A/D mediante 5 canales.

Page 41: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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- nía 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 Específicos de control cuyos bits se deberán escribir o leer para su gobierno. Dichos recursos y sus registros aso- ciados serán el tema de los próximos capítulos.

En la Figura 2.12 se ofrece un cuadro resumido del repertorio de instrucciones.

MlCROCHlP PACKAGE OPTIONS

lSLead CERDlP "JW"

P&Lead CEROiP "IW"

4O.Lead CERDlP *IW"

68-le& CERQUAD "CL"

&Lead PDlP "p..

PB &S$OC L B I D I D CHIP CAWRIER {OoPICCj

Pgiead PDiP "'P"

32-Lead PLCC "1"

14-lead PDIP "P"

28Cead Skrnny PDIP "SP"

44-Leed PLCC "L"

18-Lead PDIP " P

40-Lead PDIP "'P"

6S1ead PLCC "L"

6aLead Shriflk PDIP " S P

8.4-Cead PCCC "L"

Figura 2.11. Opciones de encapsulados para los microcontroladores PIC. (Cortesía de Microchip.)

Page 42: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

34 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 2.12. Principales características de las 35 instrucciones que componen el repertorio de los PICl6F87x. \

Page 43: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO'DE INSTRUCCIONES 35

EL PRIMER PROGRAMA CON LOS PIC16F87X

Tras el repaso a la programación de microcontroladores PIC llevado a cabo en el tema anterior, va- mos a repetir el mismo ejercicio pero esta vez con los PIC16F87x y, más concretamente, con el PIC16F873. 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 entradalsali- da no varía más que en el lugar que ocupan, ya que la distribución de las patitas del PIC ha cam- biado. Los condensadores que acompañan al cristal de cuarzo ahora son de 15 pF y no de 27 pF como eran en el PIC16F84 para trabajar a la misma frecuencia. Por último, ahora hay 2 patitas Vss envezde 1.

Programa comentado ,

Se presenta a continuación la resolución del ejercicio propuesto utilizando un PIC16F873. De- bido a que las funciones de este PIC son mayores, sus patitas tienen asignadas varias tareas, y la discriminación entre dichas tareas es la diferencia más notable con respecto al ejercicio del te- ma anterior. Así, además de configurar las líneas 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 analógicas o digitales. En el tema correspondiente al Conversor Analógico/Digital se verán todas las combinaciones po- sibles.

Otra cosa a tener en cuenta es que el número 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 só- lo del bit 5 del registro Estado <RPO>, sino del 5 y del 6 <RPl:RPO>. En el programa se ha inclui- do este hecho aunque en este caso no era necesario por partir de los dos bits a O al comienzo del programa.

Se ha incluido un * en todas las líneas que se han añadido o han variado.

Page 44: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

36 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

RESET i(

LED

Figura 2.13. Esquema eléctrico del ejercicio propuesto para el PIC16F873.

Page 45: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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 PICI 6F84 ahora lo son con PIC16F873.

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 PIC 16F873 y PIC 16F876.

Para ello, se utiliza el ZOCF87x, que adapta el encapsulado estrecho de estos PICs al ancho del zócalo de la placa.

En la fotografía de la Figura 2.14 puede observarse dicho zócalo de adaptación colocado sobre el Micro'PlC Trainer. Obsérvese además que el zócalo para los PIC de 18 patitas (junto al anterior) permanece vacío, ya que no pueden existir dos PICs en la placa al mismo tiempo.

Los pasos a seguir para la grabación 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:

Page 46: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

38 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 2.14. Fotografía que muestra la colocación del zócalo ZOC87x sobre el Micro'PIC Trainer. (Corte- sía de Microsystems Engineering.)

Page 47: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES 39

\ ACTUADORES PARA DIVERSAS APLICACIONES: LOS MOTORES

Unos de los actuadores más vistosos y versátiles 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 características más destacables de los motores DC se resumen en:

1.. Buen par de fue, y esfabilida 2;' Baja inercia en arranque y pa 3,' Peso y tamafio rwjucidoe;. 4.' Fdclf m@n@@.

L

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 señales de control para un encendido/apagado y cambio de sentido. Su peso y tamaño reducidos les posibilita además para formar parte de sistemas móviles sin incrementar el peso ya existente.

Los motores PAP a su vez se caracterizan por:

. 1,' Su movimiento es par incr&&ts'de &ngYb, &&'&e hbjy exactm.< 2." Maycr simplicidad en la lb@& de control. ' : * S

3.' Su manejo d8ptande del mdelo, . . t

4.' SU eje no recorre todas /aslposicimim pdsbtes. ' . + -

El funcionamiento de un motor PAP se logra aplicando en sus bornes un conjunto de señales de control especificadas por el fabricante, por lo que un programa realizado para un motor determina- do deberá modificarse si el motor es cambiado.

Page 48: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

40 MICROCONTROLADORES «PIC». DISENO PRÁCTICO DE APLICACIONES

Sin embargo, el que sea controlado por ese conjunto de señales tiene la ventaja de que en todo momento se conoce su ángulo de giro exacto, número 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 elegirá en función de la precisión del ángulo de giro que se ne- cesite.

Motores DC

Los motores DC internamente están compuestos por un imán (estator) que crea un campo magnéti- co en el cual se encuentra una bobina o electroimán arrollada en un eje giratorio (rotor). La tensión de alimentación aplicada al motor hace que se generen unas fuerzas de atracción y repulsión 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 la tensión e intensidad que proporcionan las líneas del PIC no son suficientes para exci- tar un motor DC, se hace necesaria la utilización de algún circuito integrado específico.

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 S3003 de Futaba.

Figura 2.16. Mitad del circuito integrado L293B con dos de sus cuatro drivers utilizados en el control de un motor DC.

Page 49: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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:

El funcionamiento con este tipo de motores es sencillo: a través de una patita del PIC (debida- mente configurada como salida habilitará el motor, y una segunda patita marcará el sentido de gi- ro con su señal. Dependiendo del k v ltaje 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 línea de marchalpa- ro) pulsos de amplitud variable. En la PFM (Modulación de Frecuencia de Pulsos) se mantiene la anchura de impulsos pero varía 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 número 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 7Jg.

Page 50: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

42 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO 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 sería introducir por las líneas A, B, C y D (debidamente conectadas a las líneas del PIC) la secuencia marcada por el fabricante que podría ser, por ejemplo, como la mostrada en la Fi- gura 2.19.

Entre paso y paso se debe introducir un pequeño 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.

Page 51: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

3.1. LOS REGISTROS DE CONTROL

Para gobernar el fdncionamiento de los recursos de los PIC existe un conjunto de registros especí- ficos cuyos bits soportan el control de los mismos. Dichos registros están 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 capítulo anterior se mos- traba el contenido de la memoria RAM de los PIC 16F87x y la denominación y situación de los re- gistros específicos junto a los de propósito general. Las posiciones OOh, 80h, lOOh y 180h no son re- gistros físicos sino direcciones indirectas.

Este tema, en su primera parte, está dedicado a la exposición de la misión 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 PIC16F87x 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 sólo 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

7 \ -' 1

Figura 3.1. Estructura interna del Registro de Estado.

Page 52: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

44 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Los tres bits de menos peso son los señalizadores de ciertas condiciones en las operaciones 1ó- gico-aritméticas.

Los señalizadores PD# y TO# son activos por nivel bajo (#) y sirven para indicar la causa que ha provocado la reinicialización del procesador.

Los señalizadores 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 tensión de alimentación baja de 4 V (BOR: Brown-out Reset), aunque esta función es fac- tible desactivarla poniendo a O 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 1, mientras que en los demás casos depende de la causa que ha provocado el Reset. /

Finalmente, los tres bits de más 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 capítulo anterior, se utilizan los bits RPl y RPO de acuerdo con la siguiente codificación.

El bit IRP se usa concatenado con el bit de más peso del registro FSR para elegir el banco de RAM en el direccionamiento indirecto.

E Seleccidn del banco de RAM en dir&cimdo inqimto, ,

O: Banco O y 1 (OOh-m). 1: Banco 2 y 3 (100h- IFFh).

Page 53: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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 señalizadores 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 instrucción clrf STATUS, el Registro de Estado pasa a valer 000uul uu. Los bits marcados con «u» no cambian el va- lor que tenían. Por este motivo se recomienda usar las instrucciones bcf, bsf, swapf y movf para ma- nejar los bits de este registro, ya que no afectan a los señalizadores Z, C y DC.

Como los tres bits destinados al direccionamiento de la RAM (IRP, RP1 y RPO) toman el valor O después del Reset, si se desease acceder al banco 3 de la RAM habría que emplear las siguientes instrucciones:

bsf STATUS, RPO bsf S T A F R P 1

3.3. REGISTRO DE OPCIONES (OPTION)

Tiene las mismas funciones que tenía en el PIC 16F84:

El registro OPTION toma el valor 1 1 11 11 11 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 mayoría de los recursos o peri- férico~ de que disponen los PIC16F87x son capaces de ocasionar una interrupción, si se programan adecuadamente los bits de los registros que pasamos a describir a continuación.

El PIC16F84 tenía 4 causas que generaban interrupción: desbordamiento del TMRO, activación de la patita de interrupción RBODNT, cambio del estado de una de las 4 patitas de más peso de la Puerta B y finalización de la 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:

Page 54: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

46 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

REGISTRO OPTION

RBPU# 1 INTEDC 1 TOCS 1 TOSE 1 E A ( 6 2 1 PS1I 60

Figura 3.2. Denominación y asignación de funciones de los bits del registro OPTION. Ocupa la dirección 81 h del banco 1 y la 181 h del banco 3.

Page 55: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 47

Como los PIC 16F87x disponen de más causas que provocan interrupción, también tienen más registros para contener los bits señalizadores y de permiso o prohibición.

3.4.1. Registro de control de interrupciones (INTCON)

Se trata de un registro leíble y escribible que, para facilitar su acceso, se halla duplicado en los cua- tro bancos, ocupando las direcciones OBh, 8Bh, 10Bh y 18Bh, respectivamente. Tiene la misión de controlar las interrupciones provocadas por el TMRO, cambio de estado en las 4 líneas de más peso de la Puerta B y activación de la patita RBO/INT. Es muy parecido al registro que con el mismo nom- bre existía en el PIC16F84. Sólo cambia el bit 6 en los nuevos PIC, que es el PEIE (permiso de in- terrupción de los periféricos) en lugar del EEIE que tenía el PIC16F84 para permitir la interrupción cuando finalizase la escritura de un byte en la EEPROM. El bit PEIE actúa como una segunda lla- ve parcial de permiso o 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 (PIEl)

Contiene los bits que permiten (1) o prohiben (O) las interrupciones provocadas por los periféricos internos del microcontrolador y que no estaban contempladas en INTCON.

Ocupa la dirección 8Ch y para que cumplan su función los bits de PIEl es necesario que PEIE = 1 en INTCON <6>. El bit PSPIE sólo es válido en los modelos de 40 patitas, manteniéndose a O en los que tienen 28 patitas. En la Figura 3.4 se presenta el registro PIEl con el significado de todos sus bits.

\ REGISTRO INTCON

Figura 3.3. Designación y misión de cada uno de los bits del registro INTCON

Page 56: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

48 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

3.4.3. Registro de permiso de interrupciones 2 (PIE2)

Contiene los bits de permiso de interrupción de las tres causas que no figuraban en PIE1. La de fin de escritura en la EEPROM, colisión de bus en el modo SSP y producción de una captura o una compa- ración en el módulo CCP2. La Figura 3.5 presenta la función de estos tres bits. El bit 6 es un bit re- servado y su valor es siempre O. Cuando se leen los bits que no tienen asignada función se obtiene O.

3.4.4. Registros de los señalizadores de interrupciones 1 y 2 (PIRl y PIR2)

En correspondencia con los bits de permiso/prohibición de las causas de interrupción recogidas en los registros PIE1 y PIE2, existen otros dos registros, PIRl y PIR2, cuyos bits actúan de seña- lizadores del momento en el que se origina la causa que provoca la interrupción, independiente- mente de si está permitida o prohibida. Ocupan las direcciones OCh y ODh, respectivamente. (Fi- gura 3.6.)

3.5. LECTURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH

En el PIC 16F84 se podía leer y escribir la memoria de datos EEPROM. En los PIC 16F87x también se pue- de leer y escribir la memoria de código FLASH. Esto significa que un programa dinámicamente puede ge- nerar información que se puede grabar en la FLASH directamente, sin necesidad del grabador externo.

La propia aplicación se puede reprogramar según las condiciones externas. Es posible ampliar el área de la memoria de datos no volátil EEPROM con posiciones libres de la memoria de código FUSH.

REGISTRO PIE1

Figura 3.4. Designación y funciones de permiso y pi-ohihición de los hits del registro PIEI.

Page 57: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 49

REGISTRO PIE2

Figura 3.5. Designación y funciones de los bits del registro PIE2. C

Para manejar la memoria EEPROM de 64 bytes del PIC16F84 bastaban dos registros para pro- porcionar la dirección a acceder y para guardar el dato de 8 bits que se leía o se iba a grabar. Como sólo existían 64 posiciones en la EEPROM, para contener la dirección bastaba con un registro de 8 bits: el EEADR. El dato leído o a escribir, de tamaño byte, se colocaba en el registro EEDATA.

Como en los PIC16F87x también se puede leer y escribir la memoria FLASH y ésta puede al- canzar un tamaño 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 contiene los 5 bits de más peso de la dirección. Por otra parte, el registro EEDATAH se concatena con el EEDATA y contiene los 6 bits de más peso de la palabra leída 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 regis- tros denominados EECONl y EECON2. El EECONl (Figura 3.8) ocupa la dirección 18Ch, mientras que el EECON2, como sucedía con el PIC 16F84, no está implementado físicamente y sólo se utiliza en

REGISTRO PlRl

7 o

REGISTRO PIR2

7 o

Figura 3.6. Los bits de los registros PIRl y PIR2 contienen los seiíalizadores de las causas que producen las interrupciones, en correspondencia con los registros PIE1 y PIE2.

Page 58: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

50 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO 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 55h y luego el A&.

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 práctica 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 espúreos 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

Figura 3.7. Para contener la dirección y el dato de la memoria FLASH se necesitan dos registros para ca- da valor.

Page 59: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 51

REGISTRO EECONl

Figura 3.8. Denominación y misión de los bits del registro EECONl.

Page 60: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

52 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

en la memoria FLASH se debe poner a O el bit WRT de la Palabra de Configuración, que sólo pue- de escribirse desde un grabador externo.

Dependiendo del valor del bit WRT y de los bits de Protección de Código CPl y CPO, ubicados en la Palabra de Configuración, se consiguen diversas alternativas de protección contra lectura y es- critura de la FLASH. (Figura 3.9.)

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, CPl y CPO de la Palabra de Configuración.

Page 61: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

UN PROGRAMA QUE MANEJA LAS MEMORIAS FLASH DE CÓDIGO Y EEPROM DE DATOS

En este mismo capítulo se han visto trozos de código para leer y escribir la memoria FLASH de ins- trucciones y para escribir la memoria EEPROM de datos. Vamos a realizar ahora un ejercicio que reúna la utilización de estas dos memorias. Para ello, consideraremos que los códigos ya vistos, con una pequeña modificación, son subrutinas a las cuales se llamara para realizar procesos de lectu- ralescritura sobre las citadas memorias. Así, tendremos las siguientes subrutinas:

LEER-FLASH ESCRIBIR-FLASH LEER-EEPROM ESCRIBIR-EEPROM

Falta por realizar el código correspondiente a la lectura de la EEPROM, que una vez convertida a subrutina quedaría como sigue.

Page 62: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

54 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

En las líneas que empiezan con * se pretende resaltar las modificaciones que habría 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 última 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 más veces y dicha información ya se tiene. Hay muchos modos de hacer esto: se podría preguntar al usuario, mirar cierta variable para determinarlo y ejecutar una subrutina u otra o, como haremos aquí, modificar el programa la primera vez que se entra para en posteriores ocasiones eje- cutar un código diferente.

En nuestro programa, la primera vez que se ejecute se leerá la primera posición de la EE- PROM (aunque no es estrictamente necesario lo haremos así para probar las funciones vistas en este capítulo). 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 se inicializarán una serie de contadores y se modificará el programa para que la próxima vez que se ejecute los con- tadores no sean inicializados. Puede parecer que sería más sencillo e igual de óptimo 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 cuál era la secuencia que seguía esta primera vez. ¿Se imagina que el cuentakilómetros de los coches tuviera un méto- do tan sofisticado?

En esta ocasión, para resolver el ejercicio sólo necesitamos como base el organigrama ya que, al no utilizar periféricos de E/S, el esquema eléctrico no aporta ningún dato significativo.

Organigrama

El 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 saltará 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- bará 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.

Page 63: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 55

OTRAS INSTRUCCIONES

Figura 3.10. Organigrama del programa en su primera ejecución.

Antes de grabar un nuevo programa, como ya se expuso en el primer capítulo, es necesario bo- rrar el PIC, pero este borrado no afecta a la EEPROM, por lo que al grabar el programa que real- mente nos interesa el valor 27 de la primera posición permanecerá ahí.

Ahora, intente seguir el desarrollo del programa e imaginar cuál ha sido el resultado final.

Page 64: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

56 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 65: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 57

Page 66: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

58 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

¿Se ha dado cuenta de nuestra pequeña trampa? Hemos introducido puntos de control a lo largo de todo el programa poniendo a 1 los bits de un registro según 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 código. Estos puntos de control no forman parte del programa en sí, por lo 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 más abajo. Tras la primera ins- trucción, la mayoría 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 dinámicamente para adaptarse a situaciones concretas.

Figura 3.11. PICME-TR mostrando el código del programa una vez modiJicado.

Page 67: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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:

Page 68: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

60 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

AMPLIACIÓN DE PERIFÉRICOS PARA EL TRABAJO CON PIC

Con la aparición de los PIC 16F87x, surge la necesidad de disponer de herramientas que saquen to- do el partido a los nuevos recursos que incorporan. El tratamiento de sensores analógicos y la regu- lación d e motores, que estos PIC son capaces de gobernar mediante su hardware interno, ha impul- sado a Microsystems Engineering a diseñar una plataforma con la que poder experimentar técnicas avanzadas de control.

La tarjeta de expansión Micro'PIC 110

La Micro 'PIC 110 es una tarjeta de expansión que se conecta al Micro 'PIC Trainer mediante el PIC- BUS tal y como muestra la Figura 3.12.

Se basa en la inclusión de periféricos de E/S relacionados con las nuevas características de los PIC16F87x. En la Figura 3.13 se muestra una fotografía del Micro'PIC IIO con sus bloques funda- mentales señalados.

Figura 3.12. Conexión de las tarjetas Micro'PIC Trainer y Micro'PIC IIO.

Page 69: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 61

Figura 3.13. Fotografía de la tarjeta de expansión Micro' PIC 110 con las partes mas signijicativas remarcadas.

Alimentación

Recibe una tensión de 12 VAC y un puente rectificador (DI) junto a un condensador (C1) rectifica y filtra la VAC para entregarla a dos reguladores UA7805 (U1) y UA7812 (U2), que proporcionan +5 VDC y +12 VDC respectivamente. Su esquema electrónico se muestra en la Figura 3.14.

Page 70: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

62 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

IN G OUT a

N T

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 vías que soportan las mismas señales. 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 así conformar un sistema completo con las tres tarjetas, que pone a disposición del usuario un abanico extensísimo de periféricos y un sistema de desarrollo de aplicaciones profesional que facilitará en gran medida el diseño de aplicaciones.

Figura 3.15. Esquema electrónico del doble conector PICBUS.

Page 71: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 63

Generador de funciones

En base a un PIC16C54RC (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 (SW 1).

Oscilador 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 inclusión de este oscilador tiene la finalidad de permitir al temporizador TMR1 trabajar en la modalidad en la que precisa una base de tiempos externa gobernada por un cristal de cuarzo.

La razón 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 señales de aviso o alarma. (Fi- gura 3.18.)

Figura 3.16. Esquema electrónico del generador de funciones.

0 vcc

D2 77 R1

-

(F 0 X/128 0 X/64 o Xl32 0 X116 0 X/8 0 X/4 0 X/2 o X

a a .I v 4

RPACKI

4x1 0K

SW1 -

C7 -- -- 100n

,b

C4 -- - --1op a

ENABLE -

a

a

a -

- - G

VCC

Generador de Funciones

RBO VDD RB7

13 - 12

I + U3

9 - -

4)

PlCl6C54RC

RB 1 RB2

RB6

RB3 RB5 RB4

18 R2

a 17

11 - 10

10K O

.I 16 OSCl ZC MCLR O S C ~

VSS

15 14

Page 72: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

64 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

27p 1

0 ;:.768K, I -¡&O TI OS¡

2 7 ~

Oscilador de 32.768KHz Figura 3.17. Esquema electrónico del oscilador.

Piezoeléctrico 10K

-

Figura 3.18. Esquema electrónico del zumbador piezoeléctrico.

Sensores analógicos

La inclusión de un convertidor analógico/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 circuito LM336z-2.5V de National Semiconductor, que proporciona una tensión 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.

Ambos sensores se muestran en la Figura 3.19 y forman junto a una resistencia un divisor de ten- sión que se alimenta con el voltaje de referencia seleccionado. -

Figura 3.19. Esquema electrónico de los sensores analógicos.

Page 73: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM 65

Opto-triac para control AC

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 tensión pasa por el valor de O 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 señal vale O VAC no hay generación de luz y el optotransis- tor se bloquea, y la tensión de su colector sube a +Vcc avisando del cruce por cero. Cada vez que la VAC pasa por O V se obtiene en el colector del transistor un impulso positivo, que puede provocar una petición de interrupción en el PIC.

En la tarjeta I/O se ha utilizado como carga una lámpara de incandescencia de 12 VAC gober- nada su potencia mediante un opto-triac MOC3041.

Relés

Es un dispositivo muy usado en la industria y muy fácil de controlar. Basta un sencillo circuito de excitación para poder controlar la activación o 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 IIO.

Motor DC y driver L293B

Para el control de motores en la tarjeta Micro'PIC IIO se ha elegido el circuito integrado L293B, que es 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 señales de control EN1 y EN2 fácilmente genera- bles por los recursos de los PIC16F87x, especialmente por el PWM.

A la izquierda de la Figura 3.22 se muestra uno de estos drivers. En este caso tiene conectado un motor de corriente continua en sus salidas OUT1 y OUT2, cuyo control se lleva a cabo a través de EN1 para el encendido/apagado del motor e INl-IN2 para el sentido de giro.

LPI 12v

N CROSS MOC3041

Figura 3.20. Esquema electrónico del opto-triac para control AC.

Page 74: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

66 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

VCC

Figura 3.21. Esquema electrónico de los relés.

Optoacoplador encoder

Para realizar medidas sobre la velocidad del motor DC y de su posicionamiento, en el Micro'PIC 110 existe un optoacoplador de ranura ubicado físicamente debajo del eje del motor. Ver parte derecha de la Figura 3.22.

Para conformar un encoder basta recortar un disco de material rígido trasparente (plástico) 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 número de franjas determinará la resolución. El disco encaja en la ranura del optoacoplador, que generará un pulso cada vez que pase una franja opaca.

ENABLE

IN1

IN2

- - - I VCC l- -r o

Figura 3.22. Esquema electrónico del control de motores.

O 4

3 =IC8 2

P

EN1

e

IN1 OUT1

IN4 OUT4

GND GND

14

l3 4

GND GND :: 100n

JPI

OUT2 OUT3 IN2 IN3 VDD EN2

L293B VCC O--

VDD VCC

Motor 3-1 2VDC

Page 75: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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 E). Todas las líneas de estas puertas son multifuncionales, es decir, realizan diversas funciones según estén programa- das. Sin embargo, todas ellas tienen la capacidad de trabajar como líneas de E/S digitales.

Las características principales de las puertas son similares a las del PIC16F84, por eso en este tema se intenta resaltar las novedades que añaden las de los PICl6F87x.

4.1.1. Puerta A

Sólo dispone de 6 líneas, denominadas RAO-RAS. Son bidireccionales y su sentido queda confi- gurado según la programación de los bits del registro TRISA. Si el bit O del registro TRISA se po- ne a 1, la línea O (RAO) de la Puerta A funciona como entrada. Si se pone a 1 funciona como salida y el contenido de la báscula de salida se aplica a la patita correspondiente, según puede apreciarse en el esquema de la Figura 4.1.

Al leer el registro PORTA de la Puerta A se lee el estado de las patitas, que es el que se halla es- crito en la báscula de datos de la Figura 4.1. La escritura entraña una operación de «lectura-modifi- cación-escritura», o sea, se leen las patitas, luego se modifica su valor y finalmente se escribe en la báscula de datos.

Las patitas RAOIANO, RAl/ANl y RA2/AN2, además de líneas de E/S digitales también pue- den actuar como los canales O, 1 y 2 por los que se puede aplicar una señal analógica al conversor A/D. La patitas R A ~ / A N ~ / V R E ~ + también puede actuar como entrada de la Tensión de Referencia pa- ra los periféricos que la precisan. La patita RA4TOCKI actúa como E/S digital y como entrada de la señal de reloj para el Timer O. Por último, la 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 la comunicación serie síncrona.

Page 76: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

68 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 4.1. Esquema de conexionado de las patitas RAO-RA3 y RA5, que multiplexan la función de EIS di- gital con la de canal de entrada de una señal analógica para el Conversor AID.

Cuando se produce un Reset al conectar la tensidn de alimentacidn (POR : Poweríin Reset) todas las patitas de la Puerta A quedan configuradas como canales de entrada para e/ Conversor A/D y son leídas como O.

Para seleccionar si las líneas 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 momento es suficiente con saber que si se carga en dicho registro el valor O1 l x en sus 4 bits de menos peso, todas las líneas de la Puerta A funcionan como E/S digitales y para ello habrá que escribir la siguiente secuencia de ins- trucciones:

Page 77: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 69

Figura 4.2. Tabla que recoge las características y bits más importantes de los registros que manejan la Puerta A. Cuando se pone una x signzjica desconocido, una u que no cambia y un - que no es- tá implementado y se lee como O.

movlw b'0000 0 1 70' ; Los 4 bits de menos peso son 0 1 10. movwf ABCONl ; Las líneas de la Puerta A son US digitales.

En la Figura 4.2 se presenta una tabla que recoge los registros que manejan la Puerta A.

4.1.2. Puerta B

Dispone de 8 líneas bidireccionales cuya función se elige mediante la programación del registro TRISB, igual que sucedía en la Puerta A con TRISA. En el siguiente programa, se configuran co- mo entradas las líneas RB<3-O> y RB<7:6>, mientras que RB<5:4> quedan asignadas como sali- das.

Como se estudia al final de este tema, los PIC16F87x pueden ser programados con voltaje alto y con voltaje bajo, siendo en este último caso la misma tensión de alimentación del microcontrola- dor VDD = 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#/VPP y está 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 última 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.

Page 78: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

70 MICROCONTROLADORES cPIC». DISEÑO PRÁCTICO DE APLICACIONES

Todas las patitas de la 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 O. La resistencia de pull-up, que es un transistor CMOS tipo P, como se aprecia en la Fi- gura 4.3, se conecta automáticamente siempre que la línea esté configurada como salida. Cuando se produce un Reset por conexión de la alimentación (POR) se desconectan todas las resistencias pull-up.

RB7:RB6 E N M O D O PROGRAMACIÓN E N SERIE

Figura 4.3. Conexionado interno de las patitas RB<7-4> de la Puerta B.

Page 79: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 71

Figura 4.4. Estructura de los registros que manejan la Puerta B.

Las líneas RB<7-4> pueden programarse, como en el PIC16F84, 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 señalizador RBIF, que es el bit O del registro INTCON, se pondrá a 1. Esta interrupción es muy utilizada en el manejo de teclados ma- triciales.

La patita RBOIINT 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 características de los registros que manejan la puerta B.

4.1.3. Puerta C

Consta de 8 líneas 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 líneas bidireccionales sólo la tienen los PIC16F87x encapsulados con 40 patitas. Ocupa la dirección 08h, mientras que su registro de configuración TRISD ocupa la dirección 88h. Todas las patitas disponen en su entrada de un Trigger Schmitt.

Page 80: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

72 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Además de usarse como líneas de E/S digitales normales, implementan una puerta paralela es- clava de 8 líneas (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 = l. 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 sólo la tienen los PIC16F87x con 40 patitas. Dispone de 3 patitas multi- función, que se configuran como entrada o salida, según el valor de los tres bits de menos peso del registro TRISE, que está ubicado en la dirección 89h.

RFO/RD#/AN5. 15/S digitafleiial de lectura en el moda de puerta paralela eshva/canal5 del con- versor MI/WR#/ANG, €/S digital/Ser?al de escritura en modo PSP/canal6 del conversor m. &7/CS#/AN7= E/S digitaI/Selección de chip en el modo FP/mnal7 del conversor ND.

La PSP actúa como un puerto de comunicación en paralelo de 8 líneas y para su activación hay que poner el bit PSPMODE a 1. Dicho bit es el 4 del registro TRISE. Además de las 8 líneas de transferencia de datos, se precisan 3 señales de control, que determinan si la operación es de lectu- ra, de escritura y de permiso de funcionamiento (RD#, WR# y CS#). Estas tres líneas de control es- tán implementadas en la Puerta E.

La única diferencia apreciable entre los PIC 16F87x 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 líneas de E/S más, o bien de un canal paralelo de comunicación (PSP) con sus corres- pondientes señales de control.

Es una posición reservada de la memoria de programa FLASH, que ocupa la dirección 2007h y que sólo es accesible durante la programación del PIC. El valor de sus bits determina algunas caracte- rísticas fundamentales (Figura 4.5).

Page 81: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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.

Se trata de cuatro palabras de la memoria de programa que se hallan comprendidas entre la direc- ción 2000h y la 2003h y están reservadas para que el usuario las pueda emplear en funciones de comprobaciones o «cheksums», códigos de identificación, números de serie, fecha, modelo, lote,

Page 82: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

números 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.

Sólo se deben emplear los 4 bits de menos peso de cada una de las palabras de identificación.

Los PIC16F87x disponen de diversas maneras de reinicializarse, de forma similar a como ocurría con el PIC 16F84, 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 O y 1 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 O o 1 indistintamente, ya que no se conoce su valor, y las u que su valor no varía con respecto al que tenía antes del Reset.

En la Figura 4.7 se muestra el esquema eléctrico en el que se representan las causas y señales que originan un Reset.

Como se deduce de dicha figura, la generación del Reset ocurre como consecuencia de la salida de un nivel lógico alto de la puerta OR1, la cual es controlada por todas las causas que reinicializan al PIC.

Figura 4.6. Determinación de la causa del Reset.

Page 83: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 75

MC RESET EXTERNO

1

i i - - - m i 1

I HABlLlTAClON OST

PWRl - - - - - m - - 1 i OSCllADOR 1 INTERNO RC

HABILITACIÓN PWRT

Figura 4.7. La generación del Reset se produce al activar la entrada S de la báscula, cuando sucede algu- na de las condiciones que se aplican a la puerta ORl . Los temporizadores OST y PWRT retar- dan el Reset al actuar sobre la entrada R de la báscula de salida.

1 .8 ~ C f i v a ~ k l ~ de la patita WLR#. 2.a D~sbw&m'mto del perra guwdi4n u W7: Ra Cmexih de fa alirnentwidn (POR). 4." Caida en 1s tensitán de alkmmtacidn (BQlrl).

El temporizador PWRT retarda el Reset un tiempo fijo de 72 ms con la finalidad de garantizar la estabilidad de VDD, mientras que el temporizador OST produce un retardo de 1 .O24 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 marcha.

Page 84: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

76 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Tras un Reset, el Contador de Programa queda cargado con el valor OOOh 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 específicos del micro- controlador tras producirse los diversos tipos de Reset.

Page 85: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 77

Figura 4.8. Valores de los registros especllficos tras los diversos tipos de Reset.

El WDT de los PIC 16F87x es similar al del PIC 16F84. 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 O DE BAJO CONSUMO

En este modo especial de funcionamiento del microcontrolador se introduce cuando se ejecuta la instrucción SLEEP, igual que en el PIClóF84. Esta manera de trabajo se caracteriza por su bajo con- sumo y parece que el PIC se ha «congelado». Las líneas de E/S digitales que se utilizaban mantie- nen su estado, las que no se empleaban reducen al mínimo su consumo, se detienen los temporiza- dores y tampoco opera el conversor A/D.

Al entrar 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+l

existen varias causas.

Page 86: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

78 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

DESDE TMRO 1

SALIDA WDT

Figura 4.9. Esquema simplzj?cado por bloques del perro guardián.

4.7. PROGRAMACIÓN DE LOS PIC16F87X

La posibilidad de programar a esta subfamilia de PIC en serie permite grabar en la memoria de có- digo el programa de trabajo, estando colocado el PIC sobre el circuito o producto de aplicación fi- nal. Esta característica permite a los fabricantes construir y montar completamente la tarjeta de cir- cuito 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.

Page 87: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 79

La programación en serie típica, que se realiza con un Voltaje Alto de 12 a 14 V aplicado por la patita MCLR#/Vpp, 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 tensión 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 VDD 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 línea de E/S digital.

Page 88: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

PROGRAMAR PIC ES FÁCIL

UTILIZACIÓN DE LOS RECURSOS DEL PIC

En el capítulo anterior, vimos cómo se trabajaba con las puertas de E/S. Vamos ahora a partir del mismo ejercicio pero se va a introducir el modo de reposo o bajo consumo y el perro guardián. El esquema eléctrico no varía con respecto al del capítulo anterior, pero sí el organigrama.

Organigrama

Según el valor de dos interruptores, se encenderán o apagarán 10s 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án, iniciándose de nuevo el proceso.

INICIALIZACI~N PA ENTRADA

CONFIGURACIÓN DEL PERRO GUARDIÁN

ENCENDER LEDs + * SLEEP 7-

Figura 4.10. Organigrama del ejercicio.

Page 89: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 81

Programa comentado

El programa, una vez adaptado al uso de estos nuevos recursos, queda de la siguiente manera:

Page 90: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

82 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Los cambios son mínimos 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 amplía considerablemefite el tiempo entre refrescos y evita así muchas instrucciones de ese tipo.

Tras encender o apagar los LEDs y, tras borrar el perro guardián, se entra en estado de reposo o bajo consumo, del cual saldrá al desbordarse el perro guardián, volviendo así a comprobar los inte- rruptores para volver a encenderlapagar los LEDs. En este caso no es necesaria la instrucción 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 seguirán los mismos pasos que en el capítulo anterior con excepción de la grabación. La Palabra de Configuración, modificable en el proceso de graba- ción, sirve entre otras cosas para habilitar o no el perro guardián. Puesto que estamos controlando su funcionamiento, se deberá 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 o apagado los LEDs en la primera ejecución del progra- ma, éste entrará en estado de reposo, del cual no podrá salir.

Page 91: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 83

Aunque la filosofía 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 más 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. Éstas son algunas de las posibilida- des que nos presenta la tarjeta de ampliación 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 verá en los Capítulos 8 y 9, los PIClGF87x incorporan en su chip distintos módulos que per- miten la comunicación con dispositivos externos.

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. Tarjeta de ampliación Micro'PIC Trainer Plus con las partes más significativas señaladas.

Page 92: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

84 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Descripción 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:

1." Teclado. 2." Canal serie RS-232. 3." Reloj/calendario. 4." Mddulo de visualización. 5." Módulo con versor A DUDA C. 6." E/S paralelo.

El teclado

La conexión con el Micro'PIC Trainer de esta tarjeta de ampliación se realiza a través del conector CNl, que proporciona todas las líneas del PIC, así como las de alimentación.

El teclado matricial de 4x4 está conectado con las líneas 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 líneas RB3-RBO se configuran como entradas desde las columnas del te- clado y son leídas 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 señales SCL y SDA, respectivamente, para lo cual hay que utilizar adecuadamente los jumpers J1 y 52.

Page 93: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR 85

Page 94: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

86 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

El canal serie RS-232

El circuito principal de esta sección es el MAX232 (U5), que convierte los niveles TTL presentes en la patita 11 de transmisión (Tx), en niveles lógicos RS-232, que se obtiene en la patita 14 (TxD) y se aplican al conector DB9 (CN2). La señal de recepción RxD llega desde el canal serie a la patita 13 de U5 con niveles RS-232, que son convertidos a niveles TTL y se obtienen en la patita 12 (Rx).

Las señales 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 líneas RB4 y RB5. La selección de uno u otro modo se realiza mediante los jumpers J3 y 54.

Reloj calendario

Está basado en el circuito integrado PCF 8583P (U2), diseñado para conectar al bus I2C. Además de las funciones horarias clásicas, también realiza funciones de alarma y temporización.

Contiene 256 posiciones de RAM estática de 8 bits cada una, de las cuales las 16 primeras están usadas para las funciones de reloj, calendario, alarma y temporización. Quedan 40 posiciones libres para el usuario, quien puede usarlas como RAM no volátil en caso de alimentar al PCF8583 con una batería recargable de Ni/Cd.

Módulo de visualización

Está compuesto por 4 displays de 7 segmentos controlados por el circuito integrado SAA1064 (Ul) adaptable al bus I2C.

Mediante las líneas SDA y SCL, el PIC maestro envía la información a visualizar en los displays, mediante un multiplexado sobre las mismas. Inicialmente, por las líneas P l -P8 aparece la informa- ción a representar en el dígito l y por P9-P16 la correspondiente al dígito 3. Simultáneamente se ac- tiva la señal MX1 que hace conducir al transistor Q1, que gobierna los ánodos comunes de dichos dígitos. Después, por P1-P8 y P9-P16 aparece la información a visualizar en los dígitos 2 y 4 con la señal 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 dígitos a la vez.

Módulo ADC y DAC

Está centrado en el circuito integrado PCF8591 (U3) para el bus I2C. 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 DigitallAnalógico DAC de 8 bits cuya tensión de salida se obtiene por AOUT.

La señal analógica de tierra, así como la tensión de referencia necesaria, se aplican por AGND y VREF.

Puerta de EIS paralelo

El circuito integrado PCF8574A (U4) diseñado para conectarse al bus 12C proporciona una puerta paralelo con 8 líneas de Entrada o Salida, dependiendo que se lean o escriban PO-P7. De esta ma- nera, usando el bus 12C soportado por dos líneas, se pueden ampliar las puertas de E/S de un PIC.

Page 95: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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, TMRl y TMR2.

El TMRO es idéntico al que tiene el PIC 16F84 y sus funciones más representativas son:

1 .@ TlWRO @S un 8 bias. t .

2." lis&/@ -/ 8scribibb. . 3." Reloj interno o Ox@rnonO . . 4.0 Selsccibn del flanm sn el rebj emft30. 5." Predivisor de la frecuencia de reloj progrmabie. 6.a Generwih de interrupcibn &dona/ en el dwbordamíento.

En el tema anterior, se presentó al registro OPTION, encargado del control del TMRO y cuyas funciones son conocidas del PIC 16F84.

Los nuevos temporizadores que incluyen los PIC 16F87x son más potentes y flexibles que el sen- cillo TMRO. Así, el TMRl se caracteriza por:

lee W R I es un Contadorflernporizador de f 6 bb. 2." Ceíble y e s c r ' l e . 3." SaltacciBn de reloj interno o exferno, 4," intwrupción opc iwl por desbordmiep1to de FFFh sa CQQOh. . . 5." Posible rrainicialjzaci6n &8& lw mddulm CCR

Finalmente, el TMR2 tiene las siguientes características fundamentales.

87

Page 96: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

88 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

1 .a TMR.2 e$ un Tempsrizador de 8 bits. 2." Dispone de un Registro de Período de 8 bits (Pff2). 3.8 Lelble y escribible, 4.' Predivisor de frecuencia programable. 5,"~stdivisor de frecuencia progrmable. 6," Int@rrupcidn opcional al coincidir M 2 y PRZ. 7,' Posibjljdad de generar impulsos al májula SSF!

5.2. ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMRl

El TMRl es el único Temporizador/Contador ascendente con un tamaño de 16 bits, lo que requiere el uso de dos registros concatenados de 8 bits: TMRlH:TMRlL, que son los encargados de guardar el valor del contaje en cada momento. Dicho valor evoluciona desde OOOOh hasta FFFFh, instante en el que se activa el señalizador TMRlIF 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 TMR1H:TMRlL puede ser leído 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 (Foscl4).

El TMRl es capaz de funcionar de tres formas:

1 .a Como femporizador: 2." Como contador slncrono. 3.a Como contador aslncrono.

En el modo Temporizador el valor concatenado TMR1H:TMRlL se incrementa con cada ciclo de instrucción (Fosc14). En el modo contador, el incremento se puede producir con los flancos as- cendentes de un reloj externo, cuya entrada se aplica a las líneas RCO y RC1 de la Puerta C, o por impulsos aplicados en la línea RCO. En la Figura 5.1 se muestra el diagrama por bloques del TMRl, en el que destacan las diversas señales de control y el predivisor de frecuencia.

Figura 5.1. Esquema interno de los principales bloques del TMRl con sus señales de control.

Page 97: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 89

5.3. REGISTRO DE CONTROL DEL TMRl (TICON)

El funcionamiento del TMRl está gobernado por el valor con el que se programan los bits del re- gistro T1 CON, que ocupa la dirección 1Oh de la memoria RAM y cuya denominación y distribución se presentan en la Figura 5.2.

El bit TMRl ON gobierna el permiso o la prohibición de funcionamiento del Timerl . En caso de poner un O en dicho bit el TMRl no funciona.

El bit TMRl CS selecciona la fuente de los impulsos de contaje. Si vale O elige el reloj interno (Fosc/4) y si vale 1 el reloj externo que se aplica por las patitas RCO y RC l .

Cuando los impulsos proceden de un reloj externo, es preciso que el bit Tl OSCEN tenga valor 1, en cuyo caso las patitas RCO/TlOSO/Tl CKI y RC l/Tl OSI/CCP2 actúan como entradas del os- cilador externo. Si TI OSCEN vale O los impulsos vendrán a través de RCO/Tl OSO/Tl CKI. En am- bos casos, el TMRl funciona como contador de eventos externos y los bits 1 y O (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 líneas 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.

El predivisor de frecuencia (Preescaler) es un simple divisor de la frecuencia de los impulsos que se aplican al TMRl por 1 ,2 ,4 u 8. El rango de división lo eligen los bits Tl CKPSl y TI CKPSO según la siguiente tabla.

El bit TlSYNC# determina la posible sincronización o no de los impulsos del reloj externo con los del reloj interno, según valga O o 1 respectivamente.

El TMRl 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 automáti- camente a 1 el flag TMRIF, que es el bit O del Registro Específico PIRI, que está ubicado en la dirección OCh de la RAM. El permiso o prohibición de la producción de interrupción del TMRl, está controlada por el bit TMRlIE, que ocupa la posición de menos peso del Registro Específico PIE1 (8Ch).

REGISTRO T I CON

7 o

Figura 5.2. Nomenclatura y distribución de los bits del registro de control del TMRl.

Page 98: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

90 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Cuando el módulo CCP (captura-comparación-PWM) está configurado como comparador para generar un «disparo especial» (CCPlM3-CCPIMO = 1011), dicha señal resetea el TMRl. Para aprovechar esta característica, el TMRl debe estar configurado en modo temporizador o contador síncrono. En otro caso no se produce el Reset.

5.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL TMRl

En la Figura 5.3 se ofrece una tabla con los registros principales que controlan el comportamiento del TMRl y la distribución de los bits.

5.5. FUNCIONAMIENTO Y PROGRAMACIÓN 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 Síncrona (SSP) y con los módulos de captura y comparación. Ocupa la dirección 1 lh del mapa de los registros específicos.

La señal 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 señal Fosc/4 deja de funcionar el TMR2.

Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la dirección 12h del mapa de los registros específicos y cuya distribución y asignación de bits se muestra en la Figura 5.4.

Figura 5.3. Resumen de los registros más 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' signijica indeterminado, 'u' que permanece invariable y los no implementados (-) se leen como O.

Page 99: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 91

REGISTRO T 2 C O N

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 1 y O del T2CON (T2CKPS 1 :T2CKPSO) sirven para seleccionar el rango de división del predivisor de impulsos de la siguiente forma:

El bit TMR20N sirve para permitir (1) o prohibir (O) el funcionamiento del TMR2. El bit de más peso no es significativo y los cuatro bits restantes (TOUTPS3-TOUTPSO) determinan el rango por el que divide la frecuencia el postdivisor, de acuerdo al siguiente código:

El señalizador de desbordamiento del TMR2 es el bit 1 (TMR2IF) del registro PIRI, 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 O 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 O el contenido del TMR2 cuando se produce un Reset.

El TMR2 tiene asociado un Registro de Período 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 señalizador TMR2IF.

Este temporizador también tiene la capacidad de producir una petición de interrupción si se po- ne a 1 el bit TMR2IE de habilitación, que reside en el registro PIE1 (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.

Page 100: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

92 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

SALIDA TMR2 A SSP

- - - FOSCl4 RELOJ - - m - - - -

. - - - - - -

. - - m - - -

Figura 5.5. 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.

Figura 5.6. Resumen de los bits de los registros que se utilizan en el manejo y programación del TMR2.

Page 101: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 93

MIDIENDO EL TIEMPO

La mayoría 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 O o, más eficientemente, descargando de esta tarea a la CPU, utilizándola para otras cosas, mientras un temporizador especial que lleva la cuenta. En este capítulo se ha hablado del as- pecto teórico de los temporizadores; vamos ahora a llevarlo a la práctica mediante un ejercicio. El uso de los temporizadores es tan común que en capítulos posteriores se seguirán mostrando ejem- plos de utilización aunque no sea el recurso a estudiar.

Enunciado

Se quiere que el temporizador TMRl se comporte como un contador de eventos externos. Dichos eventos vendrán por la línea RCO/TlCKI desde el generador de onda del Micro'PIC 110. Si cuenta los eventos durante 0,250 seg y el resultado se multiplica por 4, se obtiene el número de pulsos por segundo (herzios). Cambiando el intervalo de tiempo de medición se podrían 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 110, estaríamos 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 única conexión que deberá realizarse entre el Micro'PIC 110 y el Micro'PIC Trainer, además del PICBUS, es entre la salida del generador y la patita RCO/TlCKI de entrada de pulsos para el TMRl . 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 será la que realmente realice las operaciones necesarias. (Figura 5.8.)

Page 102: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

94 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

i

/ Vss Vdd Vo RC R/W#E DO D I D2 D3 D4 D5 D6 D7 1

GENERADOR MICRO'PIC 110

Figura 5.7. Esquema eléctrico del ejercicio propuesto.

Page 103: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 95

INKML~ZACI~N PA W D A PBSALlDA

PC EMlZADA

COMFIWRAC~~N TMRO, TMR1 m1 =a

TMRO = C2(196] HABKITACK~I\I $M: TMRO

I

Figura 5.8. Organigrama del ejercicio.

Se entrará en la rutina de interrupción cada 50 ms. Éste 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 llegado a este punto se visualizará el TMR1, que se habrá ido incrementando con los pulsos proporcionados por el generador, en la pantalla LCD y, tras reponer los valores adecuadamente, se volverá 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.

Page 104: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

96 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Programa comentado

El programa quedará de la siguiente manera:

Page 105: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 97

Page 106: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

98 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 107: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 99

Prueba del programa

Se deberán conectar las líneas tal y como muestra el esquema eléctrico. Además, se deberá tener en cuenta:

1.0 + @ ! ? f ~ j 6 & I ~ ' P K : T i n e t & M a s f w ~ 8 1 r k i l d a , '

2.' Los interruptores RAU-RZL? del Micro'PIC Trainer deben permanecer activados para no int8fbrir con el funcianamí@rttu deal M3D.

La Figura 5.10 muestra una fotografía 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 IIO.

Figura 5.10. Fotografía del ejercicio propuesto en ejecución.

Page 108: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

100 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Tarjetas como la Micro'PIC Trainer Plus y la Micro'PIC 110 pueden ser muy adecuadas para la de- puración de programas, ya que cada una de ellas dispone de periféricos de E/S variados junto con sus controladores. Esto permite la prueba de diferentes rutinas facilitando así el aprendizaje.

Sin embargo, cuando se acomete un proyecto real, a menudo los sensores y actuadores no se en- cuentran sobre la tarjeta, sino sobre el elemento al cual controlan. Para esto se hace necesario que la circuitería 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 PIC 16F84 de 18 patitas para su gobierno o puede conectarse a otro sistema como el Micro'PIC Trainer que, a través del PICBUS, puede pasarle las señales de un PIC de un máximo de 28 patitas.

Las partes más importantes se muestran en la Figura 5.11.

Figura 5.11. Fotografia que muestra las partes más importantes de la MSx84.

Page 109: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 101

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:

7." Fuente de alimentacidn. 2.O Sección del rnicroconfrdador. 3.' Control de motorcss. .

4." SecciBn de sensores.

REFERENCIA REFERENCIA

RBD SO REO $0

RE1 S1 RE1 51

RB2 52 RE2 52

RB3 53 RE3 53

RA4 S4 RA4 $4

RAO INI!IN2 RAO INlilN2

RAI IN4AN3 R A ~ I N41N 3

RA2 EN1 RAZ EN1

RA3 EN2 RA3 EN2

Figura 5.12. Zócalos que muestran la asociación de líneas con los sensores y actuadores.

Page 110: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

102 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 111: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LOS TEMPORIZADORES 103

Fuente de alimentación

Está formada por dos secciones. La primera recibe en el puente rectificador (DI) por J8 una tensión de 12 VAC y proporciona una tensión de 13 VDC, mediante el regulador UA7812 (U4) y los dio- dos D2, D3, D4 y D5.

Al cerrar el interruptor SW3, se consigue una tensión de 5 VDC a través del regulador UA7805 (U5) en el borne +Vo, mientras que en el borne +V,, se tienen los 13 VDC.

En lugar de la sección rectificadora del UA78 12 se puede introducir una tensión de CC por me- dio de una batería en el conector J5.

Microcontrolador

La tarjeta contiene su propio microcontrolador PIC 16F84, que pone a disposición del usuario todas sus patitas a través del conector PICBUS. Igualmente, usando este conector PICBUS puede conec- tarse al Micro'PIC Trainer para grabar y borrar el microcontrolador directamente sobre la tarjeta de aplicación.

La circuitería que envuelve al PIC16F84 es la mínima necesaria: cristal Xl de 4 MHz, junto a los condensadores C7 y C8, y el circuito de Reset formado por el pulsador SW2 y la resistencia R11.

Sección de sensores

La tarjeta MSx84 puede controlar las señales digitales procedentes de 5 sensores externos que se aplican por los conectores JO-J4. Dichas señales 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 SW1 permiten que cada una de las cinco señales de los sensores puedan desconectarse de las líneas del microcontrolador, caso de no emplearse.

Page 112: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Los microcontroladores PIC16F87x disponen de dos módulos CCP, llamados CCPl 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 CCP1. Estos módulos pueden reali- zar tres funciones principales:

El módulo CCPl utiliza un registro de trabajo de 16 bits que está formado por la concatenación de los registros CCPRlH-CCPRlL (direcciones 16h y 15h). El registro de control del módulo CCPl es el CCPICON, que ocupa la dirección 17h. (Figura 6.1.) El módulo CCP2 tiene como re- gistros de trabajo a CCPR2H-CCPR2L (direcciones 1Ch y 1Bh) y como registro de control a

REGISTRO CCPxCON (x puede ser 1 o 2)

Figura 6.1. Asignación de los bits de los registros CCPxCON para los módulos CCPl y CCP2. Todos sus hits son leíhles y escribibles y pasan a O cuando se produce un Reset.

Page 113: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

106 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

CCP2CON en la dirección 1Dh. Las parejas de registros son las encargadas de capturar el valor del TMRl, de comparar el valor que tienen con el del TMRl o, en el modo PWM, de modular la an- chura del impulso.

O000

O1 O0 1

O1 O1

6.2. MODO CAPTURA

Módulo CCPx desconectado

Modo captura con cada flanco descendente en RCyICCPx I

Modo captura con cada flanco ascendente en RCyICCPx

En este modo, la pareja de registros CCPxH-L del módulo CCPx captura el valor de 16 bits que con- tiene el TMRl cuando sucede un evento en la patita RCyICCPx 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 RCyICCPx para producir la captura del valor del TMRl sobre la pareja de registros CCPxH-L son:

1. Un flanco asmn&nte. 2." Un flanco dmcmdmte, 3." Cada 4 f fams ascendsntes. 4." Cada 16 flancos ascmdentes.

O1 1 O

O111

1 000

1 O01 I

1010

1011

l l x x

Los cuatro bits CCPlM3-O del registro CCPlCON seleccionan el evento adecuado en el módu- lo CCPl y otro tanto sucede con el módulo CCP2.

Al efectuar la captura, se activa el señalizador CCPlIF del registro PIR1. Además, si se pone a 1 el bit de permiso de interrupción PIEl<CCPlIE>, 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 CCPl en modo captura, el TMRl debe estar configurado para tra- bajar como Temporizador o como contador síncrono. Nunca en modo asíncrono.

Si se van a cambiar las condiciones de funcionamiento en el modo captura, conviene detener o desactivar al módulo CCP para evitar que se produzcan falsas interrupciones durante la operación.

Modo captura cadá 4 flancos ascendentes en RCyICCPx

Modo captura cada 1 6 flancos ascepdentes en RCyICCPx

Modo comparación que activa la patita RCyICCPx al coincidir valores m

Modo comparación que desactiva (O) la patita RCyICCPx al coincidir valores

Modo comparación que genera una interrupción software (no afecta a RCyICCPx)

Modo comparación en el que se produce un disparo especial diferente para cada módulo

Modo PWM

Page 114: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 107

CAPTURA

Figura 6.2. Esquema de los bloques principales del Módulo de Captura del CCPl.

Si no se ha leído 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- ción del predivisor de frecuencia que determinan los bits CCPlM3-O.

Una aplicación muy interesante del modo captura puede ser la medición de los intervalos de tiempo que existen entre los impulsos que llegan a la patita RCS/CCPl que se halla configurada co- mo entrada. El TMRl debe trabajar con entrada de reloj externo sincronizada.

En esta forma de trabajo, la pareja de registros CCPRIH-L compara su contenido, de forma conti- nua, con el valor del TMRl. Cuando coinciden ambos valores, a la patita RC2/CCPl, que se halla configurada como salida, la acontece uno de los siguientes eventos, de acuerdo con la programación de los bits CCPlM3-O:

* Pasa a niv& alto. * Pasa a njvdba@. . . No cambia su estado p se pro&+? um interrupeidPrdPr

Al coincidir los valores del TMRl con los de la pareja de registros CCPRlH-L se pone a 1 el se- ñalizador CCP 1 IF.

El TMRl debe trabajar en modo temporizador o contador síncrono, nunca en modo asíncro- 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 CCPl en modo comparación.

Page 115: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

1 CCPRlH 1 CCPRlL 1 DISPARO SECUENCIAL (EN CCP2) Y

CCPl IF r\nl S ~ A n A nnn

--

Figura 6.3. Esquema por bloques del módulo CCPl cuando funciona en modo Comparador.

Si con los bits CCPlM3-O se selecciona el modo de trabajo de «disparo especial», el módulo CCPl pone a O el TMRl y el CCPRI funciona como un Registro de Período, capaz de provocar pe- riódicamente intermpciones. En ese modo de disparo especial, el CCP2 pone a O el TMRl y, ade- más, inicia una conversión en el conversor A/D, con lo que también y, con carácter 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 MÓDULO DE CAPTURA Y AL DE COMPARACI~N

En la tabla de la Figura 6.4 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 CCPl y CCP2.

Figura 6.4. Tabla resumida con los registros que manejan los modos de captura y comparación de los mó- dulos CCP.

Page 116: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 109

6.5. MODO DE MODULACIÓN DE ANCHURA 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/CCPl está configurada como salida y bascula entre los niveles lógicos O 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 período de trabajo. (Figura 6.5.)

Para lograr el basculado de la patita de salida RC2ICCP1 se usa un comparador que pone a 1 (Set) un flip-flop cuando el valor del registro PR2 coincide con la parte alta del TMR2, momento en que el TMR2 toma el valor OOh. Luego el flip-flop se resetea (se pone a O) cuando otro compa- rador detecta la coincidencia del valor existente en CCPRlH 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 CCPRlL (que luego se traspasa al CCPRlH) se varía el intervalo de tiempo en el que la patita de salida está a 1 y a O.

Cuando se trabaja con una precisión de 10 bits, los 2 bits CCPlCON<5:4> se concatenan con los 8 de CCPRlL y, de la misma forma, los 8 bits de más 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 período de la onda depende del valor cargado en PR2, según la fórmula si- guiente:

Periodo = [(PR2) + 11 4 a Tosc Valor Predivisor TMRS1

Cuando el valor del TMR2 coincide con el del PR2 suceden tres acontecimientos:

1 .O Se borra el TMR2. 2.' La patita RCZiCCPY se pone a 1. 3." El valor de CCPR 1 L, que es el que determina la anchura del impulso, se carga en CCPR1 H.

1 I I

I I I

w I

1

ANCHURA IMPULSO , (DUW CYCLE)

Figura 6.5. Se desea conseguir un impulso de nivel alto con anchura controlada dentro del período.

Page 117: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Figura 6.6. Esquema de la estructura interna del módulo CCPl 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 CCPRlL y de los dos bits 5 y 4 del CCPlCON, cuando se trabaja con una precisión de 10 bits.

Anchura lmpuiso = (CCPR 1L:CCP 1 GON<S:I(>) Tw Vaim Pfedívisw T W , ,

El valor CCPRlL:CCPlCONc5:4> puede cargarse en cualquier momento, puesto que el mismo no se traspasa a CCPRlH y se compara hasta que coincidan PR2 con TMR2. En el modo PWM el registro CCPRlL sólo puede ser leído.

Los pasos a seguir para realizar la configuración del modo PWM son los siguientes:

6.6. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MÓDULO PWM

En la Figura 6.7 se ofrece una tabla resumida de los registros que intervienen en la programación del modo PWM.

Page 118: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 111

Figura 6.7. Tabla que recoge los registros que se manejan en la programación del modo PWM.

Page 119: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

.apnq oyxp ua ylrn2as as u93 -dnua)u! e1 ap eqanA e1 v .uo!:,dwa)u~ eun wznpold as anb ap e~adsa EI E olruyui apnq un ua as -1epanb ylaqap ewel8old la o2anq -6.9 e~n2y e1 ua EIJS~~UI as owo3 h ~ei 'lez!lgn e UZA as anb sol1 -s!8al sol ap u~!~Ez!~E!~!u! a uor~e.rn8guo3 e1 ylezqeal as 019s eure.12old lap ~edpu!ld odran:, [a ug

'JaulwJj 31d,onx~ lap sagq ap eneq e1 ap sopo~p sol ap oun Jezg!in apand as anb 01 lod '08~ eaug e1 u03 yapuodsauo:, as 18 '011 ~I~,OJ~.ZN lap lopelaua8 la u03 I)I~IJ,/()~X eiged el ap upn ~1 md Epep FJpuaA 'alled ns lod 'T~NA lap soslndur! ap Epequa e?

(3-9 e~n8!g) -(I~~oJ,/Pv~) 08~~ Iap soslndur! ap epeaua ap legas EI uo:, aiuaure3!sjj asqun 2.1 -aqap (ld33/238) 1633 olnpour lap ~p~@s ap -[egas e1 'olla eled .salopez~~odurai sop ap oiuayureu -o~~unj la opuezqua yisa as anb EA 'sauo!~ez!.~odura~ sapue18 Jaualqo uapand as o~3plara aisa u03

-sauo!~ez~.~odura~ saiualajrp laualqo uapand as u alueisuo:, e1 ap ñ e!3uan3a~j ap sa~os!~!pa~d sol ap salolm so1 u03 opue8ny

'aploqsap as 08~~ la anb zaA epe3 yqn3 -seq as? un h sauor3dnrra1ur u03 ylezrleal as oiualureieli1g .souIalxa soiuaAa ap JO~E~LIO~ OWO~ op -e~n8yuo:, ymlsa anb 'OX~L lap JO~A la aiuawal3uy anb opour ap '1)130J,/pv8 eiped e1 e epe3!lde sa 'JOIBA ns e an3all la 0puen3 1633 olnpour la lod epelaua2 ep!~es ap legas el 'Z~A ns v

-u alueiJ1 -su03 eun lod sopeurwaiap uauay .1eluo3 ylaqap anb sos~nd so? -O/I 31d~0~3.z~ e1 ap lopelaua3 la lod epeuo!:,.~odo.~d sa e:,!~de al as anb legas e1 apuop 'sowaíxa soslndur! ap .~op~luo:, opow ua ylereq -eli opow aisa e oper3ose I~~\IA 13 -u~~~~.Iz~uIo~ OPOW ua 1d33 o[np?ur [E le@qm) la:,~y ala'nb as

.soslnd ap mny3 -ue ap u~!:,e~npour/u~~~e~ed~03/e~nide:, :salq!sod olua!ureuo!:,unj ap sopour sal1 sol soldura. sop uo:, ~e~isour e eloye soure~ '633 solnpour sol e a~uayuxa3uo3 vyoal e1 oisl~ ey as 'olni/rde:, aisa ug

Page 120: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 113

RESET 4

Figura 6.8. 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- terrupción son complejos, sus organigramas mostrarán los llamamientos a subrrutinas y éstas debe- rán especificarse en otros organigramas.

La Figura 6.10 muestra el organigrama de tratamiento de interrupción. El primer recuadro INTER no se traduce en ninguna instrucción; representa la entrada a la ruti-

na. La salida, asimismo, también debe ser única. Siempre que se habilite más de una interrupción, el primer paso será 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 hará cambiar de estado al LED conectado en RBO, y la interrupción provocada cuando el comparador del módulo CCPl detecta la igualdad del TMRI con el valor programado. En ambos casos se debe poner a O el señalizador de interrupción antes de volver.

Page 121: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

114 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 6.9. Organigrama del cuerpo principal del ejercicio propuesto.

Figura 6.10. Organigrama de la rutina de tratamiento de interrupción.

Page 122: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 115

Programa comentado

El programa correspondiente al enunciado dado queda como sigue:

Page 123: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

116 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Prueba del programa

Para la prueba del programa vamos a hacer uso de los sistemas Micro'PIC Trainer y Micro'PIC IIO. La grabación del microcontrolador se realizará como en capítulos anteriores. Además, deberá te-

nerse en cuenta:

Page 124: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 117

Figura 6.1 l . Fi)tog~.c!/ltr d c . 1 prn,qr-trnzrr crl c:jcc,~rc,icí/~.

La Figura 6.1 1 muestra la conexión de las tar&jeta\ Mi(*/ -o 'P/C / /O y Miu-o'P/C T/-ai/lcl. para la ejecución del prograina.

De lo\ dos LED encendido\ en el Mic-lw'PIC Tl-uillrl-, uno de ellos e \ el de conexión de la placa y el otro el que bascula cuando el TMRO \e de5borda. El poliscopio, por su parte, mue\tra lo\ p~il- 50s aplicado\ por el generador del M i c ~ o ' P l C / /O al TMR l.

Enunciado segundo

Los módulos CCPI y CCP2 pueden trabajar sitnultríneamente en diferente modo. En e\te ejercicio vamos a hacer trabajar al módulo CCP2 en modulación de anchura de pulsos para el gobierno de un inotor, y al módulo CCPI en comparación para controlar el desplaraiiiici-ito de dicho niotor. El TMR 1 actuará en modo contador de eventos externos, donde lo\ impulso\ serrín geiierado\ por el en- coder a\ociado al motor.

La sccucncia que \e pretende realizar con este prograina e\:

l." Arrancar el motor suavemente en el sentido horario hasta llegar a la velocidad máxima. 2." Girar en sentido horario tantos pasos como determine la constante HORARIO^^. 3." Parar un segundo. 4." Girar en sentido antihorario tantos pasos como indique la constante ~~ANTIHORARIO~~, a la velo-

cidad que determinen los interruptores (RA4-RAO). 8. 5." Decrecer la velocidad hasta llegar a detener el motor: 6." Parar un segundo. 7." Vuelta al paso 1 .".

Page 125: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

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:

de activación del motor. para controlar el sentido de/ giro,

Organigrama

Los pasos a realizar tras configurar los registros adecuadamente se pueden ver como una secuencia de acciones. En este caso, cada recuadro se corresponderá 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 máximo. En esa velocidad, el motor girará un número dado de pasos. Dichos pasos serán pul- sos que el encoder acoplado al motor introduce en la patita RCO/Tl CKI del TMRI.

GENERADOR MICRO'PIC 110

ON IN1 IN2 MOTOR

MICRO'PIC 110

Figura 6.12. Esquema de conexionado del PIC con el motor y el encoder.

Page 126: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 119

Figura 6.13. Organigrama del segundo ejercicio propuesto.

Se parará el motor de golpe y permanecerá así durante un segundo. A velocidad marcada por unos interruptores el motor volverá a girar, esta vez en sentido contrario al anterior y, por ultimo, por la misma PWM se irá decrementando la velocidad del motor hasta pararlo durante otro segundo. Du- rante el programa, además, se va a controlar el estado del perro guardián, introduciendo instruccio- nes de borrado para que resetee el PIC en el caso de que se produzca un fallo en el sistema.

Page 127: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

120 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Programa comentado

El programa para este segundo enunciado queda:

Page 128: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 121

Page 129: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

122 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 130: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN DE ANCHURA DE PULSOS 123

Prueba del programa

Como en el ejercicio anterior, se usan los sistemas Micro'PIC Trainer y Micro'PIC 110, teniendo en cuenta que se deben conectar las líneas 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, don- de se puede apreciar la modulación aplicada al motor en el poliscopio.

Figura 6.14. Fotografia del montaje propuesto.

Page 131: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

124 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

La Microbótica es una tecnología derivada de la Robótica 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 día como co- cinar, limpiar, controlar parámetros como la temperatura del agua y la calefacción, lavar, conducir, vigilar, transportar, y muchos más.

La gran función de los microbots es resolver estas pequeñas tareas con rapidez y precisión: ex- plorar, medir y tomar el valor de magnitudes, cuidar jardines, recolectar frutos, vigilar zonas de se- guridad, acompañar a los visitantes, transportar todo tipo de objetos, guiar a invidentes, ayudar a mi- nusválido~, trabajar en entornos peligrosos como los radioactivos o submarinos, y hasta ser excelentes compañeros.

En la Figura 6.15 se presenta al microbot que en 1997 exploró el planeta Marte.

Figura 6.15. Fotografia del Sojourner, que la NASA utilizó para explorar Marte.

Page 132: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACIÓN Y MODULACIÓN 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 matrices. Entre los microcontroladores más usados en España destacan los PIC y los Motorola.

El armazón debe soportar rígidamente a todos los componentes del microbot. La estructura pue- de ser mecánica, plástica o hecha a medida.

Los motores más usados en Microbótica son los de corriente 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 tecnología 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. Fotografa de un servomotor de corriente continua modelo S303 de Futaba.

Page 133: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

126 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 6.17. Fotografía del microbot PICBOT-2 controlado por un PIC16F84.

El armazón del PICBOT-2 está hecho a medida a base de placas de metacrilato trasparente, que unidas mediante tornillería especial conforman una sólida estructura donde se sitúan los motores, los sensores y la tarjeta MSx84.

Las posibilidades de la tarjeta MSx84, basada en un PIC16F84, 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:

Page 134: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULOS DE CAPTURA, COMPARACI~N Y MODULACI~N DE ANCHURA DE PULSOS 127

Figura 6.18. Fotografa de un momento del Certamen de Robots Rastreadores celebrado en la Universidad de Deusto en 1999.

Sólo la imaginación de los ingenieros que proyectan y programan estas bestias inteligentes cons- tituye el límite de sus posibilidades.

Prueba de su importancia y su proyección de futuro en las facultades de Ingeniería Informática y Electrónica de todo el mundo es la organización de Certámenes anuales en los que participan los ingenios más inverosímiles. (Figura 6.18.)

Page 135: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Los microcontroladores PIC 16F87x poseen un conversor A/D de 1 O bits de resolución y 5 canales de entrada en los modelos con 28 patitas (PIC16F87316) y 8 canales en los que tienen 40 patitas (PIC 16F874/7).

La resolución que tiene cada bit procedente de la conversión tiene un valor que es función de la tensión de referencia Vref, de acuerdo con la fórmula siguiente:

Resolución = (Vre f+ - Vre f-) / 1.024 = Vref / 1.024

Así, por ejemplo, si la Vref+ = 5 VDC y la Vref- es tierra, la resolución es de 4,8 mV/bit. Por tanto, a la entrada analógica de O V le corresponde una digital de 00 0000 0000 y para la de 5 V una de 1 1 1 1 1 1 1 1 1 1. La tensión de referencia determina los limites máximo y mínimo de la tensión ana- lógica que se puede convertir. El voltaje diferencial mínimo es de 2 V.

A través del canal de entrada seleccionado, se aplica la señal analógica a un condensador de cap- tura y mantenimiento (sumple nrzd hold) y luego se introduce al conversor, el cual proporciona un resultado digital de 10 bits de longitud usando la técnica de <<aproximaciones sucesivas>>.

El conversor A/D es el único dispositivo que puede funcionar en modo Reposo (SLEEP), para ello el reloj del conversor deberá conectarse al oscilador RC interno.

En los PIC 16F87316 los 5 canales de entrada están soportados por las 5 líneas multifunción de la Puerta A. En la configuración de dichas líneas habrá que expresar la función que realizan.

La tensión de referencia puede implementarse con la tensión interna de alimentación VDD. o bien, con una externa que se introduce por la patita RA3/AN3/VKkF+, en cuyo caso la polaridad ne- gativa se aplica por la patita RA2/AN2/VREF-.

7.2. REGISTROS DE TRABAJO

El funcionamiento del conversor A/D requiere la manipulación de cuatro registros:

Page 136: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

130 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

1 ." ADRESH: parte alta del resultado de la conversión. 2.' ADRESL: parte baja del resultado de la conversión. 3." A DCONO: registro de Control O. 4." ADCON 1: registro de Control 1.

En la pareja de registros ADRESH:ADRESL se deposita el resultado de la conversión, que al es- tar compuesta por 10 bits, sólo son significativos 10 de los bits de dicha pareja.

El registro ADCONO controla la operación del C A/D, mientras que el ADCONI sirve para con- figurar las patitas de la Puerta A como entradas analógicas o E/S digitales. (Figura 7.1 .)

REGISTRO ADCONO

7 o REGISTRO ADCONl

7 O

Figura 7.1. A.sigriac.ión de los bits de los 1-c~gistros de conti-01 del C AID ADCONO y ADCONl.

Los bits ADCON0<7:6> sirven para seleccionar la frecuencia de reloj que se emplea en la con- versión, con la siguiente asignación:

Se designa como TAD el tiempo que dura la conversión de cada bit y en el caso de trabajar con valores digitales de 10 bits, se requiere un tiempo mínimo de 12.TAD. El valor de TAD se selecciona por software mediante estos bits (ADCS 1 :ADCSO) y en los PIC16F87x nunca debe ser menor de 1,6 microsegundos.

ADCSl :O

00

O 1

I O

11

FRECUENCIA

Fos J 2

Focd8

FosJ32

FKC (procede del oscilador RC interno)

ADCSl :O

o0

O1

1 O

1 1

T AD

2 *Tctsc

8 *Tose

32*Tosc

Oscilador RC interno en el C A/D

Page 137: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 131

Figura 7.2. Tuhlu quo pl.cscntu los i~aloru.\ quc tonzu TAL>, ticn~po de c-oiii~esión pol- hit, seg~l i Iu p/wgrwt~irr- cicírz do ADCSI :ADCSO y 1u ji.ccuct7c.i~ tle fililc.ion~rn~icnto dc.1 ínic*t.oc~ont~vlacIo~-. Pulu c.1 ( , o t ~ - i9en\ol- AID c k lo,\ PlClhF87.~ el \ ~ r l o ~ - nlírlin~o de T I » e,\ (Ir / ,6 n~ic~~w.\c~~y~lr~clo.s.

En la Tabla de la Figura 7.2 se presentan los diversos valores que toma Ti\,, según los bits ADCS 1 :ADCSO y la frecuencia de trabajo del microcontrolador. Así, por ejemplo, si dichos bits to- man el valor 00, TAL) = 2*TOSC y si el PIC funciona a 20 MHz resulta que TAL) = 100 ns, tiempo no válido. Si la frecuencia es de 5 MHz, TAD = 400 ns, valor que tampoco es válido. Si la frecuencia es de 1,25 MHz, TAD = 1,6 microsegundos, valor justamente válido. Finalmente, para una frecuencia de 333,33 KHz, TA1, = 6 microsegundos.

Los bits CHS2-0 seleccionan el canal por el que se introduce la señal analógica a convertir, de acuerdo con el siguiente código:

SELECCI~N T~~ FRECUENCIA DE TRABAJO

T AD

2 * T m

8*To,c

32*Tuv

RC

El bit GO/DONE# es el «bit de estado de la conversión». Poniéndolo a 1 se inicia la conversión y mientras esté a 1 está realizándose dicha operación. Cuando GO/DONE# pasa a 0 confirma el fi- nal de la conversión y la puesta del resultado en la pareja de registros ADRESH:L.

El bit ADON sirve para activar el C A/D poniéndolo a 1 y para inhibir su funcionamiento po- niéndolo a 0.

ADCSI :ADCSO

00

O 1

1 0

11

CH2-0

O00

001

01 O

O1 1

1 00

1 01

11 O

11 1

7.3. ESTRUCTURA INTERNA Y CONFIGURACIÓN DEL C A/D

333,33 kHz

6 P5

24 ps

96 ps

2-6 ps

CANAL

Canal O (RAOIANO)

Canal 1 (RAl /ANl )

Canal 2 (RA2/AN2)

Canal 3 (RA3/AN3)

Canal 4 (RA5/AN4)

Canal 5 (REOIAN5). Los PlCl6F87x de 28 patitas no tienen este canal

Canal 6 (RElIANó). Los PlCl6F87x de 28 patltas no tienen este canal

Canal 7 (REZ/AN7). Los PICI 6F87x de 28 patitas no tienen este canal

En la Figura 7.3 se ofrece un esquema del conexionado del C A/D con las patitas que soportan los canales de entrada y las de la tensión de referencia.

1,25 MHz

1,6 ps

6,4 ps

2,6 p5

2-6 ps

20 MHz

1 00 qs

400 qs

1,6 ps

2-6 ps

5 MHz

400 qs

1 ,6 qh

6,4 ps

2-6 ps

Page 138: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

132 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

CONVERTIDOR

Figura 7.3. Estructura del conexionado del C AID.

El bit de menos peso (ADFM) del registro ADCONl selecciona el formato del resultado de la conversión. Si vale 1, el resultado está justificado en el registro ADRESH, que tiene sus 6 bits de más peso a O; mientras que si vale O la justificación se realiza sobre el registro ADRESL, que tiene sus 6 bits de menos peso a O. Esto significa que los 16 bits que forman la concatenación de ADRESH:ADRESL unas veces tiene a O los 6 bits de más peso y otras los 6 bits de menos peso (ali- neación a la derecha o a la izquierda).

Page 139: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 133

ADFM = 1 ADFM = O

ADRESH ADRESL ADRESH ADRESL

JUSTIFICACI~N A LA DERECHA JUSTIFICACI~N A LA IZQUIERDA

Figura 7.4. Alineamiento del resultado digital de 10 bits de la conversión a la izquierda y a la derecha.

En la Figura 7.4 se muestran las dos formas posibles del alineamiento del resultado sobre la pa- reja de registros ADRESH:ADRESL.

Los restantes cuatro bits (PCFG3-O) de ADCONl se usan para configurar las patitas de los ca- nales de entrada al conversor como analógicas o como E/S digitales, de acuerdo con la tabla de la Figura 7.5.

Figura 7.5. Tabla que determina las patitas del PIC que actúan como entradas analógicas o como EIS di- gitales, según el valor de los 4 bits de ADCONl <PCFG3-O>.

Page 140: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 141: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 135

SELECCIONADO

Figura 7.6. Organigrama de la operación del conversor AID.

Page 142: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

136 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

7.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL CONVERSOR ANAL~GICOIDIGITAL

En la Figura 7.7 se presenta una tabla que recoge todos los registros que participan en la programa- ción del C A/D.

Figura 7.7. Tabla que ofrece la distribución de los bits de los registros que intervienen en la programación del C AID.

Page 143: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 137

PROGRAMAR PIC ES FÁCIL

ADQUISICIÓN DE VALORES CON LOS CONVERSORES A/D

De los recursos contenidos en el PIC16F87x, quizá el conversor A/D sea del que más aplicaciones estamos acostumbrados a ver en nuestra vida diaria. Sensores de temperatura, luz, humedad, hu- mo ..., son valores que nos interesa monitorizar pero que necesitan ser traducidos para ser entendi- dos por el sistema de control, labor que realizan los conversores A/D. La tarea de conversión es siempre igual, sea cual sea el sensor utilizado. Por ello, vamos a realizar un ejercicio con uno de los sensores disponibles en el Micro'PIC IIO, teniendo en cuenta que lo que variará en el programa al cambiar de sensor será el tratamiento que se haga del valor una vez convertido.

Enunciado

Se quiere controlar el valor de la temperatura, de modo que cuando pase por debajo de un valor pre- fijado se active un relé que emula la puesta en marcha de la calefacción y cuando sube por encima de un valor máximo prefijado active un motor a modo de ventilador. Además, por una pantalla LCD se irá visualizando dicha temperatura.

Esquema eléctrico

En el Micro'PIC 110 el sensor de temperatura se aplica al canal 4 (patita RA5/AN4) del conversor A/D. La tensión de referencia para el conversor puede ser la propia del PIC (5 V) o, como vamos a hacer en este ejercicio, de 2,5 V. En este último caso, dicha tensión se introduce por RA3/VREF+, el relé 1 está conectado a RCO y el motor a RC1 y RC2. El LCD ocupa las líneas RBO-RB7 para da- tos y RAO-RA2 para control. (Figura 7.8.)

Organigrama

Como se muestra en el organigrama de la Figura 7.9, tras configurar las líneas adecuadamente se ac- tivará el conversor, y se captará un nuevo valor cada segundo, aproximadamente. Se sabrá cuándo se ha producido el fin de la conversión mirando, por ejemplo, el valor del señalizador ADIF, que se pondrá a ' 1 ' cuando este hecho ocurra. En el caso de hacer el tratamiento mediante interrupciones, este bucle sería vacío y no se haría nada más en el programa principal; el resto formaría parte de la rutina de tratamiento de interrupción.

Page 144: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

138 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

1 Vss Vdd Vo RS R/W#E DO DI D2 D3 D4 D5 D6 D7 . . . . -

7 8 9 10 11 12 13 14

CRISTAL 4 Mhz

l I l I I V,,,+ SENSOR MICRO'PIC 110

RELÉ MOTOR MICRO'PIC 110

Figura 7.8. Esquema eléctrico del ejercicio propuesto.

Page 145: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 139

ACTIVAR CONVERSOR 9 ESPERAR 1 SG I

ViSUALlZAR RESULTADO EN LCD

I

APAGAR VENTILADOR

Figura 7.9. Organigrama del ejercicio propuesto.

El encendido y apagado de los sistemas de ventilación y calefacción dependerá de los valores máximo y mínimo fijados como constantes en el programa principal. Una ampliación interesante se- ría dejar que estos valores los introdujera un usuario externo mediante, por ejemplo, un teclado y que, además de lo ya controlado, se mostrara la temperatura existente mediante unos displays de 7 segmentos o incluso en una pantalla LCD.

Page 146: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

140 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Programa comentado

El programa de este ejercicio es casi una traducción inmediata del organigrama.

Page 147: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 141

Page 148: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

142 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 149: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 143

Page 150: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

144 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Prueba del programa

En esta ocasión, también se van a utilizar las tarjetas Micro'PIC 110 y Micio'PIC Trainer. Esta úl- tima va a tener la misión de alojar el microcontrolador en el zócalo de 28 patitas y de mostrar la tem- peratura en el LCD. La configuración de líneas que hay que tener en cuenta es:

Page 151: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 145

VISUALIZACIÓN DE VALORES POR PANTALLAS LCD

Las pantallas alfanuméricas de cristal líquido, denominadas abreviadamente LCD, constituyen uno de los visualizadores de mensajes más económicos, prácticos y eficaces.

Las controladoras de LCD son tarjetas diseñadas para gobernar la presentación de mensajes, con la colaboración de un programa que facilita su manejo.

La controladora LCD-CON

En este tema, describimos la controladora «LCD-CON», que es capaz de gobernar pantallas de has- ta 80 caracteres en cualquiera de las diferentes configuraciones de líneas y caracteres existentes en el mercado. También puede controlar LCDs que dispongan de luz de fondo (backlight). En la Figu- ra 7.10 se ofrece una fotografía de la LCD-CON fabricada por Micr-osystems Engineel-ing.

Figura 7.10. Fotografía de la tarjeta controladora de LCD, basada en un PIC16C73.

Page 152: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

146 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Para preparar los mensajes a presentar en la LCD a través de la controladora, existe un software que permite preparar y realizar todas las presentaciones desde un PC y que se escapan de nuestra ex- posición.

Principio de funcionamiento

El control interno de la pantalla LCD es trasparente para el usuario. La controladora LCD-CON, que actúa como Esclava, se conecta mediante dos líneas con cualquier sistema maestro capaz de comuni- carse en serie vía RS232, como puede ser un PC, un terminal, un microcontrolador, etc. (Figura 7.1 1 .)

El maestro comienza enviando una serie de instrucciones/comandos que son interpretados por la LCD-CON, la cual actúa directamente sobre la pantalla LCD, ejecutando los efectos de visualiza- ción que recibe.

Tras la ejecución de una instrucción, la LCD-CON envía al maestro un código de reconocimiento que debe ser interpretado por éste para la transmisión de una nueva instrucción.

Existen dos versiones de controladoras LCD-CON. La LCD-CON1 se gobierna con conexión permanente (on-line) con el maestro. Recibe y ejecuta secuencialmente todas las instrucciones que le va enviando el maestro. Esta tarjeta está especialmente indicada para aplicaciones en las que se necesita un control rápido y fácil de distintas funciones de visualización en la pantalla LCD.

El modelo LCD-CON2, dispone, además de lo propio del LCD-CON1, de una memoria EE- PROM que va almacenando todas las instrucciones según se van recibiendo (modo programación). Así, puede almacenar un programa que puede ejecutar autónomamente, sin estar conectado al maestro. Por este motivo, este producto está indicado para sistemas autónomos de presentación de mensajes.

MASTER

Figura 7.11. Conexionado de la tarjeta LCD-CON con el maestro y con la pantalla LCD.

Page 153: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 147

Características generales

A continuación, se muestra el aspecto del software utilizado con la controladora de LCD y se citan las características más relevantes.

Figura 7.12. Software que acompaña a la controladora LCD-CON para su manejo.

Page 154: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

148 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Descripción técnica

Vamos a mostrar la serigrafía de la placa controladora LCD-CON con la distribución de los distin- tos componentes, resaltándose los elementos más importantes.

Conector de alimentación

Es el conector a través del cual se aplica la tensión de alimentación a la controladora LCD-CON. Di- cha tensión puede ser alterna o continua y de un valor de 12 V. La propia controladora dispone del circuito de rectificación, filtrado y estabilización.

Es posible, anulando el circuito de estabilización, alimentar el sistema aplicando una tensión de +5 Vcc entre la patilla central (-) y la derecha (+) de dicho circuito.

Potenciómetro de contraste

Mediante este potenciómetro, se aplica a la pantalla LCD una tensión variable de entre O y +5 Vcc. Con dicha tensión se consigue ajustar el contraste de los caracteres en la pantalla, según las necesi- dades del usuario.

Microcontrolador PIC 16C73

Es el zócalo que aloja el microcontrolador PICl6Cxx grabado con el software diseñado al efecto por Microsystems Engineering y que gestiona el funcionamiento general de la tarjeta controladora de LCDs. Por un lado se encarga de las comunicaciones vía serie RS232 con el maestro, recibiendo las distintas instrucciones.

Esas instrucciones son posteriormente interpretadas para actuar directamente sobre la pan- talla LCD que se está gobernando, produciendo sobre la misma distintos efectos de visualiza- ción.

De esta manera, el usuario no tiene que ocuparse del funcionamiento interno del LCD ni de có- mo se le programa. Basta simplemente conocer las distintas instrucciones de control diseñadas al efecto para poder sacar el máximo provecho a las posibilidades de las pantallas LCD.

LCD Interface 1

Este conector de simple hilera (SIL) permite la conexión directa con pantallas LCD cuyo conector sea del mismo tipo que éste.

Son 16 las señales entre las que se encuentran 5 líneas de diversas alimentaciones, 3 líneas de control del LCD y 8 líneas de datos.

La distribución de estas señales es común en todos los modelos de pantalla LCD analizados en los laboratorios de Microsystems Engineering, correspondientes a modelos de las marcas WINTEK, NORITAKE y SHARP.

Algunos modelos que no disponen de luz de fondo (backlight), las patitas designadas para ese uso, o bien no están disponibles, o se encuentran sin conexión interna.

Page 155: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 149

Las controladoras LCD-CON de Microsystems Engineering disponen de un reloj/calendario en tiempo real alimentado por batería de NiCd.

Dicho reloj está formado por el dispositivo PCF8583 de Philips. Este dispositivo controlado por un cristal de cuarzo de 32.768 KHz es capaz de mantener en constante funcionamiento diferentes funciones horarias y de calendario. Dispone también de 250 bytes de memoria RAM estática que, al alimentarse mediante batería, resulta no volátil. La LCD-CON la utiliza para guardar una serie de parámetros internos.

Gracias a la presencia de este dispositivo, la controladora LCD-CON es capaz de realizar sobre la pantalla LCD, diferentes presentaciones en las que se incluye presentaciones de hora y fecha.

Memoria de programa

La versión LCD-CON2 de la controladora tiene capacidad para almacenar las distintas instruccio- nes que se van recibiendo de manera que puedan, posteriormente, ser ejecutadas de forma autóno- ma e independiente del Maestro (off Line).

Un conjunto de instrucciones forma un programa. Dicho programa se almacena en los disposi- tivos 24C65 (U2, U3 y U4). Cada uno de éstos tiene capacidad para guardar 8 Kbytes de inforrna- ción, con lo que la capacidad total disponible es de 24 KB.

Estos dispositivos consisten en memoria del tipo EEPROM. Se trata de una memoria no volátil pero reutilizable. Su fabricante garantiza 100.000 ciclos de borrado y/o escritura de la misma.

Su empleo en la controladora LCD-CON2 permitirá al usuario grabar programas de manejo de la pantalla LCD de forma no volátil, aunque modificable en cualquier momento.

Conector RS232

Permite la conexión de la controladora con el maestro mediante una comunicación serie RS232 es- tándar.

A través de él, el maestro envía las instrucciones que la controladora, tras interpretarlas, las al- macena en memoria y10 ejecuta.

De esta forma, la conexión entre una pantalla LCD y el maestro que la gobierna queda reducida a la mínima expresión. Tan sólo se emplean tres conductores. El pin 3 de este conector J5 se co- rresponde con la señal de recepción de la controladora. Por ella se reciben las instrucciones trans- mitidas por el maestro.

El pin 2 de J5 corresponde a la línea de transmisión de la controladora. Cada vez que ésta eje- cuta una instrucción, se transmite un carácter de reconocimiento que, cuando sea recibido por el maestro, permitirá a éste actuar en consecuencia.

Finalmente, el pin 5 de J5 es la señal de tierra. Ésta debe ser común con la señal de tierra del maestro.

Como se ha comentado con anterioridad, la figura del maestro que gobierna la controladora pue- de estar representada por cualquier sistema capaz de realizar una comunicación RS232 estándar. Es- to incluye terminales, microcomputadores, PCs, microordenadores, microcontroladores o cualquier otro sistema informática en general, con aplicaciones en las que sea necesario una representación vi- sual y donde la pantalla LCD y su controladora deba actuar como sub-sistema de dicho maestro.

Page 156: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

150 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

La batería

Se trata de una batería recargable de NiCd que permite mantener constantemente alimentado al re- loj/calendario de la controladora, así como ciertos parámetros constantes del sistema.

El circuito de carga lo forman un diodo y una resistencia. Cuando la controladora está conecta- da a una tensión externa, la batería se va cargando a través de dicho circuito de carga.

Cuando se desconecta la tensión de alimentación externa, es la batería la que aporta la tensión necesaria de 3,6 V para mantener activo dicho reloj/calendario.

El reset

Se trata de un micropulsador situado en la parte inferior de la tarjeta controladora. Permite al usua- rio reiniciar el sistema si en alguna ocasión se bloquea o cada vez que, mediante los switches de con- figuración, se cambie el modo de trabajo de la controladora.

Configuración

Se trata de un conjunto de cuatro micro-switches que permiten, por un lado, establecer los baudios de la comunicación serie entre la controladora y el maestro (SWI-3 y SW1-4) y, por otro, los dis- tintos modos de trabajo existentes (SW 1 - 1 y SW 1-2).

Siempre que se cambia de modo de trabajo, es necesario reinicializar todo el sistema para que se adopte el nuevo modo recién seleccionado. Para ello, basta con pulsar el pulsador de Reset SW2.

Se cita a continuación una breve descripción de cada uno de los modos de trabajo posibles:

Page 157: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL CONVERSOR A/D 151

Ext. input

La controladora de Microsystems Engineering en su versión LCD-CON2 permite la gestión de has- ta ocho señales de entrada digitales que se aplican mediante el conector Ext.Input (54).

Es posible, por tanto, la interacción entre dichas señales de entrada y las diferentes presentacio- nes sobre la pantalla LCD, pudiéndose establecer condiciones de visualización en base al estado 1ó- gico de esas señales.

Esto es especialmente útil cuando las instrucciones a ejecutar por la controladora tienen una es- tructura de programa almacenado en la EEPROM (modo ejecución).

Existen instrucciones del tipo «Salto Condicional», que permiten desviar el flujo de la ejecución de un programa en base al estado lógico de esas ocho entradas. Con ellas se pueden establecer has- ta 255 condiciones de salto según las combinaciones binarias presentes en las mismas.

Las señales se muestrean sólo en el momento de la ejecución de la instrucción de salto condi- cional correspondiente, por lo que deben mantenerse activas hasta llegar a la ejecución de dicha ins- trucción. Es por ello que existe una novena señal de entrada llamada STB. Cuando se activa (por pul- so bajo) a modo de <&robe», la controladora cancela la ejecución de toda instrucción que tuviera en ese momento y reinicia la ejecución desde la primera instrucción del programa. Es tarea del usua- rio colocar, al principio de su programa, las instrucciones de salto condicional, para que sean reco- nocidas y se actúe en consecuencia, justo después de llegar la señal STB.

Realmente, la señal STB provoca en la controladora de LCDs una reacción similar a la que se produce cuando se pulsa el pulsador RESET (SW2), pero sin mediación del usuario.

LCD Interface 2

Este conector de doble hilera (DIL) permite la conexión directa con pantallas LCD cuyo conector sea del mismo tipo que éste. Sus conexiones son similares a J4 y ambos están en paralelo.

Son 16 las señales entre las que se encuentran 5 líneas de diversas alimentaciones, 3 líneas de control de la LCD y 8 líneas de datos.

La distribución de estas señales es común en todos los modelos de pantalla LCD analizados en los laboratorios de Microsystems Engineering, correspondientes a modelos de las marcas WINTEK, NORITAKE y SHARP.

Algunos modelos que no disponen de luz de fondo (backlight), las patitas designadas para ese uso, o bien no están disponibles, o se encuentran sin conexión interna.

Page 158: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

. 7 4 , . B

. < . ,

S i 4 < d a ' ;"

M ~ D U L O DE COMU~~;JICACI~N' '

, SERIE SÍNCRONA: MSSP 2 5 . r -

. A *....

* r I - < .

d r

La comunicación serie es una forma muy apreciada de transferir datos digitales entre sistemas y cir- cuitos integrados, dada la reducida cantidad de líneas que precisa.

En el PIC16F84, cuando se quería comunicarle en serie con otro dispositivo, había que destinar varias de sus patitas generales de E/S a soportar las líneas de datos y de reloj. También había que de- sarrollar un programa específico para soportar el protocolo de comunicación.

En los PIC16F87x, Microchip ha implantado en el silicio de sus chips el módulo MSSP (Master Synchronous Serial Port), que proporciona un excelente interfaz de comunicación de los microcon- troladores con otros microcontroladores y diversos periféricos, entre los que destacan las memorias EEPROM serie, los conversores A/D, los controladores de displays, etc. De esta forma, el usuario dispone de algunas patitas de la Puerta C, que correctamente programadas sirven para manejar di- rectamente la comunicación serie. Además, el módulo MSSP admite dos de las alternativas más usa- das en la comunicación serie síncrona:

l . " SPI (Serial Peripheral Interface). 2." I2C (Inter-lntegrated Circuit).

La comunicación serie en modo SPI la utilizan principalmente las memorias (RAM y EEPROM) y utiliza tres líneas para llevarla a cabo. En el modo 12C sólo se emplean dos líneas y, recientemen- te, ha conseguido una importante implantación en la comunicación de circuitos integrados, exis- tiendo en el mercado todo tipo de periféricos capaces de trabajar con este protocolo (memorias, con- troladores, relojes, conversores, etc.).

Page 159: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

154 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

El funcionamiento del módulo MSSP es muy sencillo. En transmisión, el byte que se quiere transmitir se carga en el registro SSPBUF a través del bus de datos interno y automáticamente se traspasa al registro SSPSR, que va desplazando bit a bit el dato, sacándolo ordenadamente al exterior al ritmo de los impulsos de reloj. En recepción, los bits van entrando al ritmo de reloj por una patita y se van desplazando en el SSPSR hasta que lo llenan, en cuyo momento la in- formación se traspasa al SSPBUF, donde queda lista para su lectura. Este doble almacenamien- to del dato recibido permite iniciar la recepción de un nuevo dato antes de que se haya leído el Último.

Cuando se han recibido 8 bits durante la recepción en SSPSR, se traspasa dicha información a SSPBUF y entonces el bit señalizador BF (Buffer Full) se pone a 1, al igual que el flag de inte- rrupción SSPIF. Cualquier escritura en el SSPBUF se ignora durante una transferencia de infor- mación y se señaliza poniendo a 1 el bit WCOL, que advierte de este tipo de colisiones. Recae en la responsabilidad del programador pasar el bit WCOL a O una vez completada la escritura en SSPBUF.

En la Figura 8.1 se ofrece un esquema básico sobre la estructura interna del módulo MSSP.

SALIDA DE BITS DE DATOS

MSB

ENTRADA DE BITS DE DATOS

Figura 8.1. Estructura básica del módulo MSSP con los dos registros de trabajo (SSPBUF y SSPSR).

Page 160: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE S ~ C R O N A : MSSP 155

8.2. MODO SPI

Permite la transferencia de datos de 8 bits en serie, que pueden ser transmitidos y recibidos de for- ma síncrona y simultánea. Para el establecimiento de la comunicación se utilizan tres líneas:

Puede ser necesaria utilizar una cuarta línea de control más cuando el PIC que se utiliza trabaja en modo esclavo. En este caso, la patita SS# (selección de esclavo) se debe activar a tierra. En la Fi- gura 8.2 se ofrece un esquema de un sistema intercomunicado en modo SPI en el que un PIC actúa como maestro y otros dos como esclavos. Las 4 líneas que utilizan se corresponden con las patitas multifunción RC3/SDO, RC4/SDI, RCS/SCK y RAS/SS#.

La conexión habitual del PIC maestro se suele realizar con circuitos de memoria con el objeto de ampliar su capacidad. Como se aprecia en la Figura 8.2, la línea SDO del maestro se correspon- de con las SDI de los esclavos y la línea SCK por la que circulan los impulsos de reloj siempre par- te del maestro, que es el encargado de generar y controlar la sincronización.

Si, por ejemplo, actuase como esclavo un chip de memoria RAM de 256x8 de tamaño, la comu- nicación SPI la iniciaría el maestro enviando por la línea SDO un byte con la dirección de la me- moria a acceder, seguido de otro byte que especificaría la operación (lectura/escritura) y un tercero que contendría el dato a escribir en caso de que se tratase de una operación de escritura. En el caso de que se tratase de una lectura, el maestro, después de enviar los 2 bytes iniciales, quedaría a la es- pera del byte que sacaría el esclavo por su línea SDO y que se introduciría al Maestro por su línea SDI. Si fuese una memoria con más posiciones, la dirección se tendría que especificar con más de un byte.

Cuando el PIC trabaja como maestro hay que programar la línea RC3/SDO como salida, la línea RC4/SDI como entrada y la línea RCS/SCK también como salida. Si actuase como esclavo, la línea RCSISCK debería configurarse como entrada y la RAS/SS# debería conectarse a tierra.

SDO

SDI

SCK

Figura 8.2. Comunicación SPI entre un PIC maestro y otros dos esclavos

Page 161: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

156 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

En la Figura 8.3 se muestra la estructura del módulo MSSP cuando funciona en modo SPI.

DESPLAZAMIENTO

- - - - - - - - o

' D i F E Z _ 1 1 , -

.

SALIDA TMR2 / 2

DATO EN SSPSR A WRX

BIT DE DIRECCIÓN DE DATO

Figura 8.3. Estructura interna del módulo MSSP cuando trabaja en modo SPI.

Page 162: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 157

Al comenzar el funcionamiento en el modo SPI, es necesario establecer las condiciones de tra- bajo programando adecuadamente los bits <5-O> del registro SSPCON y los <7:6> del registro SSPSTAT, para determinar las siguientes especificaciones:

En la Figura 8.4 se presenta la distribución y nomenclatura de los bits del registro SSPSTAT, que ocupa la dirección 94h y es uno de los que seleccionan las características mencionadas.

Se describe la misión de tres de los bits del registro SSPSTAT que participan en la configuración del modo SPI. También estos bits participan en la configuración del modo 12C junto a los restantes, que se estudiarán al presentar dicho protocolo.

En la Figura 8.5 se presenta la distribución de los bits del registro SSPCON, que está ubicado en la dirección 14h y sirve para programar e1 módulo MSSP en los dos modos que puede trabajar.

REGISTRO SSPSTAT

7 O

Figura 8.4. Estructura interna del registro SSPSTATpara la configuración del modo SPI e 12C

Page 163: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

158 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

REGISTRO SSPCON

7

Figura 8.5. Estructura interna del registro SSPCON

Page 164: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 159

El registro SSPSR no es direccionable directamente y en los programas hay que acceder a él a través del SSPBUF, tal como se expone en el siguiente programa de transferencia de información.

8.4. MÓDULO MSSP TRABA JANDO EN MODO 12C

El protocolo de comunicación serie I2C fue desarrollado por Philips para cubrir sus propias necesidades en la implementación de diversos productos electrónicos que requerían una elevada interconexión de cir- cuitos integrados. El protocolo 12C (Inter-Integrated Circuit) utiliza Únicamente dos líneas para la transfe- rencia de información entre los elementos que se acoplan al bus. Una de dichas líneas se dedica a sopor- tar los datos, es bidireccional y se llama SDA; la otra lleva los impulsos de reloj para la sincronización, es unidireccional y recibe el nombre de SCL. Los impulsos de reloj siempre los genera el maestro y tienen la función de sincronizar las transferencias con todos los esclavos colgados a las dos líneas. (Figura 8.6.)

SDA

SCL

Figura 8.6. El maestro se conecta con todos los esclavos en el bus 12C con sólo dos líneas. Por SDA circu- lan los datos en serie y por SCL el maestro envía los impulsos de reloj que genera.

Page 165: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

( ' ~ ' 8 v m % ~ ~ ) -sa.~opvlndu~o:,o.~:,p~ o sa.~opv~o.quo:,o:,~ur ap -eieli as aiuaur~vurro~ -snq la opuelo~luo:, ñ opei:,auo3 odjsawzu un ap syur laqey apand .'o~isawzu-ylnzu snq un sa 321 13

.onwpsa un ~lapysuo3 as oAjsavzu un lod sopeuo!:,:,a~!p so~g~sods!p sol ap e~a!nbl~n3 'f0la.r ap legas e1 elaua8 ñ soiep ap e!:,ua~ajsw~i e1 e!:,!u! anb la sa oAjsawzu 13 -(op -epun:,as o a~iels) onwpsa o ( ~ e d p ~ ! ~ d o ~aiseur) oAjsavzu ua as~e:,g!s~~:, uapand so~g!sodslp so?

..nqp:,sa e o laal e e ñ e ~ as anb ap uoI:,unj ua solep nq~3a.1 o .r~l~ursueg apand mva odg ap R!.rouraur eun anb seguarur aqr3a.1 019s 'oldura@ lod 'a31 ap ~ope~oliuo:, u n -.nz!lvaJ e e ñ e ~ as anb uor:,elado el ap opua~puadap l!q -!:,al o ~ ! i ~ u r s w l ~ apand ñ u?!:,:,a~!p e:,!up eun lod e:,g!luapT as o~qsodsrp epe3 'snq le sopel:,auo:, sog!sods!p saluaJajFp sol aliua UO!:,~UUOJU! e1 U B ~ O ~ S U E I J '(rolal) 13s ñ (soiep) vas 'seaujl s o a

'321 snq lap sauo!:,e:,gpadsa se1 ua ue~duraluo:, as solda:,uo:, solsa s o p o ~ .opuyn:, ñ snq lap 08.1~3 a3ey as o ~ y s o d

- s ~ p ?nb appap as open:,ape o~o:,olo~d Ia alwypam .sauor:,e:,y!pou~ o/ñ sauo!:,eqdure seminj nz!Ieal ~apod ap olarqo uo:, 'snq p sopel:,auo:, so~!i!sods!p sol ap alua~puadapu~ las aqap vuralsrs 13

.solla sopoí allua uo!:,e:,!unuro:, e1 a:,yuele8 Á uo!:,eurlojur el ap oanbolq la a lpa anb olo:,olold un aluelpaw js aaua as.~e:,!unuro:, uaqap apas snq le sopel:,auo:, s o ~ y ~ r s o d s ~ p soluys!p so?

'o1l!3uas syur oy:,nw sa a.IeMpley la ñ opealqe:, souaur oy:,nur al -a!nba~ o ~ a d 'ola1e~ed snq ap elnl:,nrisa eun uo:, sep!n8asuo:, s q e salel!uI!s sapep!:,ola~ IGZUE:,~~ ap -and ou snq ap odg alsg -a!las snq ap e~nl:,ruisa eun uo:, .reluauraldur! uapand as so~al!.~:, solsg

.so!~al!.r:, sova!:,.~a:,a-[qeisa uaqap as 'dry:,-ouow sa.~opelo.~uo:,ol:,!u~ uealdura anb se1 aluaurle!:,adsa 'sauo!:,e:,gde seun8le ug

Page 166: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 161

MICROCONTROLADOR B ?e

Figura 8.7. Conexiones al bus.

Supongamos que en un momento dado el microcontrolador A actúa como maestro:

Esta configuración puede no ser permanente. En otro momento, puede ser el B quien actúe de maestro. Todo depende de la dirección del dato a transferir en un momento dado.

Dada la posibilidad de que existieran varios maestros, podría ocurrir que más de uno inicie la transferencia en un mismo instante de tiempo. Para evitar el caos que pueda producir esta situación, se ha desarrollado un sistema de arbitraje del bus. El procedimiento consiste en una conexión tipo AND entre todos los dispositivos conectados al bus.

Cuando uno o más maestros colocan información en la línea SDA, verifican si el bit que ellos sa- can coincide con el nivel lógico de dicha línea. Si un maestro saca un «1» pero la línea SDA está a «O» coincidiendo con un pulso de reloj, pierde la posesión del bus cancelando desde ese momento la transmisión. El nivel lógico «O» (bit dominante) presente en la línea SDA procederá de un maes- tro distinto.

Page 167: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

162 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Las señales de reloj durante el arbitraje del bus son una combinación entre las señales de clock de los distintos maestros conectadas entre sí a la línea SCL mediante una conexión tipo AND.

8.5.2. Terminología del Bus 12C

8.6. CARACTERISTICAS GENERALES

Tanto las líneas SDA como SCL son líneas bidireccionales que se conectan a +Vdd mediante resis- tencias de carga pull-up, tal y como se muestra en la Figura 8.8.

Cuando el bus está libre, ambas líneas están a nivel lógico «1». Los transistores de salida co- nectados a las líneas del bus 12C deben ser de colector abierto para que todos ellos se puedan co- nectar entre sí formando una conexión tipo AND.

RESISTENCIAS DE PULL-UP

SDA (L~NEA DE DATOS SER SDA

SCL (L~NEA DE RELOJ) 1 1 SCL

Figura 8.8. Conexión de SDA y SCL al bus.

Page 168: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 163

Los bits de datos sobre el bus pueden transferirse a una velocidad de 100 Kbitsls. La capacidad máxima en el bus es de 400 pF y el número de dispositivos conectados no debe superarla.

8.6.1. Transferencia del bit

Debido a la variedad de tecnologías empleadas en los dispositivos diseñados para conectarse al bus 12C (CMOS, NMOS, TTL, etc.,) los niveles lógicos «O» y «1» de los bits transferidos no tienen una tensión fija, sino que dependen de la tensión Vdd de alimentación. Cada bit que se transfiere por la línea SDA debe ir acompañado de un pulso de reloj por la línea SCL.

Validez del bit

El bit de datos transferido por la línea SDA debe mantenerse estable durante el período en que la se- ñal de reloj está a nivel « 1». La línea de datos SDA sólo puede cambiar de estado durante el perío- do en que la señal de reloj esté a «O», tal y como se muestra en la Figura 8.9.

Condiciones de inicio (start) y parada (stop)

Existen dos situaciones únicas que son definidas como las condiciones de inicio (inicio) y parada (parada), que determinan el inicio y final de toda transferencia de datos entre el maestro y el escla- vo. (Figura 8.10.)

Una transición de «1» a «O» (flanco descendente) en la línea SDA al tiempo que SCL está a nivel lógico << 1 », determina la condición de inicio. Una transición de «O» a « l » (flanco ascen- dente) sobre la línea SDA al tiempo que SCL permanece a nivel « 1 » determina la condición de parada.

Ambas condiciones son siempre generadas por el maestro que, en todo momento, inicia y fina- liza toda transferencia. El bus se considera ocupado (BUSY) tras la condición de inicio y, se consi- dera libre, cierto tiempo después de la condición de parada.

I I I

I I I

I I I

m I I

SDA I I I

m - - - ---- 3 I

- - - m

SCL L~NEA DE DATOS ESTABLE: L~NEA DE DATOS ESTABLE: DATO VALIDO DATO VÁLIDO

Figura 8.9. Validación del bit de datos

Page 169: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

164 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

- i " " - I I

I I I

I

CONDICIÓN DE INICIO CONDICIÓN DE FIN

Figura 8.10. Condiciones de inicio y parada.

8.6.2. Transferencia de datos

Formato del Byte

Todos los bytes colocados sobre la línea SDA deben constar de 8 bits. Cada byte va seguido de un bit de reconocimiento, ACK, y comienza siempre por el bit de más peso (MSB), tal y como se mues- tra en la Figura 8.1 1.

- - - - m - . I

SALIDA DE DATOS ' DEL TRAE.JSMISOR 1

SALID^ DE DATOS 1

DEL PECEPTOR I

I

I I

I I

m I

I I

I I

PULSO DE CLOCK PARA EL BIT ACK

Figura 8.11. Formato del Byte.

Page 170: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 165

Entre un byte y el siguiente puede haber un tiempo «t» de espera que se puede aprovechar para, por ejemplo, dar servicio a una interrupción. En este caso, la línea SCL se mantiene a «O» para for- zar al transmisor a un estado de espera.

Un mensaje cualquiera puede finalizar mediante la generación de la condición de parada duran- te la transferencia de un byte. En este caso no se generará el bit de reconocimiento ACK.

Reconocimiento

El bit de reconocimiento ACK es obligatorio en la transferencia de cada byte. El pulso de reloj aso- ciado a este bit n." 9 lo genera el maestro. El transmisor pone la línea SDA a « 1» durante dicho pul- so de reloj.

El receptor, por su parte, pone a «O» la línea SDA durante el pulso de reloj correspondiente al ACK y lo mantiene estable durante todo el período de dicho pulso.

En la línea SDA prevalece por tanto el nivel «O», como se aprecia en la Figura 8.12. Normalmente, el receptor que ha sido direccionado está obligado a generar el bit ACK después

de recibir cada byte. Cuando un receptor esclavo no genera el bit ACK (NACK) al ser direcciona- do (por ejemplo cuando está realizando una función interna y no está dispuesto a recibir), debe man- tener la línea SDA a nivel «1» durante el bit ACK (NACK). Esta situación es detectada por el maestro, que debe generar la condición de parada y abortar así la transferencia.

Igualmente, si un esclavo receptor reconoce ser direccionado pero no está dispuesto a recibir más bytes, el maestro debe abortar la transferencia. Esta situación se identifica porque el esclavo tam- poco genera el ACK en el siguiente byte que recibe. En su lugar pone la línea SDA a « 1 » (NACK) y el maestro genera la condición de parada.

Si un maestro está recibiendo debe generar ACK tras cada byte enviado por el esclavo excepto en el último, en el que el bit ACK lo mantiene a « 1» (NACK) y genera la condición de parada.

- - - I

I

SALIDA DE DATOS * DEL TRA$dSMISOR 1

I I

SALID4 DE DATOS 1

DEL RECEPTOR I

SCL (C~OCK) DESDE : EL'MASTER .

PULSO DE CLOCK PARA EL BIT ACK

Figura 8.12. El reconocimiento.

Page 171: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

166 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

8.6.3. Arbitraje sin sincronización de reloj

Es la técnica necesaria por la cual, en un sistema donde existen varios maestros, se evitan conflic- tos en el bus y pérdidas de información.

Sincronización

Todos los Maestros generan una señal de reloj sobre la línea SCL para transferir mensajes sobre el bus I2C. Los bits de información son válidos cuando dicha señal de reloj está a nivel lógico « 1 ».

La sincronización del reloj se realiza mediante una conexión tipo AND de todos los maestros existentes en el bus. (Figura 8.13.)

Cuando un maestro cualquiera, por ejemplo el 1, genera un flanco descendente en CLKl, la 1í- nea SCL pasa a «O». Todos los dispositivos comienzan a temporizar sus respectivos períodos bajos de reloj.

Sin embargo, un flanco ascendente en CLKl no cambia el estado de SCL, ya que en ese instan- te CLK2 está a «O>>.

La línea SCL se mantiene a «O» durante el período de aquel dispositivo cuyo nivel «O» sea más largo. El resto de dispositivos entran en estado de espera.

Cuando todos los dispositivos finalizan su período bajo, SCL pasa a el». De esta forma, todos inician el período alto al mismo tiempo. El primer dispositivo en finalizar este período alto pone SCL a «O», y el proceso se repite.

TIEMPO DE ESPERA INICIO DEL PERIODO ALTO

C L K 1 I I

CLK

SCL

Figura 8.13. Sincronización del reloj.

Page 172: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 167

La señal de reloj presente en la línea SCL queda sincronizada y.. .

. . r t: i . -

L . . * d . . < a $ . * * '

w *elitsrn+yordw.ih.

W hor aqued diqmsHitco cuyo pceríexfo atto @ea el c&

Arbitraje

El arbitraje consiste en determinar qué maestro se hace cargo del bus en un sistema multi-maestro. Cada maestro debe comparar si el bit de datos que transmite junto con su pulso de reloj en un mo- mento dado, coincide con el nivel lógico presente en la línea de datos SDA. De no ser así, pierde el acceso al bus. Si un maestro saca un nivel lógico « l » al tiempo en que otro saca un «O>>, en la línea SDA prevalece el segundo (bit «dominante»), por lo que el primero debe dejar el bus libre al menos hasta que se detecte la condición de parada generada por el maestro que se hizo cargo de dicho bus.

La Figura 8.14 muestra el caso de dos maestros. En el momento en que hay diferencia entre el nivel lógico interno del maestro, que genera el DATO1 y el nivel actual presente en la línea SDA, éste pierde el derecho a usar el bus y su nivel interno pasa a « 1 », liberando así la línea SDA.

La comparación para determinar el arbitraje puede continuar en varios bits hasta que haya una falta de coincidencia.

El maestro que pierde el arbitraje puede seguir generando pulsos de reloj hasta que finalice el by- te en que lo perdió.

I EL MAESTRO 1 PIERDE EL ARBITRAJE

DATO 1

DATO 1 < > SDA

- 9 , - I I I I I I I .

Figura 8.14. Arbitraje del bus.

Page 173: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

168 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Si un maestro pierde el arbitraje en el momento en que está direccionando a un esclavo, es posi- ble que el maestro «ganador» lo estuviera direccionando precisamente a él. Es por ello que el maestro «perdedor» se debe poner inmediatamente en modo receptor y como esclavo.

8.6.4. Formato

Los datos que se transfieren tienen el formato mostrado en la Figura 8.15. Tras la condición de inicio, el maestro envía la dirección del esclavo al que se quiere dirigir. Es-

ta dirección es de 7 bits más el bit R/W# que indica lectura (R/W# = 1) o escritura (R/W# = O) del esclavo. Toda transferencia de datos finaliza con la condición de parada, también generada por el maestro. A pesar de todo, si un maestro aún desea comunicar por el bus, puede generar otra condi- ción de inicio y direccionar a otro esclavo sin generar previamente la condición de parada.

En las Figuras 8.16, 8.17 y 8.1 8 se muestran posibles forrnatos de transferencia.

SDA - 'I

8 '

. - m t A + t +-* +- . - m

INICIO DIRECCI~N RIW ACK DATO ACK DATO ACK FIN

Figura 8.15. Formato de los datos transferidos.

t DATOS TRANSFERIDOS ESCRITURA (n BYTES + ACK)

Figura 8.16. El maestro transmite al esclavo receptor. No cambia el byte de dirección.

t 1 DATOS TRANSFERIDOS LECTURA (n BYFES + ACK)

Figura 8.17. El maestro recibe desde el esclavo después de enviarle a éste la dirección.

Page 174: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 169

ACK DESDE ESCLAVO

1 ACK DESDE ESCLAVO

1 DIRECCIÓN DE ESCLAVO 1 DIRECCIÓN DE ESCLAVO

1 DATOS TRANSFERIDOS = LECTURA (n BKES + ACK)

O = ESCRITURA

I , = LECTURA DATOS TRANSFERIDOS

0 = ESCRITURA (" +

Figura 8.18. El maestro cambia el byte de dirección y selecciona un esclavo distinto.

Tras el primer ACK enviado por el esclavo, el maestro transmisor se convierte en receptor y el esclavo receptor en transmisor.

8.7. DIRECCIONAMIENTO

El proceso de direccionamiento del bus 12C consiste en que el primer byte que envía el maestro tras la condición de inicio es un código que determina y selecciona a un determinado esclavo. Existe una excepción en el código denominada «llamada general». Cuando un maestro realiza una «llamada ge- neral» (código 0000 000) todos los esclavos existentes deben responder con el bit ACK. Puede dar- se el caso de dispositivos que ignoren esta llamada. El siguiente byte tras la misma indicará la ope- ración a realizar.

8.7.1. Definición del primer byte

Los 7 bits de más peso del primer byte se emplean para direccionar a un determinado esclavo. El de menos peso, el octavo enviado, determina si se realizará una operación de lectura o de escritura (R/W#) sobre el esclavo direccionado, tal y como se muestra en la Figura 8.19.

Cuando el maestro envía una dirección por el bus, todos los esclavos conectados la comparan con la suya propia interna. Aquel en que coincida se considerará seleccionado por el maestro.

De los 7 bits que forman una dirección hay una parte que son fijos y ya están definidos interna- mente por el propio dispositivo esclavo, y otra parte que son programables. De esta forma, es posi- ble conectar al mismo bus dispositivos idénticos cuya parte fija de dirección es la misma pero la pro- gramable es diferente.

El número de dispositivos iguales que se pueden instalar a un mismo bus depende del número de bits programables disponibles. Por ejemplo, si un determinado modelo de dispositivo recibe una di- rección de 7 bits, 4 de los cuales son fijos y los 3 restantes programables, se podrán conectar al bus un máximo de 8 dispositivos de ese mismo modelo.

Page 175: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

170 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

MSB LSB

Figura 8.19. El primer byte.

El comité 12C creado al efecto coordina las direcciones asignadas a los diferentes dispositivos. La dirección 1 11 1 11 1 está reservada como extensión de dirección en el que el proceso de direc- cionamiento de un dispositivo continua en los siguientes bytes transferidos por el maestro. La di- rección 11 11 xxx está reservada también con propósitos de direccionamientos extendidos y la em- plean ciertos dispositivos que tienen 10 bits de direccionado. La dirección 0000 xxx está reservada para un grupo especial de dispositivos:

8.8. ESPECIFICACIONES ELÉCTRICAS

El bus 12C permite la comunicación entre dispositivos fabricados con diferentes tecnologías y dife- rentes tensiones de alimentación. Para conexiones con niveles de entrada fijos y alimentación de +5 V, se definen los siguientes valores:

Page 176: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 171

Para dispositivos capaces de trabajar con un rango variado de tensiones de alimentación (por ejemplo, CMOS), se definen los siguientes niveles:

En ambos casos, la máxima tensión de salida a «O» es:

La corriente máxima de entrada a «O» en las líneas SDA y SCL de un dispositivo compatible con el bus es de -10 pA. A nivel «1», la corriente de entrada es de 10 pA. La capacidad de dichas líne- as es de 10 pF máximo.

Los dispositivos con niveles fijos de entrada pueden alimentarse desde diferentes fuentes de ali- mentación de +5 V, como se muestra en la Figura 8.20.

Los dispositivos 12C cuyos niveles lógicos de entrada están en relación a VDD. deben alimentar- se conjuntamente según la Figura 8.21.

Cuando se combinan ambos tipos de dispositivos, los de niveles fijos de entrada (NMOS, TTL) y los dependientes de VDD (CMOS), estos últimos deben conectarse a una alimentación común de +5 V, como se muestra en la Figura 8.22.

La capacidad máxima del bus es de 400 pF, que incluye la capacidad entre cables y la de los dis- positivos conectados.

SDA

SCL

SDA

SCL

Figura 8.20. Alimentación de dispositivos con nivelesfijos de entrada.

Page 177: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

172 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

VD, = 3 v

SDA

SCL

Figura 8.21. Alimentación de dispositivos con niveles de entrada dependientes de VDD.

SDA

SCL

SDA

SCL

SDA

SCL

Figura 8.22. Alimentación de dispositivos con niveles de entrada fijos junto con dependientes de VDD.

8.8.1. Tiempos

La señal de reloj en el bus 12C tiene un período a «O» de como mínimo 4,7 ms y a «1» de como mínimo 4 ms. De esta forma, el maestro puede generar una frecuencia de hasta 100 KHz. La Fi- gura 8.23 muestra el valor de cada tiempo.

Page 178: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 173

Figura 8.23. Valor y nomenclatura de los diferentes tiempos.

TBUF Tiempo en que el bus debe estar I i bre antes de 4,7

8.9. EL BUS 12C Y LOS PIC16F87X

THD STA

TLOW

THICH

TSU,STA

THD DAT

TCU DAT

TR

TF

Tsu STO

En los PIC16F87x, el bus 12C está implementado en silicio tanto en el modo maestro (master) co- mo en el esclavo (slave). Como en general es el modo maestro el más usado, todos los ejercicios los hemos realizado de esta forma y las explicaciones también se refieren a dicho modo.

Recuérdese que en modo maestro es el dispositivo, en este caso el PIC16F87x, el que inicia y fi- naliza la transferencia y genera los impulsos de reloj. También selecciona el esclavo al que se des- tina la información. (Figura 8.24.)

Como ya se ha comentado al hablar del bus I2C, en general, cada transferencia comienza con la condición de inicio (start) y termina con la condición de parada (stop). Ambas condiciones las ge- nera el maestro, y la primera consiste en un flanco descendente en SDA mientras SCL tiene nivel alto. La condición de parada es un flanco ascendente mientras SCL tiene nivel alto.

Los datos que se colocan sobre la línea SDA son bytes de 8 bits, que comienzan con el MSB y terminan con el bit de menos peso, al cual sigue en el noveno bit la condición de Reconocimiento (ACK). Para este caso, el transmisor pone SDA = 1, mientras que el receptor pone SDA = O en di- cho impulso de reloj, prevaleciendo sobre la línea el nivel bajo.

El primer byte que envía el maestro tras la condición de inicio contiene la dirección del es- clavo con el que se desea realizar la comunicación. El código O se usa para realizar una «llama- da general» sobre todos los esclavos. La dirección en realidad consta de 7 bits, estando destina- do el octavo a indicar la operación a realizar (R/W#: Lectura/Escritura#). Tras este byte inicial de direccionamiento se manda otro byte que especifica las características de la operación a rea- lizar.

Para activar el bus 12C hay que poner el bit SSPEN = 1 que es el bit 5 del registro SSPCON (SSPCON<S>). A partir de ese momento las patitas SDA y SCL quedan configuradas para sopor-

, tar el protocolo I2C. Previamente dichas patitas de la Puerta C (RC31SCL) y RC4JSDA) han de es- tar configuradas como entradas mediante la escritura de los bits correspondientes del registro TRISC.

Como se aprecia en la Figura 8.24, hay seis registros para controlar el bus I2C.

iniciar una nueva transmisibn

Tiempo entre el Inicio y primer pulso en SCL

DuraciOn del período bajo del reloj

Duración del período alto del reloj

Tiempo antes de una nueva condición de Inicio

Tiempo de mantenimiento del dato

Tiempo de puesta del dato

Tiempo del flanco ascendente para las líneas SDA y SCL

Tiempo del flanco descendente para las líneas SDA y SCL

Tiempo para la condición de parada

4

4,7

4

4,7

O

250

4,7

1

300

PS

PS

PS

P S

P S

P S

P S

ns

P S

Page 179: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

174 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 8.24. Estructura general de los registros que controlan la transferencia por las patitas SDA y SCL en el modo maestro del bus 12C.

Mediante el bit CKE se ponen a nivel alto las patitas SDA y SCL en el modo maestro y esclavo. Cuando CKE = O los niveles de dichas patitas se configuran según las especificaciones del bus I2C.

Los 4 bits de menos peso del registro SSPCON sirven para seleccionar el modo de trabajo entre estos tres posibles:

Page 180: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 175

El registro de Estado SSPSTAT contiene la información que representa el estado de la transferen- cia de datos. Detecta las condiciones de inicio y parada, así como la recepción del byte de la dirección.

SSPBUF es el registro que actúa como buffer y soporta el dato que se va a transmitir o que se ha recibido. El registro de desplazamiento SSPSR realiza la conversión serie/paralelo y viceversa jun- to al SSPBUF. Cuando se ha completado la llegada del byte, que se recibe en el registro SSPSR, se traspasa a SSPBUF y se activa el señalizador SSPIF. Si se recibe otro byte antes de haber leído al SSPBUF, se activa el señalizador de desbordamiento SSPOV (SSPCON<6>).

El registro SSPADD guarda la dirección del esclavo. Cuando se emplean direcciones de 10 bits, el usuario debe escribir el byte alto de la dirección con el siguiente código donde A9:A8 son los dos bits de más peso: 1 - 1 - 1 - 1 -0-A9-A8-0.

En la Figura 8.25 se muestra la distribución de los bits del registro SSPSTAT, que ocupa la di- rección 94h de los registros específicos de la memoria RAM.

El bit SMP se SSPSTAT en el modo maestro es un bit de muestre0 que vale 1 cuando los bits de datos se muestrean al final del período, o vale O cuando se hace en la mitad del período. El bit CKE selecciona los niveles de las patitas SCL y SDA en el modo maestro o multi-maestro. El bit D/A# (Dato/Dirección#) indica si el dato recibido es de información (1) o es una dirección (0). La llegada del bit o condición de Stop la detecta el bit P, que se pone a 1. El bit S detecta la condición de Inicio o Start. R/W# indica si se trata de una Lectura/Escritura#. El bit UA cuando vale 1 indica que la di- rección es de 10 bits y que hay que cargar el byte alto, según la codificación antes expresada, en el registro SSPADD. Si es O la dirección es de 7 bits. Finalmente, el bit BF actúa como señalizador del buffer de datos. Si BF = 1 indica que tiene un dato y la transmisión está en progreso sin terminar.

En la Figura 8.26 se muestra la estructura del registro de control SSPCON, que ocupa la direc- ción 14h del mapa de memoria.

REGISTRO SSPSTAT

Figura 8.25. Distribución de los bits del registro de Estado SSPSTAT. Todos los bits son leíbles, siendo só- lo escribibles los dos de más peso. Tras un Reset todos se ponen a O.

REGISTRO SSPCON

Figura 8.26. Registro de Control SSPCON. Todos sus bits son leíbles y escribibles y se ponen a O tras un Reset.

Page 181: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

176 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

El bit WCOL es un detector de colisiones en escritura y cuando vale 1 significa que se ha in- tentado escribir en SSPBUF en condiciones no válidas para el protocolo. El bit SSPON si vale 1 indica desbordamiento, o sea, que llega un byte a SSPBUF sin haberse leído el anterior. Si SSPEN = 1 la Puerta Serie queda configurada con las patitas SCL y SDA. Si SSPEN = O las patitas RC3/SCL y RC4/SDA funcionan como líneas de E/S digitales. El bit CKP sirve para activar el re- loj en el modo esclavo, no usándose en el modo maestro. Mediante los 4 bits de menos peso de SSPCON se selecciona la frecuencia de reloj. Se indican los códigos más interesantes para el mo- do maestro:

En la Figura 8.27 se muestra la distribución de los bits del registro de control 2 SSPCON2. El bit GCEN sólo se usa en el modo esclavo. Cuando se pone el bit ACKSTAT = 1 significa

que se ha recibido el bit de reconocimiento ACK del esclavo. ACKDT es el bit de reconoci- miento en el modo maestro en recepción. Si ACKDT = O el maestro ha transmitido el bit de Re- conocimiento, pero si vale 1 no lo ha hecho. Cuando se pone ACKEN = 1 se inicia la secuencia de generación de la condición de reconocimiento. Este bit se borra automáticamente por hard- ware.

Para habilitar el modo de recepción del maestro hay que poner el bit RCEN = 1. Para generar la condición de parada en las líneas SCL y SDA hay que poner PEN = 1. El bit RSEN cuando se po- ne a 1 inicia la repetición de la condición de inicio. Finalmente, para iniciar la condición de inicio hay que poner SEN = 1.

a s m 0 ~ 3 ~ a h

0000

O00 1

001 O

O01 1

1 O00

REGISTRO S S P C O N 2

F R ~ U E N ~ I A DE ~ L Q J ;, Reloj = FosJ4

Reloj = FosJl6

Reloj = Fo~d61

Reloj = Salida del TMR2/2

Reloj = (SSPADD + 1 ) Fod4

Figura 8.27. Registro de control 2 SSPCON2. Todos sus bits son leíbles y escribihles y quedan a O tras un Reset.

Page 182: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 177

8.10. CHULETA-RESUMEN DE LOS REGISTROS USADOS PARA EL BUS 12C

Figura 8.28. Tabla que recoge los principales registros que intervienen en el control del módulo MSSP con el protocolo bus I2C.

8.11. FUNCIONAMIENTO DEL MODO MAESTRO

El trabajo en el modo maestro se pone en marcha escribiendo los valores adecuados en los bits del registro de control SSPCON y SSPEN = 1. Una vez puesto en funcionamiento este modo, el usua- rio tiene 6 opciones:

El maestro es el encargado de generar los impulsos de reloj y las condiciones de inicio y parada en cada byte transferido. Cuando el maestro es receptor, el primer byte indica la dirección del es- clavo (7 bits más el bit R/W#). Por cada byte recibido por el maestro se transmite un bit de recono- cimiento ACK.

A continuación, se describe la secuencia de pasos que hay que realizar en una transmisión del maestro:

Page 183: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

178 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

En el modo maestro el valor usado en la generación de la frecuencia se escribe en SSPADD, se- gún los 4 bits de menos peso. Después, este valor se carga en el contador descendente BRG, que lo va decrementando hasta llegar a O, donde se para hasta que se vuelve a recargar. El BRG se decre- menta 2 unidades por cada ciclo de instrucción.

8.11.1. Condición de inicio (start)

Para generar la condición de start, el usuario debe escribir el bit SEN = 1 en SSPCON2. Si SDA y SCL se mantienen a nivel alto, el contador BRG se carga con el valor de 7 bits de SSPADD. Cuan- do termina el contaje de BRG la línea SDA pasa a nivel bajo. La condición de inicio consiste en un flanco descendente de SDA mientras SCL permanece con nivel alto. Pone el bit S = 1 del registro SSPSTAT. Luego se recarga el BRG con el valor SSPADD <6-O> y vuelve a decrementarse. Al lle- gar a O el contador el bit SEN pasa a O automáticamente.

8.11.2. Condición de repetición de inicio (start)

Esta situación se produce cuando RSEN = 1. Entonces SCL pasa a nivel bajo y el contador BRG se carga con los 7 bits de menos peso de SSPADD y comienza el contaje. Al finalizar el contaje SCL pasa de nivel bajo a nivel alto mientras SDA sigue en nivel bajo. Luego nuevamente SCL = 1 y SDA = 1 y se vuelve a cargar BRG.

8.11.3. Modo maestro en transmisión

La transmisión de un byte de datos debe ir precedida de la transmisión de la dirección del esclavo, la cual debe cargarse en el registro SSPBUF, en cuyo momento se pone el bit BF = 1 y se pone en marcha el reloj y el inicio de la transmisión. Cada bit que sale por la línea SDA lo hace en el flanco descendente del impulso de reloj en SCL. Tras sacar los 8 bits se borra el bit BF y el esclavo debe generar la condición de reconocimiento en el noveno impulso de reloj. El bit ACK se coloca en el bit ACKDT en el flanco descendente de SCL. Tras el noveno impulso SSPIF = 1 y se detiene el ge- nerador de frecuencia hasta que no se cargue otro dato en SSPBUF.

Page 184: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SÍNCRONA: MSSP 179

En transmisión BF = 1 cuando la CPU escribe en el SSPBUF y BF pasa a O cuando han salido los 8 bits. El señalizador WCOL vale 1 cuando el usuario escribe sobre el SSPBUF estando una transmisión del dato previo en progreso. Este bit hay que pasarlo a O por software.

El bit ACLSTAT pasa a O cuando el esclavo ha enviado el bit de reconocimiento.

8.11.4. Modo maestro en recepción

Para poner en marcha el modo maestro en recepción, hay que poner el bit RCEN = 1 estando en repo- so el módulo MSSP. El generador de frecuencia empieza a funcionar y SCL cambia de estado en cada período controlado por el decremento del contador BRG. Entonces el dato empieza a desplazarse sobre el registro SSPSR. Al final del octavo clock se ponen BF = SSPIF = 1 y se transfiere el contenido de SSPSR al SSPBUF, con lo que RCEN = O. El módulo queda en estado de reposo a la espera de un nue- vo comando. Cuando el buffer es leído por la CPU BF se pone a O automáticamente. El usuario puede enviar un bit de reconocimiento al finalizar la recepción, escribiendo ACKEN = 1 (SSPCON2 <4>).

Cuando un dato o una dirección se carga en SSPBUF desde SSPSR, el bit BF = 1 y este bit pa- sa a O cuando la CPU lee SSPBUF. El señalizador de desbordamiento SSPOV es 1 cuando se reci- be un byte en SSPSR y aún no ha leído la CPU el dato anterior.

Si el usuario escribe en SSPBUF mientras hay una recepción en progreso, el bit WCOL se pone a 1 y el contenido del buffer no cambia.

8.11.5. Secuencia de reconocimiento

Se produce automáticamente en cuanto se pone ACKEN = 1. Entonces la patita SCL pasa a nivel bajo y aparece en SDA el bit de reconocimiento al finalizar el dato. Al poner ACKEN = 1 y ACKDT = O la

LA SECUENClA DE RECONOCIMIENTO EMPIEZA AQU~: ESCRIBE A SSPCON2

ACKEN BORRADO

ACKEN = l . ACKDT = O POR HARDWARE 1 TBRG TBRG

SDA DO

SCL

t DESACTNADO

SE ACTNA SSPlF AL DESACTNADO SE ACTIVA SSPlF AL FINAL DE POR SOFTWARE

DE IA RECEPCI~N POR SOFTWARE LA SECUENCIA DE RECONOCIMIENTO

1

I

m

m

m

SSPlF

Figura 8.29. Diagrama de tiempos de una secuencia de reconocimiento.

iI

I

I

1

Page 185: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

patita SCL queda a nivel bajo, mientras el generador de frecuencia cuenta un período (TBRG). Luego SCL pasa a nivel alto y al completarse otro período SCL vuelve a pasar a nivel bajo y ACKEN = O. El flag SSPIF = 1 cuando finaliza la secuencia de recono.cimiento. (Figura 8.29.)

8.11.6. Condición de parada (stop)

Se genera la condición o bit de stop al final de la transmisión/recepción, poniendo el bit PEN = 1 (SSPCON2 <2>). En el flanco descendente del noveno impulso de reloj la línea SCL queda a nivel bajo. Entonces si PEN = 1 la línea SDA pasa a nivel bajo y el generador cuenta un período, tras el cual SCL pasa a nivel alto. Tras otro período TBRG, la línea SDA pasa a nivel alto y P = 1. Tras otro período PEN, se pone a O automáticamente. (Figura 8.30.)

El impulso de reloj en SCL se produce cuando es muestreada dicha línea cada ciclo Tosc*4, y es- tá a nivel alto, en cuyo momento se carga el contador BRG con los 7 bits de menos peso de SSPADD y comienza a contar otro período, pasando SCL a O al completarlo.

AL ESCRIBIR SSPCON2 SE ACTIVA PEN -1 CUANDO SCL = 1 Y EL SEGUNDO SDA = 1.

SE ACTIVA EL BIT P

FLANCO DESCENDENTE DEL 9.O IMPULSO 7

EL BIT PEN SE DESACTIVA POR HARDWARE 1--1

1 P I l Y EL BIT SSPIF ES ACTIVADO

ACKK SDA I 1 1

1 I I I I

TBRG

I SCL PASA A NIVEL ALTO TRAS TBRG

SDA PASA A O ANTES DEL FLANCO ASCENDENTE DEL RELOJ PAR,A CONFIGURAR

LA CONDlClON DE PARADA

Figura 8.30. Diagrama de tiempos de la condición de parada.

Page 186: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

-3la '1!ql3al '~!lfursueq ap opeururra) ey 31d lap owaluf alempley la opuyn3 laqes ap sowedn3oa.1d anb souraualolos x~gd9~ 31d sol u03 'alemijos opol Iap uela seu -pru seyxp als? ua anb sEl)ua!l/y '~gd9~31d un el~d oqansal 0!3!3.1aP ows!w [a u03 u9!3e;redu103 ua '-3la «OAEI~S~ leuo!33al!a» '«o!3p1 ap ug~puo3 reflzup ap seuynuqns se1 ap peppqd -w!s el asralz ypod eurel8o~d Iap uoy3nlosa.1 e1 ug .solep opuellsow A opuaAa1 ol!uyu! apnq un ua ep -anb as 31d la anb eA 'epeled ap u?p!puo3 eun eyua as ou OSE^ alsa ua anb aslelzlasqo apand osou -n3 olep owo3 .e,noal ua SE)S!A EA sosed ap epuan3as e1 ellsanw or3!3.rara alsa ap ewel8!ue810 13

'seauy sews!w se1 ap uey8103 solla sopol 'solzepsa solzgrsodsrp seur uasealdma as anb ap ose:, la ug

('1 E-g eln8g) -u?!srursuell ap omo3 uopda3a.1 ap oluel 'sol -ep ap eaug e1 ylas anb 'vas/~3~ A 'ogsaew lap alua!ualzold ap legas e1 elas anb '73~/~3~ Íupe3!unu103 e1 eled seauy se31un SOP ez!lgn 321 o103010.1d la 'olnl~de:, alsa ua ols!~ ey as owo3

xau.zwdj 31d~0~3.z~ lap ag7 sopo!p lod ylellsour as A (slrq g ap s/g ap ouand) ~~~gd3d olzgfsods!p lap salolelz sol uylaal as 'ose3 alsa ug -321 0.9 ueuo!3unj anb solzylysodsrp A 31d un allua uo!3e3!unwo3 e1 ezgeal as omp allsanur anb oldurap 011~3uas un Jezqeal apualald as

'salual -s!xa so3y.1?jpad ap pepylue3 uel8 el lod 321 opour ua osn ns ua 'a~uaure~a~~uo~ syur 'A ouryqg alsa ua ~ellua:, e sowelz sou opepde alsa ug .sauo!~e3~~de ap ujju~s un ua uezqin as dsspq olnpoux la our -03 ~~vsn la olue~ -uor3e3~unwo3 ap sosln3al so1 owrxyur [e ope!3uaíod ey as 'x~gd91 31d sol ug

Page 187: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

182 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

ln4148

RESET i( PIC16F873

DISPOSITIVO 12C MICRO'PIC TRAINER PLUS

Figura 8.31. Esquema eléctrico del ejercicio propuesto.

PA ENTRADA PB WlDA

RC3:RC4 ENTRADA

DIRECCONAR ESCLAVO PARA LECTURA u

L~NEA DE DATOS

Figura 8.32. Organigrama del ejercicio propuesto.

Page 188: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SINCRONA: MSSP 183

Programa comentado

Como puede verse, el programa mostrado a continuación recoge todas la rutinas necesarias para la transmisión y recepción de datos por I2C. Aunque el ejemplo es sencillo, el modo de actuar en otros casos sería similar.

Page 189: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

184 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 190: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

MÓDULO DE COMUNICACIÓN SERIE SINCRONA: MSSP 185

BUCLE clnvdt . ; Refresca perro guardián cal1 R-BYTE ; Lee dispositivo PCF8574 movwf PORTE3 ; Visualiza dato sobre LEDs goto BUCLE

END

Prueba del programa

Se van a utilizar el Micro'PIC Trainer para mostrar los valores leídos en los LEDs (RBO-RB7), y el Micro'PIC Trainer Plus, que entre otros dispositivos 12C incorpora el PCF8574, utilizado en este ca- so para la lectura de valores. Para una correcta configuración de los periféricos utilizados:

1 .O En el Micro'PIC Trainer Plus los jumpers J 1 -J4 deberán estar en la posicidn 2-3. 2." Durante la ejecucich, el jumper J7 del Micro'PIC 7rainer debe estar cerrado para habilitar los L EDs.

Page 191: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

186 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

COMUNICACIÓN DE DATOS DIGITALES POR RADIO FRECUENCIA

La transferencia de información entre sistemas digitales usando la radio frecuencia es una de las más interesantes aplicaciones que puede utilizarse en cantidad de situaciones. La comunicación de dos sistemas sin conexión física alguna abre una extensa plataforma de mejora de productos.

En este apartado, se describen en forma resumida las principales características de las tarjetas, que basadas en un PIC16F84 cada una, permiten la transferencia de información digital por R.F.

MSETX y MSERX son los nombres que asigna el fabricante Microsystems Engineering a la tar- jeta emisora y receptora, respectivamente. La comunicación entre ambas tarjetas es trasparente pa- ra el usuario, que únicamente tiene que encargarse de fijar los parámetros de configuración y los da- tos que desea enviar.

En la fotografía de la Figura 8.33 se muestran las tarjetas MSETX y MSERX de transferencia de información digital por R.F.

Figura 8.33. Fotografía de las tarjetas emisora y receptora basadas en un PIC16F84.

Page 192: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

El emisor de radio frecuencia

La tarjeta MSETX es la encargada de transmitir los datos digitales por R.F. El emisor MSETX se alimenta con una tensión de 12 VAC, que luego internamente rectifica, filtra y estabiliza para obte- ner 5 VDC para el circuito del PIC16F84, y 13 VDC para el módulo transmisor de R.F.

El emisor se conecta al sistema digital desde el que se envía la información mediante comuni- cación RS232 o niveles TTL. Dicho sistema digital puede tratarse de un ordenador personal, o bien, de un sistema con microcontrolador, como puede ser un microbot. (Figura 8.34.)

En realidad, en el emisor MSETX existen dos bloques fundamentales: módulo transmisor y circuito del microcontrolador PIC16F84. Cuando el PIC del emisor se comunica con el Sistema del Usuario lo hace en serie y de forma bidireccional. Recibe comandos y datos pero también puede enviar informa- ción sobre su configuración interna. Por otro lado, el PIC se comunica en serie con el Módulo Trans- misor RT1-433, el cual envía la información bit a bit por R.F., según se muestra en la Figura 8.35.

EMISOR MSETX

Figura 8.34. Conexión del emisor con un PC

EMISOR MSETX m I - I I I I I I I I I I I m I m I m I m I m I m I m I I

1

RTI -433 + r t - 8

I Módulo : Transmisor 8

1 Usuario 1

Control I

I

Figura 8.35. Comunicación del PIC con el Sistema del Usuario y con el Módulo Transmisor de R.F.

Page 193: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

188 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

El emisor MSETX puede considerarse un subsistema que forma parte de un sistema principal que lo requiere para enviar datos digitales por R.F.

El MSETX recibe desde el Sistema de Usuario los comandos y la información a enviar en for- mato RS232 o mediante niveles lógicos TTL. Después, el PIC configura la transmisión y se encarga de que el Módulo Transmisor envíe por R.F., la información deseada según el protocolo utilizado.

Los elementos más relevantes que componen el emisor MSETX son:

Receptor de radio frecuencia

En la Figura 8.36 se ofrece un esquema de adaptación del Módulo Receptor de R.F. MSERX con el Sistema de Usuario, que en este caso se representa como un PC.

Aunque en la Figura 8.36 la aplicación del usuario está representada como un PC, también el re- ceptor podría entregar los datos digitales recibidos por R.F., a un terminal de datos o a un sistema con microcontrolador o microprocesador.

MSERX u Figura 8.36, Interconexión del Módulo Receptor de R.F. y el PC.

Page 194: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

RECEPTOR 1 1 1 1 1 m 1 1 1 1 - 1 1

Módulo Receptor

MSERX 1 1 - 1 1 - 1 m 1 m -

h

PIC 4-

Control

1 Usuario 1

Figura 8.37. El PIC hace de intermediario entre el Sistema de Usuario y el Módulo Receptor de R.F.

El receptor MSERX es un subsistema que forma parte de un sistema principal y al cual le proporcio la información digital que recibe por R.F. Se limita a recibir los datos, empaquetarlos, verificarlos y, fin mente, entregarlos en serie al Sistema del Usuario para que los procese.

La Figura 8.37 ofrece un esquema más detallado de la constitución del Receptor de R.F. El Sistema del Usuario comienza enviando al emisor MSERX datos para su configuración, luego este I

timo le devuelve el estado de su configuración interna, así como los datos digitales que ha recibido por R. bit a bit.

Las características más relevantes del Receptor MSERX son:

Page 195: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Los PIC16F87x contienen un módulo MSSP con dos puertas para la comunicación serie «síncrona», o sea, con señal de reloj. Además, también disponen de un módulo USART capaz de soportar la co- municación serie síncrona y asíncrona.

El USART, llamado SCI (Serial Comunications Interface), puede funcionar como un sistema de comunicación full duplex o bidireccional asíncrono, adaptándose a multitud de periféricos y dispositivos que transfieren información de esta forma, tales como el monitor CRT o el ordena- dor PC. También puede trabajar en modo síncrono unidireccional o h a y duplex para soportar periféricos como memorias, conversores, etc. En resumen, el USART puede trabajar de tres ma- neras:

1 ." AS~NCRUNA (Full duplex, bidirecciunal). 2.' SÍNCRONA-MAESTRO (Half duplex, unieJireccion~1). 3." S~ICRONA-ESCLAVO (Half duplex, unidirecciiona/).

En la Figura 9.1 se muestra un esquema del comportamiento del USART en modo asíncrono y síncrono. En el primero, las transferencias de información se realizan sobre dos líneas TX (trans- misión) y RX (recepción), saliendo y entrando los bits por dichas líneas al ritmo de una frecuencia controlada internamente por el USART. En el modo síncrono, la comunicación se realiza sobre dos líneas, la DT que traslada en los dos sentidos los bits a la frecuencia de los impulsos de reloj que sa- len por la línea CK desde el maestro. En ambos modos las líneas de comunicación son las dos de más peso de la Puerta C: RC6/TX/CK y RC7/RX/DT.

Dada la importancia del protocolo asíncrono del USART, según la popular norma RS-232-C, se dedica este capítulo a estudiar este modo de comunicación, proponiendo un ejercicio de manejo de dicho protocolo en la sección «Programar PIC es fácil».

En esta forma de comunicación serie, se usa la norma RS-232-C, donde cada palabra de infor- mación o dato se envía independientemente de los demás. Suele constar de 8 o 9 bits y van prece-

Page 196: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

192 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

MAESTRO ESCLAVO

Figura 9.1. En el modo asíncrono, la comunicación serie del USART en los PICl6F87x está soportada por las líneas RCóITXICK y RC7IRXIDT por las que se mueven los bits a la frecuencia interna de reloj. En el modo síncrono, los bits de información circulan en ambos sentidos por la línea DT a la frecuencia de los impulsos que genera el maestro por la línea CK.

didos por un bit de START (inicio) y detrás de ellos se coloca un bit de STOP (parada), de acuerdo con las normas del formato estándar NRZ (NonReturn-to-Zero). (Figura 9.2.) Los bits se transfie- ren a una frecuencia fija y normalizada.

Los cuatro bloques que configuran la arquitectura del USART, en modo asíncrono, son:

l." Circuito de mue~str@u. 2." C%nrpfad~r de b&@ie;9. . 3.' Transmisor asíncronc>. 4.' Riac~ptor ~tsfncr~w.

El circuito de muestre0 actúa sobre la patita RC7/RX/DT, que es por donde se recibe el bit de información o control y se encarga de muestrear tres veces su valor, para decidir éste por ma- yoría.

Page 197: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

BIT INICIO BIT 1 BIT 8 BIT PARADA

DATO

Figura 9.2. En el protocolo de comunicación asincrono, cada palabra de información o dato consta de 8 o 9 bits, estando precedidos por un bit de INICIO y les sigue un bit de PARADA. Los bits se trans- fieren al ritmo de la frecuencia de reloj establecida.

9.2. GENERADOR DE BAUDIOS

En el protocolo asíncrono RS-232-C, la frecuencia en baudios (bits por segundo) a la que se rea- liza la transferencia se debe efectuar a un valor normalizado: 330, 600, 1.200, 2.400, 4.800, 9.600, 19.200, 38.400, etc. Para generar esta frecuencia, el USART dispone de un Generador de Frecuencia en Baudios, BRG, cuyo valor es controlado por el contenido grabado en el registro SPBRG.

Además del valor X cargado en el registro SPBRG, la frecuencia en baudios del generador de- pende del bit BRGH del registro TXSTA<2>. En el caso de que BRGH sea O se trabaja en baja ve- locidad y si BRGH = 1 se trabaja en alta velocidad. Según este bit se obtendrá el valor de una cons- tante K necesaria en la determinación de la frecuencia de funcionamiento.

Frecuencía en Baudios = Fw /(K 8 (X + 7))

X es el valor cargado en el registro SPBRG

Si BRQH = O, baja velocidad y K = 64 Si BROH = I , alta velocidad y K = 16

Page 198: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

194 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

De donde se desprende que:

En la Figura 9.3 se presenta la estructura interna junto a otros datos de interés de los registros que intervienen en la determinación de la frecuencia en baudios a la que transfiere información el USART.

Figura 9.3. Características relevantes de los registros que intervienen en la determinación de la frecuencia en baudios de la transferencia de información en el modo asíncrono del USART.

Page 199: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

bL USAKI': 'l'KANSMISOR/RECEPTOR SINCRONOIASÍNCRONO SERIE 195

9.3. TRANSMISOR ASINCRONO

En la Figura 9.4, se muestra un esquema simplificado de la comunicación entre un USART trans- misor y otro receptor, contenidos en sus respectivos microcontroladores.

El dato que se desea transmitir por el USART transmisor de la Figura 9.4 se deposita en el re- gistro TXREG y a continuación se traspasa al registro de desplazamiento TSR, que va sacando los bits secuencialmente y a la frecuencia establecida. Además, antes de los bits del dato de inforrna- ción incluye un bit de INICIO y después de sacar todos los bits añade un bit de PARADA. El USART receptor recibe, uno a uno, los bits, elimina los dos de control y los de información una vez que han llenado el registro de desplazamiento RSR los traslada automáticamente al registro RCREG, donde quedan disponibles para su posterior procesamiento.

En la Figura 9.5 se presenta el diagrama por bloques de la sección transmisora del USART. El núcleo está constituido por el registro de desplazamiento TSR, que obtiene el dato desde el

Figura 9.4. Esquema simplijicado del conexionado entre dos módulos USARTfuncionando en modo asin- crono.

8 1 BUS DE

Figura 9.5. Diagrama por bloques de la sección de transmisión del USART en modo asíncrono.

Page 200: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

196 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

registro TXREG y luego lo va desplazando y sacando bit a bit, en serie, por la patita RC6/TX/CK. El primer bit que sale es el de menos peso. El dato a transferir se carga por soft- ware en TXREG y se transfiere al TSR en cuanto se haya transmitido el bit de PARADA del dato anterior. La transferencia entre los dos registros se realiza en un ciclo y entonces el seña- lizador TXIF se pone a l , para advertir que el registro de transmisión se ha vaciado. También en este momento puede producirse una interrupción si se ha posibilitado programando el bit TXIE = 1 en el registro PIE1<4>. Cuando se escribe otro dato sobre TXREG, el señalizador TXIF se pone a O. El bit TRMT sirve para indicar el estado del registro TSR y vale 1 cuando está vacío.

La secuencia de pasos a seguir para implementar una transmisión en el USART es la si- guiente:

El siguiente ejemplo muestra una posible configuración.

En la Figura 9.6, se ofrecen las características más relevantes de los registros asociados con la transmisión asíncrona y en la Figura 9.7 se especifica la distribución y asignación de funciones de los bits del registro TXSTA.

Page 201: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Figura 9.6. Características más relevantes de los registros asociados con la transmisión asíncrona.

Registro TXSTA

Figura 9.7. Asignación de funciones de los bits del registro TXSTA para el control de la sección transmiso- ra del USART.

Page 202: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

198 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Los datos se reciben en serie, bit a bit, por la patita RC7/RX/DT y se van introduciendo secuencial- mente en el registro desplazamiento RSR (Figura 9.4), que funciona a una frecuencia 16 veces más rápida que la de trabajo. Cuando el dato consta de 9 bits hay que programar el bit RX9 = 1 y el no- veno bit de información se colocará en el bit RX9D del registro RCSTA. Obsérvese en la Figura 9.8 el control sobre el noveno bit con las puertas de control y las señales que se aplican (ADDEN = 1). Cuando CREN = 1 en el registro RCSTA<4>, se habilita la recepción.

Cuando un procesador maestro intenta enviar información a uno de los esclavos, primero envía un byte de dirección que identifica al destinatario. El byte de dirección se identifica porque el bit RX9D que llega vale 1. Si el bit ADDEN = 1 en el esclavo se ignoran todos los bytes de datos. Pe- ro si el noveno bit que se recibe vale 1, quiere decir que se trata de una dirección y el esclavo pro- vocará una interrupción, y se transferirá el contenido del registro RSR al buffer de recepción. Tras la interrupción, el esclavo deberá examinar la dirección y si coincide con la suya poner ADDEN = O para poder recibir datos del maestro.

Si ADDEN = 1 como los datos son ignorados, el bit de PARADA no se carga en RSR, por lo que este hecho no produce interrupción.

P " " " CREN : r"""

n OERR : i""'" 8 FERR :

R - MSB REGISTRO DESPLAZAMIENTO RSR

FlFO

BUS DE DATOS

Figura 9.8. Diagrama por bloques de la sección receptora del USART.

Page 203: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

xi\i. i i\i I r . u i r i i u v i \ , i w ~ u i i v i \ I ~ ~ ~ L ~ ~ / ~ U L L I L L ~ W L ~ V ULI\IL L//

Los pasos a seguir en el modo de recepción son los siguientes:

En la Figura 9.9 se muestra la estructura interna y la asignación de funciones de los bits del re- gistro RCSTA.

Registro RCSTA

Page 204: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

200 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 9.9. Registro RCSTA para el control de la sección receptora del USART, en modo asincrono.

En la Figura 9.10 se ofrecen las características más relevantes de los registros que intervienen en la recepción asíncrona de datos en el USART.

Figura 9.10. Características de interés de los registros que intervienen en la sección receptora del USART en modo asíncrono.

Page 205: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL USART: TRANSMISOR/RECEPTOR SINCRONO/ASINCRONO SERIE 201

De los dos modos de funcionamiento del USART, la comunicación serie asíncrona es la más utili- zada. El PIC16F87x incorpora el hardware para comunicarse vía RS-232 con un ordenador tipo PC. Para ello, el PC deberá emular un terminal con el software apropiado.

Enunciado

El programa que vamos a realizar va a hacer que el PIC se comunique vía serie con un programa ter- minal que correrá sobre un PC. El PIC esperará a recibir un carácter, lo visualizará en forma bina- ria sobre LEDs y lo volverá a transmitir a modo de ECO. La recepción del carácter se controlará me- diante interrupción.

Esquema eléctrico

En este ejercicio se van a utilizar tres elementos, tal y como se muestra en la Figura 9.11.

Page 206: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

202 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

CABLE PARA COMUNICACION SERIE

xD TxD

TxD

CIRCUITER~A,PARA COMUNICACION SERlE

MICRO'PIC 110

ORDENADOR

Figura 9.11. Esquema eléctrico del ejercicio propuesto.

Organigrama

Como se muestra en la Figura 9.12, el programa principal de este ejercicio es sencillo, ya que tras configurar los registros a utilizar sólo hay que dejar al USART en modo escucha y esperar en un bu- cle a que se genere una interrupción al recibir un carácter desde el PC.

USART M ESCUCHA * Figura 9.12. Organigrama del ejercicio propuesto.

Page 207: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL U ~ N K 1 : 1 KNlV 3lV113uK/KkLkY 1 U K SIN LKUN U/AY LNCKUNU YbKlL:

LEER DATO 5' SACAR DATO

REmANSMITlR DATO P VOLVER u

Figura 9.13. Organigrama de tratamiento de interrupción.

En el tratamiento de interrupción se leerá el dato recibido, se mostrará por la Puerta B y se vol- verá a retransmitir hacia el PC a modo de ECO. Antes de volver se deberá restaurar el señalizador de interrupción.

Programa comentado

El programa una vez terminado quedará así:

Page 208: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

204 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 209: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL USART: TRANSMISORJRECEPTOR SÍNCRONO/ASÍNCRONO SERIE 205

Prueba del programa

Además de las conexiones ya comentadas en el esquema eléctrico, se deberá tener en cuenta que:

Una vez hecho esto y grabado el programa en el PIC, se ejecutará el programa TERMI- NAL.EXE desde el PC. Cada tecla que se pulse será recibida por el microcontrolador, que la sacará por los LEDs y la devolverá al ordenador de modo que pueda verse su eco en el moni- tor.

El programa de comunicaciones TERMINAL

Se trata de un programa de comunicaciones que funciona bajo MS-DOS o en Windows con venta- na MS-DOS, en cualquier ordenador IBM PC/XT/AT o compatible, contenido en un único fiche- ro ejecutable llamado TERMINAL. Su ejecución tiene lugar al teclear la siguiente línea de co- mandos:

Al ejecutar el programa, aparece la pantalla de trabajo que se muestra en la Figura 9.14. El programa hace que el PC emule a un terminal serie capaz de comunicarse con cualquier otro

dispositivo. Pulsando las teclas Alt-X, se cancela el programa de comunicación, devolviendo el control al

sistema. Con la tecla F1 se accede a una ventana de ayuda para el manejo del programa TERMI- NAL. Tras la Figura 9.14 se explica resumidamente la función de cada uno de los comandos eje- cutable~.

Page 210: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 211: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

10.1. ESTO ES OTRA HISTORIA

En Julio de 1999, Microchip anunciaba desde su sede central en CHANDLER, Arizona, la nueva fa- milia PICl8Cxxxx. Se trataba de una familia de microcontroladores con arquitectura RISC de 8 bits, pero que incluía los mayores avances en hardware y software para simplificar y potenciar mi- les de aplicaciones centradas en las áreas de la automoción, las comunicaciones, la ofimática, los productos de gran consumo y el control industrial.

El objetivo del fabricante era facilitar a sus usuarios la migración de las familias PIC12C6xx, PIC16Cxx y PIC l7Cxx a modernos dispositivos, que con una relación precio/prestaciones muy competitiva, integren la mayoría de los recursos que posibiliten desarrollos eficientes, flexibles y de elevado rendimiento. Pero esta migración será indolora porque se aprovecharán todas las inversio- nes que se han realizado en hardware y software para las anteriores familias de PIC.

Con la familia PIC 18Cxxx, Microchip ha intentado resolver dos grandes compromisos:

Inicialmente, la familia nace con cuatro modelos con memoria de programa EPROM, cuyas principales características se reflejan en la tabla de la Figura 10.1. El fabricante planea que en un par de años esta familia dispondrá de modelos con memoria FLASH, OTP y ROM. De los cuatro modelos, dos están encapsulados con 28 patitas y los otros dos con 40, como sucedía con los PIC16F87x.

Page 212: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

208 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Figura 10.1. Tabla que muestra las principales características de los cuatro primeros modelos de la fami- lia PICI 8Cxxx.

10.2. LAS GRANDES APORTACIONES

Para comprender las enormes expectativas potenciales de los PIC18Cxxx se exponen las aportacio- nes más significativas, antes de pasar a describir la arquitectura, la organización de la memoria y las instrucciones. En cuanto a los periféricos, existe una gran similitud con los estudiados en los PIC1687x.

10.2.1. Espacio lineal de direccionamiento

El direccionamiento implementado en el chip permite manejar un espacio dedicado al programa que puede alcanzar los 2 MB y hasta 4 KB para los datos. Esta posibilidad es capaz de satisfacer las

Page 213: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQUÍ: LA FAMILIA PIC18CXXX 209

necesidades más exigentes en cuanto a espacio de memoria se refiere. Los modos de direcciona- miento se han potenciado extraordinariamente para la mejor operatividad del lenguaje C.

10.2.2. Completo juego de instrucciones

El repertorio consta de 77 instrucciones que tienen un tamaño de 16 bits (palabra de 2 bytes). No obstante, hay 4 instrucciones que tienen un tamaño de 2 palabras de 16 bits. Todas las instrucciones son similares a las empleadas en los PIC16Cxx y los PIC17Cxx con excepción de dos nuevas ins- trucciones. Se resaltan los siguientes avances en el juego de instrucciones.

A .. 1 .O instrucciones capaces de mover datos entre dos posiches de la mtmoria dta datos.

I

2,' Instruccíones que permitep? el intercambio de información entre posiciones de la mernwja de prcp ;, grama y la de datos.

3." Multipiicación de 8x8 Mts en un ciclo de instrucci&. 4." Potentes instrucciones de un solo ciclo qw ponen a -f o cambian el mbr de un bit en on mgistm

S en una Puerta de E/S. . . f"'"

10.2.3. Diseño optimizado para compilador C

Hasta que no se ha alcanzado la capacidad de memoria y los modos de direccionado de los PIC 18Cxxx, los ingenieros de diseño han preferido en muchas ocasiones trabajar con lenguaje En- samblador.

Con esta familia se facilita enormemente el empleo del lenguaje C. Algunas de las razones son el enorme espacio lineal de la memoria, los diversos punteros de datos que permiten el direcciona- do con postincremento, predecremento, etc., la eficiencia en el manejo de la Pila, etc.

Microchip dispone de un interesante compilador de C denominado MPLAB-C18, del que se puede obtener una versión de demostración a través de Internet.

Cualquier programa escrito en Ensamblador o en C para los PIC16Cxx y los PIC 17Cxx puede transferirse directamente para ser ejecutado por los PIC18Cxxx.

10.2.4. Herramienta modular para la emulación

Un emulador de gran exactitud se implementa mediante la combinación de dos chips maestro-es- clavo. El primero emula a la CPU y el acceso a la memoria (Figura 10.2). El esclavo emula a los periféricos, poniendo a disposición de los diseñadores un sistema de validación casi perfecto que añade una gran seguridad a los productos en fase de desarrollo.

10.2.5. Otras ventajas

Al igual que otros PIC, los de esta familia admiten la Programación Serie En Circuito (ICSP), que permite la grabación del programa sobre el microcontrolador una vez que se halle colocado en la tarjeta del producto final.

Page 214: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

210 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

EMULADOR PIC 1 8 C m - 1 1 1 1 1 1 1 - 1 1 1 1 1 1 1 1 1 1 - - - - 1 - 1 -

1 1

Figura 10.2. Esquema del emulador de los PIC18Cx.n formado por dos chips.

El perro guardián dispone de sus propios divisores de frecuencia y no comparte nada con el Ti- mero. Es posible activarlo y desactivarlo por software, con lo que puede detenerse cuando se entra en el modo de Reposo o en partes no críticas del programa.

Un circuito PLL da a los usuarios la opción de multiplicar por 4 la frecuencia del cristal, consi- guiendo 40 MHz a partir de una frecuencia de entrada de 10 MHz. En este caso, la configuración del oscilador ha de estar programado para funcionar en modo HS (Figura 10.3).

CRISTAL 10 MHz

:""-"; I 1 b; 1 PLL I

I I 40 MHz I-

I - 1 - 1 - 1 - 1 I

Figura 10.3. Un circuito PLL optativo consigue multiplicar por 4 la frecuencia de entrada del cristal.

Page 215: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQUÍ: LA FAMILIA PIC18CXXX 211

10.3. DIAGRAMA DE CONEXIONADO

Los dos modelos de PIC18C2x2 están encapsulados con 28 patitas, mientras que la pare- ja PIC 18C4x2 tienen 40 patitas. La diferencia más importante, al igual que sucedía con los PIC16F87x, es que los que tienen más patitas disponen de 2 Puertas de E/S más, la D y la E.

En la Figura 10.4 se muestra el diagrama de conexiones de los PICl8Cxxx con el encapsulado en doble hilera de patitas.

MCLR#/Vpp

RAO/ANO

RA l /AN l

RA2/AN2/VK,,

RA3/AN3/VK,,+

RA4/TOCKI

RA5/AN4/SS#/LV DI N

REO/RD#/AN5

REl/WR#/AN6

RE2/CS#/AN 7

VDD

vss

OSCl/CLKI

OSCZ/CLKO/RA6

RCO/Tl OSO/Tl CKI

RC l /T l OSI/CCP2

RC2/CCP1

RC3/SCK/SCL

RDO/PSPO

RDl/PSPl

MCLR#/Vp,

RAO/ANO

RA1 /AN 1

RA2/AN2/VKFF

RA3/AN3/V,,F+

RA4/TOCKI

RA5/AN4/SS#/LVDI N

vss

OSC1 /CLKI

OSC2/CLKO/RA6

RCO/Tl OSO/Tl CKI

RCl/TlOSl/CCP2

RC2/CCPl

RC3/SCK/SCL

Figura 10.4. Diagrama de conexiones de las patitas de los dos modelos de encapsulados en doble hilera de los PICI 8Cxx.

Page 216: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

10.4. ARQUITECTURA INTERNA

Aunque con mayor número de registros internos y más capacidad de memoria y de Pila, la arqui- tectura interna de los PIC 18Cxxx recuerda mucho a la de los PIC16F87x. Los modelos de 40 pati- tas disponen de las Puertas de E/S D y E, que posibilitan la implementación de una puerta paralela esclava. (Figuras 10.5 y 10.6.)

En referencia a los periféricos, hay mucha analogía con los que tenían los PIC16F87x. La nueva familia dispone de un Timer más. El Contador de Programa es más complejo y de mayor tamaño, lo mismo que ocurre con la Pila, que tiene 3 1 niveles de 2 1 bits cada uno. La dirección de la memoria de programa tiene 21 bits y maneja 2 MB, y la dirección de la memoria de da- tos, con 12 bits, puede manejar 4 KB. Otros elementos destacables y nuevos de esta familia son el multiplicador hardware 8x8 y las lógicas para el incremento y decremento de las direccio- nes.

Como ya se ha comentado, el Contador de Programa (PC), al disponer de 21 bits, puede manejar un espacio de memoria de 2 MB para el programa. Sin embargo, los PIC18Cx52 sólo tienen imple- mentado 32 KB de memoria EPROM y los PIC18x42 16 KB. Como la mayor parte de las instruc- ciones tienen 16 bits, en los modelos citados en primer lugar caben 16 K instrucciones y en los se- gundos la mitad.

El Vector de Reset ocupa la dirección OOOOh y las interrupciones las direcciones 0008h y 001 8h. (Figura 10.7.)

La Pila tiene 3 1 niveles de 21 bits cada uno y su puntero, con 5 bits, se pone a O después de un Reset. Tanto dicho puntero como la posición de la cima de la Pila son leíbles y escribibles a través de los registros FSR. Además, hay señalizadores de «Pila llena» y «Desbordamiento de la pila» y existen instrucciones PUSH y POP para introducir y salvar el PC de la cima de la Pila.

El PC tiene depositados sus 21 bits en 3 registros. Los 8 bits de menos peso los contiene el registro PCL, los 8 bits siguientes están en el PCH y, finalmente, los 5 de más peso <20-16>, se ubican en el registro PCU. Sólo los bits del registro PCL son directamente leíbles y escribi- bles.

Existen 4 instrucciones de 4 bytes (MOVFF, CALL, GOTO y LFSR). Los 4 bits de más peso de la segunda palabra de estas instrucciones siempre son cuatro unos, que codifican una forma especial de la instrucción NOP. Los 12 bits de menos peso de la segunda palabra de estas ins- trucciones direccionan el dato que maneja la instrucción codificada en la primera palabra. Así, mientras se ejecuta la primera palabra se busca el operando de la segunda. Además, si se brinca o salta la primera palabra, la segunda palabra al no ir precedida por la primera se interpreta por una NOP.

Page 217: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQUÍ: LA FAMILIA PIC 18CXXX 213

v v PUERTA SERIE S~NCRONA MAESTRA

Figura 10.5. Arquitectura interna de los modelos de 28 patitas de la familia PICl8Cxxx.

Page 218: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

214 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

RAS/AN4/SS#/LVDIN

RCO/Tl OSO/Tl CKI

RCl/Tl OSI/CCP2

4 x P L L w; G;E&N ; ' , , , , I - 1 i i i - i i i . ' VOLTAJE DE REFERENCIA

DE PRECISIÓN I i i i - i i - i

MCLR# V,, Vsr

Figura 10.6. Arquitectura interna de los modelos de 40 patitas de la familia PIC18Cxxx.

Page 219: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQuÍ: LA FAMILIA PIC 18CXXX 215

A

2 Mbytes

Figura 10.7. Organización general de la memoria de programa de los PIC18Cx52

10.6. ORGANIZACIÓN DE LA MEMORIA DE DATOS

La memoria de datos puede alcanzar un tamaño de 4 KB al estar manejada por direcciones de 12 bits. Es de tipo RAM estática y los modelos PIC18Cx42 sólo disponen de 512 bytes implementados físicamente en el chip, mientras que los modelos PIC 18Cx52 tienen 1.536 bytes. En los bancos de la RAM hay posiciones que contienen Registros Específicos (SFR) y otros de Propósito General (GPR).

El mapa de memoria puede dividirse en 16 bancos de 256 bytes cada uno. En este caso, la di- rección se forma con dos campos. El primer campo de 4 bits sirve para seleccionar el banco y está implementado en los 4 bits de menos peso del registro BSR (Registro de Selección de Banco). El segundo campo tiene 8 bits, que se hallan contenidos en el formato de la instrucción.

En el direccionamiento directo, los 16 bits del formato de la instrucción INS<15-O> se reparten en los siguientes campos. Los 6 bits de más peso INS<15-10> contienen el código OP que discri- mina las instrucciones. El bit INS<9> indica el destino de la instrucción, de forma que si vale O es el W y si vale 1 es el registro f, que maneja la instrucción. El bit INS<8> se denomina «a» y deter- mina el tipo de acceso a la memoria de datos. Si a = 1 se accede al banco que determinan los 4 bits de menos peso del registro BSR. Si a = O, se usa un direccionamiento especial de «Acceso a Ban- co» (Figura 10.8).

Por ejemplo, en la instrucción ADDWFf,d,a, en el caso de materializarse en ADDWF 004h,O,l, el acceso a la memoria de datos sería al banco que estuviese contenido en los bits BSR<3-O> en la posición 004h y el registro destino sería el W (Figura 10.9).

Page 220: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

216 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

CÓDIGO OP. INSTRUCCIÓNC~-O>

DIRECCI~N DENTRO 1 1 DELBANCO

I I O000 0001 XXXX l l l ?

1 BANCO O BANCO 1 BANCO x BANCO 15

I BANCO I

Figura 10.8. Direccionamiento directo a memoria, usando para la selección del banco los 4 bits de menos peso del registro BSR.

Figura 10.9. Codijkación en binario de la instrucción addwf 004h,0,1, que expresa un direccionado a la memoria de datos usando los bits BSR<3-O> para seleccionar el banco accedido.

Cuando a = O el acceso especial consiste en que sólo se emplean los 8 bits de la dirección, pues- to que el banco al que se accede está formado por los 128 primeros bytes del Banco O y los 128 ú1- timos bytes del Banco 15, en el que se hallan contenidos los registros SFR (Figura 10.10).

Page 221: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQUÍ: LA FAMILIA PIC18CXXX 217

I O000 0001 XXXX 1111

CÓDIGO OP. INSTRUCCIÓNC~-O* - I

I BANCO O BANCO 1 BANCO x BANCO 15 I

8

Figura 10.10. Cuando a = O sólo se accede con los 8 bits de direccionado contenidos en la instrucción. Los 256 bytes a los que se pueden acceder están formados por los 128 primeros del Banco O y los 128 últimos del Banco 15.

r DIRECCIONES POSIBLES

DENTRO DE LOS BANCOS

Para manejar de forma óptima la memoria de datos, se han construido instrucciones formadas por dos palabras de 16 bits. La primera destina sus 4 bits de más peso al código OP de discrimina- ción y los 12 restantes a apuntar en el espacio de 4 KB al operando fuente (S). La segunda palabra siempre tiene sus 4 bits de más peso a 1 y los 12 restantes apuntan al operando destino (d). La ins- trucción MOVFF s,d transfiere el contenido de la dirección de la memoria de datos (S) a la posi- ción (d). (Figura 10.1 1 .)

La segunda paiabra de una instrucción de dos palabras siempre empieza con cuatro u m , En caso de no ejecutarse la primera palabra, por ejehpb como consecuencia de un brinco, ese cbdigo se interpreta como una instrucción NOi?

Mediante el uso de varios punteros de datos indirectos (registros FSR), se accede a posiciones de la memoria con preincremento, postdecremento, etc.

Una última posibilidad de los PICl8Cxxx es trasladar información entre la memoria de datos, cuyas posiciones tienen tamaño byte, y la de programa que tienen 16 bits de tamaño. Para soportar estas operaciones de lectura de tabla y escritura de tabla existen dos registros, uno de ellos es el

Page 222: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

218 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

INSTRUCCI~N MOVFF s,d

CÓDIGO OP. INSTRUCCIÓN<~-O> 1 ." PALABRA

1 5 7 O

DlRECClONAMlENTO DE OPERANDO FUENTE

CÓDIGO OP. INSTRUCCIÓN<~-O>

1~ 7 2." PALABRA

DlRECClONAMlENTO DE OPERANDO DESTINO

XXXX 1111 I

BANCO O BANCO 1 BANCO x BANCO 15

Figura 10.11. La instrucción MOVFF s,d consta de dos palabras de 16 bits. En la primera, los 4 bits de más peso expresan el código OP y los 12 restantes la dirección del operando fuente. En la segun- da palabra, los 4 primeros bits siempre son 1 y los 12 restantes apuntan la dirección del ope- rando destino.

TBLPTR, que consta de 21 bits y que sirve para apuntar una posición de la memoria de programa. El otro registro es el TABLAT, que soporta un Latch de Datos, que guarda los 8 bits que se leen o que se van a escribir en la memoria de programa.

Como se aprecia en la Figura 10.12, en la operación de lectura de tabla, el byte de la memoria de programa apuntado por TBLPTR se carga en TABLAT, que representa una posición de la memoria de datos. En escritura de tabla, el byte procedente de la memoria de datos cargado en TABLAT se escribe en el byte que apuntan los 21 bits de TBLPTR.

10.7. REPERTORIO DE INSTRUCCIONES

Aun manteniendo el parecido y la sencillez con las instrucciones de las gamas de PIC precedentes, las 77 instrucciones del repertorio no sólo aumentan el tamaño a 16 bits, sino que potencian su ac- tuación y las adaptan al lenguaje C. Además, cuatro de dichas instrucciones tienen una longitud de dos palabras. (Figura 10.13.)

Page 223: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTÁ AQUI: LA FAMILIA PIC18CXXX 219

LECTURA DE TABLA EIIrl

ESCRITURA DE TABLA G 20 PUNTERO TABLA

O 7 LATCHTABLA O

Figura 10.12. Las operaciones lectura de tabla y escritura de tabla traspasan información entre las dos me- morias de los PIC18Cxxx.

Page 224: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

220 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 225: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL FUTURO ESTA AQUI: LA FAMILIA PIC 18CXXX 221

Page 226: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

222 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES

Page 227: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 228: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 229: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

APENDICE A - LA FAMILIA PIC AL COMPLETO 225

Page 230: Electronica PIC Diseno Practico Aplicaciones PIC16f87x
Page 231: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

EL = EE M f C/SPI = Mastw L"C/SPI SMB = S p ECCP = /WN M = - B W m R e M W=%a EMA = EXbprptCd Memary Mdmcing PtVD = Prcgrmrn* LwLuctcge LMfxmt' U W = U @cWmm Rmm/Transrri~ttec t2c = m- cmn PSP=Parafkl C I M M VH t = vuiiage Reíemw 1CD = i&M Dzcwg W M =Pulse W& dtfi* WüT = Wa%cb&g Time L V D = L O ( ~ V ~ M B C W ~ SLAC = aqpe A/D m r f m up to la MS

Page 232: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

LIBROS

NMICROCONTROLADORES PIC. Diseño práctico de aplicaciones», (1.varte: PIC16F84). Incluye un CD con aplicaciones y tutoriales multimedia. Angulo, J. M." y Angulo, 1. Editorial McGraw-Hill, 2." edición, 1999.

«MICROCONTROLADORES PIC. La solución en un chip», Angulo, J. M.", Martín, E. y Angulo, 1. Editorial ITP Paraninfo, 4." edición, 2000.

«MICROB~TICA>>, Angulo, J. M.", Romero, S. y Angulo, 1. Editorial ITP Paraninfo, 2000.

REVISTAS

«Revista Española de Electrónica* «Elektor» «Electronics» ~Circuit Cellar» «Electrónica Práctica Actual» «Resistor» «PC Hardware» «Microbit»

EMPRESAS

«MICROCHIP TECHNOLOGY INC.» 2355 West Chandler Blv., Chandler, AZ 85224-6199, EE.UU., Tel: 602.786.7200.

«SAGITRON» Corazón de María, 80-28002 MADRID (España), Tel: 9 1-4 16926 1. E-mail: [email protected]

Page 233: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

230 BIBLIOGRAFIA Y DIRECCIONES DE INTERNET RELACIONADAS CON LOS PIC

aMICROSYSTEMS ENGINEERINGB Gral. Concha, 39-48012 BILBAO (España), Tel: 94-4223263 E-mail: [email protected]

INTERNET

MICROCHIP: http://www.microchip.com MICROSYSTEMS ENGINEERING: http://www.arrakis.es/-msyseng PARALLAX, INC: http://www.parallaxinc.com ITU TECHNOLOGIES: http://www.itutech.com SAGITRON: http://www.sagitron.es

Page 234: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

ADC, 86 ADCONI, 133 ADCS<l :O>, 131 ADRESL, 133 ADRESH, 133 Arbitraje, 166, 167

Bajo consumo, 74 Batería, 150 Baudios, 193 BGRH, 193 BOR#, 74 Bus I2C, 160, 173

Captura modo, 106, 108 CCP, 7, 105, 112 CCP1,108,110 CCPxCON, 105 Certamen, 127 Comparación modo, 107,

108 Compilador C, 209 Configuración, 150 Conversor A/D, 8, 129, 132,

136 CPO, 52 CP1,52

DAC, 86 DATAQUEST, 3 Direccionamiento, 169

EEPROM, 53 Emisor R.F., 186 Encapsulados, 33

Encoder, 66 E/S paralelo, 86

Familia PIC, 223 FLASH, 25,50 Fuente alimentación, 103 FUTABA, 125

Gamas, 5 Generador de funciones, 63

HARVARD, 22

ICSP-LV, 10 IRP, 44 ITU, 230 I2C, 159, 177

LCD, 94,139,145 LCD-CON, 145 LCD-CON2,146 LCD Interface, 15 1 LDR, 18 LM35,19

Maestro, 149 MCLR#, 79 Microbótica, 124, 229 MICROCHIP, 3,229 MICRO'PIC IO,60,6 1,117,

137 MICRO'PIC TRAINER, 15,

38,60,117 MICRO'PIC TRAINER

PLUS, 83,85

MICROSY STEMS ENGINEEERING, 9,229, 230

Modo captura, 106 Modo comparación, 107,

108 Modulación anchura

impulsos, 109 Motores DC, 40,65 Motores PAP, 41 MPLAB-ICD, 9 MSETX, 186 MSERX, 186 MSSP, 153, 186 MSx84,100,102,125

Opto-triac, 65 Oscilador, 63

Palabra configuración, 72 Palabras identificación, 73 PARALLAX, 230 PCL, 29 PCLATH, 29 Período, 109 Perro Guardián, 77 PICBOT-2, 126 PIC16F87X, 7,21,31 PIC 16F84, 1 1 PIC 16F874/7,24 PIC18CXXX, 21 1 PIC18C2X2,211 PIC18C4X2,211 PICBUS, 62,84 Piezoeléctrico, 63

Page 235: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

POP, 212 POR, 44 Puerta A, 67 Puerta B, 69 Puerta C, 7 1 Puerta D, 7 1 Puerta E, 72 Puertas E/S, 67 PUSH, 212 PWM, 109,110 PWRT, 75

RAM, 26 Receptor asíncrono, 198 Receptor R.F., 186 Registro

ADCONO, 130 ADCONI, 130 ESTADO, 43 EECON1,51 INTCON, 47 OPCIONES, 45 PIE1,47,48 PIE2,48,49 PIRI, 48,49 PIR2,48,49 RCSTA, 199

SSPBUF, 154 SSPCON, 158,175 SSPCON2,176 SSPSR, 154 SSPSTAT, 157,175 TXSTA, 197

Reinicialización, 74,76 Relés, 65 Reloj calendario, 86, 149 Repertorio instrucciones, 34,

220 Reposo modo, 77,82 Reset, 74,76 Revistas, 229 Robots, 127 RS232-C, 149

SAGITRON, 229 SCK, 153 SCL, 162 SDA, 162 Sensores, 103 Sensores analógicos, 64 Señalizadores

C, 44 z , 4 4 PD#, 44,74

TO#, 44,74 Serie síncrona, 153 Servomotor, 125 SPI, 153, 155, 156

Teclado, 84 Temporizador, 87,93 Terminal programa, 205 TMRI, 88,90,93,106 TMR2,90,92,109 Transmisor asíncrono, 195 TUNABAL, 3 TlCON, 89 T2CON, 91

UNIVERSIDAD DE DEUSTO, 127

USART, 19 1,20 1

Visualización, 86

WCOL, 176 WDT, 77 WRT, 52

Zócalos, 101 ZOC87X, 9,37

Page 236: Electronica PIC Diseno Practico Aplicaciones PIC16f87x

Segul&cár , .. parte: PZC 16F87x

Angulo Martínez