Академический Документы
Профессиональный Документы
Культура Документы
Prlogo ....................................................................................................................................
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 ...........................................................................
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
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) .......................................................................
181
Disear con PIC es fcil: comunicacin de datos digitales por radio frecuencia........... 186
Capitulo 9
9.1. 9.2. 9.3. 9.4.
Comunicacin serie asncrona ............................................................................... Generador de baudios............................................................................................. Transmisor asncrono ............................................................................................. Receptor asncrono .................................................................................................
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.
1.1.
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.
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.
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
Figura 1 .S.
I;i)tog~-trfi'trtlc
(10.51 1 0 1 .
I t r
olll/ll-fl.\(/ Z l ~ l ~ l I ? ~ ~ l
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
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.
Con la incorporacin de esta familia, el conjunto de microcontroladores PIC de 8 bits se distribuye en cuatro gamas:
Figura 1.6.
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.
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.
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.
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.
* 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.
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
Figura 1.1 1.
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.
11
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
APAGAR LEDs
ENCENDER LEDs
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
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.
--
Figura 1.15.
15
Figura 1.16. Sistema de desarrollo Micro' PIC Trainer con las partes ms .significativas sealatlas.
16
Antes de utilizar los perifricos arriba descritos hay que grabar el programa en el PIC. Se realizarn los siguientes pasos:
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.
18
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
PRCl O0
-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
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
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
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
'
t I
PUERTA E
TIMERO
CONVERSOR ND
EEPROM
CCP2
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 .
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
Figura 2.5.
26
Para manipular adecuadamente los elementos internos de los PIC hay que conocer la misin de los bits de los Registros Especficos.
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
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
1FFh
Figura 2.7. Organizacin de la RAM en los modelos PICl6F87314, con de 192 bytes tiles.
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.)
30
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.
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
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.
33
lSLead CERDlP
"JW"
Pgiead PDiP
"'P"
18-Lead PDIP
" P
40-Lead PDIP
"'P"
8.4-CeadPCCC "L"
Figura 2.11. Opciones de encapsulados para los microcontroladores PIC. (Cortesa de Microchip.)
34
Figura 2.12. Principales caractersticas de las 35 instrucciones que componen el repertorio de los PICl6F87x. \
35
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
RESET
i(
LED
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
Figura 2.14. Fotografa que muestra la colocacin del zcalo ZOC87x sobre el Micro'PIC Trainer. (Cortesa de Microsystems Engineering.)
39
y esfabilida
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
'
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
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.16. Mitad del circuito integrado L293B con dos de sus cuatro drivers utilizados en el control de un motor DC.
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.
42
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.
REGISTRO D E ESTADO
-'
44
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.
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.
46
REGISTRO OPTION
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.
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.)
REGISTRO INTCON
Figura 3.3. Designacin y misin de cada uno de los bits del registro INTCON
48
REGISTRO PIE1
Figura 3.4. Designacin y funciones de permiso y pi-ohihicin de los hits del registro PIEI.
49
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
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.
51
52
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.
Falta por realizar el cdigo correspondiente a la lectura de la EEPROM, que una vez convertida a subrutina quedara como sigue.
54
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.
55
O T R A S INSTRUCCIONES
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
57
58
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.
59
60
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
IN
G N
OUT
Figura 3.15.
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).
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
-,b
-- C7
100n
D2
77
R1
-- C4
--1op
a
(F
0 X/128
. I
+
R2 10K
O
4)
o Xl32
I
0 X/64
0X116 0X/8
0 X/4 0 X/2 oX
ENABLE
VCC
ZC
9
PlCl6C54RC
Generador de Funciones
Figura 3.16. Esquema electrnico del generador de funciones.
64
27p
0 7 . : ; 6 8 K ,
O & 2 7 ~
T I OS
Piezoelctrico 10K
-
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.
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
66
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
3 2 e
JPI
14
l3
= I C 8
100n
VCC O--
VDD
VCC
Motor 3-12VDC
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
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:
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.
;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
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
71
Figura 4.4.
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
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).
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.
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
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.
77
Figura 4.8.
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.
78
SALIDA W D T
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.
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
+*
ENCENDER LEDs
7 SLEEP
81
Programa comentado
El programa, una vez adaptado al uso de estos nuevos recursos, queda de la siguiente manera:
82
*.
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.
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
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.
85
86
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.
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.
..
lw mddulm CCR
87
88
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!
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
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
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.
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
SALIDA TMR2 A S S P
-- FOSCl4 RELOJ
m -
. -----. m -
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
Vss
Vdd
Vo RC R/W#E
D O D I D2 D3 D4 D5 D6 D7
GENERADOR MICRO'PIC 1 1 0
LOS TEMPORIZADORES
95
INKML~ZACI~N
PA W D A PBSALlDA PC EMlZADA
m 1 =a
I
TMRO = C2(196]
HABKITACK~I\I $M:TMRO
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.)
96
Programa comentado
LOS TEMPORIZADORES
97
98
LOS TEMPORIZADORES
99
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.
100
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.
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.
REFERENCIA
REFERENCIA
RBD
RE1
SO
S1
REO
RE1
$0
51 52
RB2
RB3
52
RE2
RE3
53
S4
53
$4
RA4 RAO
RAI
INlilN2
IN41N3
RA2 RA3
EN1 EN2
EN2
Figura 5.12. Zcalos que muestran la asociacin de lneas con los sensores y actuadores.
102
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
O000 O1O0
1
Mdulo CCPx desconectado Modo captura con cada flanco descendente en RCyICCPx
I
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
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.
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.
107
CAPTURA
Figura 6.2.
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:
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.
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.
109
6.5.
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.
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:
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
113
RESET
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
115
116
117
Figura 6.1 l .
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.
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:
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.
119
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
Programa comentado
El programa para este segundo enunciado queda:
121
122
123
124
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.
125
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.)
126
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:
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+
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-.
130
1." 2.' 3." 4."
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
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.
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
CONVERTIDOR
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
136
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
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
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
EL CONVERSOR A/D
139
9
ACTIVAR CONVERSOR ESPERAR 1 SG s ViSUALlZAR RESULTADO EN LCD
I
APAGAR VENTILADOR
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
Programa comentado
EL CONVERSOR A/D
141
142
EL CONVERSOR A/D
143
144
EL CONVERSOR A/D
145
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.
146
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.
148
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.
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
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
'
;"
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
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.
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).
155
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.
Figura 8.2. Comunicacin SPI entre un PIC maestro y otros dos esclavos
156
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
Figura 8.3. Estructura interna del mdulo MSSP cuando trabaja en modo SPI.
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
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.
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
.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
?e
MICROCONTROLADOR B
161
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
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.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.
SDA
SCL
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.
I I I
I
I
I I I I
I
I
SDA
---m - - - m
SCL
164
I
I
I I
CONDICIN DE INICIO
CONDICIN DE FIN
'
1
SALID^ DE DATOS
DEL PECEPTOR
I I I
I I I I
I
m
I I
Figura 8.11.
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
*
1
I
1 I
166
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
167
w
W
. .. *elitsrn+yordw.ih.
r
t :
<
L . .
*'
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.
DATO 1
168
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
+ ACK
. - m
INICIO
DIRECCI~N
FIN
ESCRITURA
LECTURA
1
DATOS TRANSFERIDOS (n BYFES ACK)
Figura 8.17. El maestro recibe desde el esclavo despus de enviarle a ste la direccin.
169
DIRECCIN DE ESCLAVO 1
DIRECCIN DE ESCLAVO
= LECTURA
O = ESCRITURA
0 = ESCRITURA
("
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.
170
LSB
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:
171
Para dispositivos capaces de trabajar con un rango variado de tensiones de alimentacin (por ejemplo, CMOS), se definen los siguientes niveles:
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
172
S D A SCL
S D A SCL
Figura 8.21.
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.
173
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
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
174
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:
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
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
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.
177
Figura 8.28. Tabla que recoge los principales registros que intervienen en el control del mdulo MSSP con el protocolo bus I2C.
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
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.
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.
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
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.)
1-
1.
1 - - 1
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
-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
ln4148
R E S E T
i(
PIC16F873
L~NEA D E DATOS
u
DIRECCONARESCLAVO PARA LECTURA
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
185
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
EMISOR MSETX
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
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:
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
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.
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.
/(K
(X + 7))
194
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.
195
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
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:
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
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
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//
En la Figura 9.9 se muestra la estructura interna y la asignacin de funciones de los bits del registro RCSTA.
Registro RCSTA
200
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.
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
ORDENADOR
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
YbKlL:
5 '
LEER DATO SACAR DATO
P
REmANSMITlR DATO
u
VOLVER
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
EL USART: TRANSMISORJRECEPTORSNCRONO/ASNCRONOSERIE
205
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~.
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
Figura 10.1. Tabla que muestra las principales caractersticas de los cuatro primeros modelos de la familia PICI 8Cxxx.
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.
..
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"'"
210
Figura 10.2.
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.
211
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.
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.
213
v
PUERTA SERIE
S~NCRONA MAESTRA
214
RAS/AN4/SS#/LVDIN
G;E&N;
DE PRECISIN
I
ii i i i
- -
MCLR#
V ,,
Vsr
215
2 Mbytes
216
1 1 I I
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).
8 r
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
." 7
2."PALABRA
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.
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
221
222
225
EL = EE
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~
@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
aMICROSYSTEMS ENGINEERINGB Gral. Concha, 39-48012 BILBAO (Espaa), Tel: 94-4223263 E-mail: msyseng@arrakis.es
INTERNET
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
Angulo Martnez