Вы находитесь на странице: 1из 236

CONTENIDO

Prlogo ....................................................................................................................................

Captulo 1. NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC .....................


1.1. 1.2.
1.3. 1.4.

Las nuevas aplicaciones exigen mayores prestaciones .......................................... Dos nuevas lneas de PIC: familias PIC 16F87x y PIC 18Cxxx.............................. El PIC pobre (PIC 16F84) y los ricos (PIC 16F87x) ............................................... Herramientas para trabajar con los PIC 16F87x .....................................................

Programar PIC es fcil: recordando el viejo PIC16F84 ............................................. Disear con PIC es fcil: presentacin de los sensores analgicos ms utilizados ......... Captulo 2. ARQUITECTURA. DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES ..................................................................................
Introduccin ........................................................................................................... Procesador RISC con arquitectura Harvard ........................................................... Organizacin de la memoria de programa ............................................................. Organizacin de la memoria de datos RAM .......................................................... 2.4.1. Registros especficos 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 fcil: el primer programa con los PIC16F87x ............................. Disear con PIC es fcil: actuadores para diversas aplicaciones: los motores .........

Captulo 3. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM .....................................................................
3.1. 3.2. 3.3. 3.4. Los registros de control ........................................................................................ Registro de estado (STATUS) ................................................................................ Registro de opciones (OPTION) ............................................................................ 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 sealizadores de interrupciones 1 y 2 (PIR 1 y PIR2) ......... Lectul-a y escritura de las memorias EEPROM y FLASH .....................................

3.5.

Programar PIC es fcil: un programa que maneja las iiiemorias FLASH de cdigo y EEPROM de datos ........................................................................................... Disear con PIC es fcil: ampliacin de perifricos para el trabajo con PIC .......... Captulo 4. LAS PUERTAS DE EIS Y RECURSOS ESPECIALES DEL PROCESADOR ...........................................................................................................
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 .................................................................................................... Palabra de configuracin ........................................................................................ ., Palabras de identificacion ....................................................................................... Reinicializacin o reset .......................................................................................... Perro guardihl (W DT: watchdog timer) ................................................................ Modo de reposo o de bajo consumo ....................................................................... Programacin de los PIC 16F87x ...........................................................................

4.2. 4.3. 4.4. 4.5. 4.6. 4.7.

Programar PIC es fcil: utilizacin de los recursos del PIC ...................................... Disear con PIC es fcil: ampliacin de los recursos del PIC .................................... Captulo 5. LOS TEMPORIZADORES ..........................................................................
5.1. 5.2. 5.3. 5.4. 5.5. Tipos y caractersticas generales ........................................................................... Estructura interna y funcionamiento del TMR 1 .................................................... Registro de control del TMR 1 (T1 CON) ............................................................... Chuleta-resumen de los registros asociados al TMR 1 ........................................... Funcionamiento y programacin del TMR2 ..........................................................

CONTENIDO

vii
92

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

Programar PIC es fcil: iiiidiendo el tiempo................................................................ 93 Disear con PIC es fcil: aplicacin de los PIC al control de motores y sensores ......... 100 Capitulo 6. MDIILOS DE CAPTURA. COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS ............................................................................. 105
6.1. 6.2. 6.3. 6.4.
1

6.5. 6.6.

Introduccin a los mdulos CCP ........................................................................... 105 Modo captura ......................................................................................................... 106 Modo comparacin ................................................................................................107 Chuleta-resumen de los registros asociados al mdulo de captura y al de comparacin ..................................................................................................................108 Modo de n~odulacin de anchura de pulsos (PWM).............................................. 109 Chuleta-resumen de los registros asociados al mdulo PWM ............................... 110

Programar PIC es f'cil: trabajo con los mdulos CCP .............................................. 112 Disear con PIC es fcil: aplicacin de los microcontroladores: la microbtica ............. 124 Captulo 7. EL CONVERSOR A/D .................................................................................. 129
7.1. 7.2. 7.3. 7.4.
Presentacin del conversor analgico/digital ......................................................... 129 Registros de trabajo ................................................................................................129 Estructura interna y configuracin del C A/D ........................................................ 131 Chuleta-resumen de los registros asociados al conversos analgico/digital .......... 136

Programar PIC es fcil: adquisicin de valores con los conversores A/D ................. 137 Ilisear con PIC es fcil: visuali~acin de valores por pantallas LCD ...................... 145 Capitulo 8. M O D U L O DE COMUNICACINSERIE SINCRONA: MSSP............... 153
8.1. 8.2. 8.3. 8.4. 8.5. Introduccin ........................................................................................................... 153 ModoSPI ...............................................................................................................155 ................................................................ 156 Manejoyprogram;~cinenelmodoSPI Mdulo MSSP trabajando en modo I2C ................................................................ 159 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 Caractersticas generales ........................................................................................ 162 8.6.1. Transferencia del bit ................................................................................. 163 8.6.2. Transferencia de datos .............................................................................. 164

8.6.

viii

CONTENIDO

8.6.3. Arbitraje sin sincronizacin de reloj ........................................................ 8.6.4. Formato .................................................................................................... 8.7. Direccionamiento ................................................................................................... 8.7.1. Definicin del primer byte ........................................................................ 8.8. Especificaciones elctricas ..................................................................................... 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.11. Funcionamiento del modo maestro ........................................................................ 8.1 1.1. Condicin de inicio (start) ........................................................................ 8.1 1.2. Condicin de repeticin de inicio (start) .................................................. 8.1 1.3. Modo maestro en transmisin .................................................................. 8.1 1.4. Modo maestro en recepcin ..................................................................... 8.1 1.5. Secuencia de reconocimiento ................................................................... 8.11.6. Condicin de parada (stop) .......................................................................

Programar PIC es fcil: comunicacin mediante el mdulo MSSP ..........................

181

Disear con PIC es fcil: comunicacin de datos digitales por radio frecuencia........... 186

Capitulo 9
9.1. 9.2. 9.3. 9.4.

EL USART: TRANSMISORIRECEPTOR SNCRONOIASNCRONO SERIE..................................................................................................................... 191


191 193 195 198

Comunicacin serie asncrona ............................................................................... Generador de baudios............................................................................................. Transmisor asncrono ............................................................................................. Receptor asncrono .................................................................................................

Programar PIC es fcil: comunicacin serie con el USART ...................................... 201

Captulo 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. Diseo optimizado para compilador C ..................................................... 10.2.4. Herramienta modular para la emulacin .................................................. 10.2.5. Otras ventajas ........................................................................................... 10.3. Diagrama de conexionado ...................................................................................... 10.4. Arquitectura interna ............................................................................................... 10.5. Organizacin de la memoria de programa ............................................................. 10.6. Organizacin de la memoria de datos .................................................................... 10.7. Repertorio de instrucciones ....................................................................................

CONTENIDO

ix

Apndice A: La familia PIC al completo ............................................................................ 223 Bibliografa y direcciones de inters relacionadas con los PIC......................................... 229 ndice ...................................................................................................................................... 231

