Beruflich Dokumente
Kultur Dokumente
Prlogo ....................................................................................................................................
Captulo 3. PRINCIPALES REGISTROS DE CONTROL Y MANEJO DE LAS MEMORIAS FLASH Y EEPROM .....................................................................
3.1.
3.2.
3.3.
3.4.
3.5.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
CONTENIDO
vii
92
6.5.
6.6.
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.
Programar PIC es fcil: adquisicin de valores con los conversores A/D ................. 137
Ilisear con PIC es fcil: visuali~acinde 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.
8.6.
viii
CONTENIDO
181
Disear con PIC es fcil: comunicacin de datos digitales por radio frecuencia........... 186
Capitulo 9
9.1.
9.2.
9.3.
9.4.
191
193
195
198
CONTENIDO
ix
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:
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~vamentese util~zanlos conceptos expuestos en /a
teora Toda la colecc~nde ejerc~c~os
propuestos se pueden reallzar ntegramente con las herramlentas bas~cascomerc~al~zadas
por M~crosystemsEnglneerlng 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-ainel-de los PIC16FX7x y las tarjetas de ampliacin de perifricos MiCI-O'PIC
TI-ainel- Plus y la MSx84 encargada del control de motores DCV y PAP. Finalmente, la obra
se completa con un anexo que ofrece las caractersticas de los modelos actuales de microcontroladores de Micl-ochip.
Agradecemos muy sinceramente la colaboracin de Micnr-osystemsElzgineel-irzg (Bilbao), que ha
puesto a nuestra disposicin todas las herramientas que hemos necesitado y toda la informacin sobre sus productos y los ejercicios que soportaban. Los lectores interesados en conocer ms a fondo
dichas herramientas pueden dirigirse directamente a sus oficinas en C/ Gral. Concha 39,48012 Bilbao, o bien, visitarla a travs de Internet (www.arrakis.es1-msysen-). Igualmente expresamos riuestro agradecimiento a los Sres. Benito Moreno y Pepe Bustamante de Sagitr-o17(Madrid) y a nuestros
amigos Goyo y Jorge de Bilbao Electl-nica.
Para no encarecer el libro se ha prescindido de incluir disquete o CD, puesto que toda la informacin y programas de inters pueden ser recogidos por Internet (www.microchip.com y www.arrakis.es/-msyseng). Por nuestra parte nos brindamos a ayudar en lo que podamos a nuestros lectores
en la direccin autores@inf.deusto.es.
NECESIDAD Y APORTACIONES
DE LOS NUEVOS PIC
1.1.
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~ariosc.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 ~I CCI C ~ I ~ yO )por
)
eso, en cada curso, dirigimos
n~uchosproyectos 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~tcligcutrcontrolada 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~iridadante 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~trsi/lt~ligr',71c'.pi,tque
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~wtuvo 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
Automocin
Consumo
Black&Decker
Goldstar
Hamilton Beach
IVC
Mitsubishi
Panasonic
Philips
Samsung
Sanyo
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.51101.
Itr
h o ? r r ( I T ( / N , ~ B A/>+
L /11t71o1..\(it
)>, ( o t l \ t l i{i(l(r (.o11I I ~ ~ o(
C I o ~ ~ t t . o l u ~ l( IoI ~~U .Y ~
~ : \~ / -
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
Telfono celular
Telfono
inalmbrico
ldentificador de
llamadas
Mdem
Control de motores
Compresor
Termostato
Utilidades de medida
Robtica
Procesos de control
Detector de humo
Lector de tarjetas
Figura 1.4. Tabla de aplicaciones que requieren microcontroladores y clientes que desarrollan dichas aplicaciones.
Figura 1.5. Tabla con las caractersticas relevantes de los cuatro nzodelos de PIC16F87x, junto a las del
PIC16F84A.
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
GAMA ALTA
bAL!P-!ED!A
GAMA BSICA
-- ... -.
-- -- ---
--
En la Fig~iri1.7 re puede ver una I-epre\ent~icingrfica 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 sdel 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~oriasse teiia la posibilidad de grabar y bol-rar programas elctricameiite. lo cual supona
que poda estar insertado en el mismo zcalo durante todo el procsw fe diseo y del~iiracicn.Lo\
i ~ i o d e l ode rnicrocontroladores progi-amable5 conocido5 hasta entonces dispona11c inei-i~orilide
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~abanmucho\ 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~icliotienipo 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~abanc: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~oprecio, inicios :i
iii ini:igii~:icitin (le lo\ proy~cti\t;i\.h a logridoqiie \e le ccin\idere <<muyresiiltii>>
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
el m~smorepertorio de instrucciones.
La irienioria RAM de dato\ de lo\ PIC I6FX7x po\ee una capacidad de 102 byte\ en (lo\ de lo\
inodelos y de 368 bytcs en lo\ otro\ dos. Aunque superan ampliamente los 68 byte\ del PIC 16FX4.
inantieneii la mi\tna e\tructura ba\ada en 4 bancos de 128 byte\ cada uno, \clcccionables con lo\
hit\ RPO y RPI del Regijti-o de E\tatlo. (Fig~ira1 .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~ibeha\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 oC'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~auna 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 1
BANCO O
BANCO 2
BANCO 3
OOh
7Fh
Figura 1.8.
FFh
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~inpar-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.
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.
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
PIC 16F87x en el Micr-o'PIC Ti-uinei-,con el que se puede grabar, borrar, depurar y ejecutar programas 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.
1"
2"
3"
4"
l;ofog/.c~flcr
tlel rcc,trlo uilrr/~tliclo/.
ZOC87\,
c.~-o'PlC
Trtrit~cl:
ylic p ~ / . /ir(-'
t ? t/.lrh(rltr~.
(.oti lo.\
Figura 1.12.
Itztcr.c*ot~c~.vir~
dr l(n tt11-jcfuMic.ro'PIC Tlwit~clc 011 Iris tios ttr~.jota.\(le ~rl///)li(i(
ihl.
11
Enunciado
Vamos a comenzar recordando ci~iose 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
INICIALIZACI~N
PA ENTRADA
PB SALIDA
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.
P= 16F84
; Se indica el tipo de
; procesador
RADIX
HEX
INCLUDE
P16F84.INC
ORG
0x00
; Sistema de numeracin
; hexadecimal
; Se incluye la definicin de
; los registros internos en
; una librera
; Inicio en el Vector de
INICIO
; Va a la primera instruccin
: Reset
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~eray copiar el programa Grabarlo sin formato con extensin
ASM.
2." Ensamblarlo con el ensamblador de M~crochipllamado MPASM. Corregir errores si los hubiera
volv~endoal 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
RANGO
INCREMENTO
LM335A
-40"C-1OOC
0,lO mV/"C
PRCl O0
-40"C-I5OC
OC-100W
100"-138,5
PROPIEDADES
Precisin debido a su
comportamiento lineal
Resistente.
P T l 00
-50" C - 500" C
1 0 0 W -O"C
PTC (Coeficiente d e
Temperatura positivo)
Diferentes
En circuitos de aviso.
Proteccin contra sobretensiones y
sobrecorrientes.
NTC (Coeficiente de
D~ferentes
Temperatura negativo)
Termopar t i p o
- 5 0 C - 400" C
Altas temperaturas.
Elevada vida til.
Espacios reducidos.
Uno de los sensores ms utilizados es el LM35, tambin llamado estndar. Sus caractersticas
son:
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 VoUTse 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.
Direccionamiento h
Direccin
"I
Datos
I
I
1
I
i
RECURSOS
INTERNOS
1
I
1
I
1
1
1
Figura 2.3. Arquitectura tipo Harvard simplificada para los microcontroladores PIC16F87x.
24
PUERTA A
13
MEMORIA DE
c~lco
(FLASH)
PILA 8 NIVELES
DE 13 BlTS
MEMORIA DE
DATOS
(SRAM)
PUERTA B
TEMPORIZADOR DE
TEMPORIZADOR
DE INICIO
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
'
RC6/TX/CK
RC7/RX/DT
OSC2/CLKOUT
BROWN-OUT
DEPURACION
EN CIRCUITO
'
t
I
PUERTA E
CONVERSOR ND
TIMERO
EEPROM
CCP2
PUERTA SERIE
S~NCRONA
USAR1
L
Figura 2.4.
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
VECTOR DE RESET
OOOOh
VECTOR DE INTERRUPCI~N
0004h
0005h
PGINA O
2K
07FFh
0800h
NIVEL 1
PCINA 1
2K
OFFFh
1OOOh
* PGINA 2
2K
17FFh
1800h
NIVEL 8
r
* PGINA 3
2K
1FFFh
12
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
Registros de
1AOh
Propsito
General
80 Bytes
1EFh
Mapeados con
1FOh
70h-7Fh
1FFh
Banco O
Banco 1
Banco 2
Figura 2.6. Distribucin de la memoria RAM en cuatro bancos con 368 bytes tiles.
Banco 3
28
80h
1OOh
01h
81h
lOlh
02h
82h
102h
03h
04h
83h
84h
103h
104h
05h
85h
105h
06h
86h
106h
07h
87h
107h
08h
88h
108h
09h
89h
109h
OAh
8Ah
10Ah
OBh
8Bh
lOBh
OCh
8Ch
10Ch
ODh
8Dh
1ODh
OEh
8Eh
8Fh
1OEh
90h
110h
OFh
10h
Ilh
12h
91h
92h
13h
93h
14h
94h
15h
95h
CCPR1H
16h
96h
CCP1CON
17h
97h
RCSTA
18h
98h
TXREG
19h
99h
RCREG
1Ah
9Ah
CCPRZL
CCPR2H
1Bh
1Ch
9Bh
CCP2CON
9Ch
9Dh
ADRESH
9Eh
ADCONO
Registros de
Registros de
Propsito
Propsito
General
General
96 Bytes
96 Bytes
9Fh
19Fh
AOh
1AOh
1FFh
FFh
7Fh
Banco O
1OFh
Banco 1
Banco 2
Banco 3
Figura 2.7. Organizacin de la RAM en los modelos PICl6F87314, con de 192 bytes tiles.
PCH
'
L-
PCL
12
PCLATH <4-O>
PCL ANTERIOR + x
PCLATH
t-- PCH
12
11
29
10
PCL
PCLATH <4:3>
DESDEEL
C D I G O OP
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
I
Figura 2.9.
BANCO O
BANCO 1
DIRECCiONAMIENTOINDIRECTO
BANCO 2
BANCO 3
SELECCIN
DE
BANCO
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
33
lSLead CERDlP
"JW"
&Lead PDlP
"p..
Pgiead PDiP
"'P"
32-Lead PLCC
"1"
P&Lead CEROiP
"IW"
14-lead PDIP
"P"
44-Leed PLCC
"L"
4O.Lead CERDlP
*IW"
18-Lead PDIP
40-Lead PDIP
" P
"'P"
6S1ead PLCC
"L"
8.4-CeadPCCC
"L"
68-le& CERQUAD
"CL"
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
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:
.
&&'&ehbjy exactm.<
.t
'
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 DE 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
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
REGISTRO PIE2
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
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
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
OTRAS 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
a
v
.
I
-- C7
--
RPACKI
100n
D2
77
,b
4x10K
-- C4
--1op
SW1
-
(F
+
R2
0 X/64
U3
a
.
I
10K
O
4)
VCC
0 X/128
o Xl32
R1
ZC
MCLR
VSS
RBO
RB1
-- RB2
RB3
18
17
16
OSCl 15
O S C ~ 14
VDD 13
RB7 - 12
RB6 11
RB5 - 10
RB4
PlCl6C54RC
Generador de
Funciones
Figura 3.16. Esquema electrnico del generador de funciones.
0X116
0X/8
0 X/4
0 X/2
oX
ENABLE
64
27p
07.:;68K,
I
T I OS
O & 2 7 ~
Oscilador de 32.768KHz
Figura 3.17. Esquema electrnico del oscilador.
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
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-
ENABLE O
3
2e
IN1
IN2
JPI
VDD
EN1
IN1
OUT1
GND
GND
OUT2
IN2
VDD
-r
VCC
o
4
IN4
OUT4
GND
GND
OUT3
IN3
EN2
14
l3
=IC8
100n
VCC O--
L293B
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 Rtambin
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.
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
Figura 4.4.
71
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?alde 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).
Figura 4.5.
73
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
RESET EXTERNO
HABlLlTAClON OST
PWRl
- - - - - m - -
1
i
1
OSCllADOR
INTERNO RC
HABILITACIN
PWRT
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 1s tensitn de alkmmtacidn (BQlrl).
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.
Figura 4.8.
77
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 WDT
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
PA ENTRADA
CONFIGURACIN DEL
PERRO GUARDIN
+*
ENCENDER LEDs
7SLEEP
Programa comentado
El programa, una vez adaptado al uso de estos nuevos recursos, queda de la siguiente manera:
81
82
*.
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.
Figura 4.11. Tarjeta de ampliacin Micro'PIC Trainer Plus con las partes ms significativas sealadas.
84
1."
2."
3."
4."
5."
6."
Teclado.
Canal serie RS-232.
Reloj/calendario.
Mddulo de visualizacin.
Mdulo conversor A DUDAC.
E/S paralelo.
El teclado
La conexin con el Micro'PIC Trainer de esta tarjeta de ampliacin se realiza a travs del conector
CNl, que proporciona todas las lneas del PIC, as como las de alimentacin.
El teclado matricial de 4x4 est conectado con las lneas de la Puerta B (RBO-RB7). El programa de control del teclado configurar RB7-RB4 como salidas para ir activando secuencialmente las filas una a una. Las lneas RB3-RBO se configuran como entradas desde las columnas del teclado y son ledas para detectar si hay alguna tecla pulsada.
En caso de trabajar con un PIC que utilice el bus I2C, se usa RC3 y RC4 para las seales SCL
y SDA, respectivamente, para lo cual hay que utilizar adecuadamente los jumpers J1 y 52.
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
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
Figura 5.3.
LOS TEMPORIZADORES
91
REGISTRO T 2 C O N
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
-- FOSCl4 RELOJ
-
. -----. -
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
GENERADOR
MICRO'PIC 110
DO D I D2 D3 D4 D5 D6 D7
LOS TEMPORIZADORES
95
INKML~ZACI~N
PA W D A
PBSALlDA
PC EMlZADA
COMFIWRAC~~N
TMRO, TMR1
m1 = a
TMRO = C2(196]
HABKITACK~I\I
$M:TMRO
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
REFERENCIA
REFERENCIA
RBD
SO
REO
$0
RE1
S1
RE1
51
RB2
52
RE2
52
RB3
53
RE3
53
RA4
RAO
S4
$4
INI!IN2
RA4
RAO
RAI
IN4AN3
RA~
IN41N3
RA2
RA3
EN1
RAZ
EN1
EN2
RA3
EN2
INlilN2
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
O1O1
O11O
O111
1 000
1 O01
1010
Modo comparacin que genera una interrupcin software (no afecta a RCyICCPx)
1011
Modo comparacin en el que se produce un disparo especial diferente para cada mdulo
llxx
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:
.
No cambia su estado p se pro&+? um interrupeidPrdPr
Al coincidir los valores del TMRl con los de la pareja de registros CCPRlH-L se pone a 1 el sealizador CCP 1IF.
El TMRl debe trabajar en modo temporizador o contador sncrono, nunca en modo asncrono.
Si el bit de permiso de interrupcin est a 1, cuando coinciden los valores mencionados se origina una peticin de interrupcin. En la Figura 6.3 se ofrece un esquema por bloques de la estructura general del mdulo CCPl en modo comparacin.
1
DISPARO SECUENCIAL (EN CCP2)
CCPRlH
CCPRlL
CCPl IF
r\nlS
nAA 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.
6.5.
109
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
Cuando el valor del TMR2 coincide con el del PR2 suceden tres acontecimientos:
1.O Se borra el TMR2.
ANCHURA IMPULSO
(DUWCYCLE)
Figura 6.5.
I
1
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 ,,
Figura 6.7. Tabla que recoge los registros que se manejan en la programacin del modo PWM.
111
-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 OI OW~O op
~
-e~n8yuo:,ymlsa anb ' O X ~ lap
L J O ~ Ala 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 ~ Ans v
-u alueiJ
-su03 eun lod sopeurwaiap uauay .1eluo3 ylaqap anb sos~ndso? -O/I 3 1 d ~ 0 ~ 3e1. 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
I z ~ uuaI 1o d~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 oeu eloye
r
s o u r e ~'633 solnpour sol e a~uayuxa3uo3vyoal e1 o i s l ~ey as 'olni/rde:, aisa ug
RESET
113
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
Programa comentado
El programa correspondiente al enunciado dado queda como sigue:
115
116
Figura 6.1 l .
117
Fi)tog~.c!/ltr
dc.1 prn,qr-trnzrrcrl c:jcc,~rc,ic/~.
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:
de activacindel motor.
para controlar el sentido de/ giro,
Organigrama
Los pasos a realizar tras configurar los registros adecuadamente se pueden ver como una secuencia
de acciones. En este caso, cada recuadro se corresponder con un bloque de instrucciones.
Se trata de comenzar con una velocidad nula en el motor e ir incrementndola en uno de los sentidos de giro. Esto se har mediante PWM, aumentando la anchura del pulso en un bucle hasta llegar al mximo. En esa velocidad, el motor girar un nmero dado de pasos. Dichos pasos sern pulsos que el encoder acoplado al motor introduce en la patita RCO/Tl CKI del TMRI.
GENERADOR
MICRO'PIC 110
ON IN1 IN2
MOTOR
MICRO'PIC 110
119
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 <<aproximacionessucesivas>>.
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."
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
Los bits ADCON0<7:6> sirven para seleccionar la frecuencia de reloj que se emplea en la conversin, con la siguiente asignacin:
FRECUENCIA
A D C S l :O
00
FosJ 2
O1
Focd8
IO
FosJ32
11
Se designa como TADel tiempo que dura la conversin de cada bit y en el caso de trabajar con valores
se selecciona por software
digitales de 10 bits, se requiere un tiempo mnimo de 12.TAD.El valor de TAD
mediante estos bits (ADCS1 :ADCSO) y en los PIC16F87x nunca debe ser menor de 1,6 microsegundos.
A D C S l :O
TAD
o0
2 *Tctsc
O1
8 *Tose
1O
32*Tosc
11
EL CONVERSOR A/D
FRECUENCIA DE TRABAJO
SELECCI~N
T~~
1,25 MHz
ADCSI :ADCSO
20 MHz
5 MHz
2* T m
00
1 00 qs
400 qs
1,6 ps
6 P5
8*To,c
O1
400 q s
1,6 qh
6,4 ps
24 ps
TAD
333,33 kHz
32*Tuv
10
1,6 ps
6,4 ps
2,6 p5
96 ps
RC
11
2-6 ps
2-6 ps
2-6 ps
2-6 ps
Figura 7.2.
131
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
CH2-0
O00
Canal O (RAOIANO)
001
Canal 1 ( R A l / A N l )
01 O
Canal 2 (RA2/AN2)
O11
Canal 3 (RA3/AN3)
1 00
Canal 4 (RA5/AN4)
1 01
11 O
111
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
ADFM = 1
ADRESH
133
ADFM = O
ADRESL
JUSTIFICACI~NA LA DERECHA
ADRESH
ADRESL
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
SELECCIONADO
135
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
DO D I D2 D3 D4 D5 D6 D7
.
..
CRISTAL 4 Mhz
lI
V,+
SENSOR
MICRO'PIC 110
l II
REL MOTOR
MICRO'PIC 110
9 10 11 12
13 14
EL CONVERSOR A/D
139
9
ACTIVAR CONVERSOR
I
ESPERAR 1 SG
ViSUALlZAR RESULTADO
EN LCD
I
APAGAR VENTILADOR
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
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.
<
.
7
4 ,
<
da
'
;"
M ~ D U L ODE COMU~~;JICACI~N'
, SERIE SNCRONA:
MSSP
'
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.
SALIDA DE
BITS DE DATOS
MSB
ENTRADA DE
BITS 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.
SDO
SDI
SCK
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
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
SCL
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.
.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
161
MICROCONTROLADOR B
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.
RESISTENCIAS DE PULL-UP
DE DATOS SER
SDA (L~NEA
SCL(L~NEA
DE RELOJ)
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.
SDA
I
I
---m -
I
- - - m
SCL
L~NEA
DE DATOS ESTABLE:
DATO VLIDO
164
i""
I
CONDICIN DE FIN
CONDICIN DE INICIO
SALIDA DE DATOS
DEL TRAE.JSMISOR
SALID^ DE DATOS
DEL PECEPTOR
'
1
I
I
I
m
I
I
I
I
I
I
I
PULSO DE CLOCK
PARA EL BIT ACK
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.
--
SALIDA DE DATOS
DEL TRA$dSMISOR
SALID4 DE DATOS
DEL RECEPTOR
SCL (C~OCK)DESDE
EL'MASTER
*
1
I
1
I
PULSO DE CLOCK
PARA EL BIT ACK
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 DE ESPERA
CLK 1
CLK
SCL
167
w
W
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
INICIO
DIRECCI~N
RW
I
+-
+*-
ACK
DATO
ACK
DATO
'
. - m
ACK
FIN
ESCRITURA
DATOS TRANSFERIDOS
(n BYTES ACK)
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
DATOS TRANSFERIDOS
(n BKES ACK)
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.
Los dispositivos 12C cuyos niveles lgicos de entrada estn en relacin a VDD.deben alimentarse 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
SDA
SCL
SCL
172
SDA
SDA
SCL
SCL
Figura 8.21.
SDA
SDA
SCL
SCL
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.
TBUF
THDSTA
TLOW
4,7
PS
THICH
PS
TSU,STA
4,7
PS
THDDAT
PS
TCUDAT
TR
PS
TF
300
ns
Tsu STO
173
4,7
4
PS
250
4,7
PS
PS
En los PIC16F87x, el bus 12C est implementado en silicio tanto en el modo maestro (master) como en el esclavo (slave). Como en general es el modo maestro el ms usado, todos los ejercicios los
hemos realizado de esta forma y las explicaciones tambin se refieren a dicho modo.
Recurdese que en modo maestro es el dispositivo, en este caso el PIC16F87x, el que inicia y finaliza la transferencia y genera los impulsos de reloj. Tambin selecciona el esclavo al que se destina la informacin. (Figura 8.24.)
Como ya se ha comentado al hablar del bus I2C, en general, cada transferencia comienza con la
condicin de inicio (start) y termina con la condicin de parada (stop). Ambas condiciones las genera el maestro, y la primera consiste en un flanco descendente en SDA mientras SCL tiene nivel
alto. La condicin de parada es un flanco ascendente mientras SCL tiene nivel alto.
Los datos que se colocan sobre la lnea SDA son bytes de 8 bits, que comienzan con el MSB y
terminan con el bit de menos peso, al cual sigue en el noveno bit la condicin de Reconocimiento
(ACK). Para este caso, el transmisor pone SDA = 1, mientras que el receptor pone SDA = O en dicho impulso de reloj, prevaleciendo sobre la lnea el nivel bajo.
El primer byte que enva el maestro tras la condicin de inicio contiene la direccin del esclavo con el que se desea realizar la comunicacin. El cdigo O se usa para realizar una llamada general sobre todos los esclavos. La direccin en realidad consta de 7 bits, estando destinado el octavo a indicar la operacin a realizar (R/W#: Lectura/Escritura#). Tras este byte inicial
de direccionamiento se manda otro byte que especifica las caractersticas de la operacin a realizar.
Para activar el bus 12C hay que poner el bit SSPEN = 1 que es el bit 5 del registro SSPCON
(SSPCON<S>). A partir de ese momento las patitas SDA y SCL quedan configuradas para soportar el protocolo I2C. Previamente dichas patitas de la Puerta C (RC31SCL) y RC4JSDA) han de estar configuradas como entradas mediante la escritura de los bits correspondientes del registro
TRISC.
Como se aprecia en la Figura 8.24, hay seis registros para controlar el bus I2C.
174
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 ~ I DAE ~ L Q ;,J
0000
Reloj = FosJ4
O001
Reloj = FosJl6
001O
Reloj = Fo~d61
O011
1 O00
Reloj = (SSPADD + 1 )
Fod4
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
SDA
ACKEN BORRADO
POR HARDWARE
TBRG
TBRG
DO
SCL
iI
1
I
SSPlF
SE ACTNA SSPlF AL
DE IA RECEPCI~N
DESACTNADO
POR SOFTWARE
t
SE ACTIVA SSPlF AL FINAL DE
LA SECUENCIA DE RECONOCIMIENTO
DESACTNADO
POR 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.)
AL ESCRIBIR SSPCON2
SE ACTIVA PEN
FLANCO DESCENDENTE
DEL 9.O IMPULSO
SDA
1-
1 - - 1
ACKK
1.
TBRG
'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 / ~A3'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 . zag7
~ 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 -32109.
ueuo!3unj anb solzylysodsrp A
31d un allua uo!3e3!unwo3 e1 ezgeal as o m p allsanur anb oldurap 011~3uasun 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~sun ua uezqin as dsspq olnpoux la our
-03 ~ ~ vlaso lnu e ~-uor3e3~unwo3
ap sosln3al so1 owrxyur [e ope!3uaod ey as ' x ~ g d 9 31d
1 sol ug
182
ln4148
RESET
i(
PIC16F873
L~NEA
DE DATOS
DISPOSITIVO 12C
MICRO'PIC TRAINER PLUS
PA ENTRADA
PB WlDA
RC3:RC4 ENTRADA
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
BUCLE
clnvdt
cal1
movwf
goto
R-BYTE
PORTE3
BUCLE
185
END
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
+rt-
RTI -433
8
I
:
8
Mdulo
Transmisor
1Usuario 1
Control
I
I
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
PIC
Mdulo
Receptor
4-
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.
BIT INICIO
BIT 8
BIT 1
BIT PARADA
DATO
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.
i""'"
CREN
MSB
REGISTRO DESPLAZAMIENTORSR
P"""
r"""
n
OERR
FERR
FlFO
BUS DE DATOS
xi\i.
i\i I r . u i r i i u v i \ , i w ~ u i
i v i \
LU L I
L \ I~L W
VL//
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
CABLE PARA
COMUNICACION SERIE
xD
TxD
TxD
CIRCUITER~A,PARA
COMUNICACION SERlE
MICRO'PIC 110
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
EL U ~ N 1
K: 1 KNlV 3lV113uK/KkLkY 1 U K SIN LKUN U/AY LNCKUNU
YbKlL:
5'
LEER DATO
SACAR DATO
P
REmANSMITlR DATO
u
VOLVER
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.
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.
..
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 qw 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
CRISTAL
10 MHz
b;
PLL
40 MHz
I-
I - 1 - 1 - 1 - 1 I
Figura 10.3. Un circuito PLL optativo consigue multiplicar por 4 la frecuencia de entrada del cristal.
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.
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.
v
PUERTA SERIE
S~NCRONA
MAESTRA
213
214
RAS/AN4/SS#/LVDIN
' , ,4 x,P,L LI w;
-1iii-iii.
' VOLTAJE DE REFERENCIA
- -
G;E&N;
DE PRECISIN
I
ii i
i i
MCLR#
V
,,
Vsr
215
2 Mbytes
216
1 1
I I
D I R E C C I ~ NDENTRO
DELBANCO
1
I
O000
BANCO O
BANCO
0001
BANCO 1
XXXX
lll?
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).
217
8 r
DIRECCIONES POSIBLES
DENTRO DE LOS BANCOS
O000
BANCO O
0001
BANCO 1
XXXX
1111
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
BANCO 1
2."PALABRA
DlRECClONAMlENTODE
OPERANDO DESTINO
DlRECClONAMlENTODE
OPERANDO FUENTE
BANCO O
XXXX
1111
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 DE TABLA
G
ESCRITURA DE 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
ECCP =
/WN
EMA = EXbprptCd Memary Mdmcing
t2c= m
-
cmn
1CD = i&MDzcwg
LVD=LO(~V~MBCW~
M = - B W m R e M
PtVD = Prcgrmrn* LwLuctcge LMfxmt'
PSP=Parafkl C I M M
W M =Pulse W& dtfi*
SLAC= aqpe A/D m r f m up to la MS
SMB = S p
W=%a
U W =U
VHt = vuiiage Reemw
WT = Wa%cb&g Time
@cWmmRmm/Transrri~ttec
LIBROS
230
aMICROSYSTEMS ENGINEERINGB
Gral. Concha, 39-48012 BILBAO (Espaa), Tel: 94-4223263
E-mail: msyseng@arrakis.es
INTERNET
MICROCHIP:
MICROSYSTEMS ENGINEERING:
PARALLAX, INC:
ITU TECHNOLOGIES:
SAGITRON:
http://www.microchip.com
http://www.arrakis.es/-msyseng
http://www.parallaxinc.com
http://www.itutech.com
http://www.sagitron.es
ADC, 86
ADCONI, 133
ADCS<l :O>, 131
ADRESL, 133
ADRESH, 133
Arbitraje, 166, 167
Bajo consumo, 74
Batera, 150
Baudios, 193
BGRH, 193
BOR#, 74
Bus I2C, 160, 173
Captura modo, 106, 108
CCP, 7, 105, 112
CCP1,108,110
CCPxCON, 105
Certamen, 127
Comparacin modo, 107,
108
Compilador C, 209
Configuracin, 150
Conversor A/D, 8, 129, 132,
136
CPO, 52
CP1,52
DAC, 86
DATAQUEST, 3
Direccionamiento, 169
EEPROM, 53
Emisor R.F., 186
Encapsulados, 33
Encoder, 66
E/S paralelo, 86
Familia PIC, 223
FLASH, 25,50
Fuente alimentacin, 103
FUTABA, 125
Gamas, 5
Generador de funciones, 63
HARVARD, 22
ICSP-LV, 10
IRP, 44
ITU, 230
I2C, 159, 177
LCD, 94,139,145
LCD-CON, 145
LCD-CON2,146
LCD Interface, 151
LDR, 18
LM35,19
Maestro, 149
MCLR#, 79
Microbtica, 124, 229
MICROCHIP, 3,229
MICRO'PIC IO,60,61,117,
137
MICRO'PIC TRAINER, 15,
38,60,117
MICRO'PIC TRAINER
PLUS, 83,85
MICROSYSTEMS
ENGINEEERING, 9,229,
230
Modo captura, 106
Modo comparacin, 107,
108
Modulacin anchura
impulsos, 109
Motores DC, 40,65
Motores PAP, 41
MPLAB-ICD, 9
MSETX, 186
MSERX, 186
MSSP, 153, 186
MSx84,100,102,125
Opto-triac, 65
Oscilador, 63
Palabra configuracin, 72
Palabras identificacin, 73
PARALLAX, 230
PCL, 29
PCLATH, 29
Perodo, 109
Perro Guardin, 77
PICBOT-2, 126
PIC16F87X, 7,21,31
PIC 16F84, 11
PIC 16F874/7,24
PIC18CXXX, 211
PIC18C2X2,211
PIC18C4X2,211
PICBUS, 62,84
Piezoelctrico, 63
POP, 212
POR, 44
Puerta A, 67
Puerta B, 69
Puerta C, 7 1
Puerta D, 71
Puerta E, 72
Puertas E/S, 67
PUSH, 212
PWM, 109,110
PWRT, 75
RAM, 26
Receptor asncrono, 198
Receptor R.F., 186
Registro
ADCONO, 130
ADCONI, 130
ESTADO, 43
EECON1,51
INTCON, 47
OPCIONES, 45
PIE1,47,48
PIE2,48,49
PIRI, 48,49
PIR2,48,49
RCSTA, 199
SSPBUF, 154
SSPCON, 158,175
SSPCON2,176
SSPSR, 154
SSPSTAT, 157,175
TXSTA, 197
Reinicializacin, 74,76
Rels, 65
Reloj calendario, 86, 149
Repertorio instrucciones, 34,
220
Reposo modo, 77,82
Reset, 74,76
Revistas, 229
Robots, 127
RS232-C, 149
SAGITRON, 229
SCK, 153
SCL, 162
SDA, 162
Sensores, 103
Sensores analgicos, 64
Sealizadores
C, 44
z,44
PD#, 44,74
TO#, 44,74
Serie sncrona, 153
Servomotor, 125
SPI, 153, 155, 156
Teclado, 84
Temporizador, 87,93
Terminal programa, 205
TMRI, 88,90,93,106
TMR2,90,92,109
Transmisor asncrono, 195
TUNABAL, 3
TlCON, 89
T2CON, 91
UNIVERSIDAD DE
DEUSTO, 127
USART, 19 1,201
Visualizacin, 86
WCOL, 176
WDT, 77
WRT, 52
Zcalos, 101
ZOC87X, 9,37
Segul&cr
, ..
parte: PZC 16F87x
Angulo Martnez