Para completar la foriiiacin cle los lectores que accedieroii al estudio y desarrollo de aplicacione\ con microcontroladores basndose en la Primera Parte del libro ((Mi(i~oc~or~ti-olucJo~-e,c PIC. Di\cfio Prcticbo de Aplic cr< ionc\ ),.y ante la aparicin de los nuevos modelo\ que MlCKOCHIP ha comercializado recientemente, los autores han escrito una continuacin de dicho libro, reforzados con la colaboracin de la profesora Susana Roinero de ESTDE (Universidad de Deusto). Para seguir esta obra es prerrequisito conocer terica y prcticamente la primera parte. Las populares y masiva\ aplicacione\ de lo\ tnicrocontroladorec de 8 bits en productos con teclado/pantalla de la dcada que comenz en 1990, ha dado paja a otras mucho ms ambiciosas, que requieren dispositivoc programables con mc recursos y mejor rendimiento. Los autores han intentado crear una herramienta de aprendizaje prctica, eficaz y muy amigable, que vaya mostrando progresivamente el funcionamiento terico, el comportamiento prctico, la programacin 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, tambin en sta se ha elegido una subfamilia de niicrocontroladores para dejarrollar el programa terico-prctico. Hemos seleccionado los cuatro modelos que comprende la subfamilia PIClF87.i. que suponen un espectacular avance con respecto al PIC 16x84. Adems de disponer de mayor c;ipacidad de memoria y funcionar a ms velocidad con mejor rendimiento, ectos microcontroladores poseen i i i tegrados todos los recursos que precisan las aplicaciones comerciales de nivel medio y alto. Tambin y como atencin a los lectores mc exigentes, se describe la familia PICl8Ci i 1 , que ect llamada a utilizarse en los proyectos ms exi,centes. La mayora de los temac o captulos, al igual quc en la primera parte, los hemos dividido en tres secciones:

f ,aTeora. Se expone con clar~dad y senc~llez el funcionamiento, las prestaciones, la programacin y el manejo de cada recurso Cada tema se dedlca a un recurso.

2"rogramar PIC es fcil. Para cada tema y para cada recurso se han preparado una serle de ejerCICIOS, programas y dlseos, con los que progres~vamente se util~zan los conceptos expuestos en /a teora Toda la colecc~n de ejerc~c~os propuestos se pueden reallzar ntegramente con las herramlentas bas~cas comerc~al~zadas por M~crosystems Englneerlng Concretamente se preosa el econmico

xii

PRLOGO

Bajo esta estructura el libro consta de 10 temas y un anexo. El primer tema se destina a mostrar la necesidad y las aportaciones de los nuevos PIC. Se recuerda la programacin 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 analgicos, que se utilizarn en los ejercicios. El segundo tema presenta la arquitectura, el diagrama de patitas y el repertorio de instrucciones de la subfamilia PIC16F87x. En la programacin se hace un enfoque de las peculiaridades de los nuevos PIC y los bancos de memoria y en cuanto a los perifricos se estudian los motores. El tercer tema muestra las caractersticas y asignacin de funciones de los diversos bits de los principales registros de control y las operaciones de lectura/escritura de las memorias FLASH y EEPROM, se realiza un programa de lectura/escritura de dichas memorias y se estudia la tarjeta de ampliacin de perifricos Mical-o'PIC 10. A partir del tema 4 se van analizando los nuevos recursos de los PIC 16F87x, dedicando cada tema a la explicacin de un recurso: Puertas de E/S, Temporizadores/Contadores 1 y 2, Mdulos CCP, Conversor AD, Comunicacin Serie, etc. Cada tema contiene un programa resuelto que puede realizarse sobre las herramientas de Micl-osysterns Engineering comentadas anteriormente y a la vez se van describiendo perifricos especiales como los mdulos de R.F., los microbots, etc., y las nuevas herramientas usadas en los ejercicios, como el ZOC87x para adaptacin al Micro'PIC TI-ainelde los PIC16FX7x y las tarjetas de ampliacin de perifricos MiCI-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 caractersticas de los modelos actuales de microcontroladores de Micl-ochip. Agradecemos muy sinceramente la colaboracin de Micnr-osystemsElzgineel-irzg (Bilbao), que ha puesto a nuestra disposicin todas las herramientas que hemos necesitado y toda la informacin sobre sus productos y los ejercicios que soportaban. Los lectores interesados en conocer ms a fondo dichas herramientas pueden dirigirse directamente a sus oficinas en C/ Gral. Concha 39,48012 Bilbao, o bien, visitarla a travs de Internet (www.arrakis.es1-msysen-). Igualmente expresamos riuestro 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 informacin y programas de inters pueden ser recogidos por Internet (www.microchip.com y www.arrakis.es/-msyseng). Por nuestra parte nos brindamos a ayudar en lo que podamos a nuestros lectores en la direccin autores@inf.deusto.es.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

1.1.

LAS NUEVAS APLICACIONES EXIGEN MAYORES PRESTACIONES

Es posible disear un PLC comer-cial con un PIC16F84, con slo 1 K palabr-as de memoria de cdigo, 64 bytes para datos, 13 lneas de EIS digitales y un contador-tempot-izadol-? A nuestro alumno Ivn Trueba no le era suficiente. Por eso, para poder culminar con xito su proyecto de 3.O de Ingeniera Tcnica en Electrnica tuvo que ampliar notablemente los recursos del PIC16F84. Mediante el protocolo del bus 12C aument con dos puertas ms las lneas de E/S y, entre otras cosas, aadi un conversor A/D que permitiese el tratamiento de seales analgicas. De esta forma, en lugar de usar un solo circuito integrado que contuviese todo lo necesario, el proyecto requiri ms de media docena. (Figura 1.1 .)

Figura 1.1.

Fotografa del panel .fiwntul del PLC ESIDE de Ii7n Ti-ueha. Al estus basado en un hunzilde PIC16F84, par-u uunlentucxl-sr4s r.ec.ursos t u ~ > yrrr o uudicxl- i~arios c.irc.uitosintegrados c.ornunic.udos por- el hlrs 12C.

MICROCONTROL.ADORF<S<(PIC>,. LIISEO P R C ' T I C ' DE ~ APLICACIONES

Todo lo que utiliz nuestro alumno para implernentar el PLC y mucho ms 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 ensear computadores y microcontroladores a los futuros ingenieros. Somos de la opinin de que esta tecnologa CS(I U ~ I . C I ~ I( C~ IC CI C ~ I ~ y O) 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 presentacin del proyecto final del Grupo Duro, 1 ~ ~ decidi i7 ser el mejor y para ello proyect el parking ms espectacular y completo que pueda uno imaginar. En la Figura 1.2 se ofrece una fotografa de la maqueta del l~u~-kit?g ii~tcligcutr controlada desde un PC. No slo gobiernci las barreras de entrada y salida del gar.je, sino qiie adems 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 cornpletsiina informacin con un alto nivel de seg~iridad ante robos. incendios, gases, etc. Para poder soportar las varias decenas de sensoi-es y perifricos que teria el parking, Ivhn necesit utilizar cinco microcontroladores PIC 16F84 intercornunicados por bus 12C y coinple~i~entado con ms de 20 circuitos integrados adaptables al mencionado bus. En dicha circuitera se ampliaba la ~riemoria.las E/S, se aadan conversores A/D, reloj en tiempo real, memorias no voltiles, etc. Tdmbin ,Jallicr Ronrpl-a, Director Tcnico de Zurlihul, considerado uno de los pioneros de la aplicacin de los PIC, Iia pasado por el mismo probleina en el diseo 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 atn mediante el uso de artilugios a la deriva. Estos artilugios son plataformas construidas con maderas viejas y todo tipo de materiales que sueltan los barcos atunervs al mar. Al cabo de un par de semanas estas plataformas han atrado una gran cantidad de plancton que se ha fijado en su estructura y que acta como suculento cebo de los atunes. Cada barco suelta a la deriva varias decenas de plataformas y para optirnizar el rendimiento de la pesca se precisa conocer su situacin y la posible atraccin de bancos de atnidos. Para proporcionar esta informacin cada artilugio incorpora una boya.

Figura 1.2.

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

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

La boya de Zltnihal lleva incorporado un transceptor D+ de ltima generacin con el que enva todos los datos a travs de la Red Inmarsat. La boya incorpora cuatro sondas de pesca y proporciona informacin sobre la posicin, el rumbo, la velocidad, temperatura del agua y concentracin de pescado. La ecosonda y el sistema de indicadores intermitentes incorporan microcontroladores PIC12C508. Mediante paneles solares, la batera de alimentacin se mantiene cargada indefinidamente. Para desarrollar el sistema de control de la boya Jai.tic.1- Rome~w tuvo que utilizar los microcontroladores ms potentes y veloces del mercado. (Figura 1.3.) Las posibilidades de aplicacin de los microcontroladores cada vez son mayores, pero tambin requieren cada vez m i s prestaciones. A continuacin, se ofrece una tabla con una relacin de posibles clientes y aplicaciones.

M I L E S DE C L I E N T E S
Consumo
Black&Decker Goldstar Hamilton Beach IVC Mitsubishi Panasonic Philips Samsung Sanyo

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

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

Telecomunic.
Codex Ei icsson tiayes Kyocera Motorola Nokia Northern Telecom Pac~fic Monolithics Rockwell

Industria
Ai~leric~~n 5ciisors Cvde A1'1rni Foxhoro General Electric Honeywell Pitney Bowes Robertshaw Tandy United Technologies Wayne Systems

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


Mic*i-oc,l?ip lo haba anunciado y todos los ingenieros que utilizamos los PIC lo estbamos esperando ansiosamente, pero hemos tenido que traspasar la barrera del 2000 para poder disponer fcilmente 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, segn la encuesta de Dataqrrcst realizada en junio de 1998, deba mantenerse con la aportacin de investigacin y desarrollo que ha tenido que hacer la empresa para sacar al mercado estas dos nuevas lneas de ~nicrocontroladores.

Figura 1 .S.

I;i)tog~-trfi'trtlc
(10.51 1 0 1 .

I t r

h o ? r r ( I T ( / N , ~ B A/>+ L /11t71o1..\(it )>, ( o t l \ t l i{i(l(r (.o11 I I ~ ~ o( C I o~~tt.olu~l ( Io I~ ~ U. Y~ ~ :\ ~/-

olll/ll-fl.\(/ Z l ~ l ~ l I ? ~ ~ l

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Equipo de TV Receptor de radio Reproductor de CD Control remoto Vdeo consola Cmara Mando de garaje Detector de monxido de carbono Microondas Lavadora Secadora Aparatos de cocina Aspiradora

Sistema de seguridad del vehculo Detector de radar ABS Velocmetro Ciimatizador Inyeccin de combustible Suspensin activa Sensor de airbag

Ratn de ordenador Teclado Escner Impresora Plter Fotocopiadora Lector de cdigo de barras Unidad de disco

Telfono celular Telfono inalmbrico ldentificador de llamadas Mdem

Control de motores Compresor Termostato Utilidades de medida Robtica Procesos de control Detector de humo Lector de tarjetas

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

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

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

Con la incorporacin de esta familia, el conjunto de microcontroladores PIC de 8 bits se distribuye en cuatro gamas:

Figura 1.6.

Principales caractersticas de los modelos de 1a.familiaPICI8Cxxx.

GAMA MEJORADA
32 niveles de pila
7 7 instrucciones de 1 6 bits

PlCl7Cxxx 16 niveles de pila 4 vectores de interrupcin 58 instrucciones de 16 bits P!Cl2C6xx, PIC16Cxx v PlCl6F87x 8 niveles de pila 1 vectur de interrupcin 35 instrucciones de 14 bits PIC 12C5xx -. - LPIC 16C5x 2 niveles de pila 33 instrucciones de 12 bits

GAMA ALTA

bAL!P-!ED!A

GAMA BSICA -- . . . -.
-- -- ---

En la Fig~iri 1.7 re puede ver una I-epre\ent~icin grfica 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 4guiente paso natiiral de\pu\ del PIC16F84, porque tenemos 121 conviccin de yue va a ocupar lor puestos mi\ altos del mercado y porque sus caracterstica\ le hacen ideal para aprendel. con ellos todo\ lo\ nuevor recur\o\. Se destinar un captulo a coirreirtar el t'uncionamiento y iiiane.jo de lo\ modelos de la familia del futuro PIC 1 XCxxx.

1.3.

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

Hasta el ao 2000 han sido muchos los rnillone\ de p i e ~ a s del PIC 16F84 que se haii vendido eii todo el mundo. Este irrodelo haba venido precedido por el PIC 16C84, prccticarneiite igual. col1 excepcicn de la n1eniori;i de programa que era de tipo EEPROM en lugar de FLASH. Con ainbos tipos de meri~orias se teiia la posibilidad de grabar y bol-rar programas elctricameiite. lo cual supona Lo\ que poda estar insertado en el mismo zcalo durante todo el procsw fe diseo y del~iiracicn. i~iodelo de rnicrocontroladores progi-amable5 conocido5 hasta entonces dispona11c inei-i~orili de programa EPROM, que exiga soirieterla durante cierto tiempo a rayo\ ultravioleta en el procejo de borrado. Esta operacin supona uii grave inconveiiiente y la pogiblc rotura de las p:~tita\dcl cir-cuito 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 elctrico que no precisa sacar al microcontrolador de sil zcalo. Esta caracterfstica hace a esta memoria ideal en los ambientes de diseo y educacionai. La memoria EEPROM para datos que tienen los PIC soportan 100.000 operaciones de grabado/borrado.

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

iblic 1.oc.llipha tenido ci\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>2byte\ de K A M de dato\. con c90nver\orA/D de 8 hit\ cte varios canale de etitracla, puertas de com~ii~ic:icin \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-Ctielle iiitbinoii;i FLASH. pelo coi1 i i i l ~ ciipaciclrid i de 1 K palal.)i.:is, \6lo tieiie iiir Tiiner ), 13 lneas 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 logridoqiie \e le ccin\idere <<muy resiiltii>>

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

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 voltil de 64 byte\ tipo EEPROM que tena 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.upciri y 3 Tiriler. frente ;i la\ 3 f~it.i~te\ y 1 Tiinei- del PIC'I6FX-C. El ninri-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 ( j d l t l o C'CP. .\ Son capaces de capturar y comparar impulsos. La captiira \e efecta con una pic.ci\iri de 12.5 ns y una resolucin de 16 bit\. iiiientras que la coinpiiracioil con igual rc\oI~iciO~~ ;ilcan~a una precisin de 200 ns. AdemLs, la seccin PWM vara Iri :incl~~ii-;i dc lo\ ii~ip~ilso\. tbcnica rnuy empleatia en el control de motores.

BANCO O

BANCO 1

BANCO 2

BANCO 3

OOh

7Fh

FFh

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 I10,s I ~ 308 I ~ J ' I C S(Ic KAM tlo tltrtos el1 los PIC'1 fik'(S7.V.

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

2 ) Cornunicac-ilzserie. En esta subfamilia se ha potenciado muchsimo el tema de las comunicaciones y en cuanto a la serie tipo admite dos modelos. La tpica USART, orientada a la comunicacin entre subsistemas o mquinas (RS-232) y la MSSP, destinada a la comunicacin entre diversos circuitos integrados y que admite el protocolo 12C y SPI 3) Cornurzic.ac~in par-alelo. En los PIC 16F87417 de 40 patitas est disponible el protocolo PSP, ms rpido que la comunicacin serie, pero que hipoteca muchas lneas 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 Analgico/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 acompaar a los PIC 16F87x con el complemento adecuado para desarrollar las aplicaciones de forma sencilla y cmoda. Para ello, trabajando en su conocido entorno MPLAB Integrated Development Environment (IDE), disponible en la direccin de Internet: www.microchi~.com, ha comercializado el kit MPLAB-ICD, (Figura 1.1 O), caracterizado por:

* PrograrnadordelosP/C16F87x.

Depuracin del rn~crocontrolador en el circuito de aplicacin. Ejecucin en tiempo real, con puntos de parada hardware. Ejecucin paso a paso, Funcionamiento con alhentacin de 3 a 5,5 V y frecuencia de

KHz a

Estos PIC con memoria FLASH pueden ser grabados con su programa de aplicacin despus de su montaje en el producto final. Esta programacin llamada ICSP (Progl-arnacin Ser-ie en Cir-c-uito) tiene las siguientes ventajas:

.neas de datos

1
Figura 1.9.

Lneas de coi

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

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

1." Reduce considerablemente 2.a Disminuye el tiempo y el cost 3." Hace posible la calibracidn en Posibilita la inclusin de cd~

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 zcalo 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 diseado un sencillo y econmico zcalo adaptador para los con el que se puede grabar, borrar, depurar y ejecutar prograPIC 16F87x en el Micr-o'PIC Ti-uinei-, mas en los nuevos PIC, con la posibilidad de conectarle todos los perifricos del sistema de desarrollo y ver su comportamiento en tiempo real. El zcalo adaptador ZOC871-, (Figura l .1 l), se introduce en el zcalo libre de 28 patitas del Mici-o'PIC Trainer. En el kit ZOC87x que se comercializa, se incluye, junto con el software necesario, un microcontrolador PIC 16F873 grabado con un programa que presenta diversos mensajes sobre la pantalla LCD del Miel-o'PIC Ti-ainei: El mencionado ZOC87x tambin permite la grabacin de los PIC 1 6F87x sobre el programador Micro'PIC P/-og?-ammc~-. La realizacin de todos los ejercicios, programas y proyectos que se proponen en este libro exigen la siguiente relacin de herramientas de la ingeniera bilbana Mical-osystemsEngi~zeering:

Figura 1.10. El kit MPLAB-ICD pel-nlite ti-uhujui-con los PIC16F87' desde un PC hujo el entor-zosoj'tnw1-eMPLA B.

IO

MICROCONTROLADORES PIC,,. D I S E N O PRCTICODE AP1,ICACIOYES

Figura 1.1 1.

l;ofog/.c~flcr tlel rcc,trlo uilrr/~tliclo/. ZOC87\, c.~-o'PlC Trtrit~cl:

ylic p ~ / . /ir(-' t ? t/.lrh(rltr~. (.oti lo.\

PIC 16F87-Ycrl rl Mi-

1" 2" 3" 4"

Slstema de desarrollo ~<M1croJPIC Tralner.. Zocalo de adaptacin <<ZOC87xj> para trabajar con los PIC16F87x Tarjeta de ampilacion de perifrlcos <~M~cro'PlC Tralner Plus,., con perlfrlcos conectables por bus 12C. Tarjeta de ampl~ac~n de per~fricos <<M~cro'PlC /O>,, con motor, sensores analogicos, trlacs, etc

En la Figura 1.12 se aprecia la interconexin de las dos tarjetas de ampliacihn de perifricos al que lleva alojado el zcalo de adaptacin ZOC<Y~-Y, que le sistema de desarrollo Mic.1-o'PIC Tizrir~el; 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 tcnsicn ig~1a1 a la de alimentacin de +5 V. La patita RBI/PGM se de\tiiia a seleccionar el Modo de Programacin y RB6/RB7 a recibir los datos en serie y los impulso\ de relo-j,respectivirnetite.

Figura 1.12.

Itztcr.c*ot~c~.vir~ dr l(n tt11-jcfu Mic.ro'PIC Tlwit~clc 011 Iris tios ttr~.jota.\ (le ~rl///)li(i( ihl.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

11

RECORDANDO EL VIEJO PIC16F84


En esta seccin demostraremos, captulo a captulo, que la programacin de los nuevos PIC hace ms sencilla la realizacin de ciertas tareas en muchos casos. como consecuencia de sus recursos. Todo es cuestin de probar y no quedarse en meros espectadores, as que manos a la obra que comienza la funcin y usted es el principal actor.

Enunciado
Vamos a comenzar recordando ci~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 lneas RA1 y RA2 de la Puerta A y 2 LEDs eri las lneas RBO y RB 1 de la Puerta B. El programa debe mostrar cundo el valor lgico que introducen ambos interruptores es cero. Para ello, si los dos interruptores introducen por la Puerta A nivel lgico 0, los LEDs de la Puerta B deben encenderse, y en los dems casos permanecen apagados.

Esquema elctrico
Tras entender lo que se pide hay que especificar el esquema elctrico del circuito para saber cmo estn conectados los perifricos. (Figura 1.13.) En dicho esquema se representa el PIC, con los elementos auxiliares que siempre necesita (cristal, alimentacin y circuito de reset), y los perifricos de entradalsalida que se utilizan en cada moniento. En este ejercicio tanto los interruptores como los LEDs estn conectados para ser activos por nivel alto. En el caso de los interruptores este hecho no altera la resolucin del problema, pero si los LED estuvieran conectados para activarse por nivel bajo, el valor para encenderlos y apagarlos sera justamente el contrario.

Organigrama
Otra prctica muy recomendable antes de empezar a programar es plasmar en un organigrama la forma de resolver el problema. (Figura 1.14.) Cuanto ms complicado sea dicho enunciado, ms abstracto ser el organigrama, pudiendo incluso necesitarse varios para llegar a un nivel aceptable de concretizacin. Al contrario, si el problema es sencillo el programa es casi una traduccin inmediata del organigrama a cdigo.

Mhz

Figura 1.13. E.~quemaelctrico correspondiente al ejercicio pi-opuesto.

INICIALIZACI~N P A ENTRADA P B SALIDA

APAGAR LEDs

ENCENDER LEDs

Figura 1.14. Organigrama del ejercicio.

Programa comentado
Una vez dados estos pasos previos estamos en disposicin de comenzar la programacin. Vamos a seguir unas reglas bsicas a la hora de escribir los programas que, aunque no son obligatorias, facilitan la lectura y la comprensin.

Siguiendo estas normas y en base al esquema elctrico y al organigrama se obtiene el programa que aparece bajo estas lneas. Antes de continuar, por qu no intenta resolverlo usted mismo y comprueba luego cmo anda su prctica de programacin con los PIC? Recuerde que no hay un modo nico de resolucin y que se aprende practicando y cometiendo errores.
LIST
P= 16F84 HEX
P16F84.INC
; Se indica el tipo de ; procesador
; Sistema de numeracin ; hexadecimal ; Se incluye la definicin de ; los registros internos en ; una librera ; Inicio en el Vector de

RADIX
INCLUDE

ORG

0x00
INICIO

: Reset
; Va a la primera instruccin

END

; Fin de programa

14

MICROCONTRO1,ADORES PIC. DI S E N O PRCTICO 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 extensin 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 grabacin PICME-TR. 4.' Probar la solucin utilizando los perifricos contenidos en el MicroJPICTrainer.

Se explican a continuacin detalladamente los tres ltimos pasos.

Utilizacin del ensamblador MPASM


El ensamblador MPASM e s un programa de libre distribucin que se puede obtener en la pgina web de Microchip, y que sirve para ensamblar ficheros con extensin 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 para ensamblar un programa son:

--

Figura 1.15.

Aspec.to del cnsan~hlaclo~MPASM.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

15

Grabacin 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 programa, una vez ensamblado y convertido en formato HEX, y probar posteriormente dicho programa utilizando los perifricos de que dispone. Empezaremos nuestro acercamiento a la placa identificando las partes ms 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 ms .significativas sealatlas.

16

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Antes de utilizar los perifricos arriba descritos hay que grabar el programa en el PIC. Se realizarn los siguientes pasos:

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

17

Si vuelve al programa que acabamos de realizar y grabar, comprobar que las lneas de E/S han sido configuradas de modo que coincidan con los perifricos dispuestos en el Micro'PIC Ti-ainer. Para este primer programa slo necesitamos dos interruptores y la barra de diodos LED, de modo que desconecte la pantalla LCD y el display de 7 segmentos abriendo sus jumpers correspondientes. Asegrese de que los jumpers A/D de las lneas RA1-RA2 estn en la posicin Digital e introduzca ahora diferentes combinaciones para comprobar el funcionamiento del programa. Si ste no se comporta como esperaba no es un fallo sintctico, ya que los errores han sido corregidos hasta obtener un programa correctamente ensamblado. El fallo ser semntico, es decir, deber repasar el cdigo fuente para comprobar en qu punto difieren el organigrama del programa en ensamblador y corregirlo.

Figura 1.17. Aspecto del programa de grabacin PICME-TR.

18

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

PRESENTACIN DE LOS SENSORES ANALGICOS MS UTILIZADOS


Aunque el PIC 16F84 sirve para realizar un sinfn de aplicaciones comerciales y su aprendizaje es muy didctico y sencillo, existen ciertas aplicaciones muy comunes para las cuales este PIC no sirve. Estamos hablando de aquellas que requieren la utilizacin de censores analgicos. Vamos a p'resentar en este apartado dos sensores que, aunque muy utilizados en diversos aparatos que manejamos a diario, no eran soportados directamente por el PIC 16F84. Los nuevos PIC 16F87x7 al disponer derconversor A/D, pueden usarlos cmodamente.

El sensor de luminosidad: LDR


Un sensor de luminosidad tipo LDR es un elemento cuya resistencia entre bornes vara en funcin 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, segn va aumentando la luz. Su uso puede ser interesante en todas aquellas aplicaciones en las cuales el hecho de existir ms o menos luz determine cierto comportamiento del sistema. Por ejemplo, la iluminacin de la entrada a una vivienda, de una habitacin o de un criadero de peces, puede regularse automticamente de modo que se active una o varias bombillas con la deteccin de determinados niveles de luminosidad. Es un elemento sin polaridad y se puede encontrar con diferentes dimetros segn el rango de valores de luminosidad que sea capaz de diferenciar. (Figura l .18.)

Figura 1.18. Aspecto y circuito prctico de una LDR.

NECESIDAD Y APORTACIONES DE LOS NUEVOS PIC

19

A la derecha de la Figura 1.18 se muestra el esquema de conexionado al PIC. La tensin generada segn el grado de luminosidad se aplicar por una de las patitas analgicas del PIC 16F87x debidamente configurada, y ser transformada en un valor digital para su tratamiento posterior. Cuando no exista luz, el voltaje de salida, VOUT, ser 5 V y con luminosidad mxima O V.
El sensor de temperatura estndar: LM35
Otro sensor analgico ampliamente utilizado es el de temperatura. En el mercado existen muchos modelos de sensores de temperatura y su eleccin depende de diversos parmetros, como pueden ser el rango de temperaturas que sean capaces de admitir, la precisin 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.

SENSOR LM335A

RANGO

INCREMENTO

PROPIEDADES

-40"C-1OOC -40"C-I5OC

0,lO mV/"C OC-100W 100"-138,5


Precisin debido a su comportamiento lineal Resistente. Reducido tamao y rpida respuesta. En circuitos de aviso. Proteccin contra sobretensiones y sobrecorrientes.

PRCl O0

P T l 00 PTC (Coeficiente d e Temperatura positivo)

-50" C - 500" C
Diferentes

1 0 0 W -O"C
Baja resistencia a baja temperatura y aumenta rpidamente al superar la temperatura de referencia. Alta resistencia a baja temperatura y al contrario.

NTC (Coeficiente de
Temperatura negativo) Termopar t i p o

D~ferentes

Buena fiabilidad a bajo coste. Muy empleados en electrodomsticos. Altas temperaturas. Elevada vida til. Espacios reducidos.

- 5 0 C - 400" C

Uno de los sensores ms utilizados es el LM35, tambin llamado estndar. Sus caractersticas son:

1." Su tensin de salida V o U T es proporcional a la temperatura en una proporcin de 10 mV/"C. ZPa Su rango de funcionarnie to estd comprendido entre 0 " C y 100" C. 3.a Su tensin de funcionarn/ nto V . esta entre 1-4 VDC y +30 VDC. 4."Su precisin es de 2 0,9"C.

En la Figura 1.19 se muestra el aspecto externo de un sensor de temperatura estndar. La patita +Vs se debe conectar a la tensin positiva, comprendida entre +4 V y +30 V. GND ser co-

GND

Figura 1.19. Aspecto de un LM3.5. La disposicin 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 lnea correspondiente del PIC. A ste llegar el voltaje proporcional a la temperatura captada, que ser convertida en un valor binario para su posterior tratamiento.

Bajo la denominacin de PIC16F87x se hace referencia a una subfamilia de microcontroladores 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 ms 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 estn encapsulados con 28 patitas (PIC 16F873/6), mientras que los otros dos tienen 40 patitas (PIC 16F874/7). Con la intencin de seguir potenciando la lnea con memoria FLASH, Microchip tambin comercializa los microcontroladores PIC 16F62x, que con un precio rompedor mantiene el encapsulado de 18 patitas, aumentando considerablemente los recursos internos en comparacin con el PIC16F84. Como se mostr en el captulo anterior en la tabla de la Figura 1.5, las principales diferencias entre los PIC 16F87x con 28 patitas y los de 40 se concentran especialmente en el nmero de lneas de E/S disponibles, pero a continuacin se citan las tres diferencias ms relevantes:

Con la intencin de ir acostumbrando al lector a conocer los recursos de los PIC16F87x se resumen seguidamente. (Figura 2.1.)

22

MICROCONTROLADORES PIC. DISEO PRCTICO 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 independencia entre la memoria de cdigo y la de datos. As, tanto la capacidad como el tamao de los buses de cada memoria se adaptan estrictamente a las necesidades del diseo, facilitando el trabajo en paralelo de las dos memorias, lo que permite obtener altas cotas de rendimiento. La filosofa RISC se hace patente en el reducido nmero de instrucciones que forman su repertorio. Slo consta de 35 instrucciones, que se ejecutan en un ciclo de instruccin, equivalente a cuatro perodos de reloj, excepto las de salto que necesitan dos ciclos. (Figura 2.2.) Una primera aproximacin 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 nmero de Puertas de E/S, que en el primer caso asciende a 5 y en el segundo a 3.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

23

Figura 2.2. Los buses para instrucciones y datos son totalmente independientes y se ajustan a las necesidades de cada memoria, permitiendo el acceso simultneo.

1 que la memoria de cdigo est direccionada por el PC (Contador de Obsrvese en la Figura 2.3 Programa) en conexin con la Pila de 8 niveles. La memoria de datos RAM contiene el Banco de Registros Especficos y el Banco de los Registros de Propsito General y transfiere informacin bidireccional por el bus de datos de 8 lneas que interconecta todos los elementos. Finalmente. el Camino de Datos est formado por una A L U - 8 ~ bits ~ que trabaja conjuntamente con el Registro de Trabajo W.

Direccionamiento h Direccin

"I
1 1 1 1

Datos

I I 1

I i 1 I 1 I
1 1 1 1

RECURSOS INTERNOS

1
1

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

24

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En el esquema de la Figura 2.4 se presenta con ms detalle la arquitectura correspondiente a los modelos PIC 16F874/7 de 40 patitas. Los otros dos modelos de la subfamilia tienen idntica arquitectura, pero carecen de las puertas D y E, as como de las funciones que stas soportan.

PUERTA A

13

MEMORIA D E c~lco (FLASH)

PILA 8 NIVELES DE 13 BlTS


%

MEMORIA D E DATOS (SRAM) PUERTA B

RCO/Tl OSO/Tl CKI R C l / T l OSI/CCP2 TEMPORIZADOR DE RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT

TEMPORIZADOR DE INICIO

'

OSC2/CLKOUT

BROWN-OUT DEPURACION EN CIRCUITO

'
t I

PUERTA E

TIMERO

CONVERSOR ND

EEPROM

CCP2

PUERTA SERIE S~NCRONA


L

USAR1

Figura 2.4.

Arquitectura de los PIC16F87417 de 40 patitas. Para los modelos de 28 patitas la arquitectura slo difiere en que carecen de las Puertas de EIS D y E .

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

25

La memoria FLASH, en la que se graba el programa de aplicacin en los PIC16F87x, puede tener una capacidad de 4 K u 8 K palabras de 14 bits cada una. Dicha memoria est dividida en pginas de 2 K palabras y est direccionada con el PC, que tiene un tamao de 13 bits. La Pila, que tiene 8 niveles de profundidad, es transparente para el usuario, es decir, funciona automticamente y no dispone de instrucciones para guardar o sacar de ella informacin. Con la instruccin CALL y con las interrupciones el valor del PC se salva en el nivel superior. Con las instrucciones RETURN, RETFIE y RETLW el valor contenido en el nivel superior de la Pila se carga en el PC. Al poseer la Pila slo 8 niveles le corresponde al programador preocuparse por los anidamientos en las subrutinas para no sobrepasar dicho valor. El vector de Reset ocupa la direccin OOOOh y el vector de Interrupcin la 0004h, igual que en el PIC16F84. (Figura 2.5.)

MEMORIA DE CDIGO
OOOOh

VECTOR DE RESET

0004h 0005h

VECTOR D E INTERRUPCI~N
o

PGINA O 2K
07FFh 0800h

NIVEL 1

PCINA 1 2K
OFFFh

1OOOh * PGINA 2 2K
17FFh 1800h
r

NIVEL 8

* PGINA 3 2K
1FFFh
L

12

o
PILA LlFO

13

* Slo implementadas en los modelos de 8 K

Figura 2.5.

Organizacin de la memoria de programa tipo FLASH en los PIC16F87x.

26

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

2.4. ORGANIZACINDE LA MEMORIA DE DATOS RAM


La memoria de datos tiene posiciones implementadas en RAM y otras en EEPROM. En la seccin RAM, se alojan los registros operativos fundamentales en el funcionamiento del procesador y en el manejo de todos sus perifricos, adems de registros que el programador puede usar para informacin de trabajo propia de la aplicacin. Ms adelante, se estudiar la memoria EEPROM para guardar datos de forma no voltil, a la que se considera como un dispositivo especial. La RAM esttica consta de 4 bancos con 128 bytes cada uno. En las posiciones iniciales de cada banco se ubican los Registros Especficos 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 fsicamente algunas posiciones.'La Figura 2.6 presenta los cuatro bancos de la RAM, indicando en las primeras posiciones de cada uno los nombres de los registros que contienen. En las Figuras 2.6 y 2.7 las posiciones con trama oscura no estn implementadas fsicamente y siempre se leen como O . Los registros especficos marcados con la nota (1) no se hallan implementados 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 Registro de Estado, denominados RP1 y RPO respectivamente, segn el cdigo siguiente:

Para manipular adecuadamente los elementos internos de los PIC hay que conocer la misin de los bits de los Registros Especficos.

2.4.1. Registros especficos para el control de la memoria de programa


Los 13 bits contenidos en el PC, que direccionan la memoria de cdigo, estn guardados en dos registros especficos. 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 ledo ni escrito, se accede a l a travs del PCLATH. Las instrucciones de salto CALL y GOTO slo proporcionan 11 bits de la direccin a saltar. Esto limita el salto dentro de cada banco de 2 K. Cuando se desea salir del banco actual hay que programar 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:

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

27
180h 181h 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

Registros de Propsito General


80 Bytes

1AOh

1EFh

Mapeados con
70h-7Fh

1FOh 1FFh

Banco O

Banco 1

Banco 2

Banco 3

Figura 2.6. Distribucin de la memoria RAM en cuatro bancos con 368 bytes tiles.

28

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


O O h 01h 02h 03h 04h 05h 06h 07h 08h 09h OAh OBh OCh ODh OEh OFh 10h Ilh 12h 13h 14h 15h CCPR1H CCP1CON RCSTA TXREG RCREG CCPRZL CCPR2H CCP2CON ADRESH ADCONO 16h 17h 18h 19h 1Ah 1Bh 1Ch 80h 81h 82h 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 Registros de Propsito General 96 Bytes AOh 19Fh 1AOh 1O O h lOlh 102h 103h 104h 105h 106h 107h 108h 109h 10Ah lOBh 10Ch 1ODh 1OEh 1OFh 110h

Registros de Propsito General 96 Bytes

7Fh Banco O Banco 1

FFh Banco 2 Banco 3

1FFh

Figura 2.7. Organizacin de la RAM en los modelos PICl6F87314, con de 192 bytes tiles.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

PCH

PCL
8

'

12

t
PCLATH
t - PCH
12
T

PCLATH <4-O>

LO
O

29

PCL ANTERIOR + x

PCL

11

10

DESDEEL C D I G O OP

PCLATH <4:3>

PCLATH

Figura 2.8. En la figura superior se muestra cmo 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 encargan de seleccionar el banco, mientras que la direccin dentro del banco la determinan 7 bits procedentes del cdigo OP de la instruccin. Para el direccionamiento indirecto se usa el registro FSR, en el que sus 7 bits de menos peso sealan la direccin, y el banco lo determina el bit de ms 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 distribucin y asignacin de las 28 o 40 patitas de los encapsulados PDIP (doble hilera de patitas de plstico) 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 asignacin de funciones para las diferentes patitas es la siguiente:

30

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

DIRECCIONAMIENTO DlRECTO

DIRECCiONAMIENTOINDIRECTO

I
Figura 2.9.

BANCO O
SELECCIN D E BANCO

BANCO 1

BANCO 2

BANCO 3

Formas de seleccionar el banco y la direccin de la memoria RAM en los direccionamientos directo e indirecto.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

31

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

32

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los PIC16F87x al carecer de las Puertas D y E tienen 22 lneas de E/S (6 de la Puerta A, 8 de la B y 8 de la C). Adems, no disponen de puerta paralela esclava y slo conectan al conversor A/D mediante 5 canales.

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

33

2.6. REPERTORIO DE INSTRUCCIONES


Los mismos formatos, iguales modos de direccionamiento y las mismas 35 instrucciones que tena el PIC16F84 sirven para todos los modelos PIC16F87x, por lo que no vamos a volver a repetirlos. No obstante, en los nuevos PIC, al contener ms recursos, existen nuevos Registros Especficos de control cuyos bits se debern escribir o leer para su gobierno. Dichos recursos y sus registros asociados sern el tema de los prximos captulos. En la Figura 2.12 se ofrece un cuadro resumido del repertorio de instrucciones.

MlCROCHlP PACKAGE OPTIONS


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

lSLead CERDlP
"JW"

&Lead PDlP "p..

Pgiead PDiP

"'P"

32-Lead PLCC "1"

P&Lead CEROiP "IW"

14-lead PDIP "P"

28Cead Skrnny PDIP "SP"

44-Leed PLCC "L"

4O.Lead CERDlP *IW"

18-Lead PDIP
" P

40-Lead PDIP
"'P"

6S1ead PLCC "L"

68-le& CERQUAD "CL"

6aLead Shriflk PDIP "SP

8.4-CeadPCCC "L"

Figura 2.11. Opciones de encapsulados para los microcontroladores PIC. (Cortesa de Microchip.)

34

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.12. Principales caractersticas de las 35 instrucciones que componen el repertorio de los PICl6F87x. \

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO'DE INSTRUCCIONES

35

EL PRIMER PROGRAMA CON LOS PIC16F87X


Tras el repaso a la programacin de microcontroladores PIC llevado a cabo en el tema anterior, vamos a repetir el mismo ejercicio pero esta vez con los PIC16F87x y, ms 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 elctrico, sin embargo, presenta algunas diferencias.

Esquema elctrico
Como puede observarse en la Figura 2.13, el modo de representar los perifricos de entradalsalida no vara ms que en el lugar que ocupan, ya que la distribucin de las patitas del PIC ha cambiado. Los condensadores que acompaan 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 continuacin la resolucin del ejercicio propuesto utilizando un PIC16F873. Debido a que las funciones de este PIC son mayores, sus patitas tienen asignadas varias tareas, y la discriminacin entre dichas tareas es la diferencia ms notable con respecto al ejercicio del tema anterior. As, adems de configurar las lneas de la Puerta A como de entrada o salida, hay que decir, en el caso de que vayan a ser entradas, si dichas entradas sern analgicas o digitales. En el tema correspondiente al Conversor Analgico/Digital se vern todas las combinaciones posibles. Otra cosa a tener en cuenta es que el nmero de bancos de la memoria de datos RAM ha aumentado a cuatro. Esto quiere decir que para movernos por ellos necesitamos estar pendientes no slo del bit 5 del registro Estado <RPO>, sino del 5 y del 6 <RPl:RPO>. En el programa se ha incluido 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 lneas que se han aadido o han variado.

36

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

RESET

i(

LED

Figura 2.13. Esquema elctrico del ejercicio propuesto para el PIC16F873.

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 edicin, 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 grabacin y uso de perifricos, ya que como se vio ste dispone de un zcalo 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 zcalo de la placa. En la fotografa de la Figura 2.14 puede observarse dicho zcalo de adaptacin colocado sobre el Micro'PlC Trainer. Obsrvese adems que el zcalo para los PIC de 18 patitas (junto al anterior) permanece vaco, ya que no pueden existir dos PICs en la placa al mismo tiempo. Los pasos a seguir para la grabacin de un PIC de 28 patitas desde el Micro'PIC Trainer son similares a los ya descritos para un PIC16F84 y se resumen en los siguientes:

38

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 2.14. Fotografa que muestra la colocacin del zcalo ZOC87x sobre el Micro'PIC Trainer. (Cortesa de Microsystems Engineering.)

ARQUITECTURA, DIAGRAMA DE CONEXIONES Y REPERTORIO DE INSTRUCCIONES

39

ACTUADORES PARA DIVERSAS APLICACIONES: LOS MOTORES


Unos de los actuadores ms vistosos y verstiles para el trabajo con PICs son los motores. Los motores 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 caractersticas ms 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 instantneamente a las seales de control para un encendido/apagado y cambio de sentido. Su peso y tamao reducidos les posibilita adems para formar parte de sistemas mviles sin incrementar el peso ya existente. Los motores PAP a su vez se caracterizan por:
.

1,' Su movimiento es par incr&&ts'de &ngYb, 2." Maycr simplicidad en la lb@& de control. ' : 3.' Su manejo d8ptande del mdelo, . 4.' SU eje no recorre todas /aslposicimim pdsbtes.
.t

& & ' & ehbjy exactm.<


*
S

'

El funcionamiento de un motor PAP se logra aplicando en sus bornes un conjunto de seales de control especificadas por el fabricante, por lo que un programa realizado para un motor determinado deber modificarse si el motor es cambiado.

40

MICROCONTROLADORES PIC. DISENO PRCTICO DE APLICACIONES

Sin embargo, el que sea controlado por ese conjunto de seales tiene la ventaja de que en todo momento se conoce su ngulo de giro exacto, nmero de vueltas dadas, etc., sin necesidad de sensores externos tipo encoder, lo que le hace propicio para aplicaciones en que se necesita gran precisin de movimiento. El modelo se elegir en funcin de la precisin del ngulo de giro que se necesite.

Motores DC
Los motores DC internamente estn compuestos por un imn (estator) que crea un campo magntico en el cual se encuentra una bobina o electroimn arrollada en un eje giratorio (rotor). La tensin de alimentacin aplicada al motor hace que se generen unas fuerzas de atraccin y repulsin entre el campo magntico del estator y del rotor, lo que hace que el motor se mantenga en movimiento. En la prctica, el control sobre dicho motor se realiza con la aplicacin de tensin en los dos hilos que salen al exterior: con un hilo se determina el encendido/apagado del motor y con el otro el sentido de giro. Como la tensin e intensidad que proporcionan las lneas del PIC no son suficientes para excitar un motor DC, se hace necesaria la utilizacin de algn circuito integrado especfico. Uno muy utilizado es el L293B, que consta de 4 drivers. La Figura 2.16 muestra la mitad de este 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.

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 patitas del esquema es el siguiente:

El funcionamiento con este tipo de motores es sencillo: a travs de una patita del PIC (debidamente configurada como salida habilitar el motor, y una segunda patita marcar el sentido de giro con su seal. Dependiendo del v ltaje suministrado variar la velocidad del motor. Dicha velocidad tambin puede ser controlada a travs del PIC con las tcnicas conocidas como PWM y PFM. En la PWM (Modulacin de Anchura de Pulsos) se aplican al motor (en su lnea de marchalparo) pulsos de amplitud variable. En la PFM (Modulacin de Frecuencia de Pulsos) se mantiene la anchura de impulsos pero vara la frecuencia de los mismos.

Motores PAP
Los motores PAP, al igual que los DC, se basan en las fuerzas electromagnticas creadas entre estator y rotor, pero ambos constan de ms de dos polos. Esto hace que se necesiten conjuntos de impulsos para generar unas fuerzas que los hagan girar, y que este giro no sea continuo sino de un cierto nmero de grados. En la prctica tambin 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.

42

MICROCONTROLADORES PIC. DISEO PRCTICO 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 sera introducir por las lneas A, B, C y D (debidamente conectadas a las lneas del PIC) la secuencia marcada por el fabricante que podra ser, por ejemplo, como la mostrada en la Figura 2.19. Entre paso y paso se debe introducir un pequeo retardo para dar tiempo al motor a realizar el giro. Variando la duracin de dicho retardo se puede modificar la velocidad del motor.

BOBINAS

BOBINAS

SENTIDO HORARIO

SENTIDO ANTIHORARIO

Figura 2.19. Secuencia de control para el giro de un motor PAP en ambos sentidos.

3.1. LOS REGISTROS DE CONTROL


Para gobernar el fdncionamiento de los recursos de los PIC existe un conjunto de registros especficos cuyos bits soportan el control de los mismos. Dichos registros estn 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 captulo anterior se mostraba el contenido de la memoria RAM de los PIC 16F87x y la denominacin y situacin de los registros especficos junto a los de propsito general. Las posiciones OOh, 80h, lOOh y 180h no son registros fsicos sino direcciones indirectas. Este tema, en su primera parte, est dedicado a la exposicin de la misin de los bits de los principales 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 registros que controlan la puerta paralela esclava que slo est implementada en los modelos de 40 patitas.

3.2. REGISTRO DE ESTADO (STATUS)


Sin duda ste es el registro ms usado de todos, pues sus bits estn destinados a controlar las funciones vitales del procesador. Por este motivo, est duplicado en las cuartas posiciones de cada banco (03h, 83h, 103h y 183h). (Figura 3.2.)

REGISTRO D E ESTADO

-'

Figura 3.1. Estructura interna del Registro de Estado.

44

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los tres bits de menos peso son los sealizadores de ciertas condiciones en las operaciones 1gico-aritmticas.

Los sealizadores PD# y TO# son activos por nivel bajo (#) y sirven para indicar la causa que ha provocado la reinicializacin del procesador.

Los sealizadores 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 alimentacin (POR: Power-on Reset). Tambin se resetean cuando la tensin de alimentacin baja de 4 V (BOR: Brown-out Reset), aunque esta funcin es factible desactivarla poniendo a O el bit BODEN, presente en la palabra de configuracin. Tanto en el Reset POR como en el BOR los bits PD# y TO# toman el valor 1, mientras que en los dems casos depende de la causa que ha provocado el Reset. / Finalmente, los tres bits de ms peso del Registro de Estado se emplean para seleccionar el banco de la RAM al que se desea acceder. En el direccionamiento directo, como se vio en el captulo anterior, se utilizan los bits RPl y RPO de acuerdo con la siguiente codificacin.

El bit IRP se usa concatenado con el bit de ms 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 ( O O h m ) . 1: Banco 2 y 3 (100h- IFFh).

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 sealizadores Z, C y DC no son escribibles en aquellas instrucciones que les afecte la operacin que realizan, al igual que sucede con PD# y TO#. Por ejemplo, al ejecutar la instruccin clrf STATUS, el Registro de Estado pasa a valer 000uul uu. Los bits marcados con u no cambian el valor que tenan. Por este motivo se recomienda usar las instrucciones bcf, bsf, swapf y movf para manejar los bits de este registro, ya que no afectan a los sealizadores Z, C y DC. Como los tres bits destinados al direccionamiento de la RAM (IRP, RP1 y RPO) toman el valor O despus del Reset, si se desease acceder al banco 3 de la RAM habra que emplear las siguientes instrucciones:
bsf
bsf

STATUS,RPO STAFRP1

3.3. REGISTRO DE OPCIONES (OPTION) Tiene las mismas funciones que tena en el PIC 16F84:

El registro OPTION toma el valor 1111 1111 en cualquier tipo de reinicializacin que se produzca. 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 interrupcin; 13 posibles causas los de 28 patitas y 14 los de 40. Al aceptarse una interrupcin se salva el valor del PC en la Pila y se carga aquel con el valor 0004h, que es el Vector de Interrupcin. La mayora de los recursos o perifrico~ de que disponen los PIC16F87x son capaces de ocasionar una interrupcin, si se programan adecuadamente los bits de los registros que pasamos a describir a continuacin. El PIC16F84 tena 4 causas que generaban interrupcin: desbordamiento del TMRO, activacin de la patita de interrupcin RBODNT, cambio del estado de una de las 4 patitas de ms peso de la Puerta B y finalizacin de la escritura de un byte en la EEPROM. Los nuevos PIC, adems de las causas que producen interrupcin en el PIC16F84, tienen las siguientes:

46

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

REGISTRO OPTION

RBPU# INTEDC TOCS TOSE

1 1 1

E A

( 6 2 1 PS1I 60

Figura 3.2. Denominacin y asignacin de funciones de los bits del registro OPTION. Ocupa la direccin 81h del banco 1 y la 181h del banco 3.

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

47

Como los PIC 16F87x disponen de ms causas que provocan interrupcin, tambin tienen ms registros para contener los bits sealizadores y de permiso o prohibicin. 3.4.1. Registro de control de interrupciones (INTCON) Se trata de un registro leble y escribible que, para facilitar su acceso, se halla duplicado en los cuatro bancos, ocupando las direcciones OBh, 8Bh, 10Bh y 18Bh, respectivamente. Tiene la misin de controlar las interrupciones provocadas por el TMRO, cambio de estado en las 4 lneas de ms peso de la Puerta B y activacin de la patita RBO/INT. Es muy parecido al registro que con el mismo nombre exista en el PIC16F84. Slo cambia el bit 6 en los nuevos PIC, que es el PEIE (permiso de interrupcin de los perifricos) en lugar del EEIE que tena el PIC16F84 para permitir la interrupcin cuando finalizase la escritura de un byte en la EEPROM. El bit PEIE acta como una segunda llave parcial de permiso o prohibicin de las causas de interrupcin que no estn contempladas en INTCON y que las provocan los restantes perifricos del microcontrolador. GIE es el bit de permiso global 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 perifricos internos del microcontrolador y que no estaban contempladas en INTCON. Ocupa la direccin 8Ch y para que cumplan su funcin los bits de PIEl es necesario que PEIE = 1 en INTCON <6>. El bit PSPIE slo es vlido en los modelos de 40 patitas, mantenindose 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. Designacin y misin de cada uno de los bits del registro INTCON

48

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

3.4.3. Registro de permiso de interrupciones 2 (PIE2)


Contiene los bits de permiso de interrupcin de las tres causas que no figuraban en PIE1. La de fin de escritura en la EEPROM, colisin de bus en el modo SSP y produccin de una captura o una comparacin en el mdulo CCP2. La Figura 3.5 presenta la funcin de estos tres bits. El bit 6 es un bit reservado y su valor es siempre O . Cuando se leen los bits que no tienen asignada funcin se obtiene O .

3.4.4. Registros de los sealizadores de interrupciones 1 y 2 (PIRl y PIR2)


En correspondencia con los bits de permiso/prohibicin de las causas de interrupcin recogidas en los registros PIE1 y PIE2, existen otros dos registros, PIRl y PIR2, cuyos bits actan de sealizadores del momento en el que se origina la causa que provoca la interrupcin, independientemente de si est permitida o prohibida. Ocupan las direcciones OCh y ODh, respectivamente. (Figura 3.6.)

3.5. LECTURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH


En el PIC 16F84se poda leer y escribir la memoria de datos EEPROM. En los PIC 16F87xtambin se puede leer y escribir la memoria de cdigo FLASH. Esto significa que un programa dinmicamente puede generar informacin que se puede grabar en la FLASH directamente, sin necesidad del grabador externo.
La propia aplicacin se puede reprogramar segn las condiciones externas. Es posible ampliar el rea de la memoria de datos no voltil EEPROM con posiciones libres de la memoria de cdigo FUSH.

REGISTRO PIE1

Figura 3.4. Designacin y funciones de permiso y pi-ohihicin de los hits del registro PIEI.

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


REGISTRO PIE2

49

Figura 3.5. Designacin y funciones de los bits del registro PIE2.


C

Para manejar la memoria EEPROM de 64 bytes del PIC16F84 bastaban dos registros para proporcionar la direccin a acceder y para guardar el dato de 8 bits que se lea o se iba a grabar. Como slo existan 64 posiciones en la EEPROM, para contener la direccin bastaba con un registro de 8 bits: el EEADR. El dato ledo o a escribir, de tamao byte, se colocaba en el registro EEDATA. Como en los PIC16F87x tambin se puede leer y escribir la memoria FLASH y sta puede alcanzar un tamao de 8 K palabras de 14 bits cada una. No es suficiente con un solo registro para la direccin, 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 ms peso de la direccin. Por otra parte, el registro EEDATAH se concatena con el EEDATA y contiene los 6 bits de ms peso de la palabra leda o a escribir en la FLASH, Estos dos nuevos registros no se usan en las operaciones que afectan a la EEPROM. (Figura 3.7.) Para controlar la operacin de lectura/escritura de las memorias EEPROM y FLASH hay dos registros denominados EECONl y EECON2. El EECONl (Figura 3.8) ocupa la direccin 18Ch, mientras que el EECON2, como suceda con el PIC 16F84, no est implementado fsicamente y slo se utiliza en

REGISTRO P l R l

o
REGISTRO PIR2

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

50

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

la delicada operacin de escritura, que tiene la elevada duracin 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 escritura en las memorias EEPROM y FLASH. En la parte dedicada a programacin se incluye un ejercicio completo sobre este tema. Es una buena prctica de programacin verificar que todos los valores escritos en las memorias EEPROM y FLASH son correctos. Para evitar escrituras indeseadas en la EEPROM motivadas por espreos en la inicializacin del microcontrolador, se controla el bit WREN, prohibiendo cualquier operacin de escritura mientras duran los 72 milisegundos que temporiza el Timer de Power-up. Para realizar la misma proteccin

Figura 3.7. Para contener la direccin y el dato de la memoria FLASH se necesitan dos registros para cada valor.

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


REGISTRO EECONl

51

Figura 3.8. Denominacin y misin de los bits del registro EECONl.

52

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

en la memoria FLASH se debe poner a O el bit WRT de la Palabra de Configuracin, que slo puede escribirse desde un grabador externo. Dependiendo del valor del bit WRT y de los bits de Proteccin de Cdigo CPl y CPO, ubicados en la Palabra de Configuracin, se consiguen diversas alternativas de proteccin contra lectura y escritura de la FLASH. (Figura 3.9.)

Figura 3.9. Diversas posibilidades de proteccin de la memoria FLASH ante operaciones de lectura y escritura, de acuerdo con los valores de los bits WRT, CPl y CPO de la Palabra de Configuracin.

UN PROGRAMA QUE MANEJA LAS MEMORIAS FLASH DE CDIGO Y EEPROM DE DATOS


En este mismo captulo se han visto trozos de cdigo para leer y escribir la memoria FLASH de instrucciones y para escribir la memoria EEPROM de datos. Vamos a realizar ahora un ejercicio que rena la utilizacin de estas dos memorias. Para ello, consideraremos que los cdigos ya vistos, con una pequea modificacin, son subrutinas a las cuales se llamara para realizar procesos de lecturalescritura sobre las citadas memorias. As, tendremos las siguientes subrutinas:
LEER-FLASH ESCRIBIR-FLASH LEER-EEPROM ESCRIBIR-EEPROM

Falta por realizar el cdigo correspondiente a la lectura de la EEPROM, que una vez convertida a subrutina quedara como sigue.

54

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En las lneas que empiezan con * se pretende resaltar las modificaciones que habra que llevar a cabo en los cdigos anteriores para convertirlos a subrutinas: poner como etiqueta el nombre correspondiente de cada subrutina y como ltima instruccin la return para volver al programa principal.

Enunciado La posibilidad de escribir la memoria de cdigo mientras se est ejecutando un programa puede resultar interesante para ciertas aplicaciones. Imaginemos que en un programa se necesita saber si es la primera vez que se utiliza, para pedir cierta informacin de configuracin por ejemplo, o si ya se ha utilizado ms veces y dicha informacin ya se tiene. Hay muchos modos de hacer esto: se podra 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 ejecutar un cdigo diferente. En nuestro programa, la primera vez que se ejecute se leer la primera posicin de la EEPROM (aunque no es estrictamente necesario lo haremos as para probar las funciones vistas en este captulo). Si en dicha posicin se encuentra el valor 27h (que anteriormente deberemos grabar) significa que el programa no se ha ejecutado anteriormente, en cuyo caso se inicializarn una serie de contadores y se modificar el programa para que la prxima vez que se ejecute los contadores no sean inicializados. Puede parecer que sera ms sencillo e igual de ptimo no modificar el programa, sino el valor de la EEPROM, y simplemente leer cada vez que se ejecuta el programa la primera posicin de sta, de modo que se salte a un punto u otro. La ventaja de nuestro mtodo es que, aunque un astuto usuario quisiera hacer trampa a nuestro programa variando el valor de la EEPROM para que creyera que era la primera vez que se entraba en l, al haberse modificado el programa y, a no ser que tenga el original, le ser imposible saber cul era la secuencia que segua esta primera vez. Se imagina que el cuentakilmetros de los coches tuviera un mtodo tan sofisticado? En esta ocasin, para resolver el ejercicio slo necesitamos como base el organigrama ya que, al no utilizar perifricos de E/S, el esquema elctrico no aporta ningn dato significativo.

Organigrama El organigrama de la Figura 3.10 representa el funcionamiento ms completo del programa, la primera vez que se ejecuta. En siguientes ocasiones, ya desde la primera instruccin 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 posicin de la EEPROM (direccin 00) el valor 27. Este primer programa se grabar en el PIC de la forma habitual y su cuerpo consistir en una llamada a la subrutina ESCRIBIR-EEPROM, habiendo antes metido en el registro ADDR-L el valor 00 y en DATA-L el valor 27.

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

55

O T R A S INSTRUCCIONES

Figura 3.10. Organigrama del programa en su primera ejecucin.

Antes de grabar un nuevo programa, como ya se expuso en el primer captulo, es necesario borrar el PIC, pero este borrado no afecta a la EEPROM, por lo que al grabar el programa que realmente nos interesa el valor 27 de la primera posicin permanecer ah. Ahora, intente seguir el desarrollo del programa e imaginar cul ha sido el resultado final.

56

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

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

57

58

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Se ha dado cuenta de nuestra pequea trampa? Hemos introducido puntos de control a lo largo de todo el programa poniendo a 1 los bits de un registro segn se iban ejecutando partes, y mostrando el valor total al final del programa. De esta forma, podemos comprobar de una forma rpida y fiable el cambio de nuestro cdigo. Estos puntos de control no forman parte del programa en s, por lo que no se muestran en el organigrama ni en el esquema elctrico. Una vez comprobado el buen funcionamiento pueden ser eliminados. El programa ha cambiado completamente, tal y como se muestra ms abajo. Tras la primera instruccin, la mayora de las instrucciones han sido cambiadas por el cdigo de operacin de la instruccin NOP. A partir de ese cdigo, aun teniendo acceso a l, sera imposible conocer el programa original. Este mismo mtodo puede utilizarse para aplicaciones de aprendizaje en el campo de la Inteligencia Artificial, donde microbots controlados por microcontrolador pueden ir variando sus programas dinmicamente para adaptarse a situaciones concretas.

Figura 3.11. PICME-TR mostrando el cdigo del programa una vez modiJicado.

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 para ello. Los pasos a realizar son los siguientes:

60

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

AMPLIACIN DE PERIFRICOS PARA EL TRABAJO CON PIC


Con la aparicin de los PIC 16F87x,surge la necesidad de disponer de herramientas que saquen todo el partido a los nuevos recursos que incorporan. El tratamiento de sensores analgicos y la regulacin d e motores, que estos PIC son capaces de gobernar mediante su hardware interno, ha impulsado a Microsystems Engineering a disear una plataforma con la que poder experimentar tcnicas avanzadas de control.

La tarjeta de expansin Micro'PIC 110


La Micro'PIC 110 es una tarjeta de expansin que se conecta al Micro'PIC Trainer mediante el PICBUS tal y como muestra la Figura 3.12. Se basa en la inclusin de perifricos de E/S relacionados con las nuevas caractersticas de los PIC16F87x. En la Figura 3.13 se muestra una fotografa del Micro'PIC IIO con sus bloques fundamentales sealados.

Figura 3.12. Conexin de las tarjetas Micro'PIC Trainer y Micro'PIC IIO.

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

61

Figura 3.13. Fotografa de la tarjeta de expansin Micro' PIC 110 con las partes mas signijicativas remarcadas.

Alimentacin
Recibe una tensin 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 electrnico se muestra en la Figura 3.14.

62

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

IN

G N

OUT

Figura 3.14. Esquema electrnico de la fuente de alimentacin.

Doble conector PICBUS


En la Figura 3.15 se puede observar el doble conector PICBUS. Se trata de dos conectores idnticos de 26 vas que soportan las mismas seales. 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 tambin al Micro'PIC Trainer Plus y as conformar un sistema completo con las tres tarjetas, que pone a disposicin del usuario un abanico extenssimo de perifricos y un sistema de desarrollo de aplicaciones profesional que facilitar en gran medida el diseo de aplicaciones.

Figura 3.15.

Esquema electrnico del doble conector PICBUS.

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 microrruptores (SW1).

Oscilador de 32.768 KHz


Compuesto por un cristal de cuarzo de 32.768 KHz y 2 condensadores de 27 pF, configura un oscilador de una frecuencia igual a la de resonancia del cristal. (Figura 3.17.) La inclusin 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 razn de haber elegido esta frecuencia es su estratgico valor, que tiene la propiedad de que con 215 impulsos se consigue fcilmente el tiempo de 1 segundo.

Piezoelctrico
Se trata de un zumbador piezoelctrico que va a ser muy interesante para todas aquellas aplicaciones en las que se precise generar pitidos o beeps sonoros a modo de seales de aviso o alarma. (Figura 3.18.)

0vcc
a
. I

a v

RPACKI 4x10K SW1 a

-,b

-- C7

100n

D2

77

R1

-- C4
--1op
a

(F

0 X/128

. I

+
R2 10K
O
4)

o Xl32
I

0 X/64

U3 18 17 16 OSCl 15 O S C ~ 14 VDD 13 RB7 - 12 RB6 11 RB5 - 10 RB4

0X116 0X/8
0 X/4 0 X/2 oX
ENABLE

VCC

MCLR VSS RBO RB1 - RB2 RB3

ZC
9

PlCl6C54RC

Generador de Funciones
Figura 3.16. Esquema electrnico del generador de funciones.

64

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

27p

0 7 . : ; 6 8 K ,
O & 2 7 ~

T I OS

Oscilador de 32.768KHz Figura 3.17. Esquema electrnico del oscilador.

Piezoelctrico 10K
-

Figura 3.18. Esquema electrnico del zumbador piezoelctrico.

Sensores analgicos
La inclusin de un convertidor analgico/digital entre los recursos del PIC16F87x ha animado al fabricante a incluir un sensor de temperatura de tipo LM35D y un sensor de luz de tipo LDR. La tensin de referencia necesaria que precisan los circuitos de alimentacin se ha resuelto con el circuito LM336z-2.5V de National Semiconductor, que proporciona una tensin de 2,5 VDC. Mediante un jumper se puede relacionar como tensin de referencia los +2,5 VDC o los +5 VDC de alimentacin. Ambos sensores se muestran en la Figura 3.19 y forman junto a una resistencia un divisor de tensin que se alimenta con el voltaje de referencia seleccionado.

Figura 3.19. Esquema electrnico de los sensores analgicos.

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 momento en el que la tensin pasa por el valor de O VAC. El circuito detector de paso por cero puede observarse en la izquierda de la Figura 3.20 y consiste en un rectificador en puente Graetz que recibe 12 VAC y saca una tensin rectificada en doble onda de 100 Hz, que se aplica al emisor del optoacoplador 4N33. Cada vez que la seal vale O VAC no hay generacin de luz y el optotransistor se bloquea, y la tensin 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 peticin de interrupcin en el PIC. En la tarjeta I/O se ha utilizado como carga una lmpara de incandescencia de 12 VAC gobernada su potencia mediante un opto-triac MOC3041.

Rels

Es un dispositivo muy usado en la industria y muy fcil de controlar. Basta un sencillo circuito de excitacin para poder controlar la activacin o no de las bobinas que abren o cierran los contactos que controlan la carga. La Figura 3.21 muestra los dos rels 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 seales de control EN1 y EN2 fcilmente generables 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 travs de EN1 para el encendido/apagado del motor e INl-IN2 para el sentido de giro.

LPI 12v

CROSS

MOC3041

Figura 3.20. Esquema electrnico del opto-triac para control AC.

66

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


VCC

Figura 3.21. Esquema electrnico de los rels.

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 fsicamente debajo del eje del motor. Ver parte derecha de la Figura 3.22. Para conformar un encoder basta recortar un disco de material rgido trasparente (plstico) y realizar un orificio en su centro para pegarlo al eje del motor. Luego se dibujan unas franjas radiales opacas a la luz infrarroja. El nmero de franjas determinar la resolucin. El disco encaja en la ranura del optoacoplador, que generar un pulso cada vez que pase una franja opaca.

l P

VCC

o
4

ENABLE O IN1 IN2

3 2 e
JPI

EN1 IN1 OUT1 GND GND OUT2 IN2 VDD L293B

IN4 OUT4 GND GND OUT3 IN3 EN2

14

l3

= I C 8

100n

VCC O--

VDD

VCC
Motor 3-12VDC

Figura 3.22. Esquema electrnico del control de motores.

4.1. PUERTAS DE E/S


Los microcontroladores PIC16F87x encapsulados con 28 patitas disponen de tres Puertas de E/S (A, B y C), mientras que los que tienen 40 patitas alcanzan las cinco (A, B, C, D y E). Todas las lneas de estas puertas son multifuncionales, es decir, realizan diversas funciones segn estn programadas. Sin embargo, todas ellas tienen la capacidad de trabajar como lneas de E/S digitales. Las caractersticas principales de las puertas son similares a las del PIC16F84, por eso en este tema se intenta resaltar las novedades que aaden las de los PICl6F87x.

4.1.1. Puerta A
Slo dispone de 6 lneas, denominadas RAO-RAS. Son bidireccionales y su sentido queda configurado segn la programacin de los bits del registro TRISA. Si el bit O del registro TRISA se pone a 1, la lnea O (RAO) de la Puerta A funciona como entrada. Si se pone a 1 funciona como salida y el contenido de la bscula de salida se aplica a la patita correspondiente, segn 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 escrito en la bscula de datos de la Figura 4.1. La escritura entraa una operacin de lectura-modificacin-escritura, o sea, se leen las patitas, luego se modifica su valor y finalmente se escribe en la bscula de datos. Las patitas RAOIANO, RAl/ANl y RA2/AN2, adems de lneas de E/S digitales tambin pueden actuar como los canales O, 1 y 2 por los que se puede aplicar una seal analgica al conversor A/D. La patitas R A ~ / A N ~ / V R tambin E ~ + puede actuar como entrada de la Tensin de Referencia para los perifricos que la precisan. La patita RA4TOCKI acta como E/S digital y como entrada de la seal de reloj para el Timer O. Por ltimo, la patita RAS/AN4/SS# tiene multiplexadas tres funciones: E/S digital, canal 4 para el conversor A/D y seleccin del modo esclavo cuando se trabaja con la comunicacin serie sncrona.

68

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 4.1. Esquema de conexionado de las patitas RAO-RA3 y RA5, que multiplexan la funcin de EIS digital con la de canal de entrada de una seal analgica para el Conversor AID.

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

Para seleccionar si las lneas 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 lneas de la Puerta A funcionan como E/S digitales y para ello habr que escribir la siguiente secuencia de instrucciones:

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

69

Figura 4.2. Tabla que recoge las caractersticas y bits ms 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 est implementado y se lee como O.

movlw b'0000 0 1 70' movwf ABCONl

;Los 4 bits de menos peso son 0 1 10. ;Las lneas de la Puerta A son U S 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 lneas bidireccionales cuya funcin se elige mediante la programacin del registro TRISB, igual que suceda en la Puerta A con TRISA. En el siguiente programa, se configuran como entradas las lneas RB<3-O> y RB<7:6>, mientras que RB<5:4> quedan asignadas como salidas.

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 tensin de alimentacin del microcontrolador VDD = 5 V la que se emplea en la grabacin del programa. En la programacin con voltaje alto, ste se introduce por la patita MCLR#/VPPy est comprendido entre 12 y 14 V. En la programacin con voltaje bajo por la patita MCLR#/VPPse aplican 5 V y la patita RB3/PGM hay que conectarla a nivel alto. En la programacin con voltaje alto, esta ltima patita es una E/S digital normal. Como la programacin siempre se realiza sincronamente en serie, por la patita RB6/PGC se introducen los impulsos de reloj y por la RB7/PGD los bits de datos en serie.

70

MICROCONTROLADORES cPIC. DISEO PRCTICO DE APLICACIONES

Todas las patitas de la Puerta B disponen de una resistencia interna de pull-up al positivo de la alimentacin, que queda conectada cuando el bit RBPU#, que es el bit 7 del registro OPTION, tiene valor O. La resistencia de pull-up, que es un transistor CMOS tipo P, como se aprecia en la Figura 4.3, se conecta automticamente siempre que la lnea est configurada como salida. Cuando se produce un Reset por conexin de la alimentacin (POR) se desconectan todas las resistencias pull-up.

RB7:RB6 E N M O D O PROGRAMACIN

E N SERIE

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

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

71

Figura 4.4.

Estructura de los registros que manejan la Puerta B.

Las lneas RB<7-4> pueden programarse, como en el PIC16F84, para generar una interrupcin 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 interrupcin, siempre que lo autorice el bit de permiso. En cualquier caso, el sealizador RBIF, que es el bit O del registro INTCON, se pondr a 1. Esta interrupcin es muy utilizada en el manejo de teclados matriciales. La patita RBOIINT tambin puede programarse como peticin de interrupcin externa, si se autoriza con el correspondiente bit de permiso, que tambin est ubicado en INTCON. La Figura 4.4 muestra algunas caractersticas de los registros que manejan la puerta B.

4.1.3. Puerta C
Consta de 8 lneas 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 lneas bidireccionales slo la tienen los PIC16F87x encapsulados con 40 patitas. Ocupa la direccin 08h, mientras que su registro de configuracin TRISD ocupa la direccin 88h. Todas las patitas disponen en su entrada de un Trigger Schmitt.

72

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Adems de usarse como lneas de E/S digitales normales, implementan una puerta paralela esclava de 8 lneas (PSP), que sirve para permitir la comunicacin en paralelo con otros elementos del sistema. Las patitas se denominan RDO/PSPO-RD7/PSP7 y para que funcionen como puerta de comunicacin esclava en paralelo es preciso poner el bit PSPMODE = l. Este bit es el 4 del registro TRISE, que se comentar en la Puerta E.
4.1.5. Puerta E

Ocupa la direccin 09h y slo la tienen los PIC16F87x con 40 patitas. Dispone de 3 patitas multifuncin, que se configuran como entrada o salida, segn el valor de los tres bits de menos peso del registro TRISE, que est ubicado en la direccin 89h.
RFO/RD#/AN5. 15/S digitafleiial de lectura en el moda de puerta paralela eshva/canal5 del conversor MI/WR#/ANG, /S digital/Ser?al de escritura en modo PSP/canal6 del conversor &7/CS#/AN7= E/S digitaI/Seleccin de chip en el modo FP/mnal7 del conversor ND.

m.

La PSP acta como un puerto de comunicacin en paralelo de 8 lneas y para su activacin hay que poner el bit PSPMODE a 1. Dicho bit es el 4 del registro TRISE. Adems de las 8 lneas de transferencia de datos, se precisan 3 seales de control, que determinan si la operacin es de lectura, de escritura y de permiso de funcionamiento (RD#, WR# y CS#). Estas tres lneas de control estn 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 disponer de 11 lneas de E/S ms, o bien de un canal paralelo de comunicacin (PSP) con sus correspondientes seales de control.

Es una posicin reservada de la memoria de programa FLASH, que ocupa la direccin 2007h y que slo es accesible durante la programacin del PIC. El valor de sus bits determina algunas caractersticas fundamentales (Figura 4.5).

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

73

Figura 4.5.

Denominacin de los bits de la palabra de configuracin, que ocupa la direccin 2007h de la memoria de programa.

Se trata de cuatro palabras de la memoria de programa que se hallan comprendidas entre la direccin 2000h y la 2003h y estn reservadas para que el usuario las pueda emplear en funciones de comprobaciones o cheksums, cdigos de identificacin, nmeros de serie, fecha, modelo, lote,

nmeros secuenciales o aleatorios, etc. Estas cuatro posiciones slo son accesibles en lectura y escritura durante la operacin de programacin/verificacin. Slo se deben emplear los 4 bits de menos peso de cada una de las palabras de identificacin.

Los PIC16F87x disponen de diversas maneras de reinicializarse, de forma similar a como ocurra con el PIC 16F84, que se citan a continuacin.

Los bits TO# y PD# del Registro de Estado toman un valor determinado en cada tipo de Reset. Tambin los bits O y 1 del registro PCON, llamados BOR# y POR#, respectivamente, sirven para especificar las causas de un Reset. En la la tabla de la Figura 4.6 se muestran estos bits y el tipo de Reset 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 vara con respecto al que tena antes del Reset. En la Figura 4.7 se muestra el esquema elctrico en el que se representan las causas y seales que originan un Reset. Como se deduce de dicha figura, la generacin del Reset ocurre como consecuencia de la salida de un nivel lgico alto de la puerta OR1, la cual es controlada por todas las causas que reinicializan al PIC.

Figura 4.6.

Determinacin de la causa del Reset.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR


MC R E S E T EXTERNO

75

HABlLlTAClON O S T

PWRl
- - - - - m - -

1
i
1

OSCllADOR INTERNO RC

HABILITACIN P W R T

Figura 4.7.

La generacin del Reset se produce al activar la entrada S de la bscula, cuando sucede alguna de las condiciones que se aplican a la puerta O R l . Los temporizadores OST y PWRT retardan el Reset al actuar sobre la entrada R de la bscula de salida.

1.8 ~ C f i v a ~ de k lla ~ patita W L R # . 2.aD~sbw&m'mto del perra guwdi4n u W7: Ra Cmexih de fa alirnentwidn (POR). 4." Caida en 1 s tensitn de alkmmtacidn (BQlrl).

El temporizador PWRT retarda el Reset un tiempo fijo de 72 ms con la finalidad de garantizar la mientras que el temporizador OST produce un retardo de 1 .O24 ciclos de la freestabilidad de VDD, cuencia aplicada por la patita OSC, con el objetivo de asegurar que el cristal de cuarzo del oscilador principal est estabilizado y en marcha.

76

MICROCONTROLADORES PIC. DISEO PRCTICO 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 interrupcin, 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 especficos del microcontrolador tras producirse los diversos tipos de Reset.

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 normal. 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 bloques principales que constituyen al perro guardin. Las instrucciones CLRWDT y SLEEP borran o ponen a cero el valor de contaje del WDT y el del Postdivisor. Si se ejecuta la instruccin CLRWDT y el Predivisor de Frecuencia est asignado al perro guardin, se borra, pero no cambia su configuracin.

4.6. MODO DE REPOSO O DE BAJO CONSUMO


En este modo especial de funcionamiento del microcontrolador se introduce cuando se ejecuta la instruccin SLEEP, igual que en el PIClF84. Esta manera de trabajo se caracteriza por su bajo consumo y parece que el PIC se ha congelado. Las lneas de E/S digitales que se utilizaban mantienen su estado, las que no se empleaban reducen al mnimo su consumo, se detienen los temporizadores 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 instruccin direccionada por PC+l existen varias causas.

78

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


DESDE T M R O

SALIDA W D T

Figura 4.9. Esquema simplzj?cado por bloques del perro guardin.

4.7. PROGRAMACIN DE LOS PIC16F87X


La posibilidad de programar a esta subfamilia de PIC en serie permite grabar en la memoria de cdigo el programa de trabajo, estando colocado el PIC sobre el circuito o producto de aplicacin final. Esta caracterstica permite a los fabricantes construir y montar completamente la tarjeta de circuito impreso y dejar pendiente la grabacin del programa en el PIC hasta el momento de la venta, pudiendo incluir el firmware ms reciente que se disponga en cada momento.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

79

La programacin en serie tpica, 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 aportacin en los PIC16F87x la constituye la programacin con Voltaje Bajo (LVP: Low Voltage Programming), que no requiere la tensin de 12 a 14 V. Para grabar en este modo, hay que poner el bit LVP = 1, que reside en la Palabra de Configuracin y la patita RB3/PGM se debe conectar a nivel alto. Entonces por la patita MCLR#/VPPse aplica la tensin VDD de 5 V mientras dura la operacin de grabado. Cuando no se opera en este modo de programacin se puede usar la patita RB3 como una lnea de E/S digital.

PROGRAMAR PIC ES FCIL

UTILIZACIN DE LOS RECURSOS DEL PIC


En el captulo anterior, vimos cmo 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 guardin. El esquema elctrico no vara con respecto al del captulo anterior, pero s el organigrama.

Organigrama
Segn el valor de dos interruptores, se encendern o apagarn 10s diodos de la Puerta B pero, antes de volver a mirar el valor de dichos interruptores, se meter al microcontrolador en estado de reposo, del cual despertar al desbordarse el perro guardin, inicindose de nuevo el proceso.

INICIALIZACI~N P A ENTRADA

CONFIGURACIN DEL PERRO GUARDIN

+*
ENCENDER LEDs

7 SLEEP

Figura 4.10. Organigrama del ejercicio.

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:

82

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los cambios son mnimos y aparecen marcados con

*.

La configuracin del perro guardin consiste en asignarle el predivisor de frecuencias, de modo que tarde ms en desbordarse si no se le refresca, lo cual ampla considerablemefite el tiempo entre refrescos y evita as muchas instrucciones de ese tipo. Tras encender o apagar los LEDs y, tras borrar el perro guardin, se entra en estado de reposo o bajo consumo, del cual saldr al desbordarse el perro guardin, volviendo as a comprobar los interruptores para volver a encenderlapagar los LEDs. En este caso no es necesaria la instruccin de refresco del perro guardin, ya que al entrar en sleep se resetea l solo.

Prueba del programa Para la puesta en marcha de este programa, se seguirn los mismos pasos que en el captulo anterior con excepcin de la grabacin. La Palabra de Configuracin, modificable en el proceso de grabacin, sirve entre otras cosas para habilitar o no el perro guardin. Puesto que estamos controlando su funcionamiento, se deber activar poniendo a SI la opcin Watchdog T. De este modo, a efectos del usuario, el programa seguir funcionando del mismo modo. En caso de no habilitar el perro guardin, una vez que se hayan encendido o apagado los LEDs en la primera ejecucin del programa, ste entrar en estado de reposo, del cual no podr salir.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

83

Aunque la filosofa de los microcontroladores PIC es actuar como sistemas cerrados, limitados a sus propios recursos, a veces se hace necesaria su ampliacin para dotarles de ms memoria, aumentar su capacidad de manejo de perifricos 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 posibilidades que nos presenta la tarjeta de ampliacin Micro'PIC Trainer Plus.

La tarjeta de ampliacin 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 ms avanzados de los microcontroladores PIC. Como se ver en los Captulos 8 y 9, los PIClGF87x incorporan en su chip distintos mdulos que permiten la comunicacin con dispositivos externos. Tal es el caso del USART, que permite la comunicacin con, por ejemplo, perifricos como el ordenador. Las partes fundamentales de que consta esta tarjeta se muestran en la Figura 4.11.

Figura 4.11. Tarjeta de ampliacin Micro'PIC Trainer Plus con las partes ms significativas sealadas.

84

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Descripcin del esquema electrnico


En la Figura 4.12 se ofrece el esquema electrnico de la tarjeta de ampliacin de perifricos Micro' PIC Trainer Plus. Est compuesta por 6 bloques principales:

1." 2." 3." 4." 5." 6."

Teclado. Canal serie RS-232. Reloj/calendario. Mddulo de visualizacin. Mdulo conversor A DUDAC. E/S paralelo.

El teclado
La conexin con el Micro'PIC Trainer de esta tarjeta de ampliacin se realiza a travs del conector CNl, que proporciona todas las lneas del PIC, as como las de alimentacin. El teclado matricial de 4x4 est conectado con las lneas de la Puerta B (RBO-RB7). El programa de control del teclado configurar RB7-RB4 como salidas para ir activando secuencialmente las filas una a una. Las lneas RB3-RBO se configuran como entradas desde las columnas del teclado y son ledas 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 seales SCL y SDA, respectivamente, para lo cual hay que utilizar adecuadamente los jumpers J1 y 52.

LAS PUERTAS DE E/S Y RECURSOS ESPECIALES DEL PROCESADOR

85

86

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El canal serie RS-232


El circuito principal de esta seccin es el MAX232 (U5), que convierte los niveles TTL presentes en la patita 11 de transmisin (Tx), en niveles lgicos RS-232, que se obtiene en la patita 14 (TxD) y se aplican al conector DB9 (CN2). La seal de recepcin 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 seales 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 comunicacin con software, se emplean las lneas RB4 y RB5. La seleccin de uno u otro modo se realiza mediante los jumpers J3 y 54.

Reloj calendario
Est basado en el circuito integrado PCF 8583P (U2), diseado para conectar al bus I2C. Adems de las funciones horarias clsicas, tambin realiza funciones de alarma y temporizacin. Contiene 256 posiciones de RAM esttica de 8 bits cada una, de las cuales las 16 primeras estn usadas para las funciones de reloj, calendario, alarma y temporizacin. Quedan 40 posiciones libres para el usuario, quien puede usarlas como RAM no voltil en caso de alimentar al PCF8583 con una batera recargable de Ni/Cd.

Mdulo de visualizacin
Est compuesto por 4 displays de 7 segmentos controlados por el circuito integrado SAA1064 (Ul) adaptable al bus I2C. Mediante las lneas SDA y SCL, el PIC maestro enva la informacin a visualizar en los displays, mediante un multiplexado sobre las mismas. Inicialmente, por las lneas P l -P8 aparece la informacin a representar en el dgito l y por P9-P16 la correspondiente al dgito 3. Simultneamente se activa la seal MX1 que hace conducir al transistor Q1, que gobierna los nodos comunes de dichos dgitos. Despus, por P1-P8 y P9-P16 aparece la informacin a visualizar en los dgitos 2 y 4 con la seal MX2 que controla Q2. Este proceso se repite a gran velocidad y de forma indefinida, provocando la sensacin visual de tener encendidos los 4 dgitos a la vez.

Mdulo ADC y DAC


Est centrado en el circuito integrado PCF8591 (U3) para el bus I2C. Consta de un Conversor Analgico/Digital ADC de 8 bits con 4 canales de entrada ANO-AN3. Tambin dispone de un Conversor DigitallAnalgico DAC de 8 bits cuya tensin de salida se obtiene por AOUT. La seal analgica de tierra, as como la tensin de referencia necesaria, se aplican por AGND y VREF.

Puerta de EIS paralelo


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

Los PIC16F87x disponen de un potente conjunto de temporizadores para manejar eficientemente todas las operaciones que involucran al tiempo y al contaje. Dichos temporizadores son tres y se denominan tcnicamente TMRO, TMRl y TMR2. El TMRO es idntico al que tiene el PIC 16F84 y sus funciones ms representativas son:

1.@ TlWRO @Sun 8 bias. 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.aGenerwih de interrupcibn &dona/ en el dwbordamento.

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 ms potentes y flexibles que el sencillo TMRO. As, el TMRl se caracteriza por:

lee W R I es un Contadorflernporizador de f 6 b b . 2." Ceble y e s c r ' l e . 3."SaltacciBn de reloj interno o exferno, 4," intwrupcin o p c i w l por desbordmiep1tode FFFh sa CQQOh.

..

5."Posible rrainicialjzaci6n &8&

lw mddulm CCR

Finalmente, el TMR2 tiene las siguientes caractersticas fundamentales.

87

88

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

1.a TMR.2e$ un Tempsrizador de 8 bits. 2." Dispone de un Registro de Perodo 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 mjula SSF!

5.2. ESTRUCTURA INTERNA Y FUNCIONAMIENTO DEL TMRl


El TMRl es el nico Temporizador/Contador ascendente con un tamao de 16 bits, lo que requiere el uso de dos registros concatenados de 8 bits: TMRlH:TMRlL, que son los encargados de guardar O O O h hasta FFFFh, instante el valor del contaje en cada momento. Dicho valor evoluciona desde O en el que se activa el sealizador TMRlIF y se regresa al valor inicial 0000h. Tambin, si se desea, se puede provocar una peticin de interrupcin. El valor contenido en TMR1H:TMRlL puede ser ledo o escrito y los impulsos de reloj que originan 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 instruccin (Fosc14). En el modo contador, el incremento se puede producir con los flancos ascendentes de un reloj externo, cuya entrada se aplica a las lneas RCO y RC1 de la Puerta C, o por impulsos aplicados en la lnea RCO. En la Figura 5.1 se muestra el diagrama por bloques del TMRl, en el que destacan las diversas seales de control y el predivisor de frecuencia.

Figura 5.1.

Esquema interno de los principales bloques del TMRl con sus seales de control.

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 registro T1CON, que ocupa la direccin 1Oh de la memoria RAM y cuya denominacin y distribucin se presentan en la Figura 5.2. El bit TMRl ON gobierna el permiso o la prohibicin 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 actan como entradas del oscilador externo. Si TI OSCEN vale O los impulsos vendrn a travs de RCO/Tl OSO/Tl CKI. En ambos casos, el TMRl funciona como contador de eventos externos y los bits 1 y O (utilizados) del registro 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 lneas 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 consumo 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 divisin lo eligen los bits Tl CKPSl y TI CKPSO segn la siguiente tabla.

El bit TlSYNC# determina la posible sincronizacin o no de los impulsos del reloj externo con los del reloj interno, segn valga O o 1 respectivamente. El TMRl puede generar una peticin de interrupcin cuando se produce el sobrepasamiento del contaje, es decir, cuando se pasa desde FFFFh a 0000h. En esta situacin, se pone automticamente a 1 el flag TMRIF, que es el bit O del Registro Especfico PIRI, que est ubicado en la direccin OCh de la RAM. El permiso o prohibicin de la produccin de interrupcin del TMRl, est controlada por el bit TMRlIE, que ocupa la posicin de menos peso del Registro Especfico PIE1 (8Ch).

REGISTRO T I CON

Figura 5.2. Nomenclatura y distribucin de los bits del registro de control del TMRl.

90

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Cuando el mdulo CCP (captura-comparacin-PWM) est configurado como comparador para generar un disparo especial (CCPlM3-CCPIMO = 1011), dicha seal resetea el TMRl. Para aprovechar esta caracterstica, el TMRl debe estar configurado en modo temporizador o contador sncrono. 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 distribucin de los bits.

5.5. FUNCIONAMIENTO Y PROGRAMACIN DEL TMR2


Se trata de un Temporizador ascendente de 8 bits, que se puede leer y escribir, y que tambin puede realizar funciones especiales para la Puerta Serie Sncrona (SSP) y con los mdulos de captura y comparacin. Ocupa la direccin 1 l h del mapa de los registros especficos. La seal 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 frecuencia con rangos de divisin 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 seal Fosc/4 deja de funcionar el TMR2. Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la direccin 12h del mapa de los registros especficos y cuya distribucin y asignacin de bits se muestra en la Figura 5.4.

Figura 5.3.

Resumen de los registros ms importantes que se encargan de programar el funcionamiento del TMRI, con la nomenclatura de sus bits, sus direcciones y el estado que toman despus de diversas situaciones de Reset. El valor 'x' signijica indeterminado, 'u' que permanece invariable y los no implementados (-) se leen como O.

LOS TEMPORIZADORES
REGISTRO T 2 C O N

91

Figura 5.4.

Distribucin y asignacin de los bits del registro T2CON, que sirven para programar el trabajo del TMR2.

Los bits 1 y O del T2CON (T2CKPS1 :T2CKPSO)sirven para seleccionar el rango de divisin 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 ms 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 cdigo:

El sealizador de desbordamiento del TMR2 es el bit 1 (TMR2IF) del registro PIRI, que ocupa la direccin 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 Perodo PR2, que ocupa la direccin 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 postdivisor antes de activar el sealizador TMR2IF. Este temporizador tambin tiene la capacidad de producir una peticin de interrupcin si se pone a 1 el bit TMR2IE de habilitacin, que reside en el registro PIE1 (8Ch). Adems, con la programacin adecuada, los impulsos de salida del TMR2 (antes del postdividor) pueden actuar como base de tiempos para el mdulo SSP.

92

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

SALIDA TMR2 A S S P

-- 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 manejo del TMR2.

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

LOS TEMPORIZADORES

93

MIDIENDO EL TIEMPO
La mayora de los programas tienen una o ms rutinas de temporizacin. Dicha temporizacin se puede realizar mediante bucles anidados en que se van decrementando el valor de varios contadores hasta llegar a O o, ms eficientemente, descargando de esta tarea a la CPU, utilizndola para otras cosas, mientras un temporizador especial que lleva la cuenta. En este captulo se ha hablado del aspecto terico de los temporizadores; vamos ahora a llevarlo a la prctica mediante un ejercicio. El uso de los temporizadores es tan comn que en captulos posteriores se seguirn mostrando ejemplos de utilizacin aunque no sea el recurso a estudiar.

Enunciado
Se quiere que el temporizador TMRl se comporte como un contador de eventos externos. Dichos eventos vendrn por la lnea 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 nmero de pulsos por segundo (herzios). Cambiando el intervalo de tiempo de medicin se podran 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, estaramos consiguiendo medir su velocidad. Los herzios se van a mostrar, adems, por la pantalla LCD del Micro'PIC Trainer. El TMRO va a funcionar como temporizador auxiliar.

Esquema elctrico
La nica conexin que deber realizarse entre el Micro'PIC 110 y el Micro'PIC Trainer, adems 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 ms, el organigrama del programa principal es tan simple como la inicializacin de los diferentes registros y recursos a utilizar, y la espera en un bucle a que se produzca una interrupcin, que ser la que realmente realice las operaciones necesarias. (Figura 5.8.)

94

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Vss

Vdd

Vo RC R/W#E

D O D I D2 D3 D4 D5 D6 D7

GENERADOR MICRO'PIC 1 1 0

Figura 5.7. Esquema elctrico del ejercicio propuesto.

LOS TEMPORIZADORES

95

INKML~ZACI~N
PA W D A PBSALlDA PC EMlZADA

COMFIWRAC~~N TMRO, TMR1

m 1 =a
I

TMRO = C2(196]

HABKITACK~I\I $M:TMRO

Figura 5.8. Organigrama del ejercicio.

Se entrar en la rutina de interrupcin cada 50 ms. ste es el tiempo aproximado que tarda el TMRO en desbordarse con los valores cargados. Como se requiere una temporizacin de 250 ms, se entrar en dicha interrupcin 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 programa principal hasta que se produzca una nueva interrupcin. (Figura 5.9.)

Figura 5.9. Organigrama de la rutina de tratamiento de interrupcin.

96

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado

El programa quedar de la siguiente manera:

LOS TEMPORIZADORES

97

98

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

LOS TEMPORIZADORES

99

Prueba del programa


Se debern conectar las lneas tal y como muestra el esquema elctrico. Adems, 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 fotografa del programa funcionando. En el LCD puede observarse el valor numrico que muestra los herzios y el osciloscopio los pulsos generados por el oscilador del Micro' PIC IIO.

Figura 5.10. Fotografa del ejercicio propuesto en ejecucin.

100

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Tarjetas como la Micro'PIC Trainer Plus y la Micro'PIC 110 pueden ser muy adecuadas para la depuracin de programas, ya que cada una de ellas dispone de perifricos 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 encuentran sobre la tarjeta, sino sobre el elemento al cual controlan. Para esto se hace necesario que la circuitera 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 travs del PICBUS, puede pasarle las seales de un PIC de un mximo de 28 patitas. Las partes ms importantes se muestran en la Figura 5.11.

Figura 5.11. Fotografia que muestra las partes ms importantes de la MSx84.

LOS TEMPORIZADORES

101

Descripcin del esquema electrnico 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 Seccin del rnicroconfrdador. 3.' Control de motorcss. .


4." SecciBn de sensores.

REFERENCIA

REFERENCIA

RBD
RE1

SO
S1

REO
RE1

$0

51 52

RB2
RB3

52

RE2
RE3

53
S4

53
$4

RA4 RAO
RAI

INI!IN2 IN4AN3 EN1

RA4 RAO RA~ RAZ


RA3

INlilN2
IN41N3

RA2 RA3

EN1 EN2

EN2

Figura 5.12. Zcalos que muestran la asociacin de lneas con los sensores y actuadores.

102

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

LOS TEMPORIZADORES

103

Fuente de alimentacin
Est formada por dos secciones. La primera recibe en el puente rectificador (DI) por J8 una tensin de 12 VAC y proporciona una tensin de 13 VDC, mediante el regulador UA7812 (U4) y los diodos D2, D3, D4 y D5. Al cerrar el interruptor SW3, se consigue una tensin de 5 VDC a travs del regulador UA7805 (U5) en el borne +Vo, mientras que en el borne +V,, se tienen los 13 VDC. En lugar de la seccin rectificadora del UA7812 se puede introducir una tensin de CC por medio de una batera en el conector J5.

Microcontrolador
La tarjeta contiene su propio microcontrolador PIC 16F84,que pone a disposicin del usuario todas sus patitas a travs del conector PICBUS. Igualmente, usando este conector PICBUS puede conectarse al Micro'PIC Trainer para grabar y borrar el microcontrolador directamente sobre la tarjeta de aplicacin. La circuitera que envuelve al PIC16F84 es la mnima necesaria: cristal X l de 4 MHz, junto a los condensadores C7 y C8, y el circuito de Reset formado por el pulsador SW2 y la resistencia R11.

Seccin de sensores
La tarjeta MSx84 puede controlar las seales digitales procedentes de 5 sensores externos que se aplican por los conectores JO-J4. Dichas seales se aplican a puertas Trigger inversoras para la adaptacin de niveles, evitando ruidos y deformaciones, mediante dos circuitos integrados HF40106. Los microrruptores de SW1 permiten que cada una de las cinco seales de los sensores puedan desconectarse de las lneas del microcontrolador, caso de no emplearse.

Los microcontroladores PIC16F87x disponen de dos mdulos CCP, llamados CCPl y CCP2, que son idnticos excepto en lo referente a la modalidad de Disparo Especial, que luego se comenta. Dada esta similitud, la descripcin se orienta hacia el mdulo CCP1. Estos mdulos pueden realizar tres funciones principales:

El mdulo CCPl utiliza un registro de trabajo de 16 bits que est formado por la concatenacin de los registros CCPRlH-CCPRlL (direcciones 16h y 15h). El registro de control del mdulo CCPl es el CCPICON, que ocupa la direccin 17h. (Figura 6.1.) El mdulo CCP2 tiene como registros 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. Asignacin de los bits de los registros CCPxCON para los mdulos CCPl y CCP2. Todos sus hits son lehles y escribibles y pasan a O cuando se produce un Reset.

106

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

O000 O1O0
1

Mdulo CCPx desconectado Modo captura con cada flanco descendente en RCyICCPx
I

O1O1 O11O O111

Modo captura con cada flanco ascendente en RCyICCPx Modo captura cad 4 flancos ascendentes en RCyICCPx Modo captura cada 1 6 flancos ascepdentes en RCyICCPx Modo comparacin que activa la patita RCyICCPx al coincidir valores
m

1 000
1 O01
I

Modo comparacin que desactiva (O) la patita RCyICCPx al coincidir valores Modo comparacin que genera una interrupcin software (no afecta a RCyICCPx) Modo comparacin en el que se produce un disparo especial diferente para cada mdulo Modo PWM

1010 1011 llxx

CCP2CON en la direccin 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 anchura del impulso.

6.2. MODO CAPTURA


En este modo, la pareja de registros CCPxH-L del mdulo CCPx captura el valor de 16 bits que contiene 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 flancoasmn&nte. 2." Un flanco dmcmdmte, 3." Cada 4 f f a m s ascendsntes. 4." Cada 1 6 flancos ascmdentes.

Los cuatro bits CCPlM3-O del registro CCPlCON seleccionan el evento adecuado en el mdulo CCPl y otro tanto sucede con el mdulo CCP2. Al efectuar la captura, se activa el sealizador CCPlIF del registro PIR1. Adems, si se pone a 1 el bit de permiso de interrupcin PIEl<CCPlIE>, se genera una peticin de interrupcin cuando se carga en CCPRIH-L el valor del TMR1. En la Figura 6.2 se muestran los elementos ms significativos que intervienen en el trabajo del modo Captura. Cuando se emplea el mdulo CCPl en modo captura, el TMRl debe estar configurado para trabajar como Temporizador o como contador sncrono. Nunca en modo asncrono. Si se van a cambiar las condiciones de funcionamiento en el modo captura, conviene detener o desactivar al mdulo CCP para evitar que se produzcan falsas interrupciones durante la operacin.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

107

CAPTURA

Figura 6.2.

Esquema de los bloques principales del Mdulo de Captura del CCPl.

Si no se ha ledo el contenido de los registros CCPRIH-L y se produce una nueva captura, dichos registros pasan a contener el nuevo valor. Cuando se desactiva el mdulo CCP o deja de funcionar en modo captura se borra la codificacin del predivisor de frecuencia que determinan los bits CCPlM3-O. Una aplicacin muy interesante del modo captura puede ser la medicin de los intervalos de tiempo que existen entre los impulsos que llegan a la patita RCS/CCPl que se halla configurada como 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 continua, 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 programacin 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 sealizador CCP 1IF. El TMRl debe trabajar en modo temporizador o contador sncrono, nunca en modo asncrono. Si el bit de permiso de interrupcin est a 1, cuando coinciden los valores mencionados se origina una peticin de interrupcin. En la Figura 6.3 se ofrece un esquema por bloques de la estructura general del mdulo CCPl en modo comparacin.

1
DISPARO SECUENCIAL (EN CCP2)

Y
r\nlS
~

CCPRlH

CCPRlL

CCPl IF
n AA n n n

Figura 6.3. Esquema por bloques del mdulo CCPl cuando funciona en modo Comparador.

Si con los bits CCPlM3-O se selecciona el modo de trabajo de disparo especial, el mdulo CCPl pone a O el TMRl y el CCPRI funciona como un Registro de Perodo, capaz de provocar peridicamente intermpciones. En ese modo de disparo especial, el CCP2 pone a O el TMRl y, adems, inicia una conversin en el conversor A/D, con lo que tambin y, con carcter peridico, puede realizar conversiones analgico/digitales sin el control del programa de instrucciones.

6.4. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MDULO DE CAPTURA Y AL DE COMPARACI~N

En la tabla de la Figura 6.4 se presentan los registros, con la distribucin de sus bits, que participan en la programacin de los mdulos de captura y comparacin de los dispositivos CCPl y CCP2.

Figura 6.4.

Tabla resumida con los registros que manejan los modos de captura y comparacin de los mdulos CCP.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

109

6.5.

MODO DE MODULACIN DE ANCHURA DE PULSOS (PWM)

Con este modo de trabajo, se consiguen impulsos lgicos cuya anchura del nivel alto es de duracin variable, que son de enorme aplicacin en el control de dispositivos tan populares como los motores y los triacs. La patita RC2/CCPl est configurada como salida y bascula entre los niveles lgicos O y 1 a intervalos variables de tiempo. Lo que se intenta es obtener un impulso cuyo nivel alto tenga una anchura variable (Duty Cycle) dentro del intervalo del perodo 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 comparador detecta la coincidencia del valor existente en CCPRlH con el de la parte alta del TMR2. (Figura 6.6.) De esta manera, variando los valores que se cargan en PR2 y en CCPRlL (que luego se . traspasa al CCPRlH) se vara el intervalo de tiempo en el que la patita de salida est a 1 y a O Cuando se trabaja con una precisin 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 ms peso del TMR2 se concatenan con los dos bits de menos peso del reloj interno; haciendo que el TMR2 cuente cada Toscen vez de cada 4*Tosc. El tiempo que dura el perodo de la onda depende del valor cargado en PR2, segn la frmula siguiente:
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 1L, que es el que determina la anchura del impulso, se carga en CCPR1H.

I I

I
I

w
Figura 6.5.

ANCHURA IMPULSO (DUWCYCLE)

Se desea conseguir un impulso de nivel alto con anchura controlada dentro del perodo.

Figura 6.6. Esquema de la estructura interna del mdulo 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 precisin de 10 bits.
Anchura lmpuiso = (CCPR 1L:CCP1GON<S:I(>) Tw Vaim Pfedvisw 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 slo puede ser ledo. Los pasos a seguir para realizar la configuracin del modo PWM son los siguientes:

6.6. CHULETA-RESUMEN DE LOS REGISTROS ASOCIADOS AL MDULO PWM


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

MDULOS DE CAPTURA, COMPARACINY MODULACIN DE ANCHURA DE PULSOS

111

Figura 6.7. Tabla que recoge los registros que se manejan en la programacin del modo PWM.

.apnq oyxp ua ylrn2as as u 9 3 -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.9e ~ n 2 e1 y ua E I J S ~ ~ Uas I owo3 h ~ e'lez!lgn i 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!ldodran:, [a u g

' J a u l w J j 3 1 d , o n x ~lap s a g q ap eneq e1 ap sopo~p sol ap oun Jezg!in apand as anb 01 lod ' 0 8 eaug ~ e1 u03 yapuodsauo:, as 18 '011 ~ I ~ , O J ~ . lap Z N lopelaua8 la u03 I ) I ~ I J , / ( ) ~ eiged el ap u p n ~1 m d Epep FJpuaA 'alled ns lod ' T ~ N lap A soslndur! ap Epequa e? ( 3 - 9e~n8!g) - ( I ~ ~ o J , / P v 0~ ) 8 Iap soslndur! ~ ~ ap epeaua ap legas EI uo:, aiuaure3!sjj asqun 2.1 -aqap ( l d 3 3 / 2 3 8 ) 1633olnpour lap ~ p ~ ap @ -[egas s e1 'olla eled .salopez~~odurai sop ap oiuayureu - o ~ ~ ula n opuezqua j 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~jap sa~os!~!pa~d sol ap salolm so1 u03 opue8ny 'aploqsap as 0 8 la anb ~ zaA ~epe3 y q n 3 -seq as? un h sauor3dnrra1ur u03 ylezrleal as oiualureieli1g .souIalxa soiuaAa ap J O ~ E ~ L O IO W ~O op ~ -e~n8yuo:,ymlsa anb ' O X ~ lap L JO~A la aiuawal3uy anb opour ap '1)130J,/pv8 eiped e1 e epe3!lde sa 'JOIBA ns e an3all la 0puen3 1 6 3 3 olnpour la lod epelaua2 ep!~esap legas el ' Z ~ A ns v -u alueiJ -su03 eun lod sopeurwaiap uauay .1eluo3 ylaqap anb sos~nd so? -O/I 3 1 d ~ 0 ~ 3 e1 . ap z ~lopelaua3 la lod epeuo!:,.~odo.~dsa e:,!~de al as anb legas e1 apuop 'sowaxa soslndur! ap .~op~luo:, opow ua ylereq -eli opow aisa e oper3ose I ~ ~ \ 13 IA - u ~ ~ ~ ~ . OPOW Iz~u ua I1 od ~3 3 o[np?ur [E le@qm)la:,~yala'nb a s

.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 ~ i s oe u eloye r soure~ '633 solnpour sol e a~uayuxa3uo3 vyoal e1 o i s l ~ ey as 'olni/rde:, aisa ug

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

113

RESET

Figura 6.8. Esquema elctrico del ejercicio propuesto.

Cuando se trabaja con interrupciones se necesita utilizar, al menos, dos organigramas: uno para el tratamiento de la interrupcin y otro para el programa principal. Si el programa principal o la interrupcin son complejos, sus organigramas mostrarn los llamamientos a subrrutinas y stas debern especificarse en otros organigramas. La Figura 6.10 muestra el organigrama de tratamiento de interrupcin. El primer recuadro INTER no se traduce en ninguna instruccin; representa la entrada a la rutina. La salida, asimismo, tambin debe ser nica. Siempre que se habilite ms de una interrupcin, el primer paso ser discriminar de entre los tipos posibles aquel que la ha producido. En nuestro caso, tenemos la interrupcin del TMRO al desbordarse, lo cual har cambiar de estado al LED conectado en RBO, y la interrupcin provocada cuando el comparador del mdulo CCPl detecta la igualdad del TMRI con el valor programado. En ambos casos se debe poner a O el sealizador de interrupcin antes de volver.

114

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 6.9. Organigrama del cuerpo principal del ejercicio propuesto.

Figura 6.10. Organigrama de la rutina de tratamiento de interrupcin.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN DE ANCHURA DE PULSOS

115

Programa comentado El programa correspondiente al enunciado dado queda como sigue:

116

MICROCONTROLADORES PIC. DISEO PRCTICO 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 grabacin del microcontrolador se realizar como en captulos anteriores. Adems, deber tenerse en cuenta:

MDULOS DE CAPTURA, COMPARACINY MODULACIN DE ANCHURA DE PULSOS

117

Figura 6.1 l .

Fi)tog~.c!/ltr dc.1 prn,qr-trnzrrcrl c:jcc,~rc,ic/~.

La Figura 6.1 1 muestra la conexin de las tar&jeta\ Mi(*/-o'P/C //O y Miu-o'P/C T/-ai/lcl. para la ejecucin del prograina. De lo\ dos LED encendido\ en el Mic-lw'PIC Tl-uillrl-,uno de ellos e\ el de conexin de la placa y el otro el que bascula cuando el TMRO \e de5borda. El poliscopio, por su parte, mue\tra lo\ p~il50s aplicado\ por el generador del M i c ~ o ' P l C //O al TMR l.

Enunciado segundo
Los mdulos CCPI y CCP2 pueden trabajar sitnultrneamente en diferente modo. En e\te ejercicio vamos a hacer trabajar al mdulo CCP2 en modulacin de anchura de pulsos para el gobierno de un inotor, y al mdulo CCPI en comparacin para controlar el desplaraiiiici-ito de dicho niotor. El TMR 1 actuar en modo contador de eventos externos, donde lo\ impulso\ serrn geiierado\ por el encoder 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 mxima.

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 velocidad 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 .".

Esquema elctrico
Para la realizacin de este ejercicio se deben hacer las conexiones mostradas en la Figura 6.12 y que se enuncian a continuacin:

de activacindel 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 incrementndola en uno de los sentidos de giro. Esto se har mediante PWM, aumentando la anchura del pulso en un bucle hasta llegar al mximo. En esa velocidad, el motor girar un nmero dado de pasos. Dichos pasos sern pulsos 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.

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN 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. Durante el programa, adems, se va a controlar el estado del perro guardin, introduciendo instrucciones de borrado para que resetee el PIC en el caso de que se produzca un fallo en el sistema.

120

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado
El programa para este segundo enunciado queda:

MDULOS DE CAPTURA, COMPARACINY MODULACINDE ANCHURA DE PULSOS

121

122

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MDULOS DE CAPTURA, COMPARACIN Y MODULACIN 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 lneas del PIC a los diferentes perifricos utilizados, tal y como se explica en el apartado del esquema elctrico. En la Figura 6.14 se muestran dichas conexiones, donde se puede apreciar la modulacin aplicada al motor en el poliscopio.

Figura 6.14. Fotografia del montaje propuesto.

124

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

La Microbtica es una tecnologa derivada de la Robtica Industrial que se est imponiendo en multitud de aplicaciones y que proliferar masivamente en la primera dcada del siglo XXI. El microbot es un dispositivo mvil que reacciona ante el entorno de acuerdo con un plan de acciones 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 computador en miniatura programado en funcin de la finalidad a la que se destina. Existen multitud de tareas sencillas y rutinarias que nos ocupan una gran parte del da como cocinar, limpiar, controlar parmetros como la temperatura del agua y la calefaccin, lavar, conducir, vigilar, transportar, y muchos ms. La gran funcin de los microbots es resolver estas pequeas tareas con rapidez y precisin: explorar, medir y tomar el valor de magnitudes, cuidar jardines, recolectar frutos, vigilar zonas de seguridad, acompaar a los visitantes, transportar todo tipo de objetos, guiar a invidentes, ayudar a minusvlido~,trabajar en entornos peligrosos como los radioactivos o submarinos, y hasta ser excelentes compaeros. 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.

MDULOS DE CAPTURA, COMPARACINY MODULACINDE ANCHURA DE PULSOS

125

Un microbot consta de 4 partes principales:

El cerebro del microbot es un microcontrolador programado. Recibe informacin de los sensores, la procesa y de acuerdo con su aplicacin ordena las acciones precisas a los rganos matrices. Entre los microcontroladores ms usados en Espaa destacan los PIC y los Motorola. El armazn debe soportar rgidamente a todos los componentes del microbot. La estructura puede ser mecnica, plstica o hecha a medida. Los motores ms usados en Microbtica son los de corriente continua y los PAP. Son muy populares los servomotores de Futaba, que incluyen un grupo reductor y una gran estabilidad en la velocidad de giro. Adems, se caracterizan por tener una baja inercia en los instantes de arranque y parada. (Figura 6.16.) En cuanto a sensores y actuadores que maneja un microbot, el abanico de modelos es muy amplio. Los ms utilizados en esta tecnologa son los sensores de rayos infrarrojos, los mecnicos de posicin y contacto (bumpers), los de proximidad de tipo magntico y por efecto hall, los de luminosidad, distancia, luz, temperatura, etc.

EL PIC-BOT 2
Utilizando la tarjeta MSx84, descrita en un tema anterior, se ha desarrollado el microbot de bajo precio PICBOT-2. (Figura 6.17.)

Figura 6.16. Fotografa de un servomotor de corriente continua modelo S303 de Futaba.

126

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 6.17. Fotografa del microbot PICBOT-2 controlado por un PIC16F84.

El armazn del PICBOT-2 est hecho a medida a base de placas de metacrilato trasparente, que unidas mediante tornillera especial conforman una slida estructura donde se sitan 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 aplicacin son los dos servomotores Futaba a los que se les ha eliminado los topes extremos en el giro; adems, tambin 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 distincin de tonos y colores, y dos bumpers). Los PICBOT ya se han usado en el desarrollo de proyectos tales como:

MDULOS 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.

Slo la imaginacin de los ingenieros que proyectan y programan estas bestias inteligentes constituye el lmite de sus posibilidades. Prueba de su importancia y su proyeccin de futuro en las facultades de Ingeniera Informtica y Electrnica de todo el mundo es la organizacin de Certmenes anuales en los que participan los ingenios ms inverosmiles. (Figura 6.18.)

Los microcontroladores PIC 16F87x poseen un conversor A/D de 1 O bits de resolucin 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 resolucin que tiene cada bit procedente de la conversin tiene un valor que es funcin de la tensin de referencia Vref, de acuerdo con la frmula siguiente:
Resolucin = (Vre f+

- Vref-) / 1.024 = Vref / 1.024

As, por ejemplo, si la Vref+ = 5 VDC y la Vref- es tierra, la resolucin es de 4,8 mV/bit. Por tanto, a la entrada analgica 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 tensin de referencia determina los limites mximo y mnimo de la tensin analgica que se puede convertir. El voltaje diferencial mnimo es de 2 V. A travs del canal de entrada seleccionado, se aplica la seal analgica a un condensador de captura y mantenimiento (sumple nrzd hold) y luego se introduce al conversor, el cual proporciona un resultado digital de 10 bits de longitud usando la tcnica 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 estn soportados por las 5 lneas multifuncin de la Puerta A. En la configuracin de dichas lneas habr que expresar la funcin que realizan. La tensin de referencia puede implementarse con la tensin interna de alimentacin VDD. o bien, con una externa que se introduce por la patita RA3/AN3/VKkF+, en cuyo caso la polaridad negativa se aplica por la patita RA2/AN2/VREF-.

7.2. REGISTROS DE TRABAJO


El funcionamiento del conversor A/D requiere la manipulacin de cuatro registros:

130
1." 2.' 3." 4."

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

ADRESH: parte alta del resultado de la conversin. ADRESL: parte baja del resultado de la conversin. ADCONO: registro de Control O . ADCON 1: registro de Control 1.

En la pareja de registros ADRESH:ADRESL se deposita el resultado de la conversin, que al estar compuesta por 10 bits, slo son significativos 10 de los bits de dicha pareja. El registro ADCONO controla la operacin del C A/D, mientras que el ADCONI sirve para configurar las patitas de la Puerta A como entradas analgicas o E/S digitales. (Figura 7.1.)
REGISTRO ADCONO

7 REGISTRO ADCONl

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

Los bits ADCON0<7:6> sirven para seleccionar la frecuencia de reloj que se emplea en la conversin, con la siguiente asignacin:
A D C S l :O
00
FosJ 2

FRECUENCIA

O1

Focd8 FosJ32 FKC (procede del oscilador RC interno)

IO
11

Se designa como TAD el tiempo que dura la conversin de cada bit y en el caso de trabajar con valores El valor de TAD se selecciona por software digitales de 10 bits, se requiere un tiempo mnimo de 12.TAD. mediante estos bits (ADCS1 :ADCSO) y en los PIC16F87x nunca debe ser menor de 1,6 microsegundos.
A D C S l :O
o0
O1

TAD
2 *Tctsc
8 *Tose

1O

32*Tosc
Oscilador RC interno en el C A/D

11

EL CONVERSOR A/D

131

SELECCI~N T~~
TAD
2* T m 8*To,c 32*Tuv RC

FRECUENCIA DE TRABAJO
20 MHz
1 00 qs 400 q s 1,6 ps 2-6 ps

ADCSI :ADCSO
00
O1

5 MHz
400 qs 1,6 qh 6,4 ps 2-6 ps

1,25 MHz
1,6 ps 6,4 ps 2,6 p5 2-6 ps

333,33 kHz
6 P5 24 ps 96 ps 2-6 ps

10 11

Figura 7.2.

Tuhlu quo pl.cscntu los i~aloru.\quc tonzu TAL>, ticn~po de c-oiii~esin pol- hit, s e g ~ l iIu p/wgrwt~irrcicrz 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\olAID c k lo,\ PlClhF87.~ el \ ~ r l o nlrlin~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\,, segn los bits ADCS 1 :ADCSO y la frecuencia de trabajo del microcontrolador. As, por ejemplo, si dichos bits toman el valor 00, TAL) = 2*TOSC y si el PIC funciona a 20 MHz resulta que TAL) = 100 ns, tiempo no = 400 ns, valor que tampoco es vlido. Si la frecuencia es vlido. Si la frecuencia es de 5 MHz, TAD de 1,25 MHz, TAD = 1,6 microsegundos, valor justamente vlido. Finalmente, para una frecuencia de 333,33 KHz, TA1, = 6 microsegundos. Los bits CHS2-0 seleccionan el canal por el que se introduce la seal analgica a convertir, de acuerdo con el siguiente cdigo:
CANAL
Canal O (RAOIANO) Canal 1 ( R A l / A N l ) 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

CH2-0
O00 001 01 O O11 1 00 1 01 11 O 111

El bit GO/DONE# es el bit de estado de la conversin. Ponindolo a 1 se inicia la conversin y mientras est a 1 est realizndose dicha operacin. Cuando GO/DONE# pasa a 0 confirma el final de la conversin y la puesta del resultado en la pareja de registros ADRESH:L. El bit ADON sirve para activar el C A/D ponindolo a 1 y para inhibir su funcionamiento ponindolo a 0.

7.3.

ESTRUCTURA INTERNA Y CONFIGURACIN DEL C A/D

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 tensin de referencia.

132

MICROCONTROLADORES PIC. DISEO PRCTICO 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 conversin. Si vale 1, el resultado est justificado en el registro ADRESH, que tiene sus 6 bits de ms peso a O; mientras que si vale O la justificacin 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 concatenacin de ADRESH:ADRESL unas veces tiene a O los 6 bits de ms peso y otras los 6 bits de menos peso (alineacin a la derecha o a la izquierda).

EL CONVERSOR A/D

133

ADFM = 1

ADFM = O

ADRESH

ADRESL

ADRESH

ADRESL

JUSTIFICACI~NA LA DERECHA

JUSTIFICACI~N A LA IZQUIERDA

Figura 7.4. Alineamiento del resultado digital de 10 bits de la conversin a la izquierda y a la derecha.

En la Figura 7.4 se muestran las dos formas posibles del alineamiento del resultado sobre la pareja de registros ADRESH:ADRESL. Los restantes cuatro bits (PCFG3-O) de ADCONl se usan para configurar las patitas de los canales de entrada al conversor como analgicas 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 actan como entradas analgicas o como EIS digitales, segn el valor de los 4 bits de ADCONl <PCFG3-O>.

EL CONVERSOR A/D

135

SELECCIONADO

Figura 7.6. Organigrama de la operacin del conversor AID.

136

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

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


En la Figura 7.7 se presenta una tabla que recoge todos los registros que participan en la programacin del C A/D.

Figura 7.7. Tabla que ofrece la distribucin de los bits de los registros que intervienen en la programacin del C AID.

EL CONVERSOR A/D

137

PROGRAMAR PIC ES FCIL

ADQUISICIN DE VALORES CON LOS CONVERSORES A/D


De los recursos contenidos en el PIC16F87x, quiz el conversor A/D sea del que ms aplicaciones estamos acostumbrados a ver en nuestra vida diaria. Sensores de temperatura, luz, humedad, humo ..., son valores que nos interesa monitorizar pero que necesitan ser traducidos para ser entendidos por el sistema de control, labor que realizan los conversores A/D. La tarea de conversin 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 prefijado se active un rel que emula la puesta en marcha de la calefaccin y cuando sube por encima de un valor mximo prefijado active un motor a modo de ventilador. Adems, por una pantalla LCD se ir visualizando dicha temperatura.

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

Organigrama
Como se muestra en el organigrama de la Figura 7.9, tras configurar las lneas adecuadamente se activar el conversor, y se captar un nuevo valor cada segundo, aproximadamente. Se sabr cundo se ha producido el fin de la conversin mirando, por ejemplo, el valor del sealizador ADIF, que se pondr a '1 ' cuando este hecho ocurra. En el caso de hacer el tratamiento mediante interrupciones, este bucle sera vaco y no se hara nada ms en el programa principal; el resto formara parte de la rutina de tratamiento de interrupcin.

138

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Vss

Vdd

Vo RS R/W#E
.

D O D I D2 D3 D4 D5 D6 D7
.. . -

9 10 11 12

13 14

CRISTAL 4 Mhz

V , + S E N S O R MICRO'PIC 1 1 0

lI

l II
REL MOTOR 1 0 MICRO'PIC 1

Figura 7.8. Esquema elctrico del ejercicio propuesto.

EL CONVERSOR A/D

139

9
ACTIVAR CONVERSOR ESPERAR 1 SG s ViSUALlZAR RESULTADO EN LCD

I
APAGAR VENTILADOR

Figura 7.9. Organigrama del ejercicio propuesto.

El encendido y apagado de los sistemas de ventilacin y calefaccin depender de los valores mximo y mnimo fijados como constantes en el programa principal. Una ampliacin interesante sera dejar que estos valores los introdujera un usuario externo mediante, por ejemplo, un teclado y que, adems de lo ya controlado, se mostrara la temperatura existente mediante unos displays de 7 segmentos o incluso en una pantalla LCD.

140

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Programa comentado

El programa de este ejercicio es casi una traduccin inmediata del organigrama.

EL CONVERSOR A/D

141

142

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL CONVERSOR A/D

143

144

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Prueba del programa


En esta ocasin, tambin se van a utilizar las tarjetas Micro'PIC 110 y Micio'PIC Trainer. Esta ltima va a tener la misin de alojar el microcontrolador en el zcalo de 28 patitas y de mostrar la temperatura en el LCD. La configuracin de lneas que hay que tener en cuenta es:

EL CONVERSOR A/D

145

VISUALIZACIN DE VALORES POR PANTALLAS LCD


Las pantallas alfanumricas de cristal lquido, denominadas abreviadamente LCD, constituyen uno de los visualizadores de mensajes ms econmicos, prcticos y eficaces. Las controladoras de LCD son tarjetas diseadas para gobernar la presentacin de mensajes, con la colaboracin 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 hasta 80 caracteres en cualquiera de las diferentes configuraciones de lneas y caracteres existentes en el mercado. Tambin puede controlar LCDs que dispongan de luz de fondo (backlight). En la Figura 7.10 se ofrece una fotografa de la LCD-CON fabricada por Micr-osystems Engineel-ing.

Figura 7.10. Fotografa de la tarjeta controladora de LCD, basada en un PIC16C73.

146

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Para preparar los mensajes a presentar en la LCD a travs de la controladora, existe un software que permite preparar y realizar todas las presentaciones desde un PC y que se escapan de nuestra exposicin.

Principio de funcionamiento El control interno de la pantalla LCD es trasparente para el usuario. La controladora LCD-CON, que acta como Esclava, se conecta mediante dos lneas con cualquier sistema maestro capaz de comunicarse en serie va RS232, como puede ser un PC, un terminal, un microcontrolador,etc. (Figura 7.11.) El maestro comienza enviando una serie de instrucciones/comandos que son interpretados por la LCD-CON, la cual acta directamente sobre la pantalla LCD, ejecutando los efectos de visualizacin que recibe. Tras la ejecucin de una instruccin, la LCD-CON enva al maestro un cdigo de reconocimiento que debe ser interpretado por ste para la transmisin de una nueva instruccin. Existen dos versiones de controladoras LCD-CON. La LCD-CON1 se gobierna con conexin 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 rpido y fcil de distintas funciones de visualizacin en la pantalla LCD. El modelo LCD-CON2, dispone, adems de lo propio del LCD-CON1, de una memoria EEPROM que va almacenando todas las instrucciones segn se van recibiendo (modo programacin). As, puede almacenar un programa que puede ejecutar autnomamente, sin estar conectado al maestro. Por este motivo, este producto est indicado para sistemas autnomos de presentacin de mensajes.

MASTER

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

EL CONVERSOR A/D

147

Caractersticas generales
A continuacin, se muestra el aspecto del software utilizado con la controladora de LCD y se citan las caractersticas ms relevantes.

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

148

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Descripcin tcnica
Vamos a mostrar la serigrafa de la placa controladora LCD-CON con la distribucin de los distintos componentes, resaltndose los elementos ms importantes.

Conector de alimentacin
Es el conector a travs del cual se aplica la tensin de alimentacin a la controladora LCD-CON. Dicha tensin puede ser alterna o continua y de un valor de 12 V. La propia controladora dispone del circuito de rectificacin, filtrado y estabilizacin. Es posible, anulando el circuito de estabilizacin, alimentar el sistema aplicando una tensin de +5 Vcc entre la patilla central (-) y la derecha (+) de dicho circuito.

Potencimetro de contraste
Mediante este potencimetro, se aplica a la pantalla LCD una tensin variable de entre O y +5 Vcc. Con dicha tensin se consigue ajustar el contraste de los caracteres en la pantalla, segn las necesidades del usuario.

Microcontrolador PIC 16C73


Es el zcalo que aloja el microcontrolador PICl6Cxx grabado con el software diseado 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 va serie RS232 con el maestro, recibiendo las distintas instrucciones. Esas instrucciones son posteriormente interpretadas para actuar directamente sobre la pantalla LCD que se est gobernando, produciendo sobre la misma distintos efectos de visualizacin. De esta manera, el usuario no tiene que ocuparse del funcionamiento interno del LCD ni de cmo se le programa. Basta simplemente conocer las distintas instrucciones de control diseadas al efecto para poder sacar el mximo provecho a las posibilidades de las pantallas LCD.

LCD Interface 1
Este conector de simple hilera (SIL) permite la conexin directa con pantallas LCD cuyo conector sea del mismo tipo que ste. Son 16 las seales entre las que se encuentran 5 lneas de diversas alimentaciones, 3 lneas de control del LCD y 8 lneas de datos. La distribucin de estas seales es comn 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 estn disponibles, o se encuentran sin conexin interna.

EL CONVERSOR A/D

149

Las controladoras LCD-CON de Microsystems Engineering disponen de un reloj/calendario en tiempo real alimentado por batera 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 tambin de 250 bytes de memoria RAM esttica que, al alimentarse mediante batera, resulta no voltil. La LCD-CON la utiliza para guardar una serie de parmetros 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 versin LCD-CON2 de la controladora tiene capacidad para almacenar las distintas instrucciones que se van recibiendo de manera que puedan, posteriormente, ser ejecutadas de forma autnoma e independiente del Maestro (off Line). Un conjunto de instrucciones forma un programa. Dicho programa se almacena en los dispositivos 24C65 (U2, U3 y U4). Cada uno de stos tiene capacidad para guardar 8 Kbytes de inforrnacin, 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 voltil 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 voltil, aunque modificable en cualquier momento.

Conector RS232
Permite la conexin de la controladora con el maestro mediante una comunicacin serie RS232 estndar. A travs de l, el maestro enva las instrucciones que la controladora, tras interpretarlas, las almacena en memoria y10 ejecuta. De esta forma, la conexin entre una pantalla LCD y el maestro que la gobierna queda reducida a la mnima expresin. Tan slo se emplean tres conductores. El pin 3 de este conector J5 se corresponde con la seal de recepcin de la controladora. Por ella se reciben las instrucciones transmitidas por el maestro. El pin 2 de J5 corresponde a la lnea de transmisin de la controladora. Cada vez que sta ejecuta una instruccin, se transmite un carcter de reconocimiento que, cuando sea recibido por el maestro, permitir a ste actuar en consecuencia. Finalmente, el pin 5 de J5 es la seal de tierra. sta debe ser comn con la seal de tierra del maestro. Como se ha comentado con anterioridad, la figura del maestro que gobierna la controladora puede estar representada por cualquier sistema capaz de realizar una comunicacin RS232 estndar. Esto incluye terminales, microcomputadores, PCs, microordenadores, microcontroladores o cualquier otro sistema informtica en general, con aplicaciones en las que sea necesario una representacin visual y donde la pantalla LCD y su controladora deba actuar como sub-sistema de dicho maestro.

150

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

La batera
Se trata de una batera recargable de NiCd que permite mantener constantemente alimentado al reloj/calendario de la controladora, as como ciertos parmetros constantes del sistema. El circuito de carga lo forman un diodo y una resistencia. Cuando la controladora est conectada a una tensin externa, la batera se va cargando a travs de dicho circuito de carga. Cuando se desconecta la tensin de alimentacin externa, es la batera la que aporta la tensin 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 usuario reiniciar el sistema si en alguna ocasin se bloquea o cada vez que, mediante los switches de configuracin, se cambie el modo de trabajo de la controladora.

Configuracin
Se trata de un conjunto de cuatro micro-switches que permiten, por un lado, establecer los baudios de la comunicacin serie entre la controladora y el maestro (SWI-3 y SW1-4) y, por otro, los distintos modos de trabajo existentes (SW1-1 y SW1-2). Siempre que se cambia de modo de trabajo, es necesario reinicializar todo el sistema para que se adopte el nuevo modo recin seleccionado. Para ello, basta con pulsar el pulsador de Reset SW2. Se cita a continuacin una breve descripcin de cada uno de los modos de trabajo posibles:

EL CONVERSOR A/D

151

Ext. input
La controladora de Microsystems Engineering en su versin LCD-CON2 permite la gestin de hasta ocho seales de entrada digitales que se aplican mediante el conector Ext.Input (54). Es posible, por tanto, la interaccin entre dichas seales de entrada y las diferentes presentaciones sobre la pantalla LCD, pudindose establecer condiciones de visualizacin en base al estado 1gico de esas seales. Esto es especialmente til cuando las instrucciones a ejecutar por la controladora tienen una estructura de programa almacenado en la EEPROM (modo ejecucin). Existen instrucciones del tipo Salto Condicional, que permiten desviar el flujo de la ejecucin de un programa en base al estado lgico de esas ocho entradas. Con ellas se pueden establecer hasta 255 condiciones de salto segn las combinaciones binarias presentes en las mismas. Las seales se muestrean slo en el momento de la ejecucin de la instruccin de salto condicional correspondiente, por lo que deben mantenerse activas hasta llegar a la ejecucin de dicha instruccin. Es por ello que existe una novena seal de entrada llamada STB. Cuando se activa (por pulso bajo) a modo de <&robe, la controladora cancela la ejecucin de toda instruccin que tuviera en ese momento y reinicia la ejecucin desde la primera instruccin del programa. Es tarea del usuario colocar, al principio de su programa, las instrucciones de salto condicional, para que sean reconocidas y se acte en consecuencia, justo despus de llegar la seal STB. Realmente, la seal STB provoca en la controladora de LCDs una reaccin similar a la que se produce cuando se pulsa el pulsador RESET (SW2), pero sin mediacin del usuario.

LCD Interface 2
Este conector de doble hilera (DIL) permite la conexin directa con pantallas LCD cuyo conector sea del mismo tipo que ste. Sus conexiones son similares a J4 y ambos estn en paralelo. Son 16 las seales entre las que se encuentran 5 lneas de diversas alimentaciones, 3 lneas de control de la LCD y 8 lneas de datos. La distribucin de estas seales es comn 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 estn disponibles, o se encuentran sin conexin interna.

4 ,

<

.
7
S

<

da

'

;"

M~DULO DE COMU~~;JICACI~N' , SERIE SNCRONA: MSSP


'
2

5.

r-

*....
I

<

La comunicacin serie es una forma muy apreciada de transferir datos digitales entre sistemas y circuitos integrados, dada la reducida cantidad de lneas que precisa. En el PIC16F84, cuando se quera comunicarle en serie con otro dispositivo, haba que destinar varias de sus patitas generales de E/S a soportar las lneas de datos y de reloj. Tambin haba que desarrollar un programa especfico para soportar el protocolo de comunicacin. En los PIC16F87x, Microchip ha implantado en el silicio de sus chips el mdulo MSSP (Master Synchronous Serial Port), que proporciona un excelente interfaz de comunicacin de los microcontroladores con otros microcontroladores y diversos perifricos, 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 directamente la comunicacin serie. Adems, el mdulo MSSP admite dos de las alternativas ms usadas en la comunicacin serie sncrona:
l ." SPI (Serial Peripheral Interface). 2." I2C (Inter-lntegrated Circuit).

La comunicacin serie en modo SPI la utilizan principalmente las memorias (RAM y EEPROM) y utiliza tres lneas para llevarla a cabo. En el modo 12C slo se emplean dos lneas y, recientemente, ha conseguido una importante implantacin en la comunicacin de circuitos integrados, existiendo en el mercado todo tipo de perifricos capaces de trabajar con este protocolo (memorias, controladores, relojes, conversores, etc.).

154

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El funcionamiento del mdulo MSSP es muy sencillo. En transmisin, el byte que se quiere transmitir se carga en el registro SSPBUF a travs del bus de datos interno y automticamente se traspasa al registro SSPSR, que va desplazando bit a bit el dato, sacndolo ordenadamente al exterior al ritmo de los impulsos de reloj. En recepcin, 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 informacin se traspasa al SSPBUF, donde queda lista para su lectura. Este doble almacenamiento del dato recibido permite iniciar la recepcin de un nuevo dato antes de que se haya ledo el ltimo. Cuando se han recibido 8 bits durante la recepcin en SSPSR, se traspasa dicha informacin a SSPBUF y entonces el bit sealizador BF (Buffer Full) se pone a 1, al igual que el flag de interrupcin SSPIF. Cualquier escritura en el SSPBUF se ignora durante una transferencia de informacin y se sealiza 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 bsico sobre la estructura interna del mdulo MSSP.

SALIDA DE B I T SD E DATOS MSB

ENTRADA DE B I T S DE DATOS

Figura 8.1.

Estructura bsica del mdulo MSSP con los dos registros de trabajo (SSPBUF y SSPSR).

MDULO DE COMUNICACINSERIE S ~ C R O N AMSSP :

155

8.2. MODO SPI


Permite la transferencia de datos de 8 bits en serie, que pueden ser transmitidos y recibidos de forma sncrona y simultnea. Para el establecimiento de la comunicacin se utilizan tres lneas:

Puede ser necesaria utilizar una cuarta lnea de control ms cuando el PIC que se utiliza trabaja en modo esclavo. En este caso, la patita SS# (seleccin de esclavo) se debe activar a tierra. En la Figura 8.2 se ofrece un esquema de un sistema intercomunicado en modo SPI en el que un PIC acta como maestro y otros dos como esclavos. Las 4 lneas que utilizan se corresponden con las patitas multifuncin RC3/SDO, RC4/SDI, RCS/SCK y RAS/SS#. La conexin 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 lnea SDO del maestro se corresponde con las SDI de los esclavos y la lnea SCK por la que circulan los impulsos de reloj siempre parte del maestro, que es el encargado de generar y controlar la sincronizacin. Si, por ejemplo, actuase como esclavo un chip de memoria RAM de 256x8 de tamao, la comunicacin SPI la iniciara el maestro enviando por la lnea SDO un byte con la direccin de la memoria a acceder, seguido de otro byte que especificara la operacin (lectura/escritura) y un tercero que contendra el dato a escribir en caso de que se tratase de una operacin de escritura. En el caso de que se tratase de una lectura, el maestro, despus de enviar los 2 bytes iniciales, quedara a la espera del byte que sacara el esclavo por su lnea SDO y que se introducira al Maestro por su lnea SDI. Si fuese una memoria con ms posiciones, la direccin se tendra que especificar con ms de un byte. Cuando el PIC trabaja como maestro hay que programar la lnea RC3/SDO como salida, la lnea RC4/SDI como entrada y la lnea RCS/SCK tambin como salida. Si actuase como esclavo, la lnea RCSISCK debera configurarse como entrada y la RAS/SS# debera conectarse a tierra.

SDO SDI SCK

Figura 8.2. Comunicacin SPI entre un PIC maestro y otros dos esclavos

156

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En la Figura 8.3 se muestra la estructura del mdulo MSSP cuando funciona en modo SPI.

DESPLAZAMIENTO

- - - - - - - - o

'

1 , -

DiF E Z

_1

.
SALIDA TMR2 / 2

DATO EN S S P S R A WRX D E DATO B I TD E DIRECCIN

Figura 8.3. Estructura interna del mdulo MSSP cuando trabaja en modo SPI.

MDULO DE COMUNICACINSERIE SNCRONA: MSSP

157

Al comenzar el funcionamiento en el modo SPI, es necesario establecer las condiciones de trabajo 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 distribucin y nomenclatura de los bits del registro SSPSTAT, que ocupa la direccin 94h y es uno de los que seleccionan las caractersticas mencionadas. Se describe la misin de tres de los bits del registro SSPSTAT que participan en la configuracin del modo SPI. Tambin estos bits participan en la configuracin del modo 12C junto a los restantes, que se estudiarn al presentar dicho protocolo.

En la Figura 8.5 se presenta la distribucin de los bits del registro SSPCON, que est ubicado en la direccin 14h y sirve para programar e1 mdulo MSSP en los dos modos que puede trabajar.

REGISTRO SSPSTAT

Figura 8.4.

Estructura interna del registro SSPSTATpara la configuracin del modo SPI e 12C

158

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


REGISTRO SSPCON

Figura 8.5. Estructura interna del registro SSPCON

MDULO DE COMUNICACINSERIE SNCRONA:MSSP

159

El registro SSPSR no es direccionable directamente y en los programas hay que acceder a l a travs del SSPBUF, tal como se expone en el siguiente programa de transferencia de informacin.

8.4.

MDULO MSSP TRABAJANDO EN MODO 12C

El protocolo de comunicacin serie I2C fue desarrollado por Philips para cubrir sus propias necesidades en la implementacin de diversos productos electrnicos que requeran una elevada interconexin de circuitos integrados. El protocolo12C (Inter-Integrated Circuit) utiliza nicamente dos lneas para la transferencia de informacin entre los elementos que se acoplan al bus. Una de dichas lneas se dedica a soportar los datos, es bidireccional y se llama SDA; la otra lleva los impulsos de reloj para la sincronizacin, es unidireccional y recibe el nombre de SCL. Los impulsos de reloj siempre los genera el maestro y tienen la funcin de sincronizar las transferencias con todos los esclavos colgados a las dos lneas. (Figura 8.6.)

SDA

S C L

Figura 8.6. El maestro se conecta con todos los esclavos en el bus 12C con slo dos lneas. Por SDA circulan los datos en serie y por SCL el maestro enva los impulsos de reloj que genera.

('~'8 vm%~ -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~ie1 e ! : , ! u ! anb la sa oAjsawzu 13 -(op -epun:,as o a~iels) onwpsa o ( ~ e d p ~ ! o~~aiseur) d oAjsavzu ua as~e:,g!s~~:, uapand so~g!sodslp so? ..nqp:,sa e o laal e e e as ~ o .r~l~ursueg apand mva odg ap R!.rouraur eun anb seguarur aqr3a.1 anb ap uoI:,unj ua solep nq~3a.1 019s 'oldura@ lod 'a31ap ~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 apand l ~ u?!:,:,a~!p e:,!up eun lod e:,g!luapT as o ~ q s o d s r p epe3 'snq le sopel:,auo:, sog!sods!p saluaJajFp sol aliua UO!:,~UUOJU! e1 U B ~ O ~ S U E I'(rolal) J 13s (soiep) vas 'seaujl s o a

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 ~ ?nb p 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 l p a anb olo:,olold un aluelpaw js aaua as.~e:,!unuro:, uaqap apas snq le sopel:,auo:, s o ~ y ~ r s o d soluys!p s~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~ I G Z U E : , ~ ~ ap -and ou snq ap odg alsg -a!las snq ap e~nl:,ruisaeun uo:, .reluauraldur! uapand as so~al!.~:, solsg

'321 snq lap sauo!:,e:,gpadsa

.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

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

?e
MICROCONTROLADOR B

161

Figura 8.7. Conexiones al bus.

Supongamos que en un momento dado el microcontrolador A acta como maestro:

Esta configuracin puede no ser permanente. En otro momento, puede ser el B quien acte de maestro. Todo depende de la direccin del dato a transferir en un momento dado. Dada la posibilidad de que existieran varios maestros, podra ocurrir que ms de uno inicie la transferencia en un mismo instante de tiempo. Para evitar el caos que pueda producir esta situacin, se ha desarrollado un sistema de arbitraje del bus. El procedimiento consiste en una conexin tipo AND entre todos los dispositivos conectados al bus. Cuando uno o ms maestros colocan informacin en la lnea SDA, verifican si el bit que ellos sacan coincide con el nivel lgico de dicha lnea. Si un maestro saca un 1 pero la lnea SDA est a O coincidiendo con un pulso de reloj, pierde la posesin del bus cancelando desde ese momento la transmisin. El nivel lgico O (bit dominante) presente en la lnea SDA proceder de un maestro distinto.

162

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Las seales de reloj durante el arbitraje del bus son una combinacin entre las seales de clock de los distintos maestros conectadas entre s a la lnea SCL mediante una conexin tipo AND.

8.5.2. Terminologa del Bus 12C

8.6.

CARACTERISTICAS GENERALES

Tanto las lneas SDA como SCL son lneas bidireccionales que se conectan a +Vdd mediante resistencias de carga pull-up, tal y como se muestra en la Figura 8.8. Cuando el bus est libre, ambas lneas estn a nivel lgico 1. Los transistores de salida conectados a las lneas del bus 12C deben ser de colector abierto para que todos ellos se puedan conectar entre s formando una conexin tipo AND.

RESISTENCIAS DE PULL-UP DE DATOS S E R SDA (L~NEA SCL(L~NEA DE RELOJ)

SDA

SCL

Figura 8.8. Conexin de SDA y SCL al bus.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

163

Los bits de datos sobre el bus pueden transferirse a una velocidad de 100 Kbitsls. La capacidad mxima en el bus es de 400 pF y el nmero de dispositivos conectados no debe superarla.

8.6.1. Transferencia del bit


Debido a la variedad de tecnologas empleadas en los dispositivos diseados para conectarse al bus 12C (CMOS, NMOS, TTL, etc.,) los niveles lgicos O y 1 de los bits transferidos no tienen una tensin fija, sino que dependen de la tensin Vdd de alimentacin. Cada bit que se transfiere por la lnea SDA debe ir acompaado de un pulso de reloj por la lnea SCL.

Validez del bit


El bit de datos transferido por la lnea SDA debe mantenerse estable durante el perodo en que la seal de reloj est a nivel 1. La lnea de datos SDA slo puede cambiar de estado durante el perodo en que la seal 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 esclavo. (Figura 8.10.) Una transicin de 1 a O (flanco descendente) en la lnea SDA al tiempo que SCL est a nivel lgico <<1 ,determina la condicin de inicio. Una transicin de O a l (flanco ascendente) sobre la lnea SDA al tiempo que SCL permanece a nivel 1 determina la condicin de parada. Ambas condiciones son siempre generadas por el maestro que, en todo momento, inicia y finaliza toda transferencia. El bus se considera ocupado (BUSY) tras la condicin de inicio y, se considera libre, cierto tiempo despus de la condicin de parada.

I I I

I
I

I I I I

I
I

SDA

---m - - - m

SCL

L~NEA DE DATOS ESTABLE: DATO VALIDO

L~NEA DE DATOS ESTABLE: DATO VLIDO

Figura 8.9. Validacin del bit de datos

164

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


i""
I

I
I

I I

CONDICIN DE INICIO

CONDICIN 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 lnea SDA deben constar de 8 bits. Cada byte va seguido de un bit de reconocimiento, ACK, y comienza siempre por el bit de ms peso (MSB), tal y como se muestra en la Figura 8.11.

SALIDA DE DATOS DEL TRAE.JSMISOR

'
1

SALID^ DE DATOS
DEL PECEPTOR
I I I

I I I I
I

m
I I

PULSO D E CLOCK PARA EL BIT ACK

Figura 8.11.

Formato del Byte.

MDULO DE COMUNICACINSERIE SNCRONA: 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 interrupcin. En este caso, la lnea SCL se mantiene a O para forzar al transmisor a un estado de espera. Un mensaje cualquiera puede finalizar mediante la generacin de la condicin de parada durante 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 asociado a este bit n." 9 lo genera el maestro. El transmisor pone la lnea SDA a 1durante dicho pulso de reloj. El receptor, por su parte, pone a O la lnea SDA durante el pulso de reloj correspondiente al ACK y lo mantiene estable durante todo el perodo de dicho pulso. En la lnea 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 despus de recibir cada byte. Cuando un receptor esclavo no genera el bit ACK (NACK) al ser direccionado (por ejemplo cuando est realizando una funcin interna y no est dispuesto a recibir), debe mantener la lnea SDA a nivel 1 durante el bit ACK (NACK). Esta situacin es detectada por el maestro, que debe generar la condicin de parada y abortar as la transferencia. Igualmente, si un esclavo receptor reconoce ser direccionado pero no est dispuesto a recibir ms bytes, el maestro debe abortar la transferencia. Esta situacin se identifica porque el esclavo tampoco genera el ACK en el siguiente byte que recibe. En su lugar pone la lnea SDA a 1 (NACK) y el maestro genera la condicin 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 condicin de parada.

-I

SALIDA D E DATOS DEL TRA$dSMISOR

*
1

I
1 I

SALID4 D E DATOS DEL RECEPTOR

SCL (C~OCK) DESDE EL'MASTER

PULSO D E CLOCK PARA E L BIT ACK

Figura 8.12. El reconocimiento.

166

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

8.6.3. Arbitraje sin sincronizacin de reloj


Es la tcnica necesaria por la cual, en un sistema donde existen varios maestros, se evitan conflictos en el bus y prdidas de informacin.

Sincronizacin
Todos los Maestros generan una seal de reloj sobre la lnea SCL para transferir mensajes sobre el bus I2C. Los bits de informacin son vlidos cuando dicha seal de reloj est a nivel lgico 1 . La sincronizacin del reloj se realiza mediante una conexin 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 1nea SCL pasa a O. Todos los dispositivos comienzan a temporizar sus respectivos perodos bajos de reloj. Sin embargo, un flanco ascendente en CLKl no cambia el estado de SCL, ya que en ese instante CLK2 est a O>>. La lnea SCL se mantiene a O durante el perodo de aquel dispositivo cuyo nivel O sea ms largo. El resto de dispositivos entran en estado de espera. Cuando todos los dispositivos finalizan su perodo bajo, SCL pasa a el. De esta forma, todos inician el perodo alto al mismo tiempo. El primer dispositivo en finalizar este perodo alto pone SCL a O, y el proceso se repite.
INICIODEL PERIODO ALTO

TIEMPO D EE S P E R A

CLK 1

CLK

SCL

Figura 8.13. Sincronizacin del reloj.

MDULO DE COMUNICACINSERIE SNCRONA: MSSP

167

La seal de reloj presente en la lnea SCL queda sincronizada y...

w
W

. .. *elitsrn+yordw.ih.
r

t :

<

L . .

*'

hor aqued diqmsHitco cuyo pcerexfoatto @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 momento dado, coincide con el nivel lgico presente en la lnea de datos SDA. De no ser as, pierde el acceso al bus. Si un maestro saca un nivel lgico l al tiempo en que otro saca un O>>,en la lnea SDA prevalece el segundo (bit dominante), por lo que el primero debe dejar el bus libre al menos hasta que se detecte la condicin 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 lgico interno del maestro, que genera el DATO1 y el nivel actual presente en la lnea SDA, ste pierde el derecho a usar el bus y su nivel interno pasa a 1,liberando as la lnea SDA. La comparacin 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 byte en que lo perdi.

EL MAESTRO 1 PIERDE EL ARBITRAJE DATO 1 < > SDA


9 , I I I I I I I .

DATO 1

Figura 8.14. Arbitraje del bus.

168

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Si un maestro pierde el arbitraje en el momento en que est direccionando a un esclavo, es posible 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 condicin de inicio, el maestro enva la direccin del esclavo al que se quiere dirigir. Esta direccin es de 7 bits ms el bit R/W# que indica lectura (R/W# = 1) o escritura (R/W# = O) del esclavo. Toda transferencia de datos finaliza con la condicin de parada, tambin generada por el maestro. A pesar de todo, si un maestro an desea comunicar por el bus, puede generar otra condicin de inicio y direccionar a otro esclavo sin generar previamente la condicin de parada. En las Figuras 8.16, 8.17 y 8.18 se muestran posibles forrnatos de transferencia.

SDA

' I

'

+
R W I
ACK

+ * DATO ACK DATO

+ ACK

. - m

INICIO

DIRECCI~N

FIN

Figura 8.15. Formato de los datos transferidos.

ESCRITURA

DATOS TRANSFERIDOS (n BYTES ACK)

Figura 8.16. El maestro transmite al esclavo receptor. No cambia el byte de direccin.

LECTURA

1
DATOS TRANSFERIDOS (n BYFES ACK)

Figura 8.17. El maestro recibe desde el esclavo despus de enviarle a ste la direccin.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP


ACK DESDE ESCLAVO

169

ACK DESDE ESCLAVO

DIRECCIN DE ESCLAVO 1

DIRECCIN DE ESCLAVO

= LECTURA

O = ESCRITURA

DATOS TRANSFERIDOS (n BKES ACK)

= LECTURA DATOS TRANSFERIDOS

0 = ESCRITURA

("

Figura 8.18. El maestro cambia el byte de direccin 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 enva el maestro tras la condicin de inicio es un cdigo que determina y selecciona a un determinado esclavo. Existe una excepcin en el cdigo denominada llamada general. Cuando un maestro realiza una llamada general (cdigo 0000 000) todos los esclavos existentes deben responder con el bit ACK. Puede darse el caso de dispositivos que ignoren esta llamada. El siguiente byte tras la misma indicar la operacin a realizar.

8.7.1. Definicin del primer byte


Los 7 bits de ms peso del primer byte se emplean para direccionar a un determinado esclavo. El de menos peso, el octavo enviado, determina si se realizar una operacin de lectura o de escritura (R/W#)sobre el esclavo direccionado, tal y como se muestra en la Figura 8.19. Cuando el maestro enva una direccin 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 direccin hay una parte que son fijos y ya estn definidos internamente por el propio dispositivo esclavo, y otra parte que son programables. De esta forma, es posible conectar al mismo bus dispositivos idnticos cuya parte fija de direccin es la misma pero la programable es diferente. El nmero de dispositivos iguales que se pueden instalar a un mismo bus depende del nmero de bits programables disponibles. Por ejemplo, si un determinado modelo de dispositivo recibe una direccin de 7 bits, 4 de los cuales son fijos y los 3 restantes programables, se podrn conectar al bus un mximo de 8 dispositivos de ese mismo modelo.

170

MICROCONTROLADORES PIC. DISEO PRCTICO 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 direccin 1111 111 est reservada como extensin de direccin en el que el proceso de direccionamiento de un dispositivo continua en los siguientes bytes transferidos por el maestro. La direccin 1111 xxx est reservada tambin con propsitos de direccionamientos extendidos y la emplean ciertos dispositivos que tienen 10 bits de direccionado. La direccin 0000 xxx est reservada para un grupo especial de dispositivos:

8.8. ESPECIFICACIONES ELCTRICAS


El bus 12C permite la comunicacin entre dispositivos fabricados con diferentes tecnologas y diferentes tensiones de alimentacin. Para conexiones con niveles de entrada fijos y alimentacin de +5 V, se definen los siguientes valores:

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

171

Para dispositivos capaces de trabajar con un rango variado de tensiones de alimentacin (por ejemplo, CMOS), se definen los siguientes niveles:

En ambos casos, la mxima tensin de salida a O es:

La corriente mxima de entrada a O en las lneas 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 lneas es de 10 pF mximo. Los dispositivos con niveles fijos de entrada pueden alimentarse desde diferentes fuentes de alimentacin de +5 V, como se muestra en la Figura 8.20. deben alimentarLos dispositivos 12C cuyos niveles lgicos de entrada estn en relacin a VDD. se conjuntamente segn 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 alimentacin comn de +5 V, como se muestra en la Figura 8.22. La capacidad mxima del bus es de 400 pF, que incluye la capacidad entre cables y la de los dispositivos conectados.

SDA SCL

SDA SCL

Figura 8.20. Alimentacin de dispositivos con nivelesfijos de entrada.

172

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


VD, = 3 v

S D A SCL

S D A SCL

Figura 8.21.

Alimentacin de dispositivos con niveles de entrada dependientes de VDD.

S D A SCL

S D A S C L

Figura 8.22. Alimentacin de dispositivos con niveles de entrada fijos junto con dependientes de VDD.

8.8.1. Tiempos
La seal de reloj en el bus 12C tiene un perodo a O de como mnimo 4,7 ms y a 1 de como mnimo 4 ms. De esta forma, el maestro puede generar una frecuencia de hasta 100 KHz. La Figura 8.23 muestra el valor de cada tiempo.

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

173

TBUF THD STA


TLOW

Tiempo en que el bus debe estar I ibre antes de iniciar una nueva transmisibn Tiempo entre el Inicio y primer pulso en SCL DuraciOn del perodo bajo del reloj Duracin del perodo alto del reloj Tiempo antes de una nueva condicin de Inicio Tiempo de mantenimientodel dato Tiempo de puesta del dato Tiempo del flanco ascendente para las lneas SDA y SCL Tiempo del flanco descendente para las lneas SDA y SCL Tiempo para la condicin de parada

4,7 4 4,7 4 4,7

P S P S P S PS

THICH

TSU,STA
THD DAT TCU DAT TR TF Tsu STO

PS
PS
1
300

250

PS ns PS

4,7

Figura 8 . 2 3 . Valor y nomenclatura de los diferentes tiempos.

8.9. EL BUS 12C Y LOS PIC16F87X


En los PIC16F87x, el bus 12C est implementado en silicio tanto en el modo maestro (master) como en el esclavo (slave). Como en general es el modo maestro el ms usado, todos los ejercicios los hemos realizado de esta forma y las explicaciones tambin se refieren a dicho modo. Recurdese que en modo maestro es el dispositivo, en este caso el PIC16F87x, el que inicia y finaliza la transferencia y genera los impulsos de reloj. Tambin selecciona el esclavo al que se destina la informacin. (Figura 8.24.) Como ya se ha comentado al hablar del bus I2C, en general, cada transferencia comienza con la condicin de inicio (start) y termina con la condicin de parada (stop). Ambas condiciones las genera el maestro, y la primera consiste en un flanco descendente en SDA mientras SCL tiene nivel alto. La condicin de parada es un flanco ascendente mientras SCL tiene nivel alto. Los datos que se colocan sobre la lnea 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 condicin de Reconocimiento (ACK). Para este caso, el transmisor pone SDA = 1, mientras que el receptor pone SDA = O en dicho impulso de reloj, prevaleciendo sobre la lnea el nivel bajo. El primer byte que enva el maestro tras la condicin de inicio contiene la direccin del esclavo con el que se desea realizar la comunicacin. El cdigo O se usa para realizar una llamada general sobre todos los esclavos. La direccin en realidad consta de 7 bits, estando destinado el octavo a indicar la operacin a realizar (R/W#: Lectura/Escritura#). Tras este byte inicial de direccionamiento se manda otro byte que especifica las caractersticas de la operacin a realizar. 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 soportar el protocolo I2C. Previamente dichas patitas de la Puerta C (RC31SCL) y RC4JSDA) han de estar 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.

174

MICROCONTROLADORES PIC. DISEO PRCTICO 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 segn 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:

MDULO DE COMUNICACIN SERIE SNCRONA: MSSP

175

El registro de Estado SSPSTAT contiene la informacin que representa el estado de la transferencia de datos. Detecta las condiciones de inicio y parada, as como la recepcin del byte de la direccin. SSPBUF es el registro que acta como buffer y soporta el dato que se va a transmitir o que se ha recibido. El registro de desplazamiento SSPSR realiza la conversin serie/paralelo y viceversa junto 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 sealizador SSPIF. Si se recibe otro byte antes de haber ledo al SSPBUF, se activa el sealizador de desbordamiento SSPOV (SSPCON<6>). El registro SSPADD guarda la direccin del esclavo. Cuando se emplean direcciones de 10 bits, el usuario debe escribir el byte alto de la direccin con el siguiente cdigo donde A9:A8 son los dos bits de ms peso: 1-1-1-1-0-A9-A8-0. En la Figura 8.25 se muestra la distribucin de los bits del registro SSPSTAT, que ocupa la direccin 94h de los registros especficos 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 perodo, o vale O cuando se hace en la mitad del perodo. El bit CKE selecciona los niveles de las patitas SCL y SDA en el modo maestro o multi-maestro. El bit D/A# (Dato/Direccin#)indica si el dato recibido es de informacin (1) o es una direccin (0). La llegada del bit o condicin de Stop la detecta el bit P, que se pone a 1. El bit S detecta la condicin de Inicio o Start. R/W# indica si se trata de una Lectura/Escritura#. El bit UA cuando vale 1 indica que la direccin es de 10 bits y que hay que cargar el byte alto, segn la codificacin antes expresada, en el registro SSPADD. Si es O la direccin es de 7 bits. Finalmente, el bit BF acta como sealizador del buffer de datos. Si BF = 1 indica que tiene un dato y la transmisin est en progreso sin terminar. En la Figura 8.26 se muestra la estructura del registro de control SSPCON, que ocupa la direccin 14h del mapa de memoria.

REGISTRO SSPSTAT

Figura 8.25. Distribucin de los bits del registro de Estado SSPSTAT. Todos los bits son lebles, siendo slo escribibles los dos de ms peso. Tras un Reset todos se ponen a O.

REGISTRO SSPCON

Figura 8.26. Registro de Control SSPCON. Todos sus bits son lebles y escribibles y se ponen a O tras un Reset.

176

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

El bit WCOL es un detector de colisiones en escritura y cuando vale 1 significa que se ha intentado escribir en SSPBUF en condiciones no vlidas para el protocolo. El bit SSPON si vale 1 indica desbordamiento, o sea, que llega un byte a SSPBUF sin haberse ledo 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 lneas de E/S digitales. El bit CKP sirve para activar el reloj en el modo esclavo, no usndose en el modo maestro. Mediante los 4 bits de menos peso de SSPCON se selecciona la frecuencia de reloj. Se indican los cdigos ms interesantes para el modo maestro:

sm0~3~a
h

F R ~ U E N ~ ID AE ~ L Q ;,J
Reloj = FosJ4 Reloj = FosJl6 Reloj = Fo~d61 Reloj = Salida del TMR2/2 Reloj = (SSPADD + 1 )
Fod4

0000 O001 001O O011

1 O00

En la Figura 8.27 se muestra la distribucin de los bits del registro de control 2 SSPCON2. El bit GCEN slo 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 reconocimiento en el modo maestro en recepcin. Si ACKDT = O el maestro ha transmitido el bit de Reconocimiento, pero si vale 1 no lo ha hecho. Cuando se pone ACKEN = 1 se inicia la secuencia de generacin de la condicin de reconocimiento. Este bit se borra automticamente por hardware. Para habilitar el modo de recepcin del maestro hay que poner el bit RCEN = 1. Para generar la condicin de parada en las lneas SCL y SDA hay que poner PEN = 1. El bit RSEN cuando se pone a 1 inicia la repeticin de la condicin de inicio. Finalmente, para iniciar la condicin de inicio hay que poner SEN = 1.

REGISTRO S S P C O N 2

Figura 8.27.

Registro de control 2 SSPCON2. Todos sus bits son lebles y escribihles y quedan a O tras un Reset.

MDULO DE COMUNICACIN SERIE SNCRONA: 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 mdulo 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 usuario 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 direccin del esclavo (7 bits ms el bit R/W#). Por cada byte recibido por el maestro se transmite un bit de reconocimiento ACK. A continuacin, se describe la secuencia de pasos que hay que realizar en una transmisin del maestro:

178

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

En el modo maestro el valor usado en la generacin de la frecuencia se escribe en SSPADD, segn los 4 bits de menos peso. Despus, 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 decrementa 2 unidades por cada ciclo de instruccin.

8.11.1. Condicin de inicio (start)


Para generar la condicin 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. Cuando termina el contaje de BRG la lnea SDA pasa a nivel bajo. La condicin 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 llegar a O el contador el bit SEN pasa a O automticamente.

8.11.2. Condicin de repeticin de inicio (start)


Esta situacin 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 transmisin


La transmisin de un byte de datos debe ir precedida de la transmisin de la direccin 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 transmisin. Cada bit que sale por la lnea 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 condicin 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 generador de frecuencia hasta que no se cargue otro dato en SSPBUF.

MDULO DE COMUNICACINSERIE SNCRONA:MSSP

179

En transmisin BF = 1 cuando la CPU escribe en el SSPBUF y BF pasa a O cuando han salido los 8 bits. El sealizador WCOL vale 1 cuando el usuario escribe sobre el SSPBUF estando una transmisin 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 recepcin


Para poner en marcha el modo maestro en recepcin, hay que poner el bit RCEN = 1 estando en reposo el mdulo MSSP. El generador de frecuencia empieza a funcionar y SCL cambia de estado en cada perodo 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 mdulo queda en estado de reposo a la espera de un nuevo comando. Cuando el buffer es ledo por la CPU BF se pone a O automticamente. El usuario puede enviar un bit de reconocimiento al finalizar la recepcin, escribiendo ACKEN = 1 (SSPCON2 <4>). Cuando un dato o una direccin se carga en SSPBUF desde SSPSR, el bit BF = 1 y este bit pasa a O cuando la CPU lee SSPBUF. El sealizador de desbordamiento SSPOV es 1 cuando se recibe un byte en SSPSR y an no ha ledo la CPU el dato anterior. Si el usuario escribe en SSPBUF mientras hay una recepcin en progreso, el bit WCOL se pone a 1 y el contenido del buffer no cambia.

8.11.5. Secuencia de reconocimiento


Se produce automticamente 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 D E RECONOCIMIENTO EMPIEZA AQU~: ESCRIBE A SSPCON2 ACKEN = l . ACKDT = O

ACKEN BORRADO P O R HARDWARE T B R G T B R G

S D A

DO

SCL

i I

1
I

S S P l F

m m m

I 1

S P l F AL S E ACTNA S DE IA RECEPCI~N

DESACTNADO P O R SOFTWARE

t
S P l FA L FINAL D E S E ACTIVA S LA SECUENCIA D E RECONOCIMIENTO

DESACTNADO P O R SOFTWARE

Figura 8.29. Diagrama de tiempos de una secuencia de reconocimiento.

patita SCL queda a nivel bajo, mientras el generador de frecuencia cuenta un perodo (TBRG). Luego SCL pasa a nivel alto y al completarse otro perodo 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. Condicin de parada (stop)


Se genera la condicin o bit de stop al final de la transmisin/recepcin, poniendo el bit PEN = 1 (SSPCON2 <2>). En el flanco descendente del noveno impulso de reloj la lnea SCL queda a nivel bajo. Entonces si PEN = 1 la lnea SDA pasa a nivel bajo y el generador cuenta un perodo, tras el cual SCL pasa a nivel alto. Tras otro perodo TBRG, la lnea SDA pasa a nivel alto y P = 1. Tras otro perodo PEN, se pone a O automticamente. (Figura 8.30.) El impulso de reloj en SCL se produce cuando es muestreada dicha lnea cada ciclo Tosc*4, y est 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 perodo, pasando SCL a O al completarlo.

A L ESCRIBIR SSPCON2 SE ACTIVA P E N

1-

CUANDO S C L = 1 Y EL SEGUNDO S D A SE ACTIVA EL B I TP

1.

FLANCO DESCENDENTE D E L 9.O IMPULSO

1 - - 1

E LB I T PEN SE DESACTIVA P O R HARDWARE Y EL B I TS S P I F ES ACTIVADO

S D A

ACKK

I
T B R G

S C LP A S A A NIVEL ALTO T R A ST B R G

S D AP A S AAOA N T E SD E L FLANCO ASCENDENTE A R , A CONFIGURAR D E L RELOJ P LA CONDlClOND E PARADA

Figura 8.30. Diagrama de tiempos de la condicin de parada.

-3la '1!ql3al '~!lfursueqap opeururra) ey 31d lap owaluf alempley la opuyn3 laqes ap sowedn3oa.1d anb souraualolos x ~ g d 31d 9 ~ sol u03 'alemijos opol Iap uela seu -pru seyxp als? ua anb sEl)ua!l/y ' ~ g d 9 ~ 3 1 un d e l ~ oqansal d 0!3!3.1aP ows!w [a u03 u9!3e;redu103 ua '-3la O A E I ~ leuo!33al!a S~ 'o!3p1 ap u g ~ p u o 3 reflzup ap seuynuqns se1 ap peppqd -w!s el asralz ypod eurel8o~d Iap uoy3nlosa.1e1 u g .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 u g ('1 E-geln8g) -u?!srursuell ap omo3 uopda3a.1ap oluel 'sol -ep ap eaug e1 ylas anb ' v a s / ~A 3'ogsaew ~ lap alua!ualzold ap legas e1 elas anb ' 7 3 ~ / upe3!unu103 e1 eled seauy se31un SOP ez!lgn 321 o103010.1d la 'olnl~de:,alsa ua o l s ! ~ ey as owo3

xau.zwdj 3 1 d ~ 0 ~ lap 3.z ag7 ~ sopo!p lod ylellsour as A (slrq g ap s/g ap ouand) ~ ~ ~ g olzgfsods!p d 3 d lap salolelz sol uylaal as 'ose3 alsa ug -3210 9 . ueuo!3unj anb solzylysodsrp A 31d un allua uo!3e3!unwo3 e1 ezgeal as o m p allsanur anb oldurap 011~3uas un Jezqeal apualald a s

'salual -s!xa so3y.1?jpad ap pepylue3 uel8 el lod 321 opour ua osn ns ua ' a ~ u a u r e ~ a syur ~~u 'Aoouryqg ~ alsa ua ~ellua:,e sowelz sou o p e p d e alsa u g .sauo!~e3~~de ap ujju~s un ua uezqin as dsspq olnpoux la our -03 ~ ~ vlas o ln ue~ -uor3e3~unwo3 ap sosln3al so1 owrxyur [e ope!3uaod ey as ' x ~ g d 9 31d 1 sol ug

182

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

ln4148

R E S E T

i(

PIC16F873

L~NEA D E DATOS

DISPOSITIVO 12C MICRO'PIC TRAINER P L U S

Figura 8.31. Esquema elctrico del ejercicio propuesto.

PA ENTRADA PB WlDA RC3:RC4 ENTRADA

u
DIRECCONARESCLAVO PARA LECTURA

Figura 8.32. Organigrama del ejercicio propuesto.

MDULO DE COMUNICACIN SERIE SINCRONA: MSSP

183

Programa comentado
Como puede verse, el programa mostrado a continuacin recoge todas la rutinas necesarias para la transmisin y recepcin de datos por I2C. Aunque el ejemplo es sencillo, el modo de actuar en otros casos sera similar.

184

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MDULO DE COMUNICACIN SERIE SINCRONA: MSSP

185

BUCLE

clnvdt cal1 movwf goto

R-BYTE PORTE3 BUCLE

;Refresca perro guardin ;Lee dispositivo PCF8574 ; Visualiza dato sobre LEDs

END

Prueba del programa Se van a utilizar el Micro'PIC Trainer para mostrar los valores ledos en los LEDs (RBO-RB7), y el Micro'PIC Trainer Plus, que entre otros dispositivos12C incorpora el PCF8574, utilizado en este caso para la lectura de valores. Para una correcta configuracin de los perifricos utilizados:

1.O En el Micro'PIC Trainer Plus los jumpers J 1-J4 debern estar en la posicidn 2-3. 2." Durante la ejecucich, el jumper J7 del Micro'PIC 7rainer debe estar cerrado para habilitar los LEDs.

186

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

COMUNICACIN DE DATOS DIGITALES POR RADIO FRECUENCIA


La transferencia de informacin entre sistemas digitales usando la radio frecuencia es una de las ms interesantes aplicaciones que puede utilizarse en cantidad de situaciones. La comunicacin de dos sistemas sin conexin fsica alguna abre una extensa plataforma de mejora de productos. En este apartado, se describen en forma resumida las principales caractersticas de las tarjetas, que basadas en un PIC16F84 cada una, permiten la transferencia de informacin digital por R.F. MSETX y MSERX son los nombres que asigna el fabricante Microsystems Engineering a la tarjeta emisora y receptora, respectivamente. La comunicacin entre ambas tarjetas es trasparente para el usuario, que nicamente tiene que encargarse de fijar los parmetros de configuracin y los datos que desea enviar. En la fotografa de la Figura 8.33 se muestran las tarjetas MSETX y MSERX de transferencia de informacin digital por R.F.

Figura 8.33. Fotografa de las tarjetas emisora y receptora basadas en un PIC16F84.

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 tensin de 12 VAC, que luego internamente rectifica, filtra y estabiliza para obtener 5 VDC para el circuito del PIC16F84, y 13 VDC para el mdulo transmisor de R.F. El emisor se conecta al sistema digital desde el que se enva la informacin mediante comunicacin 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: mdulo 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 tambin puede enviar informacin sobre su configuracin interna. Por otro lado, el PIC se comunica en serie con el Mdulo Transmisor RT1-433, el cual enva la informacin bit a bit por R.F., segn se muestra en la Figura 8.35.

EMISOR MSETX

Figura 8.34. Conexin 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

+rt8
I

RTI -433

1Usuario 1
Control
I
I

:
8

Mdulo Transmisor

Figura 8.35. Comunicacin del PIC con el Sistema del Usuario y con el Mdulo Transmisor de R.F.

188

MICROCONTROLADORES PIC. DISEO PRCTICO 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 informacin a enviar en formato RS232 o mediante niveles lgicos TTL. Despus, el PIC configura la transmisin y se encarga de que el Mdulo Transmisor enve por R.F., la informacin deseada segn el protocolo utilizado. Los elementos ms relevantes que componen el emisor MSETX son:

Receptor de radio frecuencia


En la Figura 8.36 se ofrece un esquema de adaptacin del Mdulo 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 aplicacin del usuario est representada como un PC, tambin el receptor podra entregar los datos digitales recibidos por R.F., a un terminal de datos o a un sistema con microcontrolador o microprocesador.

Figura 8.36, Interconexin del Mdulo Receptor de R.F. y el PC.

u
MSERX

RECEPTOR MSERX
1 1 1 1 1 m 1 1 1 1 1 1 1 1 1 1 1 m 1 m h

PIC

4 -

Mdulo Receptor

1Usuario 1

Control

Figura 8.37. El PIC hace de intermediario entre el Sistema de Usuario y el Mdulo Receptor de R.F.

El receptor MSERX es un subsistema que forma parte de un sistema principal y al cual le proporcio la informacin 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 ms detallado de la constitucin del Receptor de R.F. El Sistema del Usuario comienza enviando al emisor MSERX datos para su configuracin, luego este I timo le devuelve el estado de su configuracin interna, as como los datos digitales que ha recibido por R. bit a bit. Las caractersticas ms relevantes del Receptor MSERX son:

Los PIC16F87x contienen un mdulo MSSP con dos puertas para la comunicacin serie sncrona, o sea, con seal de reloj. Adems, tambin disponen de un mdulo USART capaz de soportar la comunicacin serie sncrona y asncrona. El USART, llamado SCI (Serial Comunications Interface), puede funcionar como un sistema de comunicacin full duplex o bidireccional asncrono, adaptndose a multitud de perifricos y dispositivos que transfieren informacin de esta forma, tales como el monitor CRT o el ordenador PC. Tambin puede trabajar en modo sncrono unidireccional o h a y duplex para soportar perifricos como memorias, conversores, etc. En resumen, el USART puede trabajar de tres maneras:
1." AS~NCRUNA (Full duplex, bidirecciunal). 2 . ' SNCRONA-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 asncrono y sncrono. En el primero, las transferencias de informacin se realizan sobre dos lneas TX (transmisin) y RX (recepcin), saliendo y entrando los bits por dichas lneas al ritmo de una frecuencia controlada internamente por el USART. En el modo sncrono, la comunicacin se realiza sobre dos lneas, la DT que traslada en los dos sentidos los bits a la frecuencia de los impulsos de reloj que salen por la lnea CK desde el maestro. En ambos modos las lneas de comunicacin son las dos de ms peso de la Puerta C: RC6/TX/CK y RC7/RX/DT. Dada la importancia del protocolo asncrono del USART, segn la popular norma RS-232-C, se dedica este captulo a estudiar este modo de comunicacin, proponiendo un ejercicio de manejo de dicho protocolo en la seccin Programar PIC es fcil. En esta forma de comunicacin serie, se usa la norma RS-232-C, donde cada palabra de informacin o dato se enva independientemente de los dems. Suele constar de 8 o 9 bits y van prece-

192

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

MAESTRO

ESCLAVO

Figura 9.1. En el modo asncrono, la comunicacin serie del USART en los PICl6F87x est soportada por las lneas RCITXICK y RC7IRXIDT por las que se mueven los bits a la frecuencia interna de reloj. En el modo sncrono, los bits de informacin circulan en ambos sentidos por la lnea DT a la frecuencia de los impulsos que genera el maestro por la lnea CK.

didos por un bit de START (inicio) y detrs de ellos se coloca un bit de STOP (parada), de acuerdo con las normas del formato estndar NRZ (NonReturn-to-Zero). (Figura 9.2.) Los bits se transfieren a una frecuencia fija y normalizada. Los cuatro bloques que configuran la arquitectura del USART, en modo asncrono, son:
l." Circuito de mue~str@u.

2 . " C%nrpfad~r de b&@ie;9. .


3.' Transmisor asncronc>. 4.' Riac~ptor ~tsfncr~w.

El circuito de muestre0 acta sobre la patita RC7/RX/DT, que es por donde se recibe el bit de informacin o control y se encarga de muestrear tres veces su valor, para decidir ste por mayora.

B I T INICIO

BIT 1 DATO

B I T8

B I T PARADA

Figura 9.2. En el protocolo de comunicacin asincrono, cada palabra de informacin 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 transfieren al ritmo de la frecuencia de reloj establecida.

9.2. GENERADOR DE BAUDIOS


En el protocolo asncrono RS-232-C, la frecuencia en baudios (bits por segundo) a la que se realiza 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. Adems del valor X cargado en el registro SPBRG, la frecuencia en baudios del generador depende del bit BRGH del registro TXSTA<2>. En el caso de que BRGH sea O se trabaja en baja velocidad y si BRGH = 1 se trabaja en alta velocidad. Segn este bit se obtendr el valor de una constante K necesaria en la determinacin de la frecuencia de funcionamiento.
Frecuenca en Baudios = Fw

/(K

(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

194

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

De donde se desprende que:

En la Figura 9.3 se presenta la estructura interna junto a otros datos de inters de los registros que intervienen en la determinacin de la frecuencia en baudios a la que transfiere informacin el USART.

Figura 9.3. Caractersticas relevantes de los registros que intervienen en la determinacin de la frecuencia en baudios de la transferencia de informacin en el modo asncrono del USART.

b L USAKI': 'l'KANSMISOR/RECEPTOR SINCRONOIASNCRONOSERIE

195

9.3. TRANSMISOR ASINCRONO


En la Figura 9.4, se muestra un esquema simplificado de la comunicacin entre un USART transmisor 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 registro TXREG y a continuacin se traspasa al registro de desplazamiento TSR, que va sacando los bits secuencialmente y a la frecuencia establecida. Adems, antes de los bits del dato de inforrnacin incluye un bit de INICIO y despus de sacar todos los bits aade un bit de PARADA. El USART receptor recibe, uno a uno, los bits, elimina los dos de control y los de informacin una vez que han llenado el registro de desplazamiento RSR los traslada automticamente al registro RCREG, donde quedan disponibles para su posterior procesamiento. En la Figura 9.5 se presenta el diagrama por bloques de la seccin transmisora del USART. El ncleo est constituido por el registro de desplazamiento TSR, que obtiene el dato desde el

Figura 9.4. Esquema simplijicado del conexionado entre dos mdulos USARTfuncionando en modo asincrono.

BUS DE

Figura 9.5. Diagrama por bloques de la seccin de transmisin del USART en modo asncrono.

196

MICROCONTROLADORES PIC. DISEO PRCTICO 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 software 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 sealizador TXIF se pone a l , para advertir que el registro de transmisin se ha vaciado. Tambin en este momento puede producirse una interrupcin si se ha posibilitado programando el bit TXIE = 1 en el registro PIE1<4>. Cuando se escribe otro dato sobre TXREG, el sealizador TXIF se pone a O. El bit TRMT sirve para indicar el estado del registro TSR y vale 1 cuando est vaco. La secuencia de pasos a seguir para implementar una transmisin en el USART es la siguiente:

El siguiente ejemplo muestra una posible configuracin.

En la Figura 9.6, se ofrecen las caractersticas ms relevantes de los registros asociados con la transmisin asncrona y en la Figura 9.7 se especifica la distribucin y asignacin de funciones de los bits del registro TXSTA.

Figura 9.6. Caractersticas ms relevantes de los registros asociados con la transmisin asncrona.

Registro TXSTA

Figura 9.7. Asignacin de funciones de los bits del registro TXSTA para el control de la seccin transmisora del USART.

198

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Los datos se reciben en serie, bit a bit, por la patita RC7/RX/DT y se van introduciendo secuencialmente en el registro desplazamiento RSR (Figura 9.4), que funciona a una frecuencia 16 veces ms rpida que la de trabajo. Cuando el dato consta de 9 bits hay que programar el bit RX9 = 1 y el noveno bit de informacin se colocar en el bit RX9D del registro RCSTA. Obsrvese en la Figura 9.8 el control sobre el noveno bit con las puertas de control y las seales que se aplican (ADDEN = 1). Cuando CREN = 1 en el registro RCSTA<4>, se habilita la recepcin. Cuando un procesador maestro intenta enviar informacin a uno de los esclavos, primero enva un byte de direccin que identifica al destinatario. El byte de direccin 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. Pero si el noveno bit que se recibe vale 1, quiere decir que se trata de una direccin y el esclavo provocar una interrupcin, y se transferir el contenido del registro RSR al buffer de recepcin. Tras la interrupcin, el esclavo deber examinar la direccin 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 interrupcin.

P"""

CREN

r"""
n

OERR

i""'"
8

F E R R

M S B

R E G I S T R O DESPLAZAMIENTOR S R

FlFO

B U SD ED A T O S

Figura 9.8. Diagrama por bloques de la seccin receptora del USART.

xi\i.

i\i I r . u i r i i u v i \ , i w ~ u i

i v i \

L ULI L\I ~L W

V L//

Los pasos a seguir en el modo de recepcin son los siguientes:

En la Figura 9.9 se muestra la estructura interna y la asignacin de funciones de los bits del registro RCSTA.

Registro RCSTA

200

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 9.9. Registro RCSTA para el control de la seccin receptora del USART, en modo asincrono.

En la Figura 9.10 se ofrecen las caractersticas ms relevantes de los registros que intervienen en la recepcin asncrona de datos en el USART.

Figura 9.10. Caractersticas de inters de los registros que intervienen en la seccin receptora del USART en modo asncrono.

EL USART: TRANSMISOR/RECEPTOR SINCRONO/ASINCRONO SERIE

201

De los dos modos de funcionamiento del USART, la comunicacin serie asncrona es la ms utilizada. El PIC16F87x incorpora el hardware para comunicarse va 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 va serie con un programa terminal que correr sobre un PC. El PIC esperar a recibir un carcter, lo visualizar en forma binaria sobre LEDs y lo volver a transmitir a modo de ECO. La recepcin del carcter se controlar mediante interrupcin.

Esquema elctrico
En este ejercicio se van a utilizar tres elementos, tal y como se muestra en la Figura 9.11.

202

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

CABLE PARA COMUNICACION S E R I E xD TxD T x D CIRCUITER~A,PARA COMUNICACION SERlE MICRO'PIC 110

ORDENADOR

Figura 9.11. Esquema elctrico 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 slo hay que dejar al USART en modo escucha y esperar en un bucle a que se genere una interrupcin al recibir un carcter desde el PC.

*
USART M ESCUCHA

Figura 9.12. Organigrama del ejercicio propuesto.

EL U ~ N 1 K : 1 KNlV 3lV113uK/KkLkY 1 U K SIN LKUN U/AY LNCKUNU

YbKlL:

5 '
LEER DATO SACAR DATO

P
REmANSMITlR DATO

u
VOLVER

Figura 9.13. Organigrama de tratamiento de interrupcin.

En el tratamiento de interrupcin se leer el dato recibido, se mostrar por la Puerta B y se volver a retransmitir hacia el PC a modo de ECO. Antes de volver se deber restaurar el sealizador de interrupcin.

Programa comentado
El programa una vez terminado quedar as:

204

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL USART: TRANSMISORJRECEPTORSNCRONO/ASNCRONOSERIE

205

Prueba del programa


Adems de las conexiones ya comentadas en el esquema elctrico, se deber tener en cuenta que:

Una vez hecho esto y grabado el programa en el PIC, se ejecutar el programa TERMINAL.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 monitor.

El programa de comunicaciones TERMINAL Se trata de un programa de comunicaciones que funciona bajo MS-DOS o en Windows con ventana MS-DOS, en cualquier ordenador IBM PC/XT/AT o compatible, contenido en un nico fichero ejecutable llamado TERMINAL. Su ejecucin tiene lugar al teclear la siguiente lnea de comandos:

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 comunicacin, devolviendo el control al sistema. Con la tecla F1 se accede a una ventana de ayuda para el manejo del programa TERMINAL. Tras la Figura 9.14 se explica resumidamente la funcin de cada uno de los comandos ejecutable~.

10.1. ESTO ES OTRA HISTORIA


En Julio de 1999, Microchip anunciaba desde su sede central en CHANDLER, Arizona, la nueva familia PICl8Cxxxx. Se trataba de una familia de microcontroladores con arquitectura RISC de 8 bits, pero que inclua los mayores avances en hardware y software para simplificar y potenciar miles de aplicaciones centradas en las reas de la automocin, las comunicaciones, la ofimtica, los productos de gran consumo y el control industrial. El objetivo del fabricante era facilitar a sus usuarios la migracin de las familias PIC12C6xx, PIC16Cxx y PIC l7Cxx a modernos dispositivos, que con una relacin precio/prestaciones muy competitiva, integren la mayora de los recursos que posibiliten desarrollos eficientes, flexibles y de elevado rendimiento. Pero esta migracin ser indolora porque se aprovecharn todas las inversiones 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 caractersticas se reflejan en la tabla de la Figura 10.1. El fabricante planea que en un par de aos esta familia dispondr de modelos con memoria FLASH, OTP y ROM. De los cuatro modelos, dos estn encapsulados con 28 patitas y los otros dos con 40, como suceda con los PIC16F87x.

208

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

Figura 10.1. Tabla que muestra las principales caractersticas de los cuatro primeros modelos de la familia PICI 8Cxxx.

10.2. LAS GRANDES APORTACIONES


Para comprender las enormes expectativas potenciales de los PIC18Cxxx se exponen las aportaciones ms significativas, antes de pasar a describir la arquitectura, la organizacin de la memoria y las instrucciones. En cuanto a los perifricos, 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

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

209

necesidades ms exigentes en cuanto a espacio de memoria se refiere. Los modos de direccionamiento 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 tamao de 16 bits (palabra de 2 bytes). No obstante, hay 4 instrucciones que tienen un tamao de 2 palabras de 16 bits. Todas las instrucciones son similares a las empleadas en los PIC16Cxx y los PIC17Cxx con excepcin de dos nuevas instrucciones. Se resaltan los siguientes avances en el juego de instrucciones.
A

..
I

1.O instrucciones capaces de mover datos entre dos posiches de la mtmoria dta datos.

2,' Instruccones que permitep?el intercambio de informacin entre posiciones de la mernwja de prcp grama y la de datos. 3." Multipiicacin de 8x8 Mts en un ciclo de instrucci&. 4." Potentes instrucciones de un solo ciclo q w ponen a -f o cambian el mbr de un bit en on mgistm S en una Puerta de E/S.

; ,

..

f"'"

10.2.3. Diseo 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 diseo han preferido en muchas ocasiones trabajar con lenguaje Ensamblador. 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 direccionado 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 versin de demostracin a travs 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 emulacin


Un emulador de gran exactitud se implementa mediante la combinacin de dos chips maestro-esclavo. El primero emula a la CPU y el acceso a la memoria (Figura 10.2). El esclavo emula a los perifricos, poniendo a disposicin de los diseadores un sistema de validacin casi perfecto que aade 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 Programacin Serie En Circuito (ICSP), que permite la grabacin del programa sobre el microcontrolador una vez que se halle colocado en la tarjeta del producto final.

210

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


EMULADOR PIC1 8 C m
- 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 guardin dispone de sus propios divisores de frecuencia y no comparte nada con el Timero. Es posible activarlo y desactivarlo por software, con lo que puede detenerse cuando se entra en el modo de Reposo o en partes no crticas del programa. Un circuito PLL da a los usuarios la opcin de multiplicar por 4 la frecuencia del cristal, consiguiendo 40 MHz a partir de una frecuencia de entrada de 10 MHz. En este caso, la configuracin del oscilador ha de estar programado para funcionar en modo HS (Figura 10.3).

:""-";
I

1
40 MHz

b ;
I-

CRISTAL 10 MHz

1
I

PLL
I

I - 1 - 1 - 1 - 1 I

Figura 10.3. Un circuito PLL optativo consigue multiplicar por 4 la frecuencia de entrada del cristal.

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

211

10.3. DIAGRAMA DE CONEXIONADO


Los dos modelos de PIC18C2x2 estn encapsulados con 28 patitas, mientras que la pareja PIC 18C4x2 tienen 40 patitas. La diferencia ms importante, al igual que suceda con los PIC16F87x, es que los que tienen ms patitas disponen de 2 Puertas de E/S ms, 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 RAl/ANl RA2/AN2/VK,, RA3/AN3/VK,,+ RA4/TOCKI RA5/AN4/SS#/LV D IN REO/RD#/AN5 REl/WR#/AN6 RE2/CS#/AN 7 VDD vss OSCl/CLKI OSCZ/CLKO/RA6 RCO/Tl OSO/Tl CKI R C 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.

10.4. ARQUITECTURA INTERNA


Aunque con mayor nmero de registros internos y ms capacidad de memoria y de Pila, la arquitectura interna de los PIC 18Cxxx recuerda mucho a la de los PIC16F87x. Los modelos de 40 patitas disponen de las Puertas de E/S D y E, que posibilitan la implementacin de una puerta paralela esclava. (Figuras 10.5 y 10.6.) En referencia a los perifricos, hay mucha analoga con los que tenan los PIC16F87x. La nueva familia dispone de un Timer ms. El Contador de Programa es ms complejo y de mayor tamao, lo mismo que ocurre con la Pila, que tiene 31 niveles de 21 bits cada uno. La direccin de la memoria de programa tiene 21 bits y maneja 2 MB, y la direccin de la memoria de datos, con 12 bits, puede manejar 4 KB. Otros elementos destacables y nuevos de esta familia son el multiplicador hardware 8x8 y las lgicas para el incremento y decremento de las direcciones.

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 slo tienen implementado 32 KB de memoria EPROM y los PIC18x42 16 KB. Como la mayor parte de las instrucciones tienen 16 bits, en los modelos citados en primer lugar caben 16 K instrucciones y en los segundos la mitad. El Vector de Reset ocupa la direccin O O O O h 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 despus de un Reset. Tanto dicho puntero como la posicin de la cima de la Pila son lebles y escribibles a travs de los registros FSR. Adems, hay sealizadores 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 estn en el PCH y, finalmente, los 5 de ms peso <20-16>, se ubican en el registro PCU. Slo los bits del registro PCL son directamente lebles y escribibles.

Existen 4 instrucciones de 4 bytes (MOVFF, CALL, GOTO y LFSR). Los 4 bits de ms peso de la segunda palabra de estas instrucciones siempre son cuatro unos, que codifican una forma especial de la instruccin NOP. Los 12 bits de menos peso de la segunda palabra de estas instrucciones direccionan el dato que maneja la instruccin codificada en la primera palabra. As, mientras se ejecuta la primera palabra se busca el operando de la segunda. Adems, si se brinca o salta la primera palabra, la segunda palabra al no ir precedida por la primera se interpreta por una NOP.

EL FUTURO EST AQU: LA FAMILIA PIC 18CXXX

213

v
PUERTA SERIE
S~NCRONA MAESTRA

Figura 10.5. Arquitectura interna de los modelos de 28 patitas de la familia PICl8Cxxx.

214

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

RAS/AN4/SS#/LVDIN

RCO/Tl OSO/Tl CKI RCl/Tl OSI/CCP2

4xPLL ',, , , I w; -1iii-iii. ' VOLTAJE DE REFERENCIA

G;E&N;

DE PRECISIN
I
ii i i i

- -

MCLR#

V ,,

Vsr

Figura 10.6. Arquitectura interna de los modelos de 40 patitas de la familia PIC18Cxxx.

EL FUTURO EST AQu: LA FAMILIA PIC 18CXXX

215

2 Mbytes

Figura 10.7. Organizacin general de la memoria de programa de los PIC18Cx52

10.6. ORGANIZACIN DE LA MEMORIA DE DATOS


La memoria de datos puede alcanzar un tamao de 4 KB al estar manejada por direcciones de 12 bits. Es de tipo RAM esttica y los modelos PIC18Cx42 slo disponen de 512 bytes implementados fsicamente en el chip, mientras que los modelos PIC 18Cx52 tienen 1.536 bytes. En los bancos de la RAM hay posiciones que contienen Registros Especficos (SFR) y otros de Propsito General (GPR). El mapa de memoria puede dividirse en 16 bancos de 256 bytes cada uno. En este caso, la direccin 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 Seleccin de Banco). El segundo campo tiene 8 bits, que se hallan contenidos en el formato de la instruccin. En el direccionamiento directo, los 16 bits del formato de la instruccin INS<15-O> se reparten en los siguientes campos. Los 6 bits de ms peso INS<15-10> contienen el cdigo OP que discrimina las instrucciones. El bit INS<9> indica el destino de la instruccin, de forma que si vale O es el W y si vale 1 es el registro f, que maneja la instruccin. El bit INS<8> se denomina a y determina 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 Banco (Figura 10.8). Por ejemplo, en la instruccin ADDWFf,d,a, en el caso de materializarse en ADDWF 004h,O,l, el acceso a la memoria de datos sera al banco que estuviese contenido en los bits BSR<3-O> en la posicin 004h y el registro destino sera el W (Figura 10.9).

216

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

CDIGO OP. INSTRUCCINC~-O>

1 1 I I

DIRECCI~N DENTRO DELBANCO

O000

0001

XXXX

lll?

1
I
BANCO

BANCO O

BANCO 1

BANCO x

BANCO 15

Figura 10.8. Direccionamiento directo a memoria, usando para la seleccin del banco los 4 bits de menos peso del registro BSR.

Figura 10.9. Codijkacin en binario de la instruccin 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 slo se emplean los 8 bits de la direccin, puesto que el banco al que se accede est formado por los 128 primeros bytes del Banco O y los 128 1timos bytes del Banco 15, en el que se hallan contenidos los registros SFR (Figura 10.10).

EL FUTURO EST AQU: LA FAMILIA PIC18CXXX

CDIGO OP. INSTRUCCINC~-O*

8 r

DIRECCIONES POSIBLES DENTRO DE LOS BANCOS

I
XXXX

217

O000

0001

1111

BANCO O

BANCO 1

BANCO x

BANCO 15

Figura 10.10. Cuando a = O slo se accede con los 8 bits de direccionado contenidos en la instruccin. Los 256 bytes a los que se pueden acceder estn formados por los 128 primeros del Banco O y los 128 ltimos del Banco 15.

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 ms peso al cdigo OP de discriminacin 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 ms peso a 1 y los 12 restantes apuntan al operando destino (d). La instruccin MOVFF s,d transfiere el contenido de la direccin de la memoria de datos (S) a la posicin (d). (Figura 10.11.)
La segunda paiabra de una instruccin 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 instruccin 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 informacin entre la memoria de datos, cuyas posiciones tienen tamao byte, y la de programa que tienen 16 bits de tamao. Para soportar estas operaciones de lectura de tabla y escritura de tabla existen dos registros, uno de ellos es el

218

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES


INSTRUCCI~NMOVFF s,d
CDIGO OP. INSTRUCCIN<~-O> 1 PALABRA
15

." 7

CDIGO OP. INSTRUCCIN<~-O>


1~

2."PALABRA

DlRECClONAMlENTOD E OPERANDO FUENTE

DlRECClONAMlENTOD E OPERANDO DESTINO

XXXX

1111

BANCO O

BANCO 1

BANCO x

BANCO 15

Figura 10.11. La instruccin MOVFF s,d consta de dos palabras de 16 bits. En la primera, los 4 bits de ms peso expresan el cdigo OP y los 12 restantes la direccin del operando fuente. En la segunda palabra, los 4 primeros bits siempre son 1 y los 12 restantes apuntan la direccin del operando destino.

TBLPTR, que consta de 21 bits y que sirve para apuntar una posicin 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 operacin de lectura de tabla, el byte de la memoria de programa apuntado por TBLPTR se carga en TABLAT, que representa una posicin 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 slo aumentan el tamao a 16 bits, sino que potencian su actuacin y las adaptan al lenguaje C. Adems, cuatro de dichas instrucciones tienen una longitud de dos palabras. (Figura 10.13.)

EL FUTURO EST AQUI: LA FAMILIA PIC18CXXX

219

EIIrl
LECTURA D E TABLA

G
ESCRITURA D E TABLA
20

PUNTERO TABLA

7 LATCHTABLA

Figura 10.12. Las operaciones lectura de tabla y escritura de tabla traspasan informacin entre las dos memorias de los PIC18Cxxx.

220

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

EL FUTURO ESTA AQUI: LA FAMILIA PIC 18CXXX

221

222

MICROCONTROLADORES PIC. DISEO PRCTICO DE APLICACIONES

APENDICE A - LA FAMILIA PIC AL COMPLETO

225

EL = EE

ECCP = /WN EMA = EXbprptCd Memary Mdmcing

M fC/SPI = Mastw L"C/SPI

SMB = S p
W=%a
U W =U VHt = vuiiage Reemw WT = Wa%cb&g Time

t2c= m -

1CD = i&MDzcwg

cmn

LVD=LO(~V~MBCW~

M = - B W m R e M PtVD = Prcgrmrn* LwLuctcge LMfxmt' PSP=Parafkl C I M M W M =Pulse W& d t f i * SLAC= a q p e A/D m r f m up to la MS

@cWmmRmm/Transrri~ttec

LIBROS

NMICROCONTROLADORESPIC. Diseo prctico de aplicaciones, (1.varte: PIC16F84). Incluye un CD con aplicaciones y tutoriales multimedia. Angulo, J. M." y Angulo, 1. Editorial McGraw-Hill, 2." edicin, 1999. MICROCONTROLADORES PIC. La solucin en un chip, Angulo, J. M.", Martn, E. y Angulo, 1. Editorial ITP Paraninfo, 4." edicin, 2000. MICROB~TICA>>, Angulo, J. M.", Romero, S. y Angulo, 1. Editorial ITP Paraninfo, 2000.
REVISTAS

Revista Espaola de Electrnica* Elektor Electronics ~Circuit Cellar Electrnica Prctica Actual Resistor PC Hardware Microbit
EMPRESAS

MICROCHIP TECHNOLOGY INC. 2355 West Chandler Blv., Chandler, AZ 85224-6199, EE.UU., Tel: 602.786.7200. SAGITRON Corazn de Mara, 80-28002 MADRID (Espaa), Tel: 91-4169261. E-mail: sagitron@sagitron.es

230

BIBLIOGRAFIA Y DIRECCIONES DE INTERNET RELACIONADAS CON LOS PIC

aMICROSYSTEMS ENGINEERINGB Gral. Concha, 39-48012 BILBAO (Espaa), Tel: 94-4223263 E-mail: msyseng@arrakis.es
INTERNET

MICROCHIP: MICROSYSTEMS ENGINEERING: PARALLAX, INC: ITU TECHNOLOGIES: SAGITRON:

http://www.microchip.com http://www.arrakis.es/-msyseng http://www.parallaxinc.com http://www.itutech.com http://www.sagitron.es

ADC, 86 ADCONI, 133 ADCS<l :O>, 131 ADRESL, 133 ADRESH, 133 Arbitraje, 166, 167 Bajo consumo, 74 Batera, 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 Comparacin modo, 107, 108 Compilador C, 209 Configuracin, 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 alimentacin, 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, 151 LDR, 18 LM35,19 Maestro, 149 MCLR#, 79 Microbtica, 124, 229 MICROCHIP, 3,229 MICRO'PIC IO,60,61,117, 137 MICRO'PIC TRAINER, 15, 38,60,117 MICRO'PIC TRAINER PLUS, 83,85

MICROSYSTEMS ENGINEEERING, 9,229, 230 Modo captura, 106 Modo comparacin, 107, 108 Modulacin 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 configuracin, 72 Palabras identificacin, 73 PARALLAX, 230 PCL, 29 PCLATH, 29 Perodo, 109 Perro Guardin, 77 PICBOT-2, 126 PIC16F87X, 7,21,31 PIC 16F84, 11 PIC 16F874/7,24 PIC18CXXX, 211 PIC18C2X2,211 PIC18C4X2,211 PICBUS, 62,84 Piezoelctrico, 63

POP, 212 POR, 44 Puerta A, 67 Puerta B, 69 Puerta C, 7 1 Puerta D, 71 Puerta E, 72 Puertas E/S, 67 PUSH, 212 PWM, 109,110 PWRT, 75 RAM, 26 Receptor asncrono, 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 Reinicializacin, 74,76 Rels, 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 analgicos, 64 Sealizadores C, 44 z,44 PD#, 44,74

TO#, 44,74 Serie sncrona, 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 asncrono, 195 TUNABAL, 3 TlCON, 89 T2CON, 91 UNIVERSIDAD DE DEUSTO, 127 USART, 19 1,201 Visualizacin, 86 WCOL, 176 WDT, 77 WRT, 52 Zcalos, 101 ZOC87X, 9,37

Segul&cr , .. parte: PZC 16F87x

Angulo Martnez

Вам также может понравиться