You are on page 1of 260

1

Captulo 1
Telecontrol y microcontroladores
1.1 Introduccin
El rpido avance de las telecomunicaciones en los ltimos aos ha supuesto una
autntica revolucin en nuestras vidas. En los hogares nadie se plantea levantarse para
cambiar el canal de la televisin, encender el equipo de msica o el aparato de aire
acondicionado. El mando a distancia al igual que el telfono mvil se han convertido en
elementos tan cotidianos que no se les da apenas importancia. La posibilidad de
mantener una conexin permanente a internet por un precio mdico es una realidad ya
presente en muchos hogares. Todos estos avances hacen que cada vez se demanden
nuevos dispositivos de telecontrol que puedan ser activados desde cualquier lugar y que
permitan realizar acciones tales como encender o apagar la calefaccin, o encender el
riego del jardn.
El trmino telecontrol, contiene el prefijo tele que proviene del griego cuyo
significado es lejos. Por tanto etimolgicamente cuando hablamos de telecontrol nos
estamos refiriendo a controlar algo desde lejos o de forma remota. Esto que parece tan
trivial y sencillo hoy en da, ha sido y es de una dificultad tecnolgica importante.
Debemos notar que las primeras aplicaciones de telecontrol aparecen en el mbito
industrial durante la dcada de los sesenta, tan slo hace unos cuarenta aos.
El control a distancia de las mquinas ha sido una necesidad que ha ido apareciendo con
la evolucin de la industria. Una breve resea desde sus orgenes nos permitir tomar
conciencia del esfuerzo cientfico y tecnolgico que ha supuesto llegar al estado actual.
Las industrias, en sus inicios, eran grandes talleres con algunos ingenios mecnicos que
permitan elevar la produccin respecto del mtodo tradicional y que debido a su
complejidad eran manejadas por maestros artesanos con un importante grado de
conocimiento tcnico. La mecanizacin consisti en descomponer el trabajo artesanal,
necesitado de bastantes conocimientos, en tareas simples y repetitivas que eran
ejecutadas por mquinas cada vez ms evolucionadas y que, a su vez, requeran una
intervencin cada vez menor del hombre en la produccin. A medida que aumentaba la
2
automatizacin fueron apareciendo productos cada vez ms elaborados cuyos procesos
de fabricacin eran cada vez ms complejos. De esta forma nace la necesidad de un
centro de mando de todo el proceso que permitiese una mejor coordinacin de los
diferentes elementos que lo componen.
La industria nace con el descubrimiento del vapor como medio para la transformacin
de la energa calorfica en mecnica. Las tcnicas en valvulera y calderera fueron las
primeras en despegar y an hoy en da son muchas las industrias que utilizan el vapor
en alguna fase del proceso de fabricacin. Los primeros cuadros de mandos permitan la
operacin de los diferentes elementos mediante accionamientos mecnicos como la
apertura y el cierre manual de vlvulas, movimiento de palancas, etc.
El siguiente paso en la automatizacin y en el perfeccionamiento de los procesos fue la
regulacin. Segn fue aumentando la complejidad de los productos (textiles, qumicos,
metalrgicos, etc.) y segn fueron apareciendo maquinas cada vez ms grandes,
empezaron a ser necesarios sistemas de regulacin continua.
La regulacin permiti la mejora de los procesos industriales, obteniendo mayores
rendimientos mediante la intervencin coordinada de grandes mquinas con mayor
capacidad de produccin. El aumento del tamao de stas las converta en grandes
devoradoras de energa que movan grandes cantidades de materias primas en el proceso
de fabricacin. Las primeras regulaciones estaban basadas en la neumtica. La accin de
la presin del aire a travs de los conductos y la existencia de vlvulas de doble accin,
actuadores y otros dispositivos permita la centralizacin del control.
La llegada de los dispositivos elctricos y electromecnicos supuso un nuevo empujn
hacia la centralizacin del control de las industrias, ya que permitan transmitir las
seales elctricas y accionar los actuadores a mayor distancia y con un menor coste.
El hecho de que la unidad productiva se concentrase en un edificio o fbrica ha hecho
que las necesidades de telecontrol se limiten a la centralizacin de los controles de las
diferentes mquinas que intervienen en el proceso. En general, en las grandes industrias
una parada sbita (tambin conocida como disparo) suele tener graves consecuencias y
en muchas ocasiones importantes prdidas econmicas hasta que se normaliza de nuevo
la produccin. Por este motivo, los industriales han sido tradicionalmente bastante
reacios a introducir cambios que no ofreciesen una clara ventaja.
3
Las primeras industrias en demandar nuevas necesidades de telecontrol fueron aqullas
cuya produccin se hallaba distribuida geogrficamente. Un ejemplo de ellas son las
industrias petroleras que transportaban el combustible por medio de oleoductos o
gasoductos que discurran por extensas zonas de terreno con estaciones de bombeo o
compresin distribuidas por todo el recorrido.
Fue en la dcada de los sesenta cuando stas empezaron a tender lneas de
telecomunicacin paralelas a los conductos que permitieron la centralizacin del control
de las subestaciones de bombeo y compresin por medio del telecontrol.
Uno de los problemas omnipresentes en este proceso ha sido la fiabilidad. Las
tecnologas de telecontrol en sus inicios slo tenan justificacin en un nmero muy
reducido de aplicaciones debido al elevado coste de las mismas y la escasa fiabilidad
que ofrecan.
El enorme avance de la tecnologa electrnica y lo ajustado de los precios hace que hoy
podamos disponer de equipos para el control y telecontrol de dispositivos y mquinas,
tanto de la gama profesional como de la domstica, a muy bajo precio.
Dejando a un lado los equipos de la gama profesional en los que se busca una alta
fiabilidad y por tanto el coste es ms elevado, es posible encontrar una diversidad de
dispositivos en el mercado de consumo destinados al telecontrol dentro del mbito
domstico, como pueden ser mandos para puertas de garaje, alarmas de intrusin,
programadores de riego, dispositivos para la activacin telefnica de aparatos como la
calefaccin, etc.
La forma de vida actual obliga a una continua evolucin de todo aquello que nos rodea,
evolucin a la que no escapan nuestros hogares; desde la bsqueda de nuevos estilos de
diseo, tcnicas de edificacin y nuevos materiales hasta la incorporacin de
tecnologas que gestionen el uso de la energa, aumenten el confort y la seguridad y que
permitan un total control desde el interior o el exterior de la casa.
Las necesidades de seguridad, junto con las de cobijo, fueron el origen de la aparicin
del concepto de vivienda. No obstante, las necesidades actuales son muy diferentes de
las de hace cincuenta aos. La vivienda es, en la mayora de los casos, la principal
inversin que realiza una familia a lo largo de su vida y las caractersticas del entorno
social en el que nos movemos hacen que nuestra preocupacin principal se centre
actualmente en posibles agresiones exteriores, robo, incendio, intrusin, fugas de agua,
4
etc. Las medidas tradicionales de seguridad como las puertas blindadas, rejas en las
ventanas, sistemas de alarma obsoletos, perros guardianes, no dan ya respuesta a las
necesidades de seguridad actuales.
En el entorno domstico existen una multitud de aplicaciones y servicios destinados a
mejorar nuestra seguridad y confort que han dado lugar a un rea tecnolgica que se
denomina domtica.
A continuacin se detallan algunos de los servicios que pueden ser implementados en
una vivienda.
1.1.1 Servicios domticos
1.1.1.1 Gestin del sistema de calefaccin y refrigeracin
El sistema de gestin, a nivel central, permitir la programacin diaria y semanal, as
como las consignas de regulacin de la temperatura de cada una de las zonas; estas
ltimas pueden ajustarse de modo individual desde cada uno de los termostatos de
ambiente de que disponen. Se efectuar la optimizacin, dependencia a dependencia, en
funcin de la ocupacin, de las temperaturas interior y exterior y de las condiciones
trmicas de la edificacin.
1.1.1.2 Estadsticas de consumo
El sistema contabiliza y permite conocer el consumo de los sistemas de calefaccin,
refrigeracin, ACS, agua y telfono, empleando para ello contadores con salida de
impulsos. La presentacin de los consumos es de tipo totalizador o parcial, segn
intervalos de tiempo y pueden realizarse grficas estadsticas.
1.1.1.3 Control de las tomas elctricas
Se realiza el control sobre diferentes tomas elctricas, lo que permite gestionar el
consumo energtico de electrodomsticos conectndolos a las horas ms propicias de
consumo en funcin de las tarifas elctricas. Tambin puede gestionar funciones de
conexin y desconexin de dispositivos para realizar una multitud de funciones tales
como despertador, desconexin de enchufes en las zonas de juego de los nios,
simulacin de presencia, etc.
5
1.1.1.4 Control de las persianas y toldos
Las motorizaciones de toldos y persianas se controlan mediante pulsadores locales, de
planta y a travs del sistema de gestin centralizado. Permite la programacin horaria y
semanal por el usuario, actuando en funcin de datos captados como son la insolacin,
las temperaturas interior y exterior, la pluviometra y la velocidad del viento.
1.1.1.5 Control de la iluminacin exterior
Puede realizarse un control sobre diferentes zonas de alumbrado exterior en funcin de
un programa horario, semanal, mensual y crepuscular.
1.1.1.6 Control del riego en jardn y jardineras
Puede realizarse una programacin horaria y semanal secuenciada sobre diferentes
zonas de jardn y jardineras, en funcin de la humedad del terreno, la insolacin y la
pluviometra, condicionando el funcionamiento de los aspersores a la no presencia de
personas en el jardn, para evitar sobresaltos derivados de la conexin del riego.
1.1.1.7 Gestin de la piscina
Al margen de los sistemas habituales de programacin, segn la tarifa elctrica, de la
puesta en marcha de la bomba para limpieza de la piscina, se incluye el control de la
limpieza de los filtros y la deteccin del porcentaje de cloro en el agua, con la
correccin del mismo.
1.1.1.8 Gestin de la alarma antiintrusin
La alarma antiintrusin se gestiona segn dos esquemas de trabajo: ausencia o presencia
de los usuarios en el interior de la vivienda.
1.1.1.9 Control de accesos
Se realiza el control de accesos mediante teclado codificador y/o lector de tarjetas
magnticas o inteligentes, con actuacin sobre la puerta principal de acceso. Es posible
un programa de restriccin de horarios de uso y cdigo de seguridad antiatraco, con
apertura de la puerta y disparo de alarma silenciosa. El acceso al garaje se controla
mediante sistema de radio, con codificacin ternaria, que inicia la temporizacin de
entrada del sistema de alarma, al tiempo que realiza la apertura de la puerta basculante.
6
1.1.1.10 Gestin de la alarma mdica/pnico
Gestin de la alarma mdica/pnico a partir de un medalln emisor por radio y un
receptor especfico conectado al bus de comunicaciones. Es posible la seleccin
mediante programa del tipo de actuacin tras una alarma: transmisor telefnico, sirena,
etc.
1.1.1.11 Gestin de la alarma de incendio
Se realiza la deteccin infrarroja/termovelocimtrica de incendios en los puntos de
mayor riesgo: garaje, cocina, saln comedor, dormitorios, etc. Tras la deteccin de
incendio se desencadena una actuacin dirigida a advertir a las personas presentes en la
vivienda mediante la sealizacin interior y la actuacin de la sirena, seguidas de
llamadas de aviso a los nmeros telefnicos de emergencia.
1.1.1.12 Gestin de la alarma de inundacin
Si se detecta agua en el pavimento de las zonas de riesgo: cuartos de bao, cocina y
lavadero, se acciona la electrovlvula de corte de suministro de agua a la vivienda y se
inician las llamadas de aviso a los nmeros de telfono prefijados.
1.1.1.13 Gestin de la alarma de monxido de carbono
Esta alarma detecta el grado de toxicidad por concentracin de monxido de carbono en
el garaje. Tras la deteccin de una concentracin peligrosa de gas txico se produce la
puesta en marcha del sistema de ventilacin del garaje, as como la actuacin de la
sealizacin interior de la vivienda y la sirena y se inician las llamadas de aviso a los
nmeros de telfono prefijados.
1.1.1.14 Supervisin de la temperatura del congelador
Si se detecta la elevacin de la temperatura del congelador por encima del umbral
prefijado se activa la sealizacin interior de la vivienda y el transmisor telefnico.
1.1.1.15 Transmisor telefnico
Hay un sistema de transmisin telefnica que puede realizar llamadas automticas y
secuenciales a diferentes nmeros de abonados particulares y a los servicios de
emergencia o compaa de seguridad. Tras efectuar la llamada de aviso, existe la
posibilidad de realizar la escucha del local bajo proteccin.
7
1.1.1.16 Distribucin de audio
La distribucin del sistema de audio se realiza sobre diferentes zonas, para sonorizacin
ambiental, con mando local sobre el equipo de msica (marcha/paro) y control
individual del volumen en la dependencia, admitiendo posibilidad de seleccin entre
varios canales. Puede emplearse el sistema de sonorizacin para la difusin de mensajes
vocales de alarma que adviertan a los usuarios de las posibles eventualidades e
incidencias existentes en la instalacin.
1.1.2 Las redes de comunicaciones
Para implantar cualquiera de los sistemas anteriormente descritos en una vivienda es
necesaria una planificacin previa de las redes tanto elctrica como de comunicaciones
necesarias. Durante la construccin de una vivienda se puede prever la instalacin de las
conducciones y redes necesarias para una instalacin domtica sin que ello suponga un
sobreprecio muy grande con respecto a una instalacin convencional. El problema surge
cuando se quiere hacer la instalacin en una vivienda ya construida debido a la
necesidad de llevar las conexiones de red a los diferentes puntos de la instalacin, labor
sta que supone la realizacin de las canalizaciones necesarias y que suele ser bastante
costoso o sencillamente inviable porque supone hacer obras.
En una instalacin domtica, siempre se deber disponer de una serie de elementos
distribuidos a lo largo de sta, que servirn para recoger informacin sobre el estado de
aquellas variables que intervienen en los procesos de regulacin y control; a estos
elementos se les denomina captadores, su misin es convertir las variables fsicas o
elctricas que recogen en seales elctricas comprensibles por el sistema. De la misma
manera, siempre que se deba efectuar una operacin de gobierno sobre un elemento bajo
control, se deber disponer de actuadores, normalmente elementos electromecnicos,
adecuados a la accin a realizar. Toda la informacin que deba transitar entre los
captadores y el centro de gestin que rige la instalacin y entre ste y los actuadores
utilizar para su transporte un soporte de comunicaciones adecuado al tipo de
informacin a transmitir.
A la hora de resolver la comunicacin entre dispositivos se pueden dar varias
situaciones:
8
Varios dispositivos con canales dedicados: tan slo hay que
acceder al canal del dispositivo en cuestin para resolver la
comunicacin.
Varios dispositivos receptores y un nico transmisor
compartiendo un mismo canal: la comunicacin se puede resolver
por difusin asignando un identificador a cada receptor para
discriminar a quin va dirigida la orden.
Varios transmisores compartiendo un mismo canal: en este caso
pueden producirse colisiones que habr que resolver. Una forma
sencilla de resolver la contienda es realizando cada transmisin bajo
demanda del centro de control. El principal inconveniente estriba en
que hay que aumentar la complejidad del captador para que pueda
recibir las rdenes del centro de control. Si la recepcin de los datos
no es un factor crtico en el tiempo, como sucede en la mayora de las
aplicaciones, simplemente se tomarn medidas para reducir la
probabilidad de colisin y en caso de que se produzca se descartan
las medidas afectadas.
Para cada captador y actuador habr que elegir la forma de establecer el canal de
comunicacin con el centro de control. Algunos de los posibles medios de
comunicacin a nuestro alcance son:
1.1.2.1 Comunicacin almbrica
1.1.2.1.1 Cableado especfico
Esta solucin goza de una gran fiabilidad y minimiza la complejidad de cada
dispositivo. Resulta idnea en el caso de nueva construccin pero es bastante costosa e
incmoda en los dems casos.
1.1.2.1.2 Utilizacin de la red elctrica
Aprovecha la red elctrica existente en todas las viviendas y locales para utilizarla como
red de comunicaciones entre los distintos dispositivos. Los diferentes sistemas
disponibles utilizan un mdem para la red elctrica. No existe un estndar nico en el
mercado pudindose optar entre diferentes sistemas propietarios como son Cebus,
9
Lontalk, X10, etc. Al no tratarse de un mercado maduro es difcil decantarse por un
sistema u otro.
1.1.2.2 Comunicacin inalmbrica
1.1.2.2.1 Transmisin por radio
Es una solucin interesante para multitud de aplicaciones. Existen en el mercado
transceptores digitales de onda media a precios muy asequibles y muy fciles de operar.
El principal problema que presentan es que todos los dispositivos acceden al medio
radioelctrico por contienda y se debe resolver el problema de las colisiones en el caso
de que varios transmisores operen al mismo tiempo.
1.1.2.2.2 Transmisin ptica por infrarrojos
Es la solucin ms utilizada en la actualidad en el entorno domstico. Muchos de los
electrodomsticos de uso comn disponen de un mando a distancia por infrarrojos, lo
que puede aprovecharse para su control por el sistema con slo incorporar el transmisor
correspondiente. Los principales inconvenientes residen en la necesidad de que exista
visin directa entre el transmisor y el receptor y en el acceso al medio por contienda
cuando existen varios transmisores.
1.1.3 Sistemas basados en un microcontrolador
La innovacin tecnolgica pone a nuestro alcance la capacidad de poner en prctica, de
un modo sencillo, una multitud de aplicaciones que hasta hace poco eran impensables
debido a su complejidad o elevado coste. Para que una aplicacin desarrollada con un
sistema basado en un microprocesador pueda interactuar con el mundo real necesita una
interfaz adecuada al propsito de la aplicacin que se desarrolla. Si, por ejemplo, se est
desarrollando un sistema para el control de un ascensor, ser necesario que reciba las
diferentes seales como son los detectores de puerta cerrada, las clulas de presencia en
el paso de puertas, las botoneras de llamada, etc. y deber ser capaz de accionar los
motores de apertura y cierre de puertas as como del propio ascensor.
1.1.3.1 El microcontrolador Motorola MC68331
El MC68331 es un microprocesador de 32 bits que combina una alta capacidad en el
tratamiento de datos con un potente subsistema de perifricos. El microcontrolador se
compone de los cuatro mdulos siguientes:
10
Unidad Central de Proceso (CPU 32).
Mdulo de Integracin del Sistema (SIM).
Temporizador de Propsito General (GPT).
Mdulo de Comunicacin Serie (QSM).
Los principales dispositivos, puertos y perifricos que integra son:
Generador de interrupciones peridicas.
Sistema de supervisin de bloqueos que genera un reset cuando se
produce un bloqueo del sistema (Software Watchdog Monitor).
Dos puertos E y F de entradas/salidas configurables.
12 seales programables para seleccin de dispositivos (chip-select),
7 de las cuales pueden configurarse como salidas de propsito
general bajo la denominacin de puerto C.
Modo de Depuracin en Segundo Plano (BDM), que permite que
otro sistema tome el control del microcontrolador.
2 interfaces de comunicacin serie (QSM), una de propsito general
y otra destinada a perifricos.
Unidad de captura/comparacin de seales que contiene tres canales
de captura, cuatro de comparacin y un octavo canal que puede
configurarse indistintamente de un modo u otro.
Un acumulador de impulsos de 8 bits.
2 moduladores de ancho de pulso (PWM).
Cualquier sistema basado en un microprocesador presenta la enorme ventaja de tratarse
de una herramienta de propsito general. Las utilidades de que dispone el MC68331
unidas a la potencia del procesador hacen que pueda implementarse una multitud de
aplicaciones sin apenas necesidad de circuitera externa simplificando an ms el
desarrollo de los prototipos. A pesar de ello, es necesario disponer de una serie de
interfaces que permitan la captacin de los datos que han de ser procesados.
11
1.1.4 Objetivos
Los objetivos que se persiguen son el desarrollo de prcticas guiadas para que aquellos
alumnos que, con una especial motivacin, deseen realizar su propio sistema digital
basado en el microcontrolador Motorola 68331 dispongan de algunas interfaces ya
resueltas de modo que no supongan una gran dificultad aadida al trabajo acadmico.
El primer objetivo del presente proyecto ha sido disponer del sistema basado en el
microcontrolador totalmente operativo. Despus se han ido incorporando diferentes
interfaces y dispositivos para cubrir un abanico de aplicaciones.
Uno de los interfaces que ha sido objeto de inters ha sido el Mdem para Red
Elctrica. Despus de realizar algunos estudios y desarrollos, no ha sido posible
implementarlo por no encontrar en el mercado unidades sueltas de algunos de los
componentes. Slo era posible conseguirlos por encargo, para lo cual se exiga un
pedido mnimo de 25 o 50 unidades, segn el componente.
Se ha optado por incluir este estudio previo en un apndice para que pueda ser utilizado
como punto de partida por cualquier alumno en un futuro.
Los interfaces contenidos en la presente memoria son:
DISPLAY LCD.
TECLADO MATRICIAL.
REPRODUCTOR DE MENSAJES.
TRANSCEPTOR RADIO.
TRANSCEPTOR POR INFRARROJOS.
INTERFAZ TELEFNICO.
12
Captulo 2
Montaje y descripcin de la placa
entrenadora basada en el
microcontrolador Motorola 68331
2.1 Antecedentes
Durante el curso 1999/2000, el Departamento de Ingeniera Electrnica pone en marcha
una experiencia docente relacionada con la asignatura de Laboratorio de Sistemas
Electrnicos Digitales que consiste en facilitar a aquellos alumnos que lo deseen la
posibilidad de adquirir a un prototipo de placa entrenadora basada en el
Microcontrolador Motorola 68331. Con esta iniciativa se da la oportunidad de proponer
el desarrollo de una prctica especial a los alumnos que, con una especial motivacin,
desean hacer algo diferente.
La placa entrenadora de bajo coste permite trasladar el laboratorio a la casa del alumno
disponiendo as de una potente herramienta con la que desarrollar de forma autnoma
multitud de aplicaciones.
La placa entrenadora, de fibra de vidrio, con unas dimensiones de 205 x 110 mm. tiene
soldado el microcontrolador en su parte central. El MC68331 es de aspecto cuadrado
disponiendo de 33 terminales en cada lado para sumar un total de 132. Alrededor de ste
se encuentran perforados 136 agujeros que conectan con los 132 terminales del Micro.
El resto de la placa tambin se encuentra perforada para poder insertar terminales de
wire-wrapping.
El montaje de la placa entrenadora es una tarea bastante laboriosa. Para el ensamblaje
de todos los subsistemas necesarios para el funcionamiento del entrenador se siguieron
las instrucciones facilitadas por el fabricante Motorola (An Introduccin to the
MC68332, by Sharon Darley, Mark Maiolani, and Charles Melear -1995). El primer
prototipo fue montado por Toms Palacios Gutirrez quien redact un documento con
unas primeras instrucciones de montaje. stas sirvieron de base para perfeccionar el
prototipo y confeccionar posteriores instrucciones de montaje.
13
2.2 Instrucciones de montaje
El prototipo completo puede considerarse que est formado por nueve subsistemas o
mdulos ms simples que pueden ser ensamblados y probados independientemente. De
esta forma podemos organizar el montaje en una serie de pasos que nos permitan
garantizar que el proceso de ensamblado del prototipo completo se realiza
correctamente, detectando los errores que pudieran cometerse mediante pruebas
intermedias. Los diferentes pasos a seguir se relacionan a continuacin:
1) Microcontrolador.
2) Regulador de tensin.
3) Replanteo general del circuito.
4) Circuito de reloj.
5) Filtros de reloj de sistema.
6) Circuito de configuracin del micro.
7) Reset del sistema.
8) Resistencias de pull-up.
9) Alimentacin del microcontrolador.
10) Prueba de funcionamiento.
11) Comunicacin BDM (Background Debug Mode).
12) Memoria.
13) Comunicacin serie.







14
- Figura 1 Croquis de montaje de los elementos de la placa.
2.2.1 Microcontrolador
Lo primero que haremos ser colocar las tiras de wrapping en las conexiones del
micro. Podemos observar que cada banda de la placa tiene dos filas con 17
perforaciones. Como el micro slo tiene 33 patillas por banda, uno de los extremos de la
banda ms exterior no tiene conexin con el micro. Para una mejor localizacin futura
de los pines cortaremos una tira de 17 y otra de 16 pines y las insertaremos en su lugar
cuidando de dejar libre el agujero sin conexin. Empezaremos soldando un terminal de
cada extremo de la tira para que se sujete y despus seguiremos soldando todos y cada
uno de los 33 pines para asegurar el contacto elctrico con el micro. A la hora de soldar
se recomienda que se tenga cuidado de no sobrecalentar el micro. Si observamos que
est muy caliente, esperar unos minutos a que se enfre. Como recomendacin, se puede
soldar cada vez un pin del extremo opuesto para que el calor se disipe mejor. Cabe
comentar que una persona entrenada en la soldadura puede soldar todas las patillas del
tirn sin calentar peligrosamente el micro.
Repetiremos la operacin en cada una de las tres bandas restantes.
2.2.2 Regulador de tensin
Toda la electrnica del prototipo precisa ser alimentada a 5 voltios. Para ello se utilizar
un regulador L7805 que se conectar segn el esquema adjunto. Comenzar el montaje
15
con los bornes, luego se montarn los condensadores C1 y C2 y finalmente el L7805 en
las posiciones indicadas en el croquis. Al tratarse del circuito de alimentacin que va a
tener que soportar toda la corriente del sistema, se recomienda soldar los cuatro
componentes y realizar las conexiones con cable ms grueso para evitar cadas de
tensin. Conectar la salida de tensin regulada y la masa a las lneas de alimentacin
que se encuentran en ambos laterales de la placa. Para obtener una mejor inmunidad al
ruido, conectar la masa a las tiras interiores. En el croquis aparecen en negro la masa y
en rojo las lneas de alimentacin. No debemos olvidarnos de colocar y conectar las dos
tiras cortas que aparecen junto al Microcontrolador que estn dispuestas para distribuir
la alimentacin de ste y sobre las cuales se van a colocar tres condensadores, C13, C14
y C15, que van a proporcionar, por su proximidad al procesador, un mejor filtrado de la
alimentacin. El primero (C13 - 33F.) es un condensador electroltico adecuado para
el filtrado de baja frecuencia, el segundo es cermico (C14 - 22nF.) para el filtrado de
las altas frecuencias y el tercero de plstico (C15 100nF.) para las frecuencias medias.
Con esta disposicin se conseguir una mejor inmunidad al ruido de alimentacin. En el
montaje aparecen dos condensadores electrolticos, C1 y C13, con los que deber
ponerse especial cuidado con la polaridad para no daarlos y evitar que puedan reventar.

- Figura 2 Esquema de conexin del regulador de tensin.
En ningn caso deberemos conectar las lneas de alimentacin del micro, ya que
primero deber probarse el correcto funcionamiento del regulador. Por ltimo se
recomienda alimentar los bornes de entrada con una tensin de entre 8 y 10 voltios y se
medir en las lneas de alimentacin los 5 voltios que debe proporcionar el regulador.
Para todas las pruebas iniciales es recomendable utilizar una fuente que permita limitar
la corriente de salida. Se puede limitar la corriente mxima a 150 mA. (mximo 200
mA.). En caso de no disponer de una fuente de estas caractersticas se deber colocar un
fusible de entre 150 y 200 mA. en la entrada de alimentacin, siendo recomendable
16
dejarlo de forma permanente, de este modo, en caso de producirse un cortocircuito
accidental el prototipo estar protegido siempre.
2.2.3 Replanteo general del circuito
Antes de proseguir con el montaje de los siguientes mdulos es interesante realizar un
replanteo de todos los componentes sobre la placa con el fin de garantizar que todos
caben conforme al croquis. Esto facilitar mucho el montaje ya que las instrucciones
existentes se refieren a esta colocacin. Las tiras correspondientes a los diferentes
circuitos integrados se pueden cortar e insertar en el lugar que les corresponde. En esta
fase de replanteo no se recomienda soldar las tiras ya que para el montaje del circuito de
reloj, del filtro y del circuito de reset puede venir bien desmontar las tiras de alrededor
para poder soldar con ms facilidad.
2.2.4 Circuito de reloj
El sistema de generacin de reloj del MC68331 es un tanto peculiar. Utiliza un
oscilador Pierce, tambin conocido como oscilador resonante paralelo, externo con una
frecuencia de 32.768 Hz. Esta frecuencia de referencia es multiplicada por un factor que
va desde 4 hasta 640, en funcin del valor escrito en el registro SYNCR, generando una
frecuencia de reloj que puede llegar hasta los 20.972 Khz., aunque, en principio, se va a
trabajar a 8.389 Khz.
El circuito oscilador es muy sensible a la suciedad, grasa y otros restos materiales sobre
el circuito impreso que puedan modificar la conductividad entre las conexiones, por no
hablar de soldaduras o contactos deficientes. Cualquiera de estos problemas van a
provocar que el circuito no oscile.
La longitud de las pistas, cableados, disposicin de los componentes, etc. introducen
efectos resistivos y capacitivos que pueden alterar el correcto funcionamiento del
oscilador.
Por todos estos motivos se recomienda la colocacin del oscilador lo ms prximo
posible a las conexiones del micro y que se suelden los componentes al circuito impreso
para garantizar un buen contacto elctrico.
Para la conexin de los componentes se recomienda colocarlos segn el croquis de la
figura 1 y siguiendo el esquema de la figura 3.
17

- Figura 3 Esquema de conexin del oscilador de cuarzo.
2.2.5 Filtros de reloj del sistema
El circuito del apartado anterior junto con la electrnica interna conforma un
sintetizador PLL (Phase Lock Loop) de frecuencia. Para garantizar la estabilidad y un
adecuado rendimiento del PLL es necesario incorporar tan prximo a los terminales del
microcontrolador como sea posible el circuito de filtro capacitivo de la figura. Para su
montaje sganse el croquis y el esquema adjuntos.

- Figura 4 Red de filtrado del reloj del sistema.

2.2.6 Circuito de configuracin del micro
El microcontrolador MC68331 dispone de diversos modos de funcionamiento que
pueden ser configurados durante la secuencia de reset. Para ello se dispone de 13
microinterruptores que permiten configurar los diferentes modos. Durante la secuencia
de reset debern aplicarse las seales seleccionadas con los microinterruptores a los
18
terminales de configuracin del micro y despus debern quedar en estado de alta
impedancia para permitir que stos realicen su funcin normal.
En el prototipo se han montado dos grupos de ocho microinterruptores con los que se
podrn seleccionar los diferentes modos. Como slo hay trece seales, tres de ellos
quedan sin uso. En la tabla adjunta se indica el nmero de microinterruptor, el pin sobre
el que acta y la funcin del mismo dependiendo de la seleccin realizada. Durante la
secuencia de reset se configuran tanto las opciones de funcionamiento del micro como
la funcin de aquellos pines que pueden realizar dos funciones alternativas.
Microinterruptor Pin de
seleccin
Funcin cuando est en
posicin de +5V
Funcin cuando est en
posicin de 0V
1 DATA0 El microcontrolador
funciona con un bus de
memoria de 16 bits.
El microcontrolador
funciona con un bus de
memoria de 8 bits.
2 DATA1 #CS0
#CS1
#CS2
#BR
#BG
#BGACK
3 DATA2 #CS3
#CS4
#CS5
FC0
FC1
FC2
4
5
6
7
8
DATA3
DATA4
DATA5
DATA6
DATA7
#CS6
#CS[7:6]
#CS[8:6]
#CS[9:6]
#CS[10:6]
ADDR19
ADDR[20:19]
ADDR[21:19]
ADDR[22:19]
ADDR[23:19]
1 DATA8 #DSACK0, #DSACK1,
#AVEC, #DS, #AS,
#SIZE
PORTE como puerto de
entrada/salida
2 DATA9 #IRQ[7:1], MODCLK PORTF como puerto de
entrada/salida
4 DATA11 Modo esclavo desactivado Modo esclavo activado
6 MODCLK VCO = Reloj del sistema EXTAL = Reloj del sistema
8 #BKPT Modo de depuracin
desactivado
Modo de depuracin
activado
Tabla 1 Modos de configuracin del micro.

El significado de cada una de estas funciones se deja para un desarrollo posterior en el
captulo dedicado a la puesta en marcha y nos centraremos en la electrnica que va a
permitir esta seleccin y en su montaje.
La base de funcionamiento del circuito de configuracin se halla en el circuito integrado
74HC244. Se trata de un buffer de 8 entradas y 8 salidas con dos seales de activacin
19
(enable), una por cada cuatro salidas, que permiten desactivarlas dejndolas en estado
de alta impedancia. Durante el reset se activar el buffer y las seales de configuracin
estarn disponibles en las respectivas patillas del micro y, una vez finalizado, los buffer
quedarn en estado de alta impedancia permitiendo el funcionamiento normal del
microcontrolador.
Las seales, 0 voltios o 5 voltios, que se aplican a la entrada del buffer se configuran
con los microinterruptores. El esquema de conexin es el siguiente:

- Figura 5 Circuito de configuracin del micro.
2.2.7 Reset del sistema
La generacin de la seal de RESET en la lnea parece una tarea bastante sencilla. Sin
embargo, conforme han ido adquiriendo mayor complejidad los microprocesadores, las
lneas de reset bidireccionales se han convertido en algo comn. stas permiten que el
microprocesador pueda reiniciar dispositivos externos. Una lnea bidireccional va
gobernada por un transistor en colector abierto, por lo que se debe colocar a nivel lgico
1 mediante una resistencia de 820 O (resistencia de pull-up).
Cuando se usa el sintetizador PLL interno para generar la seal de reloj, como es el
caso que nos ocupa, el RESET funciona de la siguiente forma:
20
Durante el encendido el microcontrolador pone el pin de RESET a nivel
bajo.
Una vez que el PLL se estabiliza, libera la seal de reset y, si en un
periodo inferior a dos ciclos de reloj, el pin de RESET alcanza el nivel
alto, el microcontrolador da por hecho que se trata de un reset de
arranque.
En caso contrario el micro considera que se trata de un reset externo y
pone a nivel bajo el pin de reset durante 512 ciclos de reloj, tras los
cuales, si se alcanza el nivel alto en el pin de RESET en el intervalo de
10 ciclos, se inicia la ejecucin del programa.
El prototipo cuenta con un circuito de reset evolucionado que incluye un dispositivo
inhibidor (MC34064) que mantiene la seal de reset a nivel bajo hasta que la
alimentacin se estabiliza por encima del umbral de V
T
= 4,6 V. Con esto se evita que el
micro entre en un estado indeterminado debido a un fallo de alimentacin. El circuito
debera implementarse con una puerta AND con salida en colector abierto como las que
contiene el integrado 74LS09. Con el fin de optimizar el nmero de circuitos integrados
se utiliza, en su lugar, una puerta NAND sin uso del integrado 74HC00 montado para el
circuito de configuracin del micro junto con un inversor en colector abierto
implementado con un transistor BC547.
- Figura 6 Circuito de reset.
Una vez montado podemos proceder a su prueba. Para ello conectaremos la fuente sin
olvidarnos de ajustar el limitador de corriente previamente. Se medir la tensin en el
terminal de #RESET que deber ser de +5 voltios. Despus se comprobar que al
apretar el pulsador la tensin pasa a valer 0 voltios.
21
En caso de no funcionar correctamente se repasarn de nuevo las conexiones y en caso
de no detectarse ningn error se repetirn los pasos anteriores pero midiendo ahora en la
salida de la puerta NAND. En este caso la tensin en reposo debe ser de 0 voltios y al
pulsar toma el valor de 5 voltios. Si no es correcto se comprobarn los valores de las
entradas y si lo es se comprobar que se ha conectado correctamente la resistencia de
pull-up de 820 O, y el circuito MC34064.
2.2.8 Resistencias de pull-up
Varios terminales del microcontrolador necesitan resistencias de pull-up para
determinar su tensin en estado de reposo. As se evita que puedan tomar valores
indeterminados que provoquen un mal funcionamiento. En general todas las entradas
debern tener un estado conocido. Para esta operacin se utilizarn dos arrays de
resistencias de 10 KO que se conectarn a un punto de alimentacin a 5 voltios. Para
ello se conectar a 5 voltios el extremo comn, normalmente sealado con un punto.
Hay cuatro terminales que ya disponen de las resistencias de pull-up y que son:
N terminal Denominacin N terminal Denominacin
1 56 #BKPT/DSCLK 3 78 PF0/#MODCLK
2 68 #RESET 4 79 R/#W
Tabla 2 Terminales que ya tienen conectadas las resistencias de pull-up.

Por lo tanto slo quedan por conectar los siguientes terminales:
N terminal Denominacin N terminal Denominacin
1 57 TSC 8 75 PF3/#IRQ3
2 69 #HALT 9 76 PF2/#IRQ2
3 70 #BERR 10 77 PF1/#IRQ1
4 71 PF7/#IRQ7 11 87 PE2/#AVEC
5 72 PF6/#IRQ6 12 88 PE1/#DSACK1
6 73 PF5/#IRQ5 13 89 PE0/#DSACK0
7 74 PF4/#IRQ4 14 113 #BR/#CS0
Tabla 3 Terminales pendientes de conectar las resistencias de pull-up.
2.2.9 Alimentacin del microcontrolador
La conexin de la alimentacin es el ltimo paso a seguir para que el sistema funcione
de una forma muy bsica. Esta operacin es muy sencilla y tan slo deberemos conectar
los 15 terminales de masa (V
SS
) y los 14 de alimentacin a 5 voltios (V
DD
).
22
Para la conexin deberemos recordar que existen dos tiras cortas prximas al terminal
nmero 1 del microcontrolador con el fin de que todas las lneas de alimentacin del
micro estn referenciadas a un nico punto. Adems se obtiene, de esta manera, una
mayor inmunidad al ruido.
Los terminales que se debern conectar se relacionan en la siguiente tabla:
V
SS
2 12 20 26 35 48 54 62 74 82 91 107 120 128 134
V
DD
11 19 25 37 47 61 72 84 86 89 109 121 135 144
Tabla 4 Terminales de alimentacin del micro.
2.2.10 Prueba de funcionamiento
Una vez concluido el paso anterior la placa entrenadora est lista para la primera
prueba.
Lo primero que se har ser revisar que la limitacin de corriente de la fuente est
regulada a un valor inferior a los 200 mA., preferiblemente 150 mA. En caso de no
disponer de una fuente con limitacin de corriente, asegurarse de haber colocado un
fusible calibrado a 150 mA. en serie con la lnea de alimentacin.
Antes de conectar la alimentacin se debern colocar todos los microinterruptores en
posicin OFF (5 V.) a excepcin del 8 que se pondr en posicin ON (0 V.) para
activar el modo de depuracin BDM. En cualquier caso, para esta prueba inicial slo es
estrictamente imprescindible que los microinterruptores 4 y 6 estn en posicin OFF.
Conectaremos la alimentacin, observando el ampermetro para apagar rpidamente si
vemos que el consumo es elevado.
Si las conexiones estn bien hechas, tras un pico inicial de corriente durante el arranque,
sta se estabilizar en torno a los 50 o 70 mA. A continuacin mediremos con el
osciloscopio la seal de reloj. Primero colocaremos la sonda en el terminal XTAL y
deberemos observar la onda cuadrada a 32Khz. del reloj que hemos montado. Luego la
colocaremos en el terminal CLKOUT y deber aparecer la seal de reloj a 8 Mhz.
generada por el sintetizador PLL del sistema.
Si la corriente es excesiva, seguramente habr un cortocircuito o una conexin mal
hecha. Inevitablemente habr que repasar de nuevo el conexionado y buscar un posible
cortocircuito.
En el caso de que no aparezca la seal de reloj, comprobar que:
23
El microinterrruptor 6 est en posicin OFF, ya que con l se configura
el funcionamiento del sintetizador.
La seal de reset est a 5 voltios.
Las conexiones del circuito de reloj son correctas.
Si no existe un error aparente habra que pensar en la posibilidad de que el cristal de
cuarzo se haya deteriorado durante el proceso de soldado.
2.2.11 Comunicacin BDM (Background Debug Mode)
El modo de depuracin en segundo plano (BDM) es un modo de funcionamiento
especial del microcontrolador que permite que otro ordenador tome el control del micro.
Se trata de una herramienta muy til para la depuracin. Durante la operacin en
segundo plano, la ejecucin normal de instrucciones es suspendida, y el microcdigo
ejecuta las instrucciones internas de depuracin bajo el control de una mquina externa.
La interfaz de comunicacin BDM es relativamente sencilla de realizar. El mayor
inconveniente reside en el uso de un conector de 26 terminales soldado sobre la placa
que no permite wrappinar el cable y por tanto se deber soldar con el mximo
cuidado posible. En la figura 7 se muestra el esquema de conexin. La disposicin de
los diferentes componentes se debe consultar en la figura 1.

- Figura 7 Circuito interfaz para la comunicacin BDM.
Una vez acabado el circuito de comunicacin se deber montar el cable. Para la
conexin a la placa se ha utilizado un conector de 26 terminales y en el extremo del
ordenador se utilizar un conector de 25 terminales (DB25) para su conexin al puerto
24
paralelo. Para ello utilizaremos cable plano y conectores de presin. Para el montaje se
deber quitar uno de los hilos del cable, ya que sobra, y se deber prestar especial
atencin en que queden interconectados entre si los terminales nmero 1 de ambos
conectores. Para ello obsrvese que el primer hilo del cable lleva marcas distintivas.
Una vez montado el cable, se conectar a la placa y al puerto paralelo del ordenador. Se
encender la alimentacin observando de nuevo que la corriente consumida se
encuentre dentro de los lmites antes comentados.
Para probar el funcionamiento se cargar bajo entorno MSDOS el programa
TEST32.EXE. No es aconsejable trabajar en una ventana de Windows, por lo que se
deber salir de Windows y trabajar directamente en MSDOS.
Una vez en MSDOS, escribiremos TEST32 en la consola y aparecer el mensaje:
Test Program for CPU32 Background Mode Drivers
Available LPT Ports: <1>
Please select Printer Port:
Seleccionaremos el puerto de impresora al que se ha conectado el circuito y que
normalmente ser el primero (1). A continuacin nos solicitar que indiquemos la
velocidad de conexin. Normalmente deber funcionar con un valor de 50. En caso de
no funcionar podremos ir probando con otros valores mayores dentro del rango que
indica el programa.

Please select Clock DELAY (0-20000): 50
Port 1 Initialized at Speed 50
Resetting Target MCU to enable BDM
Enter Command DHMRSQ('H' for Help):
En este momento todo est preparado para introducir un comando y verificar la
comunicacin BDM. Pulsando la tecla H obtendremos una breve explicacin sobre la
funcin de cada comando:
Help for TEST (CPU32 Target)
B: Begin Program Execution from Reset
D: Dump Target MCU Registers
P: Modify Target MCU Register PC
H: Print This Help Summary
L: Load S-Record File into Target
25
F: Memory Hex/ASCII Fill
M: Memory Hex/ASCII Display
R: Hardware Reset Target MCU
T: Communications TEST
U: MCU Status
S: Single Step Target MCU
O: Stop Target MCU
G: Run Target MCU
E: edit a file using QEDIT
A: Assemble file
V: go to DOS
K: insert breaKpoint
I: delete breakpoInt
Q: Quit back to DOS
Para probar el funcionamiento teclearemos D + intro. En la pantalla deber aparecer
un listado con los valores contenidos en los distintos registros del microcontrolador (no
todos deben valer cero).
Si el programa no ha dado ningn mensaje de error la comunicacin est funcionando
correctamente. Si por el contrario aparece el mensaje error en las comunicaciones se
desconectar la placa y se revisarn todas las conexiones de nuevo ya que lo ms fcil
es que se trate de un error en alguna conexin.
2.2.12 Memoria
El MC68331 puede trabajar con un bus de datos tanto de 8 como de 16 bits. El uso de
un bus de 8 bits simplifica el diseo y reduce el coste, pero implica una importante
penalizacin en el rendimiento que ser tanto mayor cuantos ms accesos haya a
memoria.
En el prototipo que estamos montando utilizaremos un bus de datos de 16 bits que
permite una mayor velocidad de transferencia de datos.
Se utilizarn dos chips de memoria RAM del tipo HY62256B con una capacidad de
32K x 8 bits conectados en paralelo para obtener un bus de datos de 32K x 16 bits.
Los terminales de direcciones de ambos chips de memoria se wrappinarn en
paralelo. Los terminales A0 de la memoria se conectarn al terminal de direcciones A1
del microcontrolador y as sucesivamente hasta los terminales A14 que se conectarn al
A15 del micro. El terminal A0 del micro se dejar sin conectar.
26
Los pins de datos (D0-D7) de una de las memorias se conectarn a los homnimos del
microcontrolador y los de la otra a los terminales D8-D15 del microcontrolador.
La seal chip enable (CE) ser generada por el terminal CSBOOT del MC68331.
Con el objeto de eliminar ruidos en la alimentacin, especialmente cuando se trabaja a
altas frecuencias, es muy recomendable conectar un condensador de 100 nF en paralelo
con la alimentacin de cada chip de memoria.
Una vez finalizado este montaje ser posible la carga de programas en memoria para su
ejecucin. Slo queda, por tanto, probar el correcto funcionamiento de esta parte.
Para ello repetiremos la secuencia del paso anterior. Se encender la fuente de
alimentacin cuidando de que no exista ningn cortocircuito, se arrancar el programa
TEST32.EXE y despus de seleccionar el puerto paralelo al que se haya conectado la
placa y la velocidad de comunicacin de 50 se quedar a la espera de la introduccin de
comandos.
Test Program for CPU32 Background Mode Drivers
Available LPT Ports: <1>
Please select Printer Port: 1 + intro
Please select Clock DELAY (0-20000): 50 + intro
Port 1 Initialized at Speed 50
Resetting Target MCU to enable BDM
Enter Command DHMRSQ('H' for Help):
Si escribimos m + intro se obtendr una lectura del contenido de la memoria. Para
ello se deber indicar la direccin de inicio y el programa mostrar en pantalla los 256
bytes siguientes a la direccin indicada.
En caso de que se produzca algn error debern revisarse todas las conexiones y, en
especial, la alimentacin.
2.2.13 Comunicacin serie
Cuando se emprenda la realizacin de este paso, ya se tendr la placa entrenadora
basada en el microcontrolador 68331 funcionando correctamente. Por ello en este
ltimo apartado nicamente se instalar el mdulo de adaptacin de niveles para las
comunicaciones serie mediante el protocolo RS232.
La parte ms importante de este subsistema es el chip MAX232, que permite adaptar los
niveles de tensin de 0 y 5V del microcontrolador, a los establecidos por la norma
27
RS232 (entre 15 y 15V). Curiosamente, gracias a los distintos condensadores que se
aaden al sistema, el chip MAX232 slo necesita ser alimentado con 5V, aunque sea
capaz de dar una tensin mayor a su salida.
Se debe conectar el circuito de la figura:

- Figura 8 Circuito interfaz para la comunicacin serie.

El punto donde ms errores se suelen cometer es en la polaridad de los distintos
condensadores electrolticos y en la identificacin de cada uno de los pines del chip
MAX232. Por tanto, se debe prestar especial atencin a estos dos aspectos.
28
Junto con el subsistema de adaptacin de niveles desarrollado en la placa entrenadora,
se debe realizar tambin un cable de mdem nulo que permita la conexin de la placa
al ordenador mediante el protocolo RS-232.
- Figura 9 Vista general de placa entrenadora.






29
- Figura 10 Detalle del conexionado con wire-wrapping.

- Figura 11 Detalle del montaje de la placa.

30
2.3 Descripcin de funcionamiento
El funcionamiento del sistema viene determinado por el funcionamiento de los cuatro
subsistemas que lo componen y que son:
Mdulo de Integracin de Sistemas: SIM (System Integration Module).
Temporizador de Propsito General: GPT (General Purpose Timer).
Unidad Central de Proceso: CPU 32 (Central Processing Unit 32 bits).
Mdulo de Comunicaciones Serie: QSM (Queued Serial Module).
2.3.1 Mdulo de integracin de sistemas (SIM)
Para la integracin de los subsistemas CPU32, GPT y QSM en un nico circuito VLSI
ha sido necesario que el fabricante incorpore un mdulo especialmente diseado para
este fin. As como al disear un sistema electrnico digital basado en un
microprocesador necesitaremos aadir no slo memoria o perifricos, sino tambin
circuitos de reloj, de reset, de arbitraje de las interrupciones o una lgica de seleccin de
direcciones, de la misma manera el microcontrolador MC68331 cuenta con un mdulo
de integracin de sistemas denominado SIM que realiza todas estas funciones y algunas
otras adicionales.
Las funciones bsicas que realiza el SIM son:
1. Generar la seal de reloj que comparten todos los mdulos del micro.
Dicha seal de reloj puede ser generada con un sintetizador PLL
interno a partir de una seal de referencia externa, o bien tomada
directamente de una fuente exterior.
2. Proporcionar seales de chip-select configurables, que permitan
aadir memoria y nuevos perifricos al sistema sin tener que recurrir
a circuitera externa para la lgica de direcciones, con el consiguiente
ahorro de espacio en la placa de circuito impreso.
3. Servir de interface entre el espacio de direcciones interno (registros)
y el externo (memoria externa) conectados a travs del bus
intermodular (InterModule Bus), as como arbitrar la generacin de
interrupciones simultneas (Interrupt Arbitration).
31
4. Permitir la configuracin y proteccin general del sistema: para ello
contiene submdulos de supervisin interna (Bus Monitor, Halt
Monitor, Spurious Interrupt Monitor) y de supervisin del cdigo
en ejecucin (Software Watchdog Monitor). Por medio de estos
bloques, podremos reiniciar el microcontrolador en caso de que se
detecten ciertos problemas (o bien tratarlos si ello es posible).
Adems de esto, proporciona un nuevo submdulo: un reloj de
tiempo real (Periodic Interrupt Timer), capaz de generar
interrupciones peridicas. El conjunto de todos estos submdulos
forma la interfaz del bus externo (External Bus Interface).
5. Incorporar circuitos que permitan la depuracin de nuevos programas
en desarrollo sin tener que recurrir al puerto serie y a un programa
monitor (Background Debug Mode) y la verificacin del
funcionamiento del microcontrolador cuando todava se encuentra en
fbrica (System Test Block).
Ofrecer varios puertos de Entrada/Salida (ports E, F y C), que slo estarn disponibles
si lo permite la configuracin de la funcionalidad anterior. Por ejemplo: si no
empleamos todas las seales externas de chip-select, podremos emplear las no asignadas
como parte de un puerto denominado C.
2.3.1.1 Terminales del SIM
Las seales externas o terminales del microcontrolador que tienen relacin, de una u
otra manera, con el SIM son:
CS[0..10]#, CSBOOT#: proporcionan los chip-selects.
ADDR[0..18], SIZ[0..1], AS#, DS#, RMC#, AVEC#, DSACK[0..1]#,
DATA[0..7], R/W#, RESET#, HALT#, BERR#, IRQ[0..7]#:
componen el EBI, que permite el arbitraje de interrupciones y el control
del bus externo.
MODCLK, CLKOUT, XTAL, EXTAL, XFC, VDDSYN: permiten
sintetizar y distribuir la seal de reloj.
TSC/TSTME# y FREEZE/QOUT: proporcionan al fabricante la
posibilidad de probar el correcto funcionamiento el microcontrolador.
32
2.3.1.2 Subsistema de configuracin y proteccin
El submdulo de configuracin y proteccin permite realizar las siguientes funciones:
2.3.1.2.1 Ubicacin de los registros en memoria.
Un importante parmetro que es posible configurar en el 68331 es la situacin
(mapping) de los 4-Kbytes del bloque de registros de propsito especfico disponibles
en el microcontrolador. El bit MM (Module Mapping) del registro de configuracin del
SIM (SIMCR) determina qu posiciones ocupan los registros en el mapa de memoria
general del sistema:
Bit MM Zona ocupada del mapa de memoria
0
$7FF000-$7FFFFF
1 $FFF000-$FFFFFF
Tabla 5 Opciones de ubicacin de los registros en el mapa de memoria.
Despus del reset, el bit MM se inicializa con un 1.
2.3.1.2.2 Configuracin tras el Reset
Durante la secuencia de arranque del micro se produce la configuracin del sistema.
Para ello el microcontrolador realiza la lectura de los valores existentes en los
terminales MODCLK, #BKPT, DATA[0..9] y DATA11 a fin de determinar cmo
quiere el usuario configurar el sistema. Entre las opciones de configuracin que se
pueden determinar estn:
Qu chip-selects estn activos: existen 3 grupos de terminales de chip-
select que, alternativamente pueden funcionar como terminales de
funcin de la CPU32 (FC[0..2]), como terminales destinados a compartir
el bus (#BR, #BG y #BGACK) o como terminales del bus de
direcciones (ADDR[19..23]).
Qu puertos adicionales estn disponibles: dado que el nmero de
terminales disponibles (132 en la versin utilizada) es inferior al nmero
de seales que pueden ser manejadas, algunos terminales son
compartidos por dos o ms seales, de modo que durante el reset se
deber determinar la funcin sacrificando unas en favor de las otras. Por
ejemplo, el puerto E compartesus terminales con las seales de los buses
33
de datos y direcciones (SIZ[0..1], #AS, #DS, #AVEC y #DSACK[0..1]).
Aunque estos terminales son fundamentales en cualquier sistema basado
en un microprocesador como el MC68000 (cuya unidad central de
proceso es muy similar a la CPU32), la disponibilidad de chip-selects
programables, reduce su inters en el caso del 68331 (excepto en
sistemas grandes o complejos).
Si se va a funcionar o no en modo verificacin (Test Mode).
Si se habilita o deshabilita la depuracin en segundo plano (Background
Debug Mode).
Las diferentes posibilidades de configuracin se resumen en la tabla 1 (Apartado 2.6).
2.3.1.2.3 Arbitraje de interrupciones
Los distintos mdulos del 68331 que pueden solicitar interrupciones a la CPU32 tienen
un campo para el arbitraje de interrupciones (IARB) donde se indica el nivel de
prioridad. Dado que el SIM tambin puede solicitar interrupciones, en SIMCR existe
un campo denominado IARB, que contiene su prioridad. En el caso de peticiones
simultaneas de interrupcin, el SIM arbitra las mismas atendiendo a la prioridad
indicada en los diferentes campos IARB y las del mismo nivel se atienden por
contienda.
Al salir del Reset, el IARB del SIMCR toma el valor $F (mxima prioridad). Si un
mdulo cuyo IARB es $0 solicita una interrupcin, no slo no es atendida sino que se
genera una excepcin por interrupcin esprea.
2.3.1.2.4 Supervisin del bus externo durante trasferencias internas
Los 2 bits del campo SHEN del registro SIMCR de configuracin del SIM controlan el
comportamiento del bus externo durante las transferencias de datos internas (por
ejemplo, al mover datos entre registros de los mdulos que componen el 68331).
Tras el Reset, #AS y #DS permanecen en alta impedancia durante los ciclos internos,
habilitando que sea un dispositivo exterior al 68331 quien controle el bus externo y
haciendo que los ciclos internos sean invisibles desde fuera del microcontrolador.
Tambin se puede configurar que el ciclo interno sea visible y que los terminales #DS y
DATA[0..15] reflejen el flujo de datos en el bus interno (aunque #AS permanezca en
34
alta impedancia para impedir que este flujo interno afecte a dispositivos externos como,
por ejemplo, la memoria).
SHEN Ciclos Internos Arbitraje externo
00 Invisibles desde el exterior Habilitado
01 Visibles Deshabilitado
10 Visibles Habilitado
11 Invisibles
Habilitado, pero una
peticin de bus detiene la
transferencia interna
Tabla 6 Comportamiento del bus externo durante las transferencias.
2.3.1.2.5 Modo Verificacin en fbrica.
El bit SLVEN del SIMCR refleja el estado de DATA11 durante el Reset, o sea, nos
permite consultar si estamos o no trabajando en el modo de verificacin de fbrica
(permite que el fabricante compruebe el correcto funcionamiento del micro).
2.3.1.2.6 Accesibilidad de los registros del SIM
El bit SUPV del SIMCR coloca los registros globales del SIM en el mapa de memoria
del supervisor (cuando SUPV=1) o en el de usuario (cuando SPUV=0). En el caso de
encontrarse en el espacio de datos del supervisor, slo se pondr acceder a los registros
estando la CPU32 funcionando en modo supervisor. De esta manera un sistema
operativo puede impedir que los programas ejecutndose en modo usuario puedan
reconfigurar partes esenciales del SIM y del sistema.
2.3.1.2.7 Causa del ltimo Reset
El registro de slo lectura RSR guarda la causa del ltimo Reset producido. Contiene un
bit por cada una de las 7 posibles causas, pudindose poner a 1 varios de estos bits en el
caso de simultaneidad de causas. Dichas causas pueden ser:
Fuente externa: el terminal #RESET ha sido activado por un dispositivo
externo durante al menos 520 ciclos de reloj.
Encendido del micro (Power-On Reset).
Supervisor SW (Software Watchdog), que ha provocado un reset por un
error en el funcionamiento o en el diseo del programa.
Supervisor de parada (Halt Monitor): interviene cuando se produce un
fallo doble de bus (Double Bus Fault), o cuando se activa la seal
#HALT.
35
Prdida de la seal de referencia de reloj (Loss of Clock).
Ejecucin de la instruccin de RESET.
Submdulo de Verificacin (Test Submodule): usado por el fabricante.
2.3.1.2.8 Supervisin del Bus Interno
El funcionamiento asncrono del bus de la CPU32 obliga a la existencia de seales de
reconocimiento y confirmacin (acknowledge) de datos y autovectores. Cada vez que se
realiza una transferencia usando el bus interno, el SIM comprueba que se cumplen las
restricciones mximas en cuanto a tiempo de respuesta. Si las seales DSACK# o
AVEC# tardan demasiado en llegar, el SIM activa el terminal BERR# del 68331.
El campo BMT de 2 bits que se encuentra en el registro de control de proteccin del
sistema (SYPCR), permite definir cul es el tiempo mximo de espera:
BMT Tiempo mximo de espera
00 64 ciclos de reloj
01 32 ciclos de reloj
10 16 ciclos de reloj
11 8 ciclos de reloj
Tabla 7 Tiempo de espera de las seales de reconocimiento antes de generar un error de bus.
Al salir del Reset el tiempo est configurado en 64 ciclos de reloj de espera mxima.
2.3.1.2.9 Supervisin de Parada (Halt)
La activacin de la seal #HALT del 68331 provoca la entrada en funcionamiento del
supervisor de parada (siempre y cuando dicha intervencin est habilitada en el bit
HME del SYPCR), y el consiguiente Reset del sistema. Tambin interviene este
supervisor cuando se produce un fallo doble de bus (Double Bus Fault).
2.3.1.2.10 Supervisin de interrupciones espreas
Si el arbitraje de interrupciones no se llega a resolver (debido a que el correspondiente
campo IARB del mdulo que ha provocado la interrupcin es igual a 0 y, por lo tanto,
no est habilitado), el supervisor de interrupciones espreas (Spurious Interrupt
Monitor) provoca la activacin de la seal #BERR y un Reset del sistema. Esta
supervisin no se puede deshabilitar.
36
2.3.1.2.11 Supervisin SW
El bit SWE del registro de control de proteccin SYPCR habilita o deshabilita la
supervisin de programas en ejecucin (Software WatchDog). En caso de estar
habilitada dicha supervisin, el programa que se est ejecutando deber, regularmente,
ejecutar la siguiente secuencia:
Escribir un $55 en el registro SWSR.
Escribir un $AA en el registro SWSR.
En caso de no ejecutarse estas instrucciones en el tiempo preestablecido, si se halla
habilitado el supervisor, ste interpretar que el programa est mal diseado o que se ha
producido un bloqueo o una entrada en algn bucle infinito y provocar un Reset del
microcontrolador.
El plazo de tiempo disponible depende de los valores de los campos SWP y SWT del
SYPCR:
SWP SWT Ciclos de reloj
0 00 2 elevado a 9
0 01 2 elevado a 11
0 10 2 elevado a 13
0 11 2 elevado a 15
1 00 2 elevado a 18
1 01 2 elevado a 20
1 10 2 elevado a 22
1 11 2 elevado a 24
Tabla 8 Tiempo de actualizacin de las escrituras del watchdog.
Tras el Reset, SWP adopta el valor negado del terminal MODCLK durante el Reset (si
la fuente de reloj es externa, SWP contendr un 1; contendr un 0 en caso contrario).
2.3.1.2.12 Interrupciones peridicas: el PIT
El SIM incluye un temporizador (el PIT) capaz de provocar interrupciones peridicas.
Estas interrupciones se usan para controlar tareas crticas en el tiempo y que deben de
ejecutarse con gran regularidad o bien que han de respetar unos plazos mximos en
cuanto a su tiempo de respuesta.
El periodo de generacin de esta interrupcin viene fijado por la seal EXTAL (reloj
externo o de referencia) y el valor del registro de configuracin del temporizador de
interrupciones peridicas (PITR). Este registro contiene el bit PTP con el que se
37
selecciona un preescalado de 4 (PTP=0) o de 2048 (PTP=1); tambin contiene el
campo de 8 bits, PITM, cuyo valor multiplicado por el preescalado determina la
frecuencia del PIT. Tras el reset, el bit PTP adopta el valor contrario a la seal
MODCLK (si la fuente de reloj es externa, PTP contendr un 1; contendr un 0 en caso
contrario).
Para calcular la frecuencia a la que interrumpir el SIM, aplicaremos la siguiente
frmula:
Frecuencia del PIT=Frecuencia EXTAL/(PITM * Preescalado).
La frecuencia mxima de funcionamiento ser por tanto la frecuencia EXTAL dividida
por 4 y se producir si PITM contiene un 1 y PTP contiene un 0. La frecuencia mnima
ser EXTAL/522.240 y se producir cuando el PITM contenga su valor mximo ($FF)
y apliquemos el mayor preescalado (PTP=1). Si el reloj externo es 32,768 KHz., el
periodo de interrupcin podr variar entre un mximo de 15,93 s. y un mnimo de 122
s.
Las interrupciones peridicas se habilitan en funcin del valor contenido en los tres
registros siguientes:
1. SR o registro de estado de la CPU32: los bits de mscara de
interrupcin IP deben contener un valor que permita las
interrupciones del PIT.
2. SIMCR o registro de configuracin del SIM: su campo IARB debe
contener un valor de arbitraje mayor que 0.
3. PICR o registro de control del PIT, que contiene 2 campos
relevantes:
El campo PIRQL, que debe contener un nivel de interrupcin
asignado al PIT que est habilitado por la mscara de
interrupcin del SR (PIRQL>IP)
El campo PIV debe contener el nmero del vector de interrupcin
con el que deseamos que sea atendido el PIT (un valor entre $40
y $FF, los valores posibles para un vector de usuario en la
CPU32).
38
Por lo tanto, el PIT estar habilitado y en condiciones de interrumpir correctamente si
IARB>0, PIRQL>IP o PIRQL=7 y PIV>=$40.
2.3.1.2.13 Funcionamiento en bajo consumo
Cuando la CPU32 ejecuta la instruccin LPSTOP, se desactivan los supervisores de
bus, de parada y de interrupciones espreas, y se para el supervisor software (si bien no
se pone a cero su contador).
Para salir de este estado de bajo consumo y baja funcionalidad, se ha de producir una
interrupcin habilitada (por ejemplo, un reset, una interrupcin externa o una
interrupcin del PIT que cumpla las condiciones antes sealadas).
El bit STSIM del SYNCR (registro de control del sintetizador de reloj) determina si
durante el estado de bajo consumo el SIM utiliza una fuente de reloj externa (STSIM =
0) o interna (STSIM = 1).
Un programa cuyo funcionamiento bsico sea la atencin a interrupciones externas
puede tener una rutina principal que, tras la inicializacin, se quede en modo de bajo
consumo esperando la aparicin de una interrupcin que atender.
2.3.1.2.14 Funcionamiento durante la depuracin
Si el sistema externo que controla la depuracin en segundo plano activa la seal
FREEZE y dicha depuracin est permitida, el SIM se ve afectado de la siguiente
manera:
Los supervisores de parada y de interrupciones espreas continan
funcionando con normalidad, pudiendo provocar un reset en caso de
detectar algn fallo.
El supervisor de bus se deshabilita si as lo indica el bit FRZBM del
SIMCR (si contiene un 1).
El supervisor de SW se deshabilita si as lo indica el bit FRZSW del
SIMCR (si contiene un 1).
De esta manera durante la parada por depuracin paso a paso, podremos deshabilitar el
supervisor de SW que podra provocar un reset no deseado.
39
2.3.1.3 Reloj del sistema
Una de las funciones ms importantes del SIM es la generacin y distribucin de la
seal de reloj que emplearn todos los mdulos del microcontrolador. Para ello, el SIM
nos ofrece 2 alternativas: o bien generar la seal de reloj sintetizndola internamente a
partir de una seal de referencia externa, o bien usar directamente una fuente externa de
reloj. La seal de referencia presenta la ventaja de ser una seal de menor frecuencia
(ms fcil de generar).
2.3.1.3.1 Reloj del sistema externo
Si mantenemos a nivel bajo el terminal MODCLK durante el reset y proporcionamos
una seal de reloj en el terminal EXTAL (dejando flotante el terminal XTAL), el SIM
distribuir (eso s, a travs de un buffer interno) dicha seal de reloj a lo largo del
sistema. La frecuencia de esta seal de reloj vendr limitada por la frecuencia mxima
recomendada por el fabricante para cada integrado (16 MHz, 20 MHz o 25 MHz). Para
cada circuito integrado que compremos, el fabricante nos garantiza que funcionar
correctamente por debajo de esa frecuencia mxima.
2.3.1.3.2 Reloj de referencia externo
Si mantenemos a nivel alto el terminal MODCLK durante el reset y proporcionamos
una seal de reloj de referencia entre los terminales EXTAL y XTAL, se activar el
PLL interno (Phase Lock Loop) que sintetiza una seal de reloj del sistema
configurable por medio de los campos X (1 bit), W (1 bit) e Y (6 bits) del registro
SYNCR.
La relacin entre ambas seales de reloj viene fijada por las ecuaciones:
Frecuencia del sistema = frecuencia de referencia * [4*(Y + 1)*2
(2 * W + X)
],
en el caso que nos ocupa utilizamos una seal de referencia de 32,768 Khz.
No se debe forzar una frecuencia del sistema superior a la recomendada por el
fabricante.
Los terminales XFC y VDDSYN, permiten incorporar un filtro capacitivo para eliminar
armnicos de la seal de reloj del sistema cuando usemos una referencia externa.
40
2.3.1.3.3 Generacin de reloj para un bus externo sncrono
Al igual que el MC68000 y por compatibilidad con los perifricos sncronos del 6800,
el 68331 proporciona una seal de reloj ECLK que permite a la CPU32 sincronizarse
con dichos perifricos. Si el campo CSPA1 del registro CSPAR1 contiene 00, ECLK
estar habilitado y disponible. Su frecuencia de trabajo vendr determinada por el bit
EDIV del SYNCR, pudiendo ser la frecuencia del sistema dividida por 8 (EDIV =0) o
por 16 (EDIV =1).
2.3.1.3.4 Generacin de reloj en bajo consumo
Durante los ciclos de funcionamiento en bajo consumo, los bits STSIM y STEXT del
registro SYNCR determinan qu seal de reloj est disponible para hacer funcionar el
SIM o los dispositivos externos. Si el bit STEXT est a 0 durante el tiempo de bajo
consumo, la seal CLKOUT no proporcionar reloj alguno al sistema digital basado en
el microcontrolador.
2.3.1.3.5 Supervisin del reloj de referencia
Si el supervisor de reloj detecta la prdida de la seal de referencia puede provocar dos
situaciones, dependiendo de cmo est configurado el bit RSTEN del SYNCR:
Si RSTEN vale 1, provocar inmediatamente un reset.
Si RSTEN vale 0, adoptar una frecuencia de reloj del sistema
denominada limp mode (cojera, renqueo), inferior en todo caso a la
frecuencia mxima del sistema.
El bit SLIMP del SYNCR refleja si el sistema est operando en modo
limp (SLIMP =1) o no (SLIMP =0).
2.3.1.4 Interfaz del bus externo asncrono: EBI
Adems de controlar el bus interno, el SIM se encarga de proporcionar las seales que
permiten la comunicacin con dispositivos (memoria o perifricos) externos al
microcontrolador.
El interfaz del bus del MC68000 constaba de un bus de datos DATA de 16 bits, un bus
de direcciones ADDR de 24 bits, dos seales de validacin de datos #UDS y #LDS, una
seal de validacin de direcciones #AS, un terminal de lectura/escritura R/#W, tres
seales de cdigos de funcin FC, una seal #DTACK de confirmacin de fin del ciclo
41
de bus, #BERR que indicaba error de bus durante una trasferencia, la seal de parada
#HALT y una seal #AVEC que indica al micro que la interrupcin solicitada es
autovectorizada.
Las seales de tamao de bus SIZ permiten definir si la transferencia de datos a travs
de DATA es de 8, 16 o 32 bits.
2.3.1.4.1 Temporizacin del bus externo
Las operaciones de acceso a registros internos del microcontrolador vienen a durar dos
ciclos de reloj. Si interviene el bus externo, su duracin mnima ser de 3 ciclos ya que
los ciclos de lectura o escritura se componen de 6 estados de medio ciclo de reloj cada
uno.
Adems de los ciclos ordinarios de lectura y escritura, la ejecucin de la instruccin
TAS (que de un modo indivisible pone a uno el bit 7 de una posicin del mapa de
memoria), provoca una secuencia especial de ciclos que facilita la implantacin de
mecanismo de semforos en sistemas multiprocesador con comparticin de memoria.
2.3.1.4.2 Tamao dinmico del bus de datos
El bus de datos permite realizar transferencias de 1, 2 o 4 bytes entre el micro y una
memoria o perifrico externos de 8 o 16 bits, reflejando a travs de SIZ cuntos bytes
quedan por transferir para completar el ciclo.
Un ciclo en el que se transfieran una anchura de datos superior a la anchura de DATA
(16 bits) o del perifrico o memoria implicados, supondr varios subciclos de lectura o
escritura como los descritos en el apartado anterior. A lo largo de estos subciclos el
contenido de SIZ ir decreciendo. El dispositivo externo deber confirmar a travs de
DSACK# el fin del subciclo en curso.
Un dispositivo de 16 bits se conectar a todo el bus DATA[15..0], mientras que un
perifrico de 8 bits lo har al byte alto DATA[15..8]. En una transferencia de una
anchura superior a la del bus DATA o la del perifrico o la memoria implicados,
primero se transferirn los bytes ms significativos y, posteriormente, los menos
significativos.
Los tipos de transferencias posibles se resumen en la siguiente tabla:


42
Tipos de transferencia.
De <origen> a <puerto o memoria de
destino>
SIZ[0:1] ADDR
0
DSACK[1:
0]
Datos
efectivos
transferidos
De 8 bits a 8 bits en direccin par 01 0 10 DATA[8..15]
De 8 bits a 8 bits en direccin impar 01 1 10 DATA[8..15]
De 8 bits a 16 bits en direccin par 01 0 01 DATA[ 0..7 ]
De 8 bits a 16 bits en direccin impar 10 1 01 DATA[8..15]
De 16 bits a 8 bits en direccin par 10 0 10 DATA[8..15]
De 16 bits a 16 bits en direcc. Par 10 0 01 DATA[0..15]
De 32 bits a 8 bits en direccin par 00 0 10 DATA[8..15]
De 32 bits a 16 bits en direcc. Par 00 0 01 DATA[0..15]
De 24 bits a 8 11 1 10 DATA[8..15]
Tabla 9 Tipos de transferencias.
Las transferencias de 24 bits a puertos o memorias de 8 son subciclos dentro de una
transferencia de 32 bits a 8. La CPU32 exige que las transferencias de 16 o 32 bits a 16
bits estn alineadas, esto es, que tengan como destino direcciones pares, lo cual
restringe las posibilidades de combinaciones correctas a tan slo 9.
2.3.1.4.3 Los cdigos de funcin
El valor de las seales FC depende del estado del microcontrolador. Los 8 valores
posibles se decodifican de acuerdo con la siguiente tabla:
FC2 FC1 FC0 Estado interno
0 0 0 Valor no usado
0 0 1 Acceso a datos en modo usuario
0 1 0 Lectura de instrucciones en modo usuario
0 1 1 Valor no usado
1 0 0 Valor no usado
1 0 1 Acceso a datos en modo supervisor
1 1 0 Lectura de instrucciones en modo supervisor
1 1 1 3 subestados posibles:
(1) reconocimiento y confirmacin de una
interrupcin,
(2) reconocimiento y confirmacin de un punto
de ruptura,
(3) ciclo de paso a funcionamiento en bajo
consumo.
Tabla 10 Cdigos de funcin.
Para distinguir los tres posibles subestados del estado 111, se puede decodificar el bus
de direcciones de la siguiente manera:


43
Subestado A23..A2
0
A19 A18 A17 A16 A15..A5 A
4
A
3
A
2
A
1
A
0
(1) pto. Ruptura 0 0 0 0 0 0 X X X Y 0
(2) bajo
consumo
0 0 0 1 1 1 1 1 1 1 0
(3) Interr. 1 1 1 1 1 1 1 X X X 1
Tabla 11 Subestados del cdigo de funcin 111.
2.3.1.4.4 Puntos de ruptura
Un punto de ruptura es un mecanismo que, bien sea por programa, bien sea por medio
de una seal externa, nos permite detener la ejecucin de instrucciones por parte de la
CPU32 e inspeccionar el estado del microcontrolador (registros internos, memoria
externa, etc.). Para ello no es necesario que est activo el depurador de segundo plano.
En el 68331 se pueden establecer puntos de ruptura de dos formas:
Por programa: si en nuestro programa insertamos una instruccin
BKPT, al llegar a ella, el microcontrolador detiene la ejecucin e inicia
un ciclo de confirmacin del punto de ruptura.
Por medio de la seal #BKPT: si algn dispositivo externo activa esta
seal, la CPU32 responde con un ciclo de confirmacin.
2.3.1.4.5 Cesin del bus
El MC68331 dispone de 3 seales para arbitrar el uso y comparticin de los buses de
datos y direcciones: #BR (peticin de bus por el dispositivo externo), #BG (seal de
cesin del bus) y #BGACK (confirmacin de fin de peticin, y que indicar al 68331
que el bus est libre).
Cuando un dispositivo capaz de usar el bus (tal como un controlador de DMA u otro
micro) desee hacer uso del mismo, deber activar la seal #BR, para informar al 68331
de sus intenciones. Cuando ste finalice el ciclo de bus en curso, activar la seal #BG,
momento a partir del cual el dispositivo externo se convierte en el gestor del bus (bus
master), pudiendo emplearlo para lo que desee. Mientras el nuevo gestor mantenga
activa la seal #BGACK, el 68331 no emplear el bus y mantendr sus terminales
DATA, #DS, ADDR, #AS, FC, R/#W, #RMC y SIZ en alta impedancia para evitar
interferencias en el manejo del bus cedido.
44
2.3.1.5 Interrupciones
2.3.1.5.1 Fuentes de interrupcin externas
Adems de las interrupciones generadas por el temporizador peridico (PIT), el SIM
gestiona las 7 entradas de interrupciones de origen externo #IRQ[1..7]. Todas estas
interrupciones se activan a nivel bajo, excepto la #IRQ7 que responde tambin al flanco
de bajada.
Las interrupciones externas estn sujetas a un esquema de prioridad en el cual #IRQ0
recibe la mnima e #IRQ7 la mxima; en caso de simultaneidad de interrupciones se
atender primero a la ms prioritaria. El dispositivo solicitante debe mantener la
peticin de interrupcin hasta que sta es atendida, ya que las peticiones no son
capturadas (latched) por el micro.
2.3.1.5.2 Arbitraje de interrupciones simultneas
Si se produce la peticin simultanea de una interrupcin de origen interno y otra de
origen externo (o entre dos de origen interno), el SIM usa los campos IARB para
decidir cul se atiende antes. En el caso de las interrupciones externas, su IARB es el
del registro SIMCR. Es importante hacer notar que si este registro contiene un valor
igual a 0 ser atendida como una interrupcin esprea.
2.3.1.5.3 Ciclo de reconocimiento y confirmacin de una interrupcin externa
La solicitud y atencin a una interrupcin implica un dilogo entre el 68331 y el
dispositivo solicitante de acuerdo con el siguiente protocolo de comunicaciones:
El dispositivo solicita la interrupcin activando alguna lnea #IRQ[1..7].
El micro responde (si la interrupcin est permitida y una vez resuelto el
proceso de arbitraje) activando R/#W, FC[0..2], AS# y DS# a nivel alto,
y poniendo en SIZ[0..1] el valor adecuado (8 o 16 bis) para comunicarse
con el dispositivo.
El perifrico debe activar AVEC# (para solicitar la atencin en modo
autovectorizado) o DSACK# (en cuyo caso la interrupcin ser atendida
en modo vectorizado y el dispositivo debe haber colocado previamente el
vector de interrupcin en el bus de datos).
45
En cualquiera de estos casos el 68331 responde desactivando #DS y
#AS, cuando el perifrico desactive #DSACK, la CPU32 comenzar la
atencin efectiva a la interrupcin (si las interrupciones son
autovectorizadas esto es inmediato, dado que las seales #DSACK no
estarn activas durante el ciclo). Este proceso conlleva guardar en la pila
el estado de ejecucin (esto es, los registros PC y SR), buscar el vector
de interrupcin adecuado y ejecutarlo.
Si deseamos que todas las #IRQ[1..7] sean autovectorizadas podemos poner a nivel
bajo el terminal AVEC# permanentemente.
2.3.1.6 Lgica de direcciones
El SIM permite que el diseador de sistemas basados en el 68331 disponga de la
posibilidad de generar hasta 12 seales de seleccin de pastilla (chip-selects) sin
necesidad de aadir nuevos circuitos integrados. Es posible programar qu zona del
mapa de memoria activa cada una de estas seales y generar internamente las seales
DSACK# y AVEC# con los tiempos de respuesta adecuados al dispositivo perifrico o
la memoria utilizados.
2.3.1.6.1 Registros de configuracin de la lgica de direcciones: CSBORBT y
CSOR0..CSOR10
Usando estos registros podemos programar el modo de funcionamiento de la lgica de
direcciones incorporada en el SIM. Todos ellos comparten una misma estructura interna
de campos:
MODE: permite seleccionar si el chip-select correspondiente es
asncrono (MODE=0) o est sincronizado con la seal de reloj ECLK.
BYTE: permite definir si el dispositivo activado usa el byte ms
significativo del bus de datos (BYTE=10), el menos significativo
(BYTE=01) o ambos (BYTE=11).
R/#W: permite definir chip-selects para dispositivos de slo lectura
(R/#W=01), de slo escritura (R/#W=10) o de lectura-escritura
(R/#W=11).
46
STRB: si se ha seleccionado el modo asncrono (MODE=0), permite
definir si la activacin del chip-select depende de #AS (STRB=0) o de
#DS.
#DSACK: especifica el nmero de estados de espera que se ha de
insertar antes de finalizar el ciclo de bus asociado a esta seal; el mnimo
es 0000 y el mximo es 1101; el valor 1110 indica que deseamos un
acceso rpido de slo 2 ciclos de reloj.
SPACE: determina en qu modo de funcionamiento ha de estar la
CPU32 para que el ciclo de bus se pueda ejecutar con normalidad: modo
usuario (SPACE=01), modo supervisor (SPACE=10) o cualquiera de los
dos (SPACE=11).
IPL: nivel de prioridad asociado a la seal, en el caso de que sea usada
para generar las seales DSACK# o AVEC# para un dispositivo que
haya solicitado una interrupcin.
AVEC#: habilita las interrupciones autovectorizadas (AVEC#=1).
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Campo MODE BYTE R/W# STRB DSACK# SPACE IPL AVEC#

2.3.1.6.2 Registros de configuracin de la direccin base: CSBARBT y
CSBAR0..CSBAR10
La memoria accesible con cada seal de chip-select puede comenzar en cualquier
direccin que sea mltiplo de 2 KB. El tamao del bloque de memoria al que se accede
puede tomar 8 valores entre un mnimo de 2 KB y un mximo de 1 MB. Los bits 15 al 3
especifican qu valores adoptan virtualmente los terminales ADDR23-ADDR11 del bus
de direcciones; los bits 2 al 0 (BLKSZ[2..0]) determinan el tamao del bloque accedido:
BLKSZ[2..0] Tamao del bloque Bits de direcciones fijos
000 2 KB ADDR[23..11]
001 8 KB ADDR[23..13]
010 16 KB ADDR[23..14]
011 64 KB ADDR[23..16]
100 128 KB ADDR[23..17]
101 256 KB ADDR[23..18]
110 512 KB ADDR[23..19]
111 1 MB ADDR[23..20]
Tabla 12 Determinacin del tamao de bloque de memoria.

47
Para permitir el autoarranque, el CSBOOT# se conectar a una memoria no voltil y
debe estar configurado en la direccin base $000000, ya que es ah donde la CPU32 lee
los vectores de interrupcin 0 y 1 tras el reset.
2.3.1.7 Inicializacin del SIM
El SIM debe ser el primer mdulo que inicialicemos al salir del reset, dado que realiza
funciones de supervisin y arbitraje del sistema. Los pasos a seguir son:
1. Programar el SIMCR, principalmente los siguientes puntos:
El campo IARB que determina el nivel de arbitraje de las
interrupciones del SIM (al salir del reset vale $F, el nivel
mximo).
El campo IARB que determina el nivel de arbitraje de las
interrupciones del SIM (al salir del reset vale $F, el nivel
mximo).
El bit MM que determina la posicin en el mapa de memoria de
los registros (por defecto estarn situados a partir de $FFF000).
El bit SUPV controla si el acceso a los registros se puede o no
hacer en modo usuario (por defecto slo pueden hacerlo los
programas que funcionen en el modo supervisor).
El bit FRZSW deshabilita el supervisor SW y las interrupciones
peridicas durante la ejecucin paso a paso del BDM
(deshabilitado por defecto).
El bit FRZBM habilita el supervisor de bus durante la ejecucin
paso a paso del BDM (deshabilitado por defecto).
2. Programar el SYNCR:
El bis SWE habilita o deshabilita el supervisor SW (habilitado por
defecto).
Los campos SWP y SWT fijan el periodo de funcionamiento del
temporizador del supervisor SW (por defecto est fijado a su
mnimo valor).
48
El bit HME habilita el supervisor de parada (inicialmente
deshabilitado).
El bit BMT fija el tiempo mximo de espera de supervisor de bus
antes de generar internamente la seal #BERR (por defecto espera
64 ciclos de reloj, su valor mximo).
3. Programar el SYPCR, principalmente:
Los bits W, X e Y permiten establecer la velocidad del reloj del
sistema (por defecto multiplican la frecuencia de referencia por
256).
El bit RSTEN habilita la provocacin de un reset cuando se
detecte falta de reloj de referencia (por defecto est deshabilitado).
4. Programar el PICR:
El campo PIRQL fija el nivel de prioridad de las interrupciones
peridicas (o bien las deshabilita).
El campo PIV establece el nmero del vector de interrupcin de
las mismas (por defecto vale $F, que es el vector asociado a las
interrupciones no inicializadas). Lo inicializaremos con algn
vector de usuario (a partir de $40).
5. Programar el PITR:
El bit PTP fija si se usa o no el preescalado de valor 512 en el
temporizador del interrupciones peridicas (por defecto se usa el
preescalado).
El campo PITM fija el periodo del interrupcin de dicho
temporizador.
6. Programar los chip-selects que use nuestro sistema, empleando para
ello los registros CSPAR0, CSPAR1, CSBARBT, CSBAR,
CSORBT y CSOR.
7. Programar los puertos de entrada o salida E y F (el puerto C siempre
funciona como salida):
49
Los registros PEPAR y PFPAR, habilitan dichos puertos (por
defecto, su valor depende de las seales DATA8 y DATA9
durante el reset).
Los registros DDRE Y DDRF configuran cada bit de los mismos
como entradas (DDREx=0) o como salidas (por defecto son
entradas).
Los registros PORTE y PORTF reflejan el contenido de los
puertos (para los bits configurados como entradas) o bien lo
establecen (para los bits configurados como salidas).
2.3.2 Temporizador de propsito general (GPT)
Un temporizador de propsito general (GPT) de 11 canales como el que contiene el
MC68331 se usa en sistemas donde se requiere un nivel de control medio por parte del
procesador.
El GPT consta de una unidad de captura/comparacin, un acumulador de pulsos y dos
moduladores de ancho de pulso. La conexin interna se realiza a travs del bus
intermodular (IMB) mediante una unidad de interfaz.
La unidad de captura/comparacin incluye tres canales de captura de entrada, cuatro de
comparacin de salidas y otro canal ms que puede seleccionarse tanto como captura de
entrada como de comparacin de salida. Estos canales comparten un contador continuo
de 16 bits cuya seal de reloj se puede obtener de un preescalador de nueve etapas
conectado al reloj del sistema o bien a travs de una seal externa del reloj, PCLK.
El acumulador de pulsos contiene un contador de 8 bits que puede usarse como
contador de sucesos o como acumulador de tiempo, de modo que cuenta los pulsos de
reloj mientras se halla activo el terminal PAI.
El modulador de ancho de pulso (PWM) genera una seal peridica cuadrada cuya
duracin del ciclo de trabajo se puede seleccionar desde el 0 % al 100 % mediante
software. En el caso de un ciclo de trabajo del 50 % tendremos la tpica onda cuadrada.
Los circuitos PWM contienen un contador continuo de 16 bits cuyo reloj puede
ajustarse con el mismo preescalador de nueve etapas utilizado por la unidad de
captura/comparacin o por la entrada del PCLK.
50
Todos los terminales del GPT pueden utilizarse como entradas/salidas de propsito
general. Los terminales de captura de entradas y los de comparacin de salidas
constituyen un puerto paralelo bidireccional de 8 bits (PORTGP). Los terminales del
PWM son slo de salida y los de PAI y PCLK son slo de entrada.
2.3.2.1 Registros del GPT y mapa de direcciones
Los registros del GPT con su respectivo mapa de direcciones se detallan en la tabla
siguiente:
Direccin 15 8 7 0
$FFF900 MDULO DE CONFIGURACIN DEL GPT (GPTMCR)
$FFF902 (RESERVADA PARA TEST)
$FFF904 CONFIGURACIN DE INTERRUPCIN (ICR)
$FFF906 DIRECC. DATOS PGP (DDRGP) DATOS PGP (PORTGP)
$FFF908 MSCARA DE ACCIN OC1 (OC1M) DATOS DE ACCIN OC1 (OC1D)
$FFF90A CONTADOR DEL TEMPORIZADOR (TCNT)
$FFF90C CONTROL DE PA (PACTL) CONTADOR DE PA (PACNT)
$FFF90E ENTRADA DE CAPTURA 1 (TIC1)
$FFF910 ENTRADA DE CAPTURA 2 (TIC2)
$FFF912 ENTRADA DE CAPTURA 3 (TIC3)
$FFF914 SALIDA DE COMPARACIN 1 (TOC1)
$FFF916 SALIDA DE COMPARACIN 2 (TOC2)
$FFF918 SALIDA DE COMPARACIN 3 (TOC3)
$FFF91A SALIDA DE COMPARACIN 4 (TOC4)
$FFF91C ENTRADA DE CAPTURA 4/SALIDA DE COMPARACIN 5 (TI4/O5)
$FFF91E CONTROL DE TEMP. 1 (TCTL1) CONTROL DE TEMP. 2 (TCTL2)
$FFF920 MSCARA DE TEMP. 1 (TSMK1) MSCARA DE TEMP. 2 (TSMK2)
$FFF922 FLAG DE TEMP. 1 (TFLG1) FLAG DE TEMP. 2 (TFLG2)
$FFF924 COMPRAR. FORZADA (CFORC) CONTROL C DE PWM (PWMC)
$FFF926 CONTROL A DE PWM (PWMA) CONTROL B DE PWM (PWMB)
$FFF928 CONTADOR DE PWM (PWMCNT)
$FFF92A BUFFER DE PWMA (PWMBUFA) BUFFER DE PWMB (PWMBUFB)
$FFF92C PREESCALADOR DEL GPT (PRESCL)
Tabla 13 Mapa de direcciones de los registros del GPT.
Se puede acceder a todos los registros utilizando accesos a byte o a palabra. A los
registros de captura/comparacin y de modulacin de ancho de pulso se debe acceder
mediante operaciones de palabra para garantizar la coherencia. Si se utilizasen accesos a
byte para leer un registro como el contador del temporizador (TCNT), podra darse el
caso de que el byte al que no se ha accedido cambiase mientras se lee el otro byte. Por
ello se debe acceder a ambos bytes a la vez.
2.3.2.2 Funcionamiento por polling o por interrupciones
Todas las funciones del GPT tienen asociadas una interrupcin y una bandera de estado.
Los registros de la bandera de interrupcin del temporizador (TFLG1 y TFLG2)
contienen las banderas de estado utilizadas para el funcionamiento por polling o por
51
interrupciones, los registros de mscara (TMSK1 y TMSK2) contienen bits de control
de la interrupcin. Las rutinas de control pueden monitorizar el funcionamiento del
GPT consultando los registros de estado. Cuando se produce un evento, la rutina de
control transfiere el control a una rutina de servicio que trata dicho evento. Si se han
habilitado las correspondientes interrupciones, el GPT solicita una interrupcin de
servicio cuando dicho evento se produce. La utilizacin de interrupciones evita tener
que hacer un polling continuo de las banderas de estado para ver si se ha producido
algn evento. Las banderas de estado deben borrarse despus de dar servicio a una
interrupcin, para deshabilitar la peticin de interrupcin.
2.3.2.2.1 Funcionamiento por polling
Cuando se produce un evento en el GPT, se pone a uno la bandera de estado en TFLG1
o TFLG2, stas son activadas por el GPT, no por la CPU. TFLG1 y TFLG2 son
registros de 8 bits a los que se puede acceder bien individualmente o conjuntamente con
un acceso de 16 bits. Estos registros se ponen a cero cuando se hace un reset.
A cada bit de TFLG1 y TFLG2 le corresponde un bit en TMSK1 y TMSK2 situado en
la misma posicin. La interrupcin asociada a un evento slo se genera cuando se
encuentra habilitado su respectivo bit de mscara.
Una vez activada una bandera de estado por un evento, debe borrarse escribiendo un
cero en el bit correspondiente del registro. Los registros de estado se borran en una
secuencia particular: Primero debe leerse el registro para activar las banderas, despus
deben escribirse ceros en las banderas que hay que borrar. Si se produce un nuevo
evento en el tiempo transcurrido desde que se lee el registro hasta que se escribe, la
bandera asociada no se borrar.
En el funcionamiento por polling se deber consultar continuamente el estado de las
banderas y atender la correspondiente rutina de servicio cuando se active una.
A continuacin se muestra la tabla de banderas de estado del GPT:
Nemnico Asignacin de
Registros
Fuente
IC1F TFLG1 Entrada de Captura 1
IC2F TFLG1 Entrada de Captura 2
IC3F TFLG1 Entrada de Captura 3
OC1F TFLG1 Salida de Comparacin 1
OC2F TFLG1 Salida de Comparacin 2
OC3F TFLG1 Salida de Comparacin 3
52
OC4F TFLG1 Salida de Comparacin 4
I4/O5F TFLG1 Entrada de Captura 4 / Salida de Comparacin 5
TOF TFLG2 Desbordamiento del temporizador
PAOVF TFLG2 Desbordamiento del acumulador de pulsos
PAIF TFLG2 Entrada del acumulador de pulsos
Tabla 14 Tabla de banderas de estado del GTP.
2.3.2.2.2 Interrupciones del GPT
El GPT tiene 11 fuentes internas que pueden provocar una peticin de interrupcin.
stas se activan poniendo a uno los bits de los registros TMSK1 y TMSK2. Se trata de
registros de 8 bits a los que se puede acceder bien individualmente o bien
conjuntamente con un acceso de 16 bits. Estos registros se inicializan a cero despus de
un reset. Cada bit de TMSK1 y TMSK2 tiene su respectivo bit en TFLG1 y TFLG2
situado en la misma posicin. TMSK2 controla tambin el funcionamiento del
preescalador.
El valor del campo de nivel de interrupcin (IRL) del registro de control de
interrupciones (ICR) determina la prioridad de las peticiones de interrupcin del GPT.
Los valores de IRL se corresponden con las seales de peticin de interrupcin
#IRQ[7:1] del MCU. IRQ7 es la seal de peticin de interrupcin de mayor prioridad e
IRQ1 la de menor. Un valor de 111 hace que se active IRQ7 cuando se produce una
peticin de interrupcin, valores inferiores hacen que se activen las correspondientes
seales de peticin de menor prioridad. Si se pone el campo a 000, se desactivan las
interrupciones.
La CPU32 reconoce slo seales de peticin de interrupcin con una prioridad mayor
que el valor de la mscara de prioridad de interrupcin (IP) del registro de estado.
Cuando la CPU reconoce una peticin de interrupcin, la prioridad de dicha peticin se
anota en la mscara de IP y se pone en las lneas de direccin del IMB. Si dicho valor
es el mismo que el del IRL, se produce un arbitraje en la prioridad. Esta prioridad del
GPT viene determinada por el valor del campo de arbitraje de interrupciones, IARB,
del registro de configuracin, GPTMCR. A cada mdulo del microcontrolador que
pueda hacer peticiones de interrupcin, debe asignrsele un valor IARB diferente y
distinto de cero para poder implementar un esquema de arbitraje.
Cuando el GPT gana el arbitraje de interrupcin, responde al ciclo de reconocimiento
de la CPU colocando un nmero de vector de interrupcin en el bus de datos. El
nmero de vector se utiliza para calcular el desplazamiento dentro de la tabla de
53
vectores de excepcin de la CPU32. Los nmeros de vector se forman mediante la
concatenacin del valor del campo IVBA del ICR con un nmero de 4 bits que
proporciona el GPT en funcin de la peticin de interrupcin atendida. El hardware
evita que el nmero de vector pueda cambiar cuando se est sacando al IMB. La
asignacin de los nmeros de vectores se muestra en la siguiente tabla:
Nombre
Nmero de
Fuente
Fuente
Nmero de
Vector
--- 0000 Canal de Ajuste IVBA : 0000
IC1 0001 Entrada de Captura 1 IVBA : 0001
IC2 0010 Entrada de Captura 2 IVBA : 0010
IC3 0011 Entrada de Captura 3 IVBA : 0011
OC1 0100 Salida de Comparacin 1 IVBA : 0100
OC2 0101 Salida de Comparacin 2 IVBA : 0101
OC3 0110 Salida de Comparacin 3 IVBA : 0110
OC4 0111 Salida de Comparacin 4 IVBA : 0111
IC4/OC
5
1000
Entrada de Captura 4 / Salida de
Comparacin 5
IVBA : 1000
TO 1001 Desbordamiento del Temporizador IVBA : 1001
PAOV 1010
Desbordamiento del Acumulador de
Pulsos
IVBA : 1010
PAI 1011 Entrada del Acumulador de Pulsos IVBA : 1011
Tabla 15 Fuentes de interrupcin del GPT.
2.3.2.3 Descripcin de los terminales
El GPT utiliza 12 terminales, cada uno de los cuales puede llevar a cabo ms de una
funcin. Podemos agruparlos en los siguientes grupos funcionales:
2.3.2.3.1 Terminales de captura de entradas (IC[1:3])
Cada uno de estos terminales est asociado a una nica funcin de captura de entrada
del GPT. El funcionamiento tiene la histresis siguiente: se garantiza que cualquier
pulso de duracin superior a dos ciclos de reloj es vlido y que cualquiera inferior a uno
no se tiene en cuenta. Cada pin tiene asociado un registro de captura de 16 bits que
conserva el valor capturado del contador. Estos terminales pueden utilizarse tambin
como E/S de propsito general.
2.3.2.3.2 Terminal de captura de entrada / comparacin de salida (IC4/OC5)
Este pin puede configurarse tanto para la captura de entrada como para la comparacin
de salida. Tiene asociado un registro de 16 bits que se utiliza para guardar bien el valor
de captura de entrada o bien el de comparacin de salida. Cuando se usa para la captura
54
de entrada tiene la misma histresis que cualquier otro. Tambin se puede utilizar como
E/S de propsito general.
2.3.2.3.3 Terminales de comparacin de salidas (OC[1:4])
Estos terminales se utilizan para las funciones comparacin de salida del GPT. Cada
terminal tiene asociado un registro de comparacin y un comparador de 16 bits. Los
terminales OC2, OC3 y OC4 estn asociados a su propia funcin de comparacin,
mientras que la funcin del OC1 puede afectar a la salida de todos los terminales de
comparacin. Si el terminal OC1 no se necesita para ninguna funcin de comparacin,
puede utilizarse para sacar la seal de reloj seleccionada para el temporizador. Todos
estos terminales pueden utilizarse tambin como E/S de propsito general.
2.3.2.3.4 Terminal de entrada del acumulador de pulsos (PAI)
El PAI permite contar sucesos externos o bien contar el tiempo durante el que se
encuentra activa la seal en el terminal PAI. El PAI tiene la misma histresis que los
terminales de captura de entradas. Tambin puede utilizarse como entrada de propsito
general
2.3.2.3.5 Terminales de modulacin de ancho de pulso (PWMA, PWMB)
Los terminales PWMA y PWMB estn conectados a las salidas del modulador de
ancho de pulso. Los moduladores pueden programarse para generar una onda peridica
de frecuencia y porcentaje del ciclo de trabajo variables. PWMA puede utilizarse para
sacar la seal de reloj seleccionada como entrada del contador del PWM. Estos
terminales pueden utilizarse tambin como salidas de propsito general.
2.3.2.3.6 Entrada auxiliar de reloj del temporizador (PCLK)
El terminal PCLK sirve para conectar un reloj externo al GPT para proporcionar la
seal de reloj de la unidad de captura/comparacin o de la unidad PWM en lugar de la
proporcionada por el preescalador. La histresis de PCLK es la misma del resto de
entradas del GPT. Tambin puede utilizarse como entrada de propsito general.
2.3.2.4 E/S de propsito general
Cualquier terminal del GPT puede utilizarse como E/S de propsito general si no se
est usando para otra cosa. Los terminales de captura/comparacin son bidireccionales.
La funcin como entrada o salida se controla con el bit de direccin de datos del registro
de direccin de datos del puerto GP (DDRGP).
55
Los datos se leen y se escriben en el registro de datos del puerto GP (PORTGP). Los
datos de los terminales se pueden leer incluso si estn configurados para una funcin del
temporizador. Los datos ledos del puerto PORTGP siempre reflejan el estado del
terminal externo, mientras que los que se escriben en dicho puerto no siempre afectan a
dicho terminal externo.
Los datos escritos en el puerto PORTGP no se trasladan a los terminales utilizados para
la comparacin de salidas, pero el dato es capturado por el registro del puerto. Cuando
se desactiva la funcin de comparacin de salida, el ltimo dato escrito en el puerto,
PORTGP, se saca por el terminal correspondiente, si est configurado como de salida.
Los datos escritos en el puerto PORTGP pueden provocar capturas de entrada si el
terminal correspondiente est configurado para ello.
Los terminales PAI y PCLK proporcionan entradas de propsito general. Se puede ver
el estado de estos terminales accediendo a los bits de estado PAIS y PCLKS del
registro de control del acumulador de pulsos (PACTL).
Los terminales de salida de modulacin de ancho de pulso, A y B, pueden servir como
salidas de propsito general. Los bits FPWMx y F1x de los registros CFORC y
PWMC, respectivamente, controlan su funcionamiento.
2.3.2.5 Preescalador
Las unidades de captura/comparacin y de modulacin de ancho de pulso tienen
contadores continuos independientes de 16 bits como componentes principales para la
temporizacin. Estos contadores obtienen su reloj del preescalador o de la entrada
PCLK.
En el preescalador se aplica al reloj del sistema un divisor de nueve etapas. El
preescalador proporciona como salidas los resultados de dividir el reloj del sistema entre
2, 4, 8, 16, 32, 64, 128, 256 y 512. A estas salidas se conectan dos multiplexores, uno
para la unidad de captura/comparacin y otro para la unidad PWM.
56
Cada multiplexor puede seleccionar una de siete de las salidas del preescalador o la
entrada externa del terminal PCLK. La salida del multiplexor para el contador del
temporizador (TCNT) se selecciona con los bits CPR[2:0] en el registro 2 de la
mscara de interrupciones del temporizador (TMSK2). La salida del multiplexor para el
contador del PWM (PWMCNT) se selecciona mediante los bits PPR[2:0] del registro
de control del PWM (PWMC).
- Figura 12 Diagrama de bloques del preescalador.
Despus de un reset, el GPT se configura para que el TCNT utilice el reloj del sistema
dividido entre cuatro y el PWMCNT dividido entre dos. Con el software de
inicializacin se puede cambiar el factor de divisin con la particularidad de que en los
bits PPR se puede escribir en cualquier momento, pero en los bits CPR slo se puede
escribir una vez despus del reset, salvo que el GPT se encuentre en modo test o freeze.
El preescalador se puede leer en cualquier momento. En modo freeze tambin se puede
escribir en l. Deben utilizarse accesos a palabra para garantizar la coherencia aunque se
57
permiten los accesos a byte. El valor del preescalador se encuentra en los bits [8:0],
mientras que los bits [15:9] no estn implementados y se leen como ceros.
Las salidas del multiplexor (incluida la seal PCLK) pueden conectarse a terminales
externos. El bit CPROUT del registro TMSK2 configura el terminal OC1 como salida
del reloj de TCNT y el bit PPROUT del registro PWMC configura el terminal PWMA
como salida del reloj de PWMCNT. Se puede escribir en CPROUT y PPROUT en
cualquier momento. Cuando por OC1 y PWMA se sacan las seales de reloj, su ciclo
de trabajo no es del 50%.
El preescalador proporciona tambin tres seales de reloj al selector de reloj del
acumulador de pulsos, que son: el reloj del sistema dividido por 512, la seal del reloj
externo que viene del terminal PCLK y la seal de reloj de la unidad de
captura/comparacin.
2.3.2.6 Unidad de captura/comparacin
La unidad de captura/comparacin consta del contador del temporizador (TCNT), las
funciones de captura de entradas (IC) y las de comparacin de salidas (OC).
2.3.2.6.1 Contador del Temporizador
El contador del temporizador (TCNT) es el componente clave de la unidad de
captura/comparacin. Es un contador continuo de 16 bits, que comienza a contar cuando
el procesador vuelve de un reset. El contador no puede pararse durante el
funcionamiento normal. Tras un reset, el GPT est configurado para usar el reloj del
sistema dividido por cuatro como entrada del contador. El preescalador divide el reloj
del sistema y proporciona frecuencias de entrada que se pueden seleccionar. Mediante
software de usuario se puede configurar el sistema para utilizar una de las siete salidas
del preescalador o una seal de reloj externa.
Se puede leer el contador en cualquier momento sin que afecte a su valor. Como el GPT
est conectado mediante un interfaz con el IMB y ste tiene un bus de 16 bits, deben
hacerse lecturas de palabras para garantizar la coherencia, aunque tambin se pueden
hacer accesos a byte. El contador se pone a $0000 durante el reset y funciona como un
registro de slo lectura, salvo en los modos test y freeze en que se puede escribir
cualquier valor en l.
58
Cuando el contador pasa de $FFFF a $0000, se activa el flag de desbordamiento del
temporizador (TOF) en el registro 2 de la bandera de interrupciones del temporizador
(TFLG2). Se puede habilitar una interrupcin con el correspondiente bit de activacin
de interrupciones (TOI) del registro 2 de la mscara de interrupciones del temporizador
(TMSK2).
2.3.2.6.2 Funciones de captura de entradas
Todas las funciones de captura de entradas utilizan el mismo contador de 16 bits
(TCNT). Cada terminal de captura de entrada tiene un latch de 16 bits y una lgica de
deteccin/seleccin de flanco. Cada funcin de captura de entrada tiene asociada una
bandera de estado y puede hacer que el GPT lance una peticin de interrupcin de
servicio.
Cuando el flanco de la seal realiza la transicin seleccionada en un terminal de captura
de entrada, el latch asociado captura el contenido del TCNT y activa la bandera de
estado correspondiente. Tambin se puede generar una peticin de interrupcin cuando
se detecta la transicin.
La lgica de deteccin de flancos consta de dos bits de control por cada entrada que
activan la deteccin de flancos y seleccionan una transicin a detectar. Los bits EDGxA
y EDGxB del registro 2 de control del temporizador (TCTL2) determinan si las
funciones de captura de entrada deben detectar slo flancos de subida, slo flancos de
bajada o ambos. Si se borran ambos bits, se desactiva la funcin de captura de entrada.
Estas funciones operan independientemente unas de otras, y pueden capturar el mismo
valor de TCNT si se detectan flancos de entrada distintos dentro del mismo ciclo del
contador.
La lgica de interrupciones de la captura de entradas incluye una bandera de estado, que
indica que se ha detectado un flanco, y un bit de activacin de interrupcin. Un evento
de captura de entrada pone a 1 el bit ICxF del registro 1 de la bandera de interrupcin
del temporizador (TFLG1) y hace que el GPT pida una interrupcin si est activado el
correspondiente bit ICxI en el registro 1 de la mscara de interrupcin del temporizador
(TMSK1). Si no se activa dicho bit ICxI, el software debe mirar la bandera de estado
para saber si ha ocurrido un evento (polling).
Los eventos de captura de entradas son normalmente asncronos con el contador del
temporizador. Debido a esto, es necesario adaptar las seales por medio de un
59
sincronizador y un filtro digital. Como los eventos estn sincronizados con el reloj del
sistema, la transicin del valor del contador al latch y el incremento del contador
suceden en semiciclos opuestos del ciclo del reloj del sistema. Como las entradas tienen
histresis, la captura de cualquier transicin mayor que dos ciclos de reloj est
garantizada y cualquier transicin de duracin inferior a un ciclo de reloj se ignora.
Debido a estas necesidades de sincronizacin y a los tiempos de propagacin de las
seales transcurren varios ciclos de reloj del sistema desde que se produce la transicin
en el terminal hasta que se realiza la captura.
El registro de captura de entradas es de 16 bits. Se requiere acceso a palabra para
garantizar la coherencia aunque est permitido el acceso a byte. Los registros de captura
de entradas pueden leerse en cualquier instante sin que afecte a sus valores.
Cada vez que se detecta el flanco seleccionado se realiza la captura de la entrada,
incluso si est activada la bandera de estado de captura. Esto significa que el valor ledo
del registro de captura de entradas corresponde al ltimo flanco detectado que puede no
ser el que caus que se activase la bandera.
2.3.2.6.3 Funciones de comparacin de salidas
Cada terminal de comparacin de salida del GPT tiene asociados un registro de
comparacin y un comparador, ambos de 16 bits. Cada funcin de comparacin de
salida tiene asociada una bandera de estado y puede hacer que el GPT genere una
peticin de interrupcin de servicio. La lgica de las salidas de comparacin est
diseada para prevenir falsas comparaciones durante los periodos de transicin de los
datos.
Cuando el contenido programado de un registro de salida de comparacin coincide con
el valor del TCNT, se activa un bit (OCxF) de la bandera de estado de salida de
comparacin en TFLG1. Si est activado el correspondiente bit de interrupcin (OCxI)
de TMSK1, se origina una peticin de interrupcin al producirse la coincidencia.
El funcionamiento de la comparacin de salida 1 (OC1) difiere de las otras funciones de
comparacin de salida. La lgica de control de OC1 puede programarse para provocar
cambios de estado en otros terminales de comparacin cuando se produce una
coincidencia en OC1. Los bits de control del registro de comparacin forzada del
temporizador (CFORC) permiten forzar el valor de las salidas.
60
2.3.2.6.3.1 Comparacin de salida 1
La comparacin de salida 1 puede afectar a cualquiera de los OC[1:5] cuando se
produce una coincidencia. Adems, para permitir la generacin de mltiples seales de
control a partir de una nica comparacin, esta funcin hace posible que dos o ms
funciones de salida de comparacin controlen el estado de un nico terminal de
comparacin. Se pueden generar de esta forma pulsos de salida con una duracin de tan
slo un ciclo de contador del temporizador.
Los registros de mscara de accin (OC1M) y de datos de accin (OC1D) controlan la
funcin OC1. Poniendo a 1 un bit en OC1M se selecciona el correspondiente bit del
puerto de datos paralelo del GPT. Los bits de OC1D determinan si los bits
seleccionados deben ser activados o borrados cuando se produzca una coincidencia
OC1. Los terminales deben configurarse como de salida para que los datos del registro
salgan al terminal correspondiente. Si se producen dos coincidencias, una OC1 y otra de
otra salida, a la vez y ambas intentan modificar el mismo terminal, la funcin OC1 es la
que toma el control del terminal.
2.3.2.6.3.2 Comparacin de salida forzada
El registro de comparacin forzada (CFORC) se utiliza para hacer comparaciones
forzadas. La accin resultante de una comparacin forzada es la misma que cuando se
produce una coincidencia en una salida de comparacin, excepto que no se activan las
banderas de estado. Los canales forzados ejecutan las acciones programadas
inmediatamente despus de la escritura en el CFORC.
El registro CFORC es el byte superior de un registro de 16 bits que contiene tambin al
registro de control del PWM (PWMC). Los accesos a este registro pueden ser tanto de
8 como de 16 bits. Las lecturas de los bits de comparacin forzada (FOC) no tienen
ningn sentido y siempre devuelven ceros.
2.3.2.6.4 Captura de entrada 4 / Comparacin de salida 5
El terminal IC4/OC5 se puede utilizar para la captura de entrada, para la comparacin
de salida y como E/S de propsito general. La funcin del terminal como captura de
entrada (IC4) o comparacin de salida (OC5) se configura con el bit de activacin de
funcin (I4/O5) del registro de control del acumulador de pulsos (PACTL). Las
funciones de E/S IC4/OC5 se controlan con el bit I4/O5 del registro de direccin de
datos del puerto GP (DDRGP).
61
El registro de 16 bits (TI4/O5) utilizado con la funcin IC4/OC5 acta como un
registro de captura de entrada o como uno de comparacin de salida segn la funcin
que se seleccione. Cuando se utilice como registro de captura de entrada 4, no podr
escribirse en l excepto en modo test o freeze.
2.3.2.7 Acumulador de pulsos
El contador del acumulador de pulsos (PACNT) es un contador ascendente de
lectura/escritura de 8 bits. El PACNT puede actuar como contador de sucesos externos
o como acumulador de tiempo contando los ciclos de reloj durante los que el terminal
del PAI est activo.
En el modo contador de sucesos, se incrementa cada vez que se detecta la transicin
seleccionada en la entrada del acumulador de pulsos (PAI). La tasa de reloj mxima que
admite es la del reloj del sistema dividida por cuatro.
En el modo acumulador de tiempo, un seal de reloj incrementa PACNT mientras el
terminal PAI est en estado activo. Hay cuatro posibles fuentes de reloj.
Los dos bits del registro TFLG2 muestran el estado del acumulador de pulsos. La
bandera del acumulador de pulsos (PAIF) indica que se ha detectado un flanco del tipo
seleccionado. La bandera de desbordamiento (overflow) del acumulador de pulsos
(PAOVF) seala que el contador del acumulador ha pasado de $FF a $00. Esto puede
utilizarse para aumentar el rango del contador por encima de los ocho bits.
Se puede hacer una peticin de interrupcin cuando est a uno cada una de las banderas
de estado. Sin embargo, la operacin de interrupcin del PAI depende del modo de
operacin. En modo de contador de sucesos, se pide una interrupcin cuando se detecta
el flanco que se va a contar. En modo contado de tiempo, la peticin se produce cuando
la entrada del PAI cambia de estado activo a inactivo. Las peticiones de interrupcin
son activadas por los bits PAOVI y PAII del registro TMSK2.
Los bits del registro de control del acumulador de pulsos (PACTL) controlan el
funcionamiento de PACNT. El bit PAMOD selecciona la operacin en el modo de
contador de sucesos o contador de tiempo. En modo de contador de sucesos, el bit de
control (PEDGE) determina la deteccin por flanco de subida o de bajada; en modo
contador de tiempo, PEDGE especifica si la seal es activa a nivel alto o a nivel bajo.
Los bits PACLK[1:0] seleccionan el origen del reloj que se utilizar en el modo
acumulador de tiempo.
62
PACTL y PACNT se implementan como registros de 16 bits, pero se puede acceder a
ellos en ciclos de acceso a byte o a palabra. Ambos registros se borran con un reset,
salvo los bits PAIS y PCLKS que muestran el estado de los terminales PAI y PCLK.
El terminal PAI puede utilizarse tambin como entrada de propsito general. El estado
lgico del bit PAIS en PACTL muestra el estado del pin.
2.3.2.8 Unidad de modulacin de ancho de pulso
La unidad de modulacin de ancho de pulso (PWM) tiene dos canales de salida,
PWMA y PWMB. Una nica salida de reloj procedente del multiplexor del
preescalador ataca al contador de 16 bits que se utiliza para controlar ambos canales.
La unidad PWM tiene dos modos de funcionamiento. El modo rpido utiliza una tasa
de reloj igual a 1/256 de la tasa de salida del preescalador; la tasa del modo lento es de
1/32768. Las proporciones de los ciclos de trabajo de ambos canales PWM pueden
controlarse individualmente mediante software. El terminal PWMA puede tambin
sacar la seal de reloj que va al contador PWM. Los terminales PWM pueden utilizarse
tambin como salidas.
2.3.2.8.1 Contador PWM
El contador de 16 bits de la unidad PWM es similar al contador de la unidad de
captura/comparacin. Durante el reset, el GPT est configurado para que el contador
utilice el reloj del sistema divido por dos. El software de inicializacin puede
reconfigurar el contador para que utilice una de las siete salidas del preescalador o una
entrada de reloj externa desde el terminal PCLK.
El registro del contador del PWM (PWMCNT) puede leerse en cualquier momento sin
que se vea afectado su valor. La lectura debe hacerse en modo palabra para garantizar la
coherencia, admitindose tambin los accesos a byte. El contador se pone a cero con el
reset y es un registro de slo lectura salvo en los modos test y freeze.
Quince de los diecisis bits del contador son salidas hacia los multiplexores A y B. Los
multiplexores proporcionan los modos lento y rpido de la unidad PWM. El modo para
PWMA es seleccionado por el bit SFA del registro de control del PWM (PWMC), el
de PWMB lo selecciona el bit SFB del mismo registro.
Los bits PWMA, PWMB y PPR[2:0] controlan la frecuencia de salida de PWM. En el
modo rpido, los bits [7:0] de PWMCNT son utilizados para marcar el ritmo a la lgica
63
del PWM; en el modo lento, se utilizan los bits [14:7]. El periodo de una salida PWM
es 128 veces mayor que el del modo rpido.
PPR
[2:0]
Salida del Preescalador SFA/B=0 SFA/B=1
8.39 Mhz 16.78 Mhz 8.39 Mhz 16.78 Mhz 8.39 Mhz 16.78 Mhz
000 Div 2 = 4.19 Mhz Div 2 = 8.39 Mhz 16.4 Khz 32.8 Khz 128 Hz 256 Hz
001 Div 4 = 2.10 Mhz Div 4 = 4.19 Mhz 8.19 Khz 16.4 Khz 64 Hz 128 Hz
010 Div 8 = 1.05 Mhz Div 8 = 2.10 Mhz 4.09 Khz 8.19 Khz 32 Hz 64 Hz
011 Div 16 = 524 Khz Div 16 = 1.05 Mhz 2.05 Khz 4.09 Khz 16 Hz 32 Hz
100 Div 32 = 262 Khz Div 32 = 524 Khz 1.02 Khz 2.05 Khz 8 Hz 16 Hz
101 Div 64 = 131 Khz Div 64 = 262 Khz 512 Hz 1.02 Khz 4 Hz 8 Hz
110 Div 128 = 66 Khz Div 128 = 131 Khz 256 Hz 512 Hz 2 Hz 4 Hz
111 PCLK PCLK PCLK/256 PCLK/256 PCLK/32768 PCLK/32768
Tabla 16 Margen de frecuencias del PWM para seales de reloj del sistema de 8.39 MHz y 16.78 Mhz.
2.3.2.8.2 Funcin PWM
El ancho de pulso en las salidas de PWM viene determinado por el contenido de los
registros de control PWMA y PWMB. Son registros de 8 bits que forman parte de un
registro de 16 bits. Se puede acceder a PWMA y PWMB como bytes separados o como
un nico registro de 16 bits. Un valor $00 grabado en cualquiera de los registros
provoca que salga por el correspondiente terminal de salida una seal continua de nivel
lgico cero. Un valor de $80 hace que la correspondiente seal de salida tenga un ciclo
de trabajo del 50% y as sucesivamente hasta llegar al valor mximo, $FF, que se
corresponde con una salida que est en el nivel lgico uno para 255/256 del periodo.
Si se ponen a uno los bits F1A (para PWMA) o F1B (para PWMB) en el registro hace
que por el correspondiente terminal salga una seal continua de nivel lgico uno. El
nivel lgico del terminal asociado no vara hasta el fin del ciclo en curso. F1A y F1B
son los dos bits inferiores de CFORC, pero se puede acceder a ellos en la misma
direccin de palabra como PWMC.
Los datos escritos a PWMA y PWMB no se utilizan hasta haber finalizado el ciclo
completo. Esto evita la aparicin de pulsos espurios cortos o largos cuando cambian los
valores de registro. El valor del ciclo en curso se almacena en el buffer del registro
apropiado (PWMBUFA o PWMBUFB). El nuevo valor es transferido del registro
PWM al registro del buffer al finalizar el ciclo en curso.
Los registros PWMA, PWMB y PWMC se ponen a cero tras el reset. Se puede leer o
escribir en estos registros en cualquier momento. PWMC es el byte inferior de un
registro de 16 bits. El byte superior es el registro CFORC. Los registros del buffer,
64
PWMBUFA y PWMBUFB, son de slo lectura en todo momento y se puede acceder a
ellos como bytes separados o como registro nico de 16 bits.
Los terminales PWMA y PWMB pueden utilizarse tambin como salida de propsito
general. Los valores de los bits F1A y F1B se trasladan a los correspondientes
terminales de PWM cuando se desactiva el funcionamiento normal.
2.3.3 Unidad central de proceso (CPU32)
La CPU32 es el mdulo de procesamiento de instrucciones de primera generacin de la
familia MC68300 basada en la conocida familia de procesadores MC68000. Como ya
se ha tenido la ocasin de comentar, un microcontrolador est formado por un
microprocesador unido a un conjunto de perifricos y opcionalmente puede disponer de
memoria tambin integrada en el chip.
La CPU32 tiene muchas caractersticas del MC68010 y del MC68020, as como
algunas caractersticas especficas para las labores de control. Mantiene la
compatibilidad en sentido ascendente con el MC68000 y con el MC68010 y en sentido
descendente con el MC68020 ya que la CPU32 no tiene implementadas algunas
instrucciones de ste. Tambin incorpora dos nuevas instrucciones para facilitar ciertas
tareas de control como son las funciones de ahorro de energa y de bsqueda e
interpolacin en tablas. En todo caso las diferencias con la familia M68000 se limitan al
modo supervisor. Los programas de usuario pueden ser ejecutados en sentido
ascendente sin necesidad de modificacin.
La CPU32 presenta un consumo muy bajo de energa durante la ejecucin normal
gracias a la tecnologa HCMOS con que ha sido desarrollada. Adems el consumo de
energa puede reducirse a un mnimo durante los periodos de inactividad mediante la
ejecucin de la instruccin LPSTOP que detiene a la CPU32 as como a otros
submdulos.
Tambin presenta una mayor velocidad de ejecucin gracias a que dispone de un
pipeline de dos instrucciones que supone un cierto grado de procesamiento en
paralelo.
Por ltimo dispone de un nuevo modo de depuracin en segundo plano que permite que
un PC tome el control del microcontrolador para la depuracin.
65
2.3.3.1 Registros de la CPU32
El modelo de programacin de la CPU32 es bsicamente el mismo que el del
MC68000. Cuenta con los siguientes registros de 32 bits: ocho registros de datos, siete
registros de direcciones, un contador de programa y dos punteros de pila independientes
para los modos de usuario y supervisor. Tambin dispone de un registro de estado de 16
bits y tres nuevos registros accesibles slo en modo supervisor y que son el VBR
(Vector Base Register), el SFC (Source Function Code) y el DFC (Destination
Function Code).
En el modo usuario los registros son los mismos que en el MC68000 y que se detallan
en la tabla 17.
31 16 15 8 7 0
D0
D1
D2
D3 REGISTROS DE DATOS
D4
D5
D6
D7
31 16 15 0
A0
A1
A2
A3 REGISTROS DE DIRECCIONES
A4
A5
A6
31 16 15 0
A7 (USP) PUNTERO DE PILA DE USUARIO
31 0
PC CONTADOR DE PROGRAMA
7 0
CCR REGISTRO DE CDIGOS DE CONDICIN
Tabla 17 Registros del modo usuario.
En el modo supervisor se tiene acceso a nuevos registros. Por un lado se dispone de un
puntero de pila especfico. Adems es visible el registro de estado (SR) completo, ya
que en el modo usuario slo estaba disponible el byte inferior (CCR) que contiene los
cdigos de condicin. En el byte superior se encuentran los tres bits de la mscara de
interrupcin (IP), dos bits para habilitar o inhabilitar los dos modos de trazado en los
que puede trabajar el microprocesador y el bit de seleccin de modo con el que se puede
determinar el nivel de privilegio usuario/supervisor que se desea.
66
Los modos de traza son una ayuda al desarrollo de programas que generan una
excepcin tras la ejecucin de cada instruccin o bien cada vez que se produce una
bifurcacin y que permite la utilizacin de un programa monitor para la depuracin.
- Figura 13 Registro de estado.
Tambin se tiene acceso a los tres nuevos registros que incorpora la CPU32 cuyas
funciones se describen a continuacin:
Registro del Vector Base (VBR): Contiene la direccin base de la tabla
de vectores de excepcin cuya extensin es de 1024 bytes y contiene 256
vectores. Estos vectores son la direccin de memoria donde comienza la
rutina de atencin a la excepcin. Cada vector tiene asignado un nmero
de ocho bits. El procesador multiplica ese nmero por cuatro y le suma el
VBR para calcular la direccin de memoria del vector .
Registros SFC (Source Function Code) y DFC (Destination Function
Code): Son registros de 3 bits. Los cdigos de funcin pueden
considerarse como extensiones de los 24 bits de direcciones disponibles
proporcionando gracias a los cdigos de funcin hasta 8 espacios
direccionables de 16 Mbytes. La instruccin MOVES copia datos
utilizando los registros SFC y/o DFC. Para el movimiento de datos en
los registros de cdigos de funcin se utiliza la instruccin MOVEC. Se
trata de una transferencia de doble palabra siendo ignorados los 29 bits
superiores.


A7 (SSP) PUNTERO DE PILA DE SUPERVISOR
67
31 16 15 8 7 0
(CCR) SR REGISTRO DE ESTADO
31 0
VBR REGISTRO DEL VECTOR BASE
7 0
SFC CODIGO DE FUNCIN DE ORIGEN
DFC CODIGO DE FUNCIN DE DESTINO
Tabla 18 Registros adicionales del modo supervisor.
2.3.3.2 Modos de direccionamiento
La abundancia en modos de direccionamiento es la clave del xito de la familia
MC68000 ya que esa aparente complejidad es lo que realmente simplifica la
programacin. La CPU32 comparte los mismos modos de direccionamiento que la
familia MC68000 y aade algunos otros nuevos que se describen a continuacin.
2.3.3.2.1 Nuevos modos de direccionamiento
Indirecto a registro con ndice y desplazamiento de base: (bd, An, Xn).
La direccin efectiva es: <ea> = (An) + (Xn) + bd
Indirecto a contador de programa con ndice y desplazamiento de base:
(bd, PC, Xn)
La direccin efectiva es: <ea> = (PC) + (Xn) + bd
Escalado de ndice: todos los direccionamientos con ndice admiten un
factor de escala de 1, 2, 4 y 8. Por ejemplo:
El direccionamiento (bd, An, Xn.size*scale) significa:
<ea> = (An) + (Xn*scale) + bd
Bifurcaciones con 32 bits de desplazamiento: La instruccin Bcc
admite desplazamientos de 32 bits al igual que el MC68020, ya que el
68000 y el 68010 slo admite desplazamientos de 16 bits.
2.3.3.3 Instrucciones de la CPU32
La familia MC68300 participa de la filosofa de Motorola de mantener una
compatibilidad ascendente de modo que los programas de usuario puedan ser ejecutados
en procesadores ms avanzados sin la necesidad de que sean modificados y que los
programas que se ejecutan en modo supervisor slo requieran unas mnimas
modificaciones.
68
La CPU32 puede ejecutar el cdigo objeto desarrollado para el 68000 y el 68010. Es
muy similar al 68020 soportando la mayora de las instrucciones de ste.
Las siguientes instrucciones del 68020 no estn implementadas en la CPU32:
BFxxx, CALLM, RTM, CAS, CAS2, PACK, UNPK, cpxxx (instrucciones de
coprocesador).
No se va a entrar en detalle sobre las mismas pero se deber tener en cuenta que si se
dispone de cdigo objeto que las contenga ser necesario modificarlo o bien emular
dichas instrucciones.
La CPU32 tiene implementadas algunas instrucciones nuevas orientadas principalmente
a las aplicaciones de control.
2.3.3.3.1 Nuevas instrucciones
LPSTOP #<dato> - Se trata de una instruccin que se ejecuta en modo
supervisor. El operando inmediato #<dato> de 16 bits se carga en el
registro de estado, el contador de programa avanza hasta la siguiente
instruccin y el procesador se para. La ejecucin se reanuda de nuevo
cuando se genera un ciclo de interrupcin, se entra en modo traza o
despus de un reset.
MOVEC <origen>,<destino> - Es una instruccin especfica para
mover datos a los registros de control SFC, DFC y VBR. Mueve el
contenido de un registro de control a un registro general o viceversa. Se
trata siempre de una operacin de 32 bits.
MOVES Rn,<ea> o MOVES <ea>,Rn Sirve para el movimiento de
datos entre registros y memoria, pero teniendo en cuenta el espacio de
direcciones especificado por los registros de cdigos de funcin SFC y
DFC. Las operaciones pueden ser de 8, 16 y 32 bits.
TBLS.size <ea>,Dn Esta instruccin sirve para realizar la bsqueda e
interpolacin lineal en una tabla. Permite interpolar linealmente hasta
256 valores intermedios entre dos valores consecutivos de una tabla.
<ea> apunta al comienzo de la tabla de interpolacin.
Dx (15:8) offset dentro de la tabla del primero de los datos.
69
Dx (7:0) fraccin de interpolacin entre 0 y 255.
Ejemplo: Dada la tabla de pares de valores de una funcin
(0,0), (1,1000), (15,5000), (35,7000), se desea conocer el
valor interpolado asociado al 7.
Tabla DC.W 0,1000,5000,7000
MOVE.L #$00020080,D0 * la fraccin es (15-1)*256/7=128=$80
* el offset es 2
TBLS.W tabla,D0 * en D0 se obtiene el valor interpolado
El resultado devuelto es 3000 = 1000+(128*(5000-1000))/256

RTD #<desplazamiento> - Funciona igual que RTS pero incrementa el
puntero de pila en (4 + #<despl>).
BKPT - Se genera un punto de ruptura si est habilitado el modo de
depuracin en segundo plano. El vector asociado es el nmero 12.
MULS, MULU El funcionamiento es idntico con la salvedad de que
aceptan operandos de 32 bits y el resultado es de 64.
CHK2 <ea>,Rn Si el contenido de Rn est fuera de dos lmites genera
una excepcin. <ea> contiene la direccin efectiva de la pareja de
lmites, primero el inferior y luego el superior. Esta instruccin es del
68020.
TRAPcc - Causa una excepcin TRAP cuando se cumple la condicin
cc. Se trata de una instruccin del 68020.
2.3.3.4 Depuracin en segundo plano (BDM)
La CPU32 presenta una cualidad nica que consiste en llevar implementado un
depurador en el propio microcdigo de la CPU. El BDM incorpora un conjunto
completo de herramientas de depuracin que permiten ver y modificar los registros y la
memoria.
El BDM permite establecer una comunicacin serie bidireccional con un equipo
externo. Con tan slo implementar un sencillo circuito de comunicacin se puede
controlar la ejecucin desde un PC, por ejemplo. Los terminales asociados a este
proceso de comunicacin son DSI, DSO y DSCLK.
La depuracin en segundo plano (BDM) es una funcin que se activa durante el reset.
Durante el modo de operacin BDM, la ejecucin normal se suspende.
70
2.3.4 Mdulo de comunicaciones serie (QSM)
El QSM contiene dos interfaces serie, la interfaz serie de perifricos en cola (QSPI) y la
interfaz serie de comunicaciones (SCI).
La QSPI facilita la expansin perifrica o la comunicacin entre procesadores mediante
un bus de tres lneas, sncrono y full-duplex. Dispone de cuatro terminales de seleccin
de chip programables permiten seleccionar hasta 16 dispositivos perifricos. Lleva
integrada una cola memoria RAM que permite realizar hasta 16 transferencias serie, de
8 a 16 bits cada una, o bien la transmisin de una cadena de datos de 256 bits, sin
intervencin de la CPU. Un modo especial de bucle proporciona muestreo continuo de
un perifrico serie, con actualizacin automtica de la RAM de la QSPI, para
proporcionar una interfaz eficiente con los convertidores A/D.
La SCI utiliza un un formato NRZ estndar. Funciona tanto en modo full-duplex como
en semi-duplex. Dispone de bits independientes para la activacin del transmisor y del
receptor. Un generador de flujo de datos tipo mdulo proporciona de 32 baudios a 262
Kbaudios con un reloj de sistema de 8.38 MHz, o de 64 baudios a 524 Kbaudios con un
reloj de 16.77 MHz. Se pueden seleccionar longitudes de palabra de 8 o de 9 bits.
Permite la generacin y control de paridad tanto par como impar. Dispone de una
funcin despertador que permite que la CPU se dedique a otras tareas hasta que un dato
completo est disponible.
En este captulo slo se describe la interfaz de comunicacin serie (QSI) por entenderse
que es la de mayor inters para las aplicaciones que se van a desarrollar.
2.3.4.1 Registros generales del QSM
Existen bsicamente tres registros de configuracin generales que son:
QSMCR (Registro de configuracin del QSM) Contiene los
parmetros de interconexin con el bus intermodular, que son: el campo
de arbitraje de interrupciones IARB, el bit de restriccin del modo
usuario SUPV, el bit FRZ1 que permite ignorar la seal FREEZE o
detener el QSPI cuando el IMB activa la seal y el bit STOP que
detiene el reloj del QSM.
QILR (Registro de niveles de interrupcin) Permite configurar el
nivel de prioridad de las interrupciones para cada uno de los mdulos del
71
QSM de forma independiente por medio de los campos ILQSPI e
ILSCI. Se trata de un registro de ocho bits que forma parte de la misma
palabra que contiene al registro QIVR.
QIVR (Registro del vector de interrupciones) Contiene el vector de
interrupcin, INTV[7:0], de ambos submdulos. Cuando se escribe en
este registro slo los 7 bits de mayor peso INTV[7:1] se ven afectados
ya que el valor del bit INTV0 lo proporciona el QSM, tomando valor 0
para el SCI y valor 1 para el QSPI.
2.3.4.1.1 Atencin a las interrupciones
Ambos submdulos disponen de niveles de prioridad independientes. El funcionamiento
no difiere en esencia del resto de los mdulos. Cuando la CPU32 reconoce una
interrupcin de este mdulo coloca el valor de prioridad en la mscara de interrupciones
IP y atiende la excepcin salvo que exista otra del mismo nivel que deber entonces
resolverse mediante el arbitrio de interrupciones.
2.3.4.2 Registros de control de los terminales del QSM
El QSM utiliza 9 terminales de los cuales ocho pueden utilizarse como E/S de propsito
general. Los registros que permiten la configuracin de la funcin de los terminales se
describen a continuacin:
PQSPAR (Registro de asignacin de pines del Puerto QS) Se trata
del byte superior de un registro de 16 bits. Al escribir un 0 en el bit
asociado a cada terminal se asigna ste como E/S de propsito general.
Al escribir un 1 se asigna la funcin asociada al QSPI. Este registro no
afecta al funcionamiento de los terminales del SCI.
DDRQS (Registro de direccin de los datos) Se determina si los
terminales actan como entradas o como salidas. Escribiendo un 1 en el
bit correspondiente a un terminal acta como salida y escribiendo un 0
como entrada.
PORTQS (Registro del Puerto QS) A travs de este registro se leen
los terminales determinados como entrada y se escribe en los terminales
de salida.
72
2.3.4.3 Interfaz de Comunicacin Serie (SCI)
La SCI se comunica con los dispositivos externos a travs de un bus serie asncrono,
utilizando un formato de transmisin NRZ estndar. Es totalmente compatible con otros
sistemas de Motorola, tales como los que incorporan el M68HC11 y M68HC05.
2.3.4.4 Registros de SCI
La programacin de la SCI se realiza a travs de registros generales y de control de
pines del QSM y de cuatro registros de la SCI, que son: dos registros de control,
SCCR0 y SCCR1, un registro de estado, SCSR, y uno de datos, SCDR.
2.3.4.4.1 Registros de control
SCCR0 contiene el campo de seleccin de la velocidad de transmisin,
medida en baudios. Esta velocidad debe establecerse antes de activar la
SCI. La CPU puede leer y escribir en este registro en todo momento.
SCCR1 incluye varios parmetros de configuracin, entre los que se
incluyen los bits de activacin del emisor y el receptor, los de
interrupcin y los del modo de funcionamiento. La CPU puede leer y
escribir en este registro en cualquier momento.
Si se cambia el valor de los bits de control de la SCI durante una operacin de
transferencia, sta puede interrumpirse. Antes de cambiar los valores de los registros
debe permitirse a la SCI terminar la transferencia en curso y, a continuacin, desactivar
el receptor y el transmisor.
2.3.4.4.2 Registro de estado
El registro de estado de la SCI (SCSR) contiene banderas que muestran condiciones de
funcionamiento de la SCI. Las banderas se borran mediante el hardware de la SCI o
mediante una secuencia de lectura/escritura. Por regla general, las banderas se borran
leyendo primero el SCSR y a continuacin leyendo o escribiendo en el SCDR. En una
lectura de doble palabra se puede acceder consecutivamente a ambos registros, SCSR y
SCDR. Esta accin borra los bits de las banderas de estado de recepcin que se
activaron durante la lectura, pero no las de transmisin, TDRE o TC.
Si la SCI enva una seal de activacin de un bit de estado despus de que la CPU haya
ledo los bits de estado, pero antes de que haya ledo o escrito en el SCDR, el bit de
estado afectado no se borra.
73
La lectura de cualquiera de los bytes del SCSR hace que se acceda a los 16 bits
completos, y cualquier bit de estado ya activado en cualquiera de los bytes se borrar en
una lectura o escritura posterior del SCDR.
2.3.4.4.3 Registro de datos
El SCDR contiene dos registros de datos en la misma direccin. El RDR es un registro
de slo lectura que contiene datos recibidos por la interfaz serie de la SCI. Los datos
entran al registro de desplazamiento de recepcin y son transferidos al RDR. El TDR es
un registro de slo escritura que contiene datos a transmitir. Los datos se escriben
primero en el TDR y a continuacin se transfieren al registro de desplazamiento de
transmisin, donde se aaden bits de formato y luego se transmiten. En el campo
R[7:0]/T[7:0] se encuentran los primeros ocho bits de datos recibidos al leer el SCDR o
los primeros ocho bits a transmitir al escribir en el SCDR. R8/T8 se utilizan cuando la
SCI est configurada para funcionar con 9 bits; si est configurada para 8 bits, no tiene
ninguna funcin.
2.3.4.5 Terminales de la SCI
La SCI tiene nicamente dos terminales unidireccionales asociados y que son, el TXD
(datos de transmisin) y el RXD (datos de recepcin). El terminal TXD puede utilizarse
tambin como E/S de propsito general. Su funcionamiento se asigna mediante el
registro de asignacin de pines del puerto QS (PQSPAR). El terminal de datos de
recepcin (RXD) est dedicado a la SCI.
2.3.4.6 Funcionamiento de la SCI
Las banderas de estado de la SCI permiten la gestin del funcionamiento mediante
polling o mediante interrupciones que pueden activarse con los correspondientes bits
del registro SCCR1.
2.3.4.6.1 Definiciones
Bit-Time (Duracin de bit) - Tiempo requerido para transmitir o recibir
un bit de datos; un periodo completo de la frecuencia de transmisin en
baudios.
Start Bit (Bit de arranque) Se trata del primer bit de la trama de
transmisin y que sirve para indicar el comienzo de una trama de datos.
74
Un bit de arranque tiene lgica cero y anuncia el inicio de la trama con
una transicin de uno a cero.
Stop Bit (Bit de parada) - Se trata del ltimo bit de la trama con lgica
uno y que seala el final de una trama de datos.
Frame (Trama) Es una unidad completa de informacin en serie. La
SCI puede utilizar tramas de 10 o de 11 bits.
Data Frame (Trama de datos) Consiste en una trama precedida por
un bit de arranque y terminada por un bit de parada.
Idle Frame (Trama nula) Es cuando no se transmite informacin.
Como la lnea permanece de modo continuo a 1 puede considerarse
como una trama de unos sin bit de arranque.
Break Frame (Trama de ruptura) Se trata de una trama que contiene
slo ceros y sin bit de parada.
2.3.4.6.2 Formatos de transmisin serie
Todas las tramas de datos deben tener un bit de arranque y al menos uno de parada. Los
dispositivos de recepcin y transmisin deben utilizar el mismo formato de trama de
datos. La SCI proporciona soporte hardware tanto para tramas de 10 como de 11 bits. El
bit del modo serie (M) del registro SCCR1 de control de la SCI especifica el nmero de
bits por trama.
El formato de trama de datos de diez bits, el ms habitual en los interfaces serie NRZ
consiste en un bit de arranque, ocho bits de datos (primero el LSB) y un bit de parada.
La trama de datos tpica de once bits consta de un bit de arranque, ocho bits de datos, un
bit de paridad y uno de parada.
2.3.4.6.3 Reloj de transmisin
El reloj de transmisin de la SCI se programa escribiendo un valor de 13 bits en el
campo de velocidad de transmisin (SCBR) del registro SCCR0 de control de la SCI.
La velocidad de transmisin en baudios se obtiene a partir del reloj del sistema mediante
un contador. Si se escribe un cero en el SCBR, se desactiva el generador de reloj. La
velocidad de transmisin en baudios se calcula con la siguiente frmula:
SCBR
sistema del loj
n Transmisi de Velocidad
* 32
_ _ Re
_ _ =
75
El valor de SCBR vara entre 1 y 8191.
Como el receptor de la SCI funciona en modo asncrono, se necesita un reloj interno
para sincronizarlo con un flujo de datos entrante. El generador de reloj de la SCI
produce una seal de muestreo para la recepcin (RT) con un frecuencia 16 veces
superior a la frecuencia de transmisin. La SCI determina los lmites de la seal de bit a
partir de transiciones de la onda recibida y ajusta el muestreo dentro del periodo del bit
para una correcta deteccin.
2.3.4.6.4 Comprobacin de paridad
El bit de seleccin de tipo de paridad (PT) del SCCR1 determina si se utiliza una
paridad par (PT=0) o impar (PT=1). El bit PT configura la paridad tanto de los datos
recibidos como de los transmitidos. El bit de activacin de paridad (PE) de SCCR1
habilita la comprobacin de paridad cuando PE=1 o la inhabilita cuando PE=0. Cuando
PE est a uno, se utiliza el bit ms significativo de los datos de una trama para la
funcin de paridad. Para datos enviados, se genera un bit de paridad; para datos
recibidos, se comprueba dicho bit. Cuando est activada la comprobacin de paridad, se
pone a uno la bandera de paridad (PF) del registro de estado de la SCI (SCSR) al
detectarse un error de paridad.
Al mantenerse el nmero de bits de una trama constante cuando se activa la paridad se
reduce en uno el nmero de bits de datos de una trama., lo que puede afectar, a su vez,
al tamao de la trama.
M PE Resultado
0 0 8 bits de datos
0 1 7 bits de datos y 1 de paridad
1 0 9 bits de datos
1 1 8 bits de datos y 1 de paridad
Tabla 19 Efecto del control de paridad en el tamao de los datos.
2.3.4.6.5 Funcionamiento del transmisor
El transmisor consta de un registro de desplazamiento y un registro de datos paralelo
(TDR) accesible a travs del registro de datos de la SCI (SCDR). Dispone de un buffer
doble, lo que supone que se pueden cargar datos en el TDR mientras el registro de
desplazamiento est transmitiendo otros. El bit de activacin del transmisor (TE) de
SCCR1 activa el transmisor cuando vale 1 y lo desactiva cuando vale 0.
76
La salida del registro de desplazamiento mantiene la conexin con el terminal TXD
mientras el transmisor est funcionando (TE=1 o TE=0 y la transmisin en curso). Se
puede seleccionar el tipo de salida del terminal TXD mediante el bit WOMS del
SCCR1, de modo que si WOMS=0 presenta una salida CMOS estndar y si WOMS=1
presenta una salida en colector abierto lo que permite el funcionamiento en modo OR
cableado y la convivencia de varios transmisores conectados al mismo bus. Para ello
ser necesario conectar una resistencia de pull-up para mantener el nivel lgico en
circuito abierto. El bit WOMS controla el funcionamiento del terminal TXD
independientemente de si se utiliza para transmisiones de la SCI (TE=1) o como E/S de
propsito general.
Los datos a transmitir se escriben en TDR y a continuacin se transfieren al registro de
desplazamiento serie. La bandera de registro de datos de transmisin vaco (TDRE) del
SCSR muestra el estado del registro TDR. Mientras TDRE=0, el TDR contiene datos
que no han sido transferidos al registro de desplazamiento. Si se escribe de nuevo en
TDR se sobreescriben estos datos. El bit TDRE se activa cuando los datos de TDR son
transferidos al registro de desplazamiento. Sin embargo, antes volver a escribir nuevos
datos en el TDR, es necesario borrar el bit TDRE escribiendo en el registro SCSR, ya
que de no hacerlo no se transmitirn los datos.
La bandera de transmisin completa (TC) del registro SCSR muestra el estado del
registro de desplazamiento del transmisor. Si TC=0, el registro de desplazamiento est
ocupado. El bit TC se pone a uno cuando se han completado todas las operaciones de
desplazamiento. El bit TC no se borra automticamente, por tanto el procesador deber
borrarlo escribiendo en el SCSR antes de llevar nuevos datos al TDR.
El estado del registro de desplazamiento serie se comprueba cuando se activa el bit TE.
Si TC=1, se transmite una trama nula como prembulo de la siguiente trama de datos; si
TC=0, se contina la operacin en curso hasta el envo del bit de parada, y entonces se
enva la trama nula.
El bit de trama de ruptura (SBK) de SCCR1 se utiliza para insertar tramas de ruptura en
una transmisin. Se transmite un nmero entero distinto de cero de tramas de ruptura
mientras SBK est a uno. La transmisin de ruptura comienza cuando SBK se pone a
uno y acaba cuando que se borra SBK o TE y finaliza la transmisin en curso. Si el bit
SBK se pone a uno durante una transmisin, sta finaliza normalmente antes de
comenzar la trama de ruptura. Para garantizar el tiempo mnimo de ruptura, se debe
77
conmutar rpidamente el bit SBK a 1 y luego a 0. El bit TC se pone a 1 al final de una
ruptura y se transmite al menos un periodo de bit con nivel lgico 1 para asegurar el
reconocimiento del bit de arranque.
Si el bit TE permanece activo, despus de la transmisin de las tramas nulas, de datos o
de ruptura pendientes, los bits TDRE y TC se activan y el terminal TXD se mantiene
en el nivel lgico 1.
Cuando se borra el bit TE, el transmisor se desactiva despus de que todas las tramas
nulas, de datos y de ruptura pendientes han sido transmitidas. La bandera TC se pone a
uno, y el terminal TXD vuelve a ser controlado por los registros PQSPAR y DDRQS.
El dato almacenado en el buffer no se transmite despus de haber borrado el bit TE, por
lo que para evitar la prdida del dato del buffer, el bit TE no debe borrarse hasta recibir
la confirmacin de fin mediante el bit TDRE.
Tanto TDRE como TC tienen asociadas interrupciones. Las interrupciones se activan
con los bits TIE (Transmit Interrupt Enable) y TCIE (Transmission Complete Interrupt
Enable) del registro SCCR1. Las rutinas de servicio pueden cargar el ltimo byte de
datos de una secuencia en el registro TDR y, a continuacin, terminar la transmisin
cuando se produce la interrupcin asociada al TDRE.
2.3.4.6.6 Funcionamiento del receptor
El bit de activacin del receptor (RE) en el registro SCCR1 activa (RE=1) y desactiva
(RE=0) el receptor. El receptor est formado por un registro de desplazamiento para la
recepcin de datos serie y un registro paralelo RDR accesible desde el registro de datos
SCDR. La CPU no puede acceder directamente al registro de desplazamiento serie sino
a travs del registro RDR. La existencia de este doble buffer permite que un dato se
mantenga en el RDR mientras otro dato est siendo recibido en el registro.
Para la sincronizacin con la trama de datos serie entrante, el receptor dispone de una
unidad de proceso de bits que conforma una mquina de estados capaz de determinar el
nivel lgico de cada ciclo de bit. Esta mquina de estados controla el instante de
muestreo del terminal RXD y la sincronizacin con el registro de desplazamiento del
receptor y utiliza un reloj de recepcin 16 veces ms rpido que el reloj del sistema. Los
bits que entran por el terminal RXD se sincronizan antes de entrar en el registro de
desplazamiento y a partir de ese punto el flujo de datos va sincronizado con el reloj del
sistema.
78
El nmero de bits que el receptor introduce en el registro de desplazamiento depende
del formato seleccionado. En cualquier caso, todas las tramas deben finalizar con un bit
de parada. Una vez recibido el bit de parada se considera completa la trama y se
transfiere al registro RDR el dato, ponindose a 1 la bandera del registro de datos del
receptor.
Los errores de paridad, de trama y los debidos al ruido se detectan mientras se recibe la
cadena de datos. Pese a ello, las banderas de sealizacin de ruido (NF), de paridad
(PF) y de error de trama (FE) de SCSR no se activan hasta que el dato se transfiere al
registro RDR.
Debe borrarse el bit RDRF antes de que tenga lugar la siguiente transferencia desde el
registro de desplazamiento. Si el bit RDRF permanece a uno cuando el registro de
desplazamiento est lleno, las transferencias se suspenden y la bandera de error de
desbordamiento (OR) del SCSR se pone a uno. El bit OR indica que la CPU necesita
dar un servicio ms rpido a RDR. Cuando el bit OR se pone a uno, el dato de RDR se
conserva, pero el del registro de desplazamiento se pierde.
Cuando la CPU lee los registros SCSR y SCDR secuencialmente primero adquiere el
estado del registro SCSR y con ello se activa el mecanismo de borrado y despus con la
lectura del registro SCDR se obtiene el dato, accin sta con la que se borran las
banderas del registro SCSR.
Cuando el bit RIE del registro SCCR1 se pone a uno, se genera una peticin de
interrupcin cada vez que el bit RDRF se activa.
2.3.4.6.7 Deteccin de lnea desocupada
Durante una transmisin serie tpica, las tramas se transmiten de forma consecutiva sin
intervalos de espera entre tramas. Incluso aunque todos los bits de una trama sean unos
lgicos, el bit de arranque proporciona un periodo con un cero lgico durante la trama.
Una lnea desocupada es una secuencia de unos consecutivos de igual tamao que la
trama. El tamao de trama viene determinado por el bit M de SCCR1.
El receptor de la SCI es capaz de realizar tanto una deteccin corta como larga de la
lnea desocupada. En la deteccin corta se inicia la cuenta de periodos a nivel lgico
uno en cualquier instante dentro de una trama incluyndose en la cuenta el bit de parada
y los unos consecutivos que le precedan. De esta forma se detecta la ausencia del bit de
arranque lo antes posible. En la deteccin larga la cuenta se inicia despus del bit de
79
parada. La deteccin de lnea desocupada est siempre activa. El bit ILT determina el
tipo de deteccin a aplicar. Si ILT=0 se aplica la deteccin corta y si ILT=1 se aplica la
deteccin larga. Cuando se detecta la condicin de lnea desocupada, se pone a uno la
bandera IDLE.
En algunas aplicaciones la sobrecarga de la CPU puede introducir un periodo de nivel
lgico uno entre tramas. Este periodo no afecta al contenido, pero si se produce despus
de una trama de unos cuando est activada la deteccin corta, el receptor activa la
bandera de lnea desocupada.
Cuando el bit de activacin de interrupcin por lnea desocupada (ILIE) de SCCR1
est a uno, se genera una peticin de interrupcin cuando la bandera IDLE se activa. La
bandera se borra leyendo SCSR y SCDR consecutivamente. IDLE no vuelve a ponerse
a uno hasta despus de haberse recibido al menos una trama (RDRF=1). Esto evita que
un intervalo desocupado largo genere ms de una interrupcin.
80
Captulo 3
Control de un display LCD de modo texto
El objetivo que se persigue es que el alumno adquiera unos conocimientos generales
sobre el funcionamiento de un display LCD que le permitan utilizar un dispositivo de
estas caractersticas de una forma sencilla y, si lo desea, mejorar o perfeccionar el
ejemplo que se pone a su disposicin.
El funcionamiento del display LCD a que hace referencia este documento va gobernado
por el controlador HD44780U de Hitachi. Hoy da existen varios dispositivos en el
mercado compatibles con este controlador por lo que la descripcin que aqu se facilita
valdr para un gran nmero de dispositivos. En cualquier caso se recomienda consultar
en cada caso la documentacin facilitada por el fabricante.
3.1 Descripcin general
Cuando se adquiere un display LCD lo primero que se puede observar es su apariencia
externa. ste se compone de una placa de circuito impreso rectangular, de un tamao
similar al del display, sobre la que van soldados el LCD, el controlador y el resto de
componentes, formando todo un conjunto compacto.
- Figura 1 - Aspecto general de un display.

81
Bien en la parte superior o en la inferior debe encontrarse el conjunto de puntos (14 en
el dispositivo que aqu se describe) que permiten su conexin. Numerados de izquierda
a derecha tienen la siguiente funcionalidad:
PIN Smbolo Descripcin
1 Vss Masa
2 Vdd Alimentacin
3 Vo Voltaje de ajuste del contraste
4 RS Seleccin de registro
5 R/W Lectura / escritura
6 E Validacin de datos (Enable)
7 D0 Bit de datos menos significativo
8 D1 Bit de datos
9 D2 Bit de datos
10 D3 Bit de datos
11 D4 Bit de datos
12 D5 Bit de datos
13 D6 Bit de datos
14 D7 Bit de datos ms significativo
Tabla 1 Funcin de los puntos de conexin.
Los tres primeros puntos de conexin (pins) son para la alimentacin y control del
contraste. Los tres siguientes (RS, R/W y E) son para el control y los restantes (D0 a
D7) son para el intercambio de datos.
El gobierno de la pantalla LCD lo lleva a cabo el controlador HD44780U de Hitachi (o
similar). La utilizacin correcta del dispositivo depende del conocimiento que se tenga
sobre su funcionamiento, seales de control, instrucciones, etc. Asimismo, la forma de
conexin al microcontrolador depender de los diferentes modos de funcionamiento del
display por lo que resulta imprescindible describir su funcionamiento.
3.2 Funcionamiento del display
A modo de introduccin general, el display es un dispositivo que dispone de un
puerto de Entrada/Salida por el que recibe instrucciones y datos y por el que devuelve
informacin sobre su estado interno. Para ello dispone de algunos registros que se
seleccionan mediante las lneas de control. Cada operacin necesita de unos tiempos de
ejecucin que se describirn posteriormente. Todo este proceso de comunicacin se
controla con las tres lneas de control (RS, R/W y E) conforme al cronograma del
dispositivo.
82
3.2.1 Alimentacin y control de contraste
La alimentacin de 5 V. la recibe a travs de los dos primeros puntos de conexin, al
primero (Vss) se conecta la masa y al segundo (Vdd) los 5 voltios, con un consumo de
corriente que no excede de 5mA. El tercero (Vo) permitir el control del contraste
variando la tensin en el mismo entre 0 (contraste mnimo) y 5 voltios (contraste
mximo). A la hora de conectarlo, podremos optar entre dos soluciones:
8. Fijar el contraste a su valor mximo.
sta es la solucin ms sencilla, para lo cual se conectar este punto a
5 V.
9. Regular el contraste.
Para esta solucin se conectar un potencimetro en configuracin de
divisor de tensin variable, conforme se detalla en la figura y con el
que se suministra la tensin deseada entre 0 y 5 V.
- Figura 2 Conexin de un potencimetro de contraste.
Cabe recordar que cada fabricante puede optar por diferentes soluciones de polarizacin
para la regulacin del contraste y por tanto ser necesario consultar la documentacin
del dispositivo.
3.2.2 La pantalla y los caracteres
El display est formado por un LCD (Liquid Crystal Display, pantalla de cristal
lquido) de dos lneas con 16 posiciones cada una. Cada posicin est formada por una
matriz que puede ser de 5 x 8 de 5 x 10 puntos, para representar los diferentes
caracteres o smbolos. La pantalla est gobernada por el controlador HD44780U que
dispone de dos plantillas de caracteres predefinidas en la CGROM (Character
Generator ROM). La primera plantilla est formada por 160 caracteres de 5 x 8 puntos
83
ms 32 de 5 x 10 y la segunda por 240 caracteres de 5 x 8 puntos. Ambas se pueden
consultar en el Anexo I.
En la tabla 2 se muestran los caracteres ms importantes de la referida plantilla. Los
cdigos de cada carcter vienen dados en hexadecimal y se puede comprobar que
coinciden con los cdigos en ASCII.
Cdigo Carac. Cdigo Carac. Cdigo Carac. Cdigo Carac. Cdigo Carac. Cdigo Carac.
$20 Espacio $30 0 $40 @ $50 P $60 ` $70 P
$21 $31 1 $41 A $51 Q $61 A $71 Q
$22 $32 2 $42 B $52 R $62 B $72 R
$23 # $33 3 $43 C $53 S $63 C $73 S
$24 $ $34 4 $44 D $54 T $64 D $74 T
$25 % $35 5 $45 E $55 U $65 E $75 U
$26 & $36 6 $46 F $56 V $66 F $76 V
$27 $37 7 $47 G $57 W $67 G $77 W
$28 ( $38 8 $48 H $58 X $68 H $78 X
$29 ) $39 9 $49 I $59 Y $69 I $79 Y
$2A * $3A : $4A J $5 Z $6A J $7A Z
$2B + $3B ; $4B K $5B [ $6B K $7B {
$2C , $3C < $4C L $5C \ $6C L $7C |
$2D - $3D = $4D M $5D ] $6D M $7D }
$2E . $3E > $4E N $5E ^ $6E N $7E ~
$2F / $3F ? $4F O $5F _ $6F O $7F
Tabla 2 Conjunto de caracteres de uso ms comn.
En el caso aqu referido, la matriz de cada posicin de la pantalla LCD es de 5 x 8
puntos, por lo que slo tiene sentido usar la segunda plantilla de 240 caracteres
predefinidos.
3.2.3 La memoria del display
El display dispone de dos memorias de acceso aleatorio. La DDRAM (Display Data
RAM) donde se guardan los datos que se presentan en la pantalla y consta de 80
posiciones de 8 bits, es decir, 80 caracteres, y la CGRAM (Character Generator RAM)
que permite definir caracteres de usuario diferentes de los predefinidos en la CGROM.
Veamos a continuacin su funcionamiento:
3.2.3.1 Display Data RAM (DDRAM)
Como ya se ha comentado dispone de 80 posiciones destinadas a guardar los caracteres
a representar en la pantalla. Esta memoria se puede configurar en el modo de una lnea,
en cuyo caso tendr las 80 direcciones consecutivas, o en modo de dos lneas (se
entiende que slo tiene sentido si la pantalla LCD es de dos lneas), quedando
fraccionada en dos bloques de 40 posiciones consecutivas por lnea. Existe una tercera
84
variante implementada con un LCD de cuatro lneas en la que se fracciona en cuatro
bloques de 20 posiciones.
DDRAM
Modo de 1 lnea.
1 2 3 4 5 6 7 79 80
Direccin 00 01 02 03 04 05 06 4E 4F

Modo de 2 lneas.
1 2 3 4 5 6 7 39 40
Lnea 1 00 01 02 03 04 05 06 26 27
Lnea 2 40 41 42 43 44 45 46 66 67
Figura 3 Configuracin en los modos de una y dos lneas.
Como la pantalla LCD tiene nicamente 16 posiciones, se puede pensar en el display
como en un display virtual de una lnea de 80 caracteres, o bien, dos de 40, donde la
pantalla real es una ventana en la que se visualizan una o dos lneas de 16 caracteres.
Mas adelante se ver cmo se puede desplazar la pantalla real sobre el display virtual.
Cualquier operacin de escritura en el display se trata, en realidad, de una escritura en
la DDRAM y ser visible o no en la pantalla dependiendo de la posicin relativa que en
un momento dado tenga la ventana de visualizacin.
- Figura 4 Display virtual y pantalla LCD.
3.2.3.2 Character Generator RAM (CGRAM)
La memoria CGRAM permite definir caracteres de usuario. En total consta de 64
posiciones de 5 bits. El controlador HD44780U puede trabajar con pantallas LCD
cuyos caracteres estn definidos mediante matrices tanto de 5 x 10 como de 5 x 8
puntos. Cada fila de cada matriz se corresponde con una direccin de memoria y cada
85
uno de los cinco bits se corresponde, a su vez, con un punto de la fila, de modo que un 1
indica que el punto est encendido y un 0 que est apagado.
Para direccionar la CGRAM se precisan 6 bits (2
6
= 64). En el caso de un LCD con
matrices de 5 x 10 puntos, la memoria se divide en cuatro bloques de 10 posiciones,
correspondiendo cada posicin con una de las 10 filas de la matriz. Los primeros cuatro
bits de la direccin CGRAM servirn para determinar la fila de la matriz y los dos bits
restantes sern para direccionar cada uno de los cuatro bloques posibles. Si el LCD
tiene matrices de 5 x 8, como es el caso que aqu se describe, la memoria se divide en
ocho bloques de ocho posiciones, de modo que con los tres bits de menor peso se
recorren las filas de cada bloque y con los tres de mayor peso se recorren cada uno de
los ocho caracteres de usuario.
Direccin
CGRAM
Dato
CGRAM




0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 1 0 1 0
0 1 0 1 1 1 1 1
0 1 1 0 0 1 0 0
1 0 0 1 1 1 1 1
1 0 1 0 0 1 0 0
1 1 0 0 0 1 0 0
1 1 1 0 0 0 0 0




0 0 1
0 0 0 0 1 1 1 0
0 0 1 0 1 1 1 0
0 1 0 0 1 1 1 0
0 1 1 0 0 1 0 0
1 0 0 1 1 1 1 1
1 0 1 0 0 1 0 0
1 1 0 0 1 0 1 0
1 1 1 1 0 0 0 1





1 1 1
0 0 0 0 0 1 0 0
0 0 1 0 1 0 1 0
0 1 0 1 0 0 0 1
0 1 1 1 0 0 0 1
1 0 0 1 0 1 0 1
1 0 1 1 0 1 0 1
1 1 0 1 1 1 1 1
1 1 1 0 0 0 0 0
Tabla 3 - Creacin de caracteres de usuario.

86
3.2.4 Seales de control y registros internos
Para el control se dispone de cuatro seales: validacin de datos (E), seleccin de
lectura/escritura (R/W), seleccin de registro (RS) e indicador de sistema ocupado
(BF). Los registros internos son tres: el contador de direcciones (AC), el registro de
instrucciones (IR) y el de datos (DR).
3.2.4.1 Seales de control
Validacin de datos, Enable (E): Cuando no se utiliza el
display esta seal debe permanecer a 0. Cuando se desea realizar
una transferencia de informacin (lectura o escritura) se ponen los
datos y las seales de control deseadas y se valida la operacin con
E=1, debiendo permanecer en ese estado lgico durante un tiempo
superior a 500 ns., para que se realice correctamente la captura de los
datos en el registro. Cuando se devuelve la seal de validacin a su
estado de reposo, E=0, la ejecucin de la instruccin se inicia con el
flanco de bajada de esta seal. El periodo completo de la seal de
validacin, formado por el estado lgico 1 seguido del estado lgico
0, no podr ser inferior a 1 s.
Seleccin de lectura/escritura, Read/Write (R/W): Se selecciona
R/W=0 para realizar una operacin de escritura en el display y
R/W=1 para la lectura de datos del mismo.
Seleccin de registro, Register Select (RS): Con RS=0 se
selecciona el registro de instrucciones (IR), y con RS=1 se
selecciona el de datos (DR).
Indicador de sistema ocupado, Busy Flag (BF): Es una seal
que proporciona el sistema y que, con valor 1 (BF=1), indica que el
display est ejecutando una operacin interna y no podr aceptar
una nueva instruccin hasta que termine, momento en el cual pasa a
valor 0 (BF=0). El BF podr ser ledo en el ltimo bit del registro de
instrucciones (IR7) para lo que se deber seleccionar el registro IR
en modo lectura (RS=0, R/W=1).

87
- Figura 5 Ejemplo de cronograma de las seales de control. (Extrado del catlogo de Hitachi).
3.2.4.2 Registros internos
Contador de direcciones, Address Counter (AC): Apunta la
direccin de memoria DDRAM o CGRAM sobre la que se escribe o
se lee un dato. Su valor se incrementa o decrementa automticamente
en una unidad despus de cada operacin segn se haya configurado
previamente. Para modificar o leer la direccin del AC se utilizan los
siete primeros bits del registro IR (IR0-IR6). El valor de este
contador es utilizado tambin por el circuito de control del cursor,
que lo colocar en la posicin que ste indica.
Registro de instrucciones, Instruction Register (IR): En este
registro se escriben las instrucciones que se desea que el display
ejecute. Tambin se puede leer el valor del contador de direcciones
(AC) en los primeros 7 bits (IR0 - IR6), teniendo disponible en el
octavo (IR7) la seal indicadora de sistema ocupado (BF).
Registro de datos, Data Register, (DR): Se utiliza para las
operaciones de escritura y lectura en la memoria DDRAM o
CGRAM.
En la tabla 4 se resumen las seales de control asociadas a la seleccin de registro.
RS R/W Accin
0 0 Operacin de escritura en IR (instruccin u operacin interna).
0 1 Operacin de lectura de IR (permite leer el AC (IR0-IR6) y el BF (IR7)).
1 0 Operacin de escritura en DR (escritura del dato en la DDRAM o CGRAM).
1 1 Operacin de lectura de DR (lectura del dato de la DDRAM o CGRAM).
Tabla 4 Seleccin de registro.

88
3.2.5 Conjunto de instrucciones
El LCD se controla mediante instrucciones que se resumen en la tabla 5. En las lneas
siguientes se ofrece una breve descripcin de cada una.
INSTRUCCION RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Duracin
Borrar display. 0 0 0 0 0 0 0 0 0 1 1.52 ms.
Cursor a inicio. 0 0 0 0 0 0 0 0 1 --- 37 s.
Establecer modo de trabajo. 0 0 0 0 0 0 0 1 I/D S 37 s.
Control ON/OFF del display. 0 0 0 0 0 0 1 D C B 37 s.
Desplazamiento del cursor / display. 0 0 0 0 0 1 S/C R/L --- --- 37 s.
Establecer modo de interfaz. 0 0 0 0 1 DL N F --- --- 37 s.
Fijar direccin de CGRAM. 0 0 0 1 ACG ACG ACG ACG ACG ACG 37 s.
Fijar direccin de DDRAM. 0 0 1 ADD ADD ADD ADD ADD ADD ADD 37 s.
Lectura de BF y AC 0 1 BF AC AC AC AC AC AC AC 0 s.
Escritura de datos en CGRAM/DDRAM 1 0 Datos a escribir 37 s.
Lectura de datos en CGRAM/DDRAM 1 1 Lectura de datos 37 s.

I/D = 1
S = 1
S/C = 1
R/L = 1
DL = 1
N = 1
F = 1
BF = 1
Incremento.
Display acompaa al desplazamiento.
Desplazar el display.
Desplazamiento a derecha.
Modo 8 bits.
Dos lneas.
Fuentes de 5 x 10 puntos.
Ocupado internamente.
I/D = 0
S = 0
S/C = 0
R/L = 0
DL = 0
N = 0
F = 0
BF = 0
Decremento.
Display quieto.
Desplazar el cursor.
Desplazamiento a izquierda.
Modo 4 bits.
Una lnea.
Fuentes de 5 x 8 puntos.
Listo para recibir comandos.
Tabla 5 Resumen de instrucciones.
3.2.5.1 Borrar display, Clear Display
CDIGO: $01
DESCRIPCIN: Esta instruccin escribe el carcter blanco ($20)
en todas las posiciones de la DDRAM, pone el contador de
direcciones (AC) a cero y devuelve el display a su posicin de inicio
si se encuentra desplazado. Tambin lo configura en el modo de
incremento (I/D=1).
TIEMPO DE EJECUCIN: 1.52 ms.
3.2.5.2 Cursor a inicio, Return Home
CDIGO: $02
DESCRIPCIN: Enva el cursor a la posicin 0, es decir, carga la
direccin 0 en el contador de direcciones (AC) y devuelve el display
a la posicin de inicio.
TIEMPO DE EJECUCIN: 37 s.
89
3.2.5.3 Establecer modo de trabajo, Entry Mode Set
CDIGO: 0 0 0 0 0 1 I/D S [$0 (4-7)]
DESCRIPCIN: Cada vez que se realiza una lectura o escritura el
contador de direcciones (AC) se incrementa o decrementa en funcin
del valor del bit I/D.
I/D: Cuando I/D=1, el contador de direcciones se incrementa y el
cursor se mueve hacia la derecha y cuando es I/D=0 se decrementa y
el cursor se mueve hacia la izquierda.
S: Con el bit S=1 se indica al display real que se desplace junto con
el cursor, con lo que da la impresin de que es el display el que se
desplaza, ya que cursor y display real mantienen la misma posicin
relativa. Si S=0 el display permanece quieto y podemos observar
cmo el cursor avanza con cada escritura.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.4 Control ON/OFF del display
CDIGO: 0 0 0 0 1 D C B [$0 (8-F)] (Valor tpico $0E)
DESCRIPCIN: Con este comando se activan y desactivan el
display, el cursor y la funcin de parpadeo.
D: Cuando D=0, el display funciona normalmente pero la pantalla
LCD est apagada. Todos los caracteres que se escriban
permanecern en la DDRAM y se harn visibles en el momento en
que hagamos D=1.
C: Con C=1 se activa el cursor y con C=0 se desactiva, es decir, no
se ve.
B: Si B=1, el carcter que se halla en la posicin del cursor parpadea.
Si B=0, no parpadea.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.5 Desplazamiento del cursor o display
CDIGO: 0 0 0 1 S/C R/L 0 0
90
DESCRIPCIN: Esta instruccin desplaza el cursor o el display
una posicin a derecha o izquierda, segn se indique con los bits S/C
y R/L. S/C=1 desplaza el display real y S/C=0 desplaza el cursor.
Con R/L=1/0 se indica que el desplazamiento sea a
derecha/izquierda.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.6 Establecer modo de interfaz, Function Set
CDIGO: 0 0 1 DL N F 0 0
DESCRIPCIN: Con esta instruccin se configuran tres aspectos
del display: La longitud del bus de datos, el nmero de lneas y el
tipo de fuentes.
DL: Si DL=1, se configura un bus de datos de 4 bits, usando slo los
de mayor peso del puerto (DB4 a DB7) y, si DL=0, el bus es de ocho
bits (DB0 a DB7). En el modo de cuatro bits cada instruccin se
enva en dos bloques consecutivos.
N: Si N=1, el controlador trabaja en el modo de dos lneas (slo tiene
sentido con un LCD de dos lneas) y si N=0 trabaja en el modo de
una lnea.
F: Con F=1 se elige el juego de caracteres de 5 x 10 puntos y si F=0
el juego a utilizar es el de 5 x 8 puntos.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.7 Fijar direccin de CGRAM
CDIGO: 0 1 A5 A4 A3 A2 A1 A0
CDIGO TPICO: 0 1 0 0 0 0 0 0 (Acceso a la posicin cero de la
CGRAM)
DESCRIPCIN: La direccin especificada en A5A0 se copia en el
contador de direcciones para el acceso a la CGRAM.
TIEMPO DE EJECUCIN: 37 s.
91
3.2.5.8 Fijar direccin de DDRAM
CDIGO: 1 A6 A5 A4 A3 A2 A1 A0
CDIGO TPICO: 1 0 0 0 0 0 0 0 (Acceso a la posicin cero de la
DDRAM).
DESCRIPCIN: La direccin (A6-A0) se copia en el contador de
direcciones para el acceso a la DDRAM.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.9 Escritura de datos en la CGRAM o DDRAM
CDIGO: 1 0 D D D D D D D D
DESCRIPCIN: Escribe el dato especificado en la DDRAM o
CGRAM. La escritura en una u otra memoria viene determinada por
la operacin previa. En el caso de iniciarse una escritura nueva,
mediante la operacin de fijar una direccin de la CGRAM o
DDRAM. Por defecto se trabaja siempre en la DDRAM. No debe
olvidarse que tras cada escritura el AC se incrementa o decrementa
automticamente.
TIEMPO DE EJECUCIN: 37 s.
3.2.5.10 Lectura de datos de la CGRAM o DDRAM
CDIGO: 1 1 D D D D D D D D
DESCRIPCIN: Esta instruccin funciona de forma idntica a la
escritura y permite conocer los datos grabados en estas memorias.
TIEMPO DE EJECUCIN: 37 s.
3.2.6 Secuencia tpica de inicializacin del LCD
Cuando se va a comenzar a utilizar el display, es necesario configurar previamente el
dispositivo. Ello se hace a travs de una secuencia de inicializacin con la que se define,
el tamao del bus de datos, el nmero de lneas, el juego de caracteres, etc., tras la cual
ya se puede enviar caracteres al display.
Hay que tener en cuenta que el controlador HS44780U dispone de un circuito de reset
interno que, al conectar la alimentacin, realiza, durante 10 ms., la siguiente secuencia:
92

1. Borra display ($01).
2. Establece interfaz de datos de 8 bits, una lnea y fuentes de 5 x 8
puntos ($20).
3. Display, cursor y parpadeo apagados ($08).
4. Modo de incremento con el display real quieto ($06).
Partiendo de esta configuracin inicial parece necesario establecer una secuencia de
inicio para configurarlo conforme a la forma de conexin del hardware y a la aplicacin
que se le vaya a dar. A continuacin se describe una secuencia tpica, vlida para la
operacin en 8 y 4 bits.
1. Interfaz de datos de 8 o 4 bits, una lnea y fuentes de 5 x 8 puntos
($20 o $30).
2. Incrementar contador de direcciones y display quieto ($06).
3. Display y cursor encendidos y sin parpadeo ($0E).
Tras esta secuencia se encuentra listo para imprimir datos.
3.2.7 Formas de conexin a un microcontrolador
A la hora de conectar el display a un microcontrolador existen dos factores que van a
determinar la forma de conexin y que son: la longitud del bus de datos y los modos de
control del LCD. A su vez, el microcontrolador va a jugar un papel determinante en
funcin de los recursos que tenga disponibles, como son la memoria, puertos de entrada,
salida o bidireccionales, etc.
3.2.7.1 Longitud del bus de datos
El bus de datos del display es de 8 bits, pero puede configurarse para trabajar con
cuatro, multiplexando los bytes en grupos de 4 bits (nibbles). Esto permite ahorrar 4
puntos de conexin (pins) del puerto de entrada/salida de datos, pero tiene el
inconveniente de que el software de control es ms complejo, ya que debe controlar
adems el proceso de multiplexacin.
93
3.2.7.2 Modos de control del LCD
Existen dos formas de controlar el LCD dependiendo de si se usa o no el bit indicador
de ocupado:
Control en bucle cerrado: En este caso se observa el bit de ocupado
(BF) hasta que el display termine la ejecucin de la instruccin en
curso. Esto se podr hacer con diferentes tcnicas. Por ejemplo
mediante un bucle de observacin hasta que finalice la instruccin en
ejecucin (BF=0), o bien, provocando un proceso de interrupcin
cuando se cumple esa condicin BF=0, etc. Para realizar el control en
bucle cerrado es necesario conectar el pin DB7 del display a un
puerto bidireccional que deber configurarse como salida o entrada
de forma alternativa, cada vez que se lee el BF o se enva un dato.
Control en bucle abierto: De este segundo modo no se realiza
comprobacin alguna sobre el estado del display. Se considera a ste
como si de un componente pasivo se tratara. Esto se puede hacer si se
tienen en cuenta los tiempos mximos de ejecucin de las
instrucciones indicados por el fabricante. Despus de enviar una
instruccin, se espera un tiempo tal que asegure que la instruccin ha
finalizado antes de enviar la siguiente.
Si se opta por este control, se puede realizar una segunda simplificacin en el hardware
derivada de considerar que no va a ser necesario leer ningn registro del display, con lo
que se podra configurar de modo permanente en modo escritura. De este modo no es
necesario dedicar una lnea de control para esta funcin (R/W=0) y por tanto slo son
necesarias dos seales de control (RS y E).
El control en bucle cerrado goza de una mayor velocidad ya que se establece un dialogo
entre el LCD y el micro. Tambin es cierto que la complejidad del software es mucho
mayor ya que hay que realizar muchas mas operaciones diferentes para cada instruccin
que se enva, pero se pueden evitar los tiempos de espera del control en bucle abierto y
dedicarlos a procesar otras tareas. En funcin de la aplicacin que se quiera disear se
optar por la velocidad de la primera solucin o la sencillez de la segunda.


94
Bus de 4 bits Bus de 8 bits
Bucle cerrado
3 pins de salida para el control
4 pins E/S
3 pins de salida para el control
8 pins de E/S para los datos
Bucle abierto
2 pins de salida para el control
4 pins de salida para los datos
2 pins de salida para el control
8 pins de salida para los datos
Tabla 6 Puntos de conexin necesarios segn las diferentes opciones.
3.3 Ejemplos de control del LCD con el micro MC68331
La potencia del microcontrolador 68331 y su variedad de puertos permite implementar
cualquier control que se desee de forma aislada. La eleccin de la forma de conexin y
del tipo de control no es una decisin que se deba tomar a priori, sino que debe ir
integrado en el diseo global de la aplicacin que se quiera realizar y de la que forma
parte el display como un mdulo de presentacin. La mayor o menor complejidad de la
aplicacin, el nmero de seales que es preciso manejar, la memoria disponible, la
necesidad de que funcione en tiempo real, etc., son las caractersticas que, de verdad,
van a determinar la conexin y el control. Es interesante tener siempre presente que,
ante varias soluciones alternativas que cumplen con los objetivos de diseo y fiabilidad,
siempre es deseable escoger la ms sencilla.
El objetivo de este ejemplo es ofrecer un punto de partida a aquellos alumnos que
necesiten utilizar el display para la presentacin de datos. Por ello se han implementado
sendos controles, en bucle abierto y en bucle cerrado, de una forma estructurada,
describiendo brevemente cmo se han resuelto algunos de los problemas relativos a su
puesta en funcionamiento.
3.3.1 Ejemplo de control en bucle abierto
3.3.1.1 Descripcin de la aplicacin de control
La aplicacin va a consistir en la realizacin de una serie de acciones que se detallan en
la lista que se muestra a continuacin:
1. Escribir la frase, PRIMERA PRUEBA. ESCRITURA NORMAL
DE TEXTO.
2. Escribir de nuevo, ESPERE UNOS SEGUNDOS DESPUES DE
APAGARSE EL DISPLAY.
3. Apagar el display.
95
4. Escribir en la DDRAM el siguiente prrafo: En un lugar de la
Mancha de cuyo nombre no quiero acordarme, no ha mucho .......
sin que aparezca en la pantalla.
5. Encender la pantalla e ir avanzando el display, primero hacia delante
y despus hacia detrs un total de tres veces seguidas en cada sentido.
3.3.1.2 Descripcin de la conexin y modo de control
En primer lugar se realizar la conexin de la alimentacin y de la seal de contraste de
cualquiera de las formas descritas en 2.1. A continuacin hay que conectar las seales
de control y datos al microcontrolador.
En este ejemplo se va a optar por un control en bucle abierto y con ocho bits de datos.
Las tres seales de control (E, RS y R/W) se van a conectar a los bits 5 (PC4), 6 (PC5)
y 7 (PC6) del puerto C del micro y las de datos al puerto E. Cabe observar que sera
posible prescindir de la seal R/W conectndola a masa de forma permanente,
economizando as un bit del puerto.
3.3.1.3 Implementacin en cdigo ensamblador del programa de
control
A continuacin se adjunta el cdigo en lenguaje ensamblador que realiza las tareas
arriba descritas. El inters del programa reside en las secciones INSTRUCCIONES
DEL LCD y SERVICIOS DEL DISPLAY. En la primera se han implementado todas las
instrucciones que puede ejecutar el LCD y en la segunda algunos servicios de ms alto
nivel que permiten realizar acciones de utilidad general ms complejas a partir de las
instrucciones de una forma trasparente para el usuario. Para ello los servicios son
invocados mediante una excepcin TRAP #n sin la necesidad de conocer cmo
funcionan.
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
96
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente si Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
97
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $03FF * Del orden de 100us.
LARGO EQU $BFFF * Del orden de 5ms.
RETARDO EQU $6FFF * Se usa para el avance de caracteres.

******************************************************************************
* CONSTANTES DE INTERS *
******************************************************************************
INI_DR EQU $00 * Inicio de lnea nica de caracteres.
FIN_DR EQU $4F * Fin lnea nica de caracteres.
L1_INI_DR EQU $00 * Inicio de la primera lnea.
L1_FIN_DR EQU $27 * Fin de la primera lnea.
L2_INI_DR EQU $40 * Inicio de la segunda lnea.
L2_FIN_DR EQU $67 * Fin de la segunda lnea.
LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

******************************************************************************
* PUERTOS DEL DISPLAY *
******************************************************************************
BYTE_DATA EQU PORTE * Puerto de datos.
BYTE_CONTROL EQU PORTC * Puerto de control.
BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicacin.
* con el controlador del display.
BIT_RS EQU 5 * Seleccin del tipo de registro al que se escribe:
* 0 - Registro de Instrucciones (IR).
* 1 - Registro de Datos (DR).
BIT_RW EQU 6 * Cambio entre los modos de lectura y escritura.
98
******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR0 DC.L DRIVER_DISPLAY

******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:

******************************************************************************
* LISTA DE MENSAJES *
******************************************************************************
ORG $2000
MENSAJES DC.L MENS1,MENS2,MENS3
MENS1 DC.B 'PRIMERA PRUEBA. ESCRITURA NORMAL DE TEXTO.',$00
MENS2 DC.B 'ESPERE UNOS SEGUNDOS DESPUES DE APAGARSE EL DISPLAY.',$00
MENS3 DC.B 'En un lugar de la Mancha de cuyo nombre no quiero acordarme, no
ha mucho .......',$00

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************

99
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*

************************** PORT_EC_CFG ****************************
* Con esta rutina se configuran los puertos E y C que son los que *
* se usan para controlar el display y el teclado. *
*******************************************************************
PORT_EC_CFG
MOVE.B #$FF,DDRE * PE0..PE7 salidas.
MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.
MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.
MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.
MOVE.B #$00,PORTE
MOVE.B #$0F,PORTC
RTS
*----------------------------------------------------------------------------*
******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS
*----------------------------------------------------------------------------*
***************************** TOGGLE ******************************
* Provoca la ejecucin de la instruccin, generando un pulso de *
* duracin determinada por el valor del registro D2 en la lnea *
* Enable del LCD. *
*******************************************************************
100
TOGGLE
MOVE.L D1,-(A7)
MOVE.L D2,D1
BSET.B #BIT_ENABLE,BYTE_CONTROL
BSR DELAY
MOVE.L D2,D1
BCLR.B #BIT_ENABLE,BYTE_CONTROL
BSR DELAY
MOVE.L (A7)+,D1
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* INSTRUCCIONES LCD *
******************************************************************************
************************** CFG_DISPLAY ****************************
* Configura el modo de funcionamiento del display. Bsicamente se *
* reduce a tres aspectos: *
* 1 - Comunicacin con el display con 8 o 4 bits. *
* 2 - 1 o 2 lneas en pantalla. *
* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *
* Suprimiendo el asterisco correspondiente se puede modificar la *
* opcin seleccionada por defecto. *
* Retardo necesario CORTO *
*******************************************************************
CFG_DISPLAY
MOVE.B #$30,BYTE_DATA * Modo 8 bits, una lnea, fuentes 5x8 puntos.
* BCLR.B #4,BYTE_DATA * Modo 4 bits.
* BSET.B #3,BYTE_DATA * Habilita 2 lneas.
* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** MODO_AVC ******************************
* El cursor avanza cuando se escribe un carcter en el registro *
* DR. El display permanece esttico. *
* Retardo necesario CORTO. *
*******************************************************************
101
MODO_AVC
MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaa.
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** MODO_AVT ******************************
* El cursor y el display avanzan solidariamente cuando se escribe *
* un carcter en el registro DR. *
* Retardo necesario CORTO. *
*******************************************************************
MODO_AVT
MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaa.
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** MODO_RTC ******************************
* El cursor retrocede cuando se escribe un carcter en el regis- *
* tro DR. El display permanece esttico. *
* Retardo necesario CORTO. *
*******************************************************************
MODO_RTC
MOVE.B #$04,BYTE_DATA * Cursor atrs, display no acompaa.
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** MODO_RTT ******************************
* El cursor y el display retroceden solidariamente cuando se es- *
* cribe un carcter en el registro DR. *
* Retardo necesario CORTO. *
*******************************************************************

MODO_RTT
MOVE.B #$05,BYTE_DATA * Cursor atrs, display acompaa.
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*
102
************************** MODO_NORMAL ****************************
* Se configura el modo del display. Por defecto estarn tanto el *
* display como el cursor encendidos y sin parpadear el carcter *
* donde se encuentra el cursor. *
* Retardo necesario CORTO *
*******************************************************************
MODO_NORMAL
MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF
* BCLR.B #2,BYTE_DATA * Display OFF
* BCLR.B #1,BYTE_DATA * Cursor OFF
* BSET.B #0,BYTE_DATA * Blinking ON
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

**************************** MODO_OFF *****************************
* Produce el apagado de la pantalla del LCD. Se puede seguir en- *
* viando ordenes al display que ser n ejecutadas. La nica dife- *
* rencia es que no aparece reflejado hasta que no se enciende de *
* el LCD. *
* Retardo necesario CORTO *
*******************************************************************
MODO_OFF
MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

***************************** CLEAR *******************************
* Borra el contenido del display y situa el cursor a la izquierda *
* Retardo necesario INDEFINIDO *
*******************************************************************

CLEAR
MOVE.B #$01,BYTE_DATA
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

103
************************** RETURN_HOME *****************************
* Devuelve el cursor a la primera posicin conservando el conteni- *
* de la memoria del display. *
* Retardo necesario LARGO *
********************************************************************
RETURN_HOME
MOVE.B #$02,BYTE_DATA
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** CURS_IZQ ******************************
* Mueve el cursor a la izquierda sin modificar el texto. *
* Retardo necesario CORTO *
*******************************************************************
CURS_IZQ
MOVE.B #$10,BYTE_DATA
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** CURS_DCHA *****************************
* Mueve el cursor a la derecha sin modificar el texto. *
* Retardo necesario CORTO *
*******************************************************************
CURS_DCHA
MOVE.B #$14,BYTE_DATA
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

*************************** DISP_IZQ ******************************
* Desplaza la ventana del display hacia la izquierda. *
* Retardo necesario CORTO *
*******************************************************************
DISP_IZQ
MOVE.B #$1C,BYTE_DATA
BSR TOGGLE
RTS
104
*************************** DISP_DCHA *****************************
* Desplaza la ventana del display hacia la derecha. *
* Retardo necesario CORTO *
*******************************************************************
DISP_DCHA
MOVE.B #$18,BYTE_DATA
BSR TOGGLE
RTS
*----------------------------------------------------------------------------*

************************** CGRAM_ADDR *****************************
* Coloca la direccin indicada en el contador de la Memoria del *
* Generador de Caracteres (CGRAM). Este generador permite definir *
* 8 caracteres de usuario en el modo 5x8 y cuatro en el de 5x10 *
* puntos. Para un correcto uso de la instruccin deberemos escri- *
* bir una de las 64 direcciones posibles (de $00 a $3F) en *
* BYTE_DATA. *
* Retardo necesario CORTO *
*******************************************************************
CGRAM_ADDR
ADD.B #$40,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR TOGGLE
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*
************************** DDRAM_ADDR *****************************
* Coloca la direccin indicada en el contador de la Memoria de *
* Datos del Display (DDRAM). Existen 80 posiciones disponibles *
* que sern consecutivas cuando el display trabaje en una nica *
* lnea o repartidas en dos grupos de 40 cuando trabaje en el *
* modo de dos lneas. *
* Vase detalle a continuacin: *
* - 80 posiciones x 1 lnea - las direcciones van de $0 a $4F. *
* - 40 posiciones x 2 lneas - las direcciones se reparten: *
* Lnea primera: de $00 a $27. *
* Lnea segunda: de $40 a $67. *
* Retardo necesario CORTO *
*******************************************************************
105
DDRAM_ADDR
ADD.B #$80,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR TOGGLE
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

*************************** ESCRIBIR ******************************
* Esta instruccin permite escribir en el registro de datos (DR) *
* una palabra que puede ir destinada a la memoria del generador *
* de caracteres (CGRAM) o a la de datos del display (DDRAM) de- *
* pendiendo de cual fu la ltima seleccin. El dato a escribir *
* lo pondremos en el puerto de datos (BYTE_DATA). *
* Retardo necesario CORTO. *
*******************************************************************
ESCRIBIR
BSET.B #BIT_RS,BYTE_CONTROL
BSR TOGGLE
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* RUTINAS DE INICIALIZACIN DE DISPOSITIVOS *
******************************************************************************
**************************** INI_LCD ******************************
* Esta rutina realiza toda la inicializacin del display tras el *
* encendido del mismo. Despus de su ejecucin el display queda *
* preparado para recibir ordenes y caracteres. *
*******************************************************************
INI_LCD
MOVE.L #CORTO,D2 * Fijamos la duracin de retardo.
BSR CFG_DISPLAY
BSR MODO_NORMAL
BSR CLEAR
RTS
*----------------------------------------------------------------------------*

106
******************************************************************************
* SERVICIOS DE DISPOSITIVOS *
******************************************************************************
******************************************************************************
* SERVICIOS DEL DISPLAY *
******************************************************************************
************************** ESCR_MENSAJE ***************************
* Esta rutina escribe un mensaje completo en el display en el *
* sentido natural de escritura cuya direccin de inicio se la pa- *
* samos a travs del registro A0. El smbolo con que deber ter- *
* minarse el mensaje es $00. Si el mensaje es superior a los 16 *
* caracteres que tiene el LCD, al alcanzar el final de la lnea *
* automticamente se cambia del modo AVC al AVT en el que el dis- *
* play acompaa al cursor dando la sensacin de que el texto se *
* desplaza. *
*******************************************************************
ESCR_MENSAJE
MOVEM.L D0-D2,-(A7)
MOVE.L #LARGO,D2
BSR RETURN_HOME
MOVE.L #CORTO,D2
BSR MODO_AVC
MOVE.B #LCD_LONG,D0 * Cuenta los caracteres escritos en el display.
BUCLE1
TST.B (A0)
BEQ FIN1
MOVE.B (A0)+,BYTE_DATOS
BSR ESCRIBIR
SUB.B #1,D0
BEQ FIN_LIN1
MOVE.L #RETARDO,D1
BSR DELAY
BRA BUCLE1
FIN_LIN1
BSR MODO_AVT * Cambia al modo AVT para que el display acompae al cursor.
BRA BUCLE1
FIN1
MOVEM.L (A7)+,D0-D2
RTS
107
*************************** DSP_ADELANTE **************************
* Esta rutina desplaza hacia la derecha la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ADELANTE
MOVEM.L D0-D1,-(A7)
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE2
BSR DISP_DCHA
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE2
MOVEM.L (A7)+,D0-D1
RTS
*----------------------------------------------------------------------------*

**************************** DSP_ATRAS ****************************
* Esta rutina desplaza hacia la izquierda la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ATRAS
MOVEM.L D0-D1,-(A7)
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE3
BSR DISP_IZQ
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE3
MOVEM.L (A7)+,D0-D1
RTS
*----------------------------------------------------------------------------*
************************** DRIVER_DISPLAY *************************
* Esta rutina realiza el servicio indicado a travs del registro *
* D7 con un nmero ordinal. Para llamar a la rutina de servicio *
* se coloca el nmero de servicio en el registro D7 y se ejecuta *
* un TRAP #0. *
*******************************************************************
108
DRIVER_DISPLAY
MOVEM.L D0-D1,-(A7)
CMP.B #1,D7
BEQ SERVICIO1
CMP.B #2,D7
BEQ SERVICIO2
CMP.B #3,D7
BEQ SERVICIO3
SERVICIO1
BSR ESCR_MENSAJE
BRA FIN
SERVICIO2
BSR DSP_ADELANTE
BRA FIN
SERVICIO3
BSR DSP_ATRAS
FIN
MOVEM.L (A7)+,D0-D1
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG
BSR PORT_EC_CFG
BSR INI_LCD
MOVEA.L #MENSAJES,A6
MOVEA.L (A6)+,A0
MOVE.L #1,D7
TRAP #0
MOVEA.L (A6)+,A0
MOVE.L #1,D7
TRAP #0
BSR MODO_OFF
MOVEA.L (A6),A0
MOVE.L #1,D7
109
TRAP #0
BSR MODO_NORMAL
MOVE.B #3,D3
LOOP1
MOVE.L #2,D7
TRAP #0
SUB.B #1,D3
BNE LOOP1
MOVE.B #3,D3
LOOP2
MOVE.L #3,D7
TRAP #0
SUB.B #1,D3
BNE LOOP2
FINAL
BRA FINAL
END
3.3.1.3.1 Observaciones sobre el ajuste de parmetros
Existen ciertos parmetros que ha sido necesario someterlos a un ajuste, como son los
retardos.
3.3.1.3.1.1 Ajuste de la seal de activacin, Enable.
Esta seal es la que gobierna el proceso de comunicacin con el display. La funcin
toggle tiene como objetivo conformar un pulso sobre la lnea de activacin (E). Esta
funcin utiliza una subrutina llamada DELAY que introduce el retardo necesario para
definir el periodo de esta seal. Cada vez que se llama a la funcin TOGGLE, sta
genera un pulso de aspecto ms o menos cuadrado en la seal Enable cuyo periodo
depender del valor que se cargue en el contador de retardo DELAY. A continuacin se
detallan las dos subrutinas:
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS
110
*----------------------------------------------------------------------------*

***************************** TOGGLE ******************************
* Provoca la ejecucin de la instruccin, generando un pulso de *
* duracin determinada en la lnea Enable del LCD. *
*******************************************************************
TOGGLE
MOVE.L D2,D1
BSET.B #BIT_ENABLE,BYTE_CONTROL
BSR DELAY
MOVE.L D2,D1
BCLR.B #BIT_ENABLE,BYTE_CONTROL
BSR DELAY
RTS

El display requiere de 37 s. para completar la mayora de las instrucciones. Por tanto si
se elige un periodo de seal de 100 s., 50 s. por ciclo, con toda seguridad siempre
habr terminado la instruccin. Para el ajuste de este periodo se ejecuta la rutina
TOGGLE en un bucle infinito y se mide con el osciloscopio el periodo de la seal
resultante, que iremos ajustando variando el valor de la constante CORTO. Tambin se
debe generar esta seal con un retardo superior a los 1.6 ms. que requiere la instruccin
cursor a inicio (Return Home). Para ello se proceder de igual forma ajustando el valor
de la constante LARGO.
3.3.2 Ejemplo de control en bucle cerrado
3.3.2.1 Descripcin de la aplicacin de control
La aplicacin va a consistir en la repeticin secuencial de un conjunto de mensajes, en
particular, los nmeros del uno al nueve ms el cero y la frase siguiente: ES UNA
PRUEBA DE MENSAJE LARGO PARA VER QUE PASA, esperndose que si el
servicio de escritura de mensajes es lo bastante rpido, slo sean visibles en el display
los diecisis caracteres ltimos de la frase, esto es: ARA VER QUE PASA.
3.3.2.2 Descripcin de la conexin y modo de control
El modo de conexin no difiere con respecto al caso anterior, con la salvedad de que en
esta ocasin s se utiliza la seal R/W y, por tanto, no se puede prescindir de ella.
111
3.3.2.3 Implementacin en cdigo ensamblador del programa de
control
El inters de este programa reside en la rapidez de ejecucin basada en la comunicacin
entre los dos dispositivos.
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente si Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
112
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $03FF * Del orden de 100us.
LARGO EQU $BFFF * Del orden de 5ms.
RETARDO EQU $6FFF * Se usa para el avance de caracteres.

******************************************************************************
* CONSTANTES DE INTERS *
******************************************************************************
INI_DR EQU $00 * Inicio de lnea nica de caracteres.
FIN_DR EQU $4F * Fin lnea nica de caracteres.
L1_INI_DR EQU $00 * Inicio de la primera lnea.
L1_FIN_DR EQU $27 * Fin de la primera lnea.
L2_INI_DR EQU $40 * Inicio de la segunda lnea.
113
L2_FIN_DR EQU $67 * Fin de la segunda lnea.
LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

******************************************************************************
* PUERTOS DEL DISPLAY *
******************************************************************************
BYTE_DATA EQU PORTE * Puerto de datos.
BYTE_CONTROL EQU PORTC * Puerto de control.
BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicacin.
* con el controlador del display.
BIT_RS EQU 5 * Seleccin del tipo de registro al que se escribe:
* 0 - Registro de Instrucciones (IR).
* 1 - Registro de Datos (DR).
BIT_RW EQU 6 * Cambio entre los modos de lectura y escritura.
FLAG EQU 7 * Posicin del flag de datos en el puerto.

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR1 DC.L DRIVER_DISPLAY
******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:
******************************************************************************
* LISTA DE MENSAJES *
******************************************************************************
ORG $2000
114
MENSAJES DC.L
MENS1,MENS2,MENS3,MENS4,MENS5,MENS6,MENS7,MENS8,MENS9,MENS0,MENSLARGO
MENS1 DC.B 'UNO',$00
MENS2 DC.B 'DOS',$00
MENS3 DC.B 'TRES',$00
MENS4 DC.B 'CUATRO',$00
MENS5 DC.B 'CINCO',$00
MENS6 DC.B 'SEIS',$00
MENS7 DC.B 'SIETE',$00
MENS8 DC.B 'OCHO',$00
MENS9 DC.B 'NUEVE',$00
MENS0 DC.B 'CERO',$00
MENSLARGO DC.B 'ES UNA PRUEBA DE MENSAJE LARGO PARA VER QUE PASA',$00

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*

************************** PORT_EC_CFG ****************************
* Con esta rutina se configuran los puertos E y C que son los que *
* se usan para controlar el display y el teclado. *
*******************************************************************
PORT_EC_CFG
MOVE.B #$FF,DDRE * PE0..PE7 salidas.
MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.
MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.
115
MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.
MOVE.B #$00,PORTE
MOVE.B #$0F,PORTC
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS
*----------------------------------------------------------------------------*

************************* FLAG_ESPERAR ****************************
* Espera a que se baje el flag de ocupado. *
*******************************************************************
FLAG_ESPERAR
MOVE.B #$7F,DDRE
BSET.B #BIT_RW,BYTE_CONTROL
BSET.B #BIT_ENABLE,BYTE_CONTROL
OCUPADO
BTST.B #FLAG,BYTE_DATA
BNE OCUPADO
BCLR.B #BIT_ENABLE,BYTE_CONTROL
BCLR.B #BIT_RW,BYTE_CONTROL
MOVE.B #$FF,DDRE
RTS
*----------------------------------------------------------------------------*

*************************** ENABLE_LCD ****************************
* Provoca la ejecucin de la instruccin, generando un pulso en *
* la lnea Enable del LCD. *
*******************************************************************
116
ENABLE_LCD
BSET.B #BIT_ENABLE,BYTE_CONTROL
BCLR.B #BIT_ENABLE,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* INSTRUCCIONES LCD *
******************************************************************************
************************** CFG_DISPLAY ****************************
* Configura el modo de funcionamiento del display. Bsicamente se *
* reduce a tres aspectos: *
* 1 - Comunicacin con el display con 8 o 4 bits. *
* 2 - 1 o 2 lneas en pantalla. *
* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *
* Suprimiendo el asterisco correspondiente se puede modificar la *
* opcin seleccionada por defecto. *
*******************************************************************
CFG_DISPLAY
BSR FLAG_ESPERAR
MOVE.B #$30,BYTE_DATA * Modo 8 bits, una lnea, fuentes 5x8 puntos.
* BCLR.B #4,BYTE_DATA * Modo 4 bits.
* BSET.B #3,BYTE_DATA * Habilita 2 lneas.
* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** MODO_AVC ******************************
* El cursor avanza cuando se escribe un carcter en el registro *
* DR. El display permanece esttico. *
*******************************************************************
MODO_AVC
BSR FLAG_ESPERAR
MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

117
*************************** MODO_AVT ******************************
* El cursor y el display avanzan solidariamente cuando se escribe *
* un carcter en el registro DR. *
*******************************************************************
MODO_AVT
BSR FLAG_ESPERAR
MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*


*************************** MODO_RTC ******************************
* El cursor retrocede cuando se escribe un carcter en el regis- *
* tro DR. El display permanece esttico. *
*******************************************************************
MODO_RTC
BSR FLAG_ESPERAR
MOVE.B #$04,BYTE_DATA * Cursor atrs, display no acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*


*************************** MODO_RTT ******************************
* El cursor y el display retroceden solidariamente cuando se es- *
* cribe un carcter en el registro DR. *
*******************************************************************
MODO_RTT
BSR FLAG_ESPERAR
MOVE.B #$05,BYTE_DATA * Cursor atrs, display acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

************************** MODO_NORMAL ****************************
* Se configura el modo del display. Por defecto estarn tanto el *
* display como el cursor encendidos y sin parpadear el carcter *
* donde se encuentra el cursor. *
118
*******************************************************************
MODO_NORMAL
BSR FLAG_ESPERAR
MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF
* BCLR.B #2,BYTE_DATA * Display OFF
* BCLR.B #1,BYTE_DATA * Cursor OFF
* BSET.B #0,BYTE_DATA * Blinking ON
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

**************************** MODO_OFF *****************************
* Produce el apagado de la pantalla del LCD. Se puede seguir en- *
* viando ordenes al display que ser n ejecutadas. La nica dife- *
* rencia es que no aparece reflejado hasta que no se enciende de *
* el LCD. *
*******************************************************************
MODO_OFF
BSR FLAG_ESPERAR
MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

***************************** CLEAR *******************************
* Borra el contenido del display y situa el cursor a la izquierda *
*******************************************************************
CLEAR
BSR FLAG_ESPERAR
MOVE.B #$01,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*


************************** RETURN_HOME *****************************
* Devuelve el cursor a la primera posicin conservando el conteni- *
* de la memoria del display. *
********************************************************************
119
RETURN_HOME
BSR FLAG_ESPERAR
MOVE.B #$02,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** CURS_IZQ ******************************
* Mueve el cursor a la izquierda sin modificar el texto. *
*******************************************************************
CURS_IZQ
BSR FLAG_ESPERAR
MOVE.B #$10,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** CURS_DCHA *****************************
* Mueve el cursor a la derecha sin modificar el texto. *
*******************************************************************
CURS_DCHA
BSR FLAG_ESPERAR
MOVE.B #$14,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** DISP_IZQ ******************************
* Desplaza la ventana del display hacia la izquierda. *
*******************************************************************
DISP_IZQ
BSR FLAG_ESPERAR
MOVE.B #$1C,BYTE_DATA
BSR ENABLE_LCD
RTS
*************************** DISP_DCHA *****************************
* Desplaza la ventana del display hacia la derecha. *
*******************************************************************
DISP_DCHA
120
BSR FLAG_ESPERAR
MOVE.B #$18,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

************************** CGRAM_ADDR *****************************
* Coloca la direccin indicada en D0 en el contador de la Memoria *
* del Generador de Caracteres (CGRAM). Este generador permite de- *
* finir 8 caracteres de usuario en el modo 5x8 y cuatro en el de *
* 5x10 puntos. Para un correcto uso de la instruccin deberemos *
* escribir una de las 64 direcciones posibles (de $00 a $3F)en D0 *
*******************************************************************
CGRAM_ADDR
BSR FLAG_ESPERAR
ADD.B #$40,D0
MOVE.B D0,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

************************** DDRAM_ADDR *****************************
* Coloca la direccin indicada en D0 en el contador de la Memoria *
* de Datos del Display (DDRAM). Existen 80 posiciones disponibles *
* que ser n consecutivas cuando el display trabaje en una nica *
* lnea o repartidas en dos grupos de 40 cuando trabaje en el *
* modo de dos lneas. *
* Vase detalle a continuacin: *
* - 80 posiciones x 1 lnea - las direcciones van de $0 a $4F. *
* - 40 posiciones x 2 lneas - las direcciones se reparten: *
* Lnea primera: de $00 a $27. *
* Lnea segunda: de $40 a $67. *
*******************************************************************
DDRAM_ADDR
BSR FLAG_ESPERAR
ADD.B #$80,D0
MOVE.B D0,BYTE_DATA
121
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

*************************** ESCRIBIR ******************************
* Esta instruccin permite escribir en el registro de datos (DR) *
* una palabra destinada al generador de caracteres (CGRAM) o al *
* de datos del display (DDRAM) dependiendo de cual fue la ltima *
* seleccin. El dato a escribir lo pondremos en el registro D0. *
*******************************************************************
ESCRIBIR
BSR FLAG_ESPERAR
MOVE.B D0,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* RUTINAS DE INICIALIZACIN DE DISPOSITIVOS *
******************************************************************************
**************************** INI_LCD ******************************
* Esta rutina realiza toda la inicializacin del display tras el *
* encendido del mismo. Despus de su ejecucin el display queda *
* preparado para recibir instrucciones y caracteres. *
*******************************************************************
INI_LCD:
BSR CFG_DISPLAY
BSR MODO_NORMAL
BSR CLEAR
RTS
*----------------------------------------------------------------------------*
******************************************************************************
* SERVICIOS DE DISPOSITIVOS *
******************************************************************************
******************************************************************************
122
* SERVICIOS DEL DISPLAY *
******************************************************************************
************************** ESCR_MENSAJE ***************************
* Esta rutina escribe un mensaje completo en el display cuya di- *
* reccin de inicio se indica a travs del registro A0, debiendo *
* terminar el mensaje con $00. Si es superior a los 16 caracteres *
* que tiene el LCD, al alcanzar el final de la lnea automtica- *
* mente se cambia del modo AVC al AVT en el que el display acom- *
* paa al cursor dando la sensacin de que el texto se desplaza. *
*******************************************************************
ESCR_MENSAJE
MOVEM.L D0-D1,-(A7)
BSR RETURN_HOME
BSR MODO_AVC
MOVE.B #LCD_LONG,D1 * Cuenta los caracteres escritos en el display.
BUCLE1
TST.B (A0)
BEQ FIN1
MOVE.B (A0)+,D0
BSR ESCRIBIR
SUB.B #1,D1
BEQ FIN_LIN1
BRA BUCLE1
FIN_LIN1
BSR MODO_AVT * Cambia al modo AVT para que el display acompae al cursor.
BRA BUCLE1
FIN1
MOVEM.L (A7)+,D0-D1
RTS
*----------------------------------------------------------------------------*

*************************** DSP_ADELANTE **************************
* Esta rutina desplaza hacia la derecha la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ADELANTE
MOVEM.L D0-D1,-(A7)
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE2
123
BSR DISP_DCHA
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE2
MOVEM.L (A7)+,D0-D1
RTS
*----------------------------------------------------------------------------*

**************************** DSP_ATRAS ****************************
* Esta rutina desplaza hacia la izquierda la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ATRAS
MOVEM.L D0-D1,-(A7)
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE3
BSR DISP_IZQ
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE3
MOVEM.L (A7)+,D0-D1
RTS
*----------------------------------------------------------------------------*

************************** DRIVER_DISPLAY *************************
* Esta rutina realiza el servicio indicado a travs del registro *
* D7 con un nmero ordinal. Para llamar a la rutina de servicio *
* se coloca el nmero de servicio en el registro D7 y se ejecuta *
* un TRAP #0. *
*******************************************************************
DRIVER_DISPLAY
MOVEM.L D0-D1,-(A7)
CMP.B #1,D7
BEQ SERVICIO1
CMP.B #2,D7
BEQ SERVICIO2
CMP.B #3,D7
124
BEQ SERVICIO3
BRA FIN
SERVICIO1
BSR ESCR_MENSAJE
BRA FIN
SERVICIO2
BSR DSP_ADELANTE
BRA FIN
SERVICIO3
BSR DSP_ATRAS
FIN
MOVEM.L (A7)+,D0-D1
RTE
*----------------------------------------------------------------------------*

******************************** PRINCIPAL ***********************************
* El programa en cuestin muestra en el display de forma secuencial la lista *
* de mensajes definidos. Para la escritura utiliza el servicio de escritura *
* de mensajes del driver a travs de TRAP #0. *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG
BSR PORT_EC_CFG
BSR INI_LCD
INIC_D0
MOVEA.W #MENSAJES,A6
MOVE.L #$B,D0
LOOP1
BSR CLEAR
MOVEA.L (A6)+,A0
MOVE.L #1,D7
TRAP #0
MOVE.L #LARGO,D1
BSR DELAY
SUBI.B #1,D0
BEQ INIC_D0
BRA LOOP1
END
125

3.4 Anexo I
A continuacin se adjuntan copias de los juegos de caracteres predefinidos extrados del
catalogo original del controlador HD44780U de Hitachi.
Esta primera tabla contiene patrones de caracteres de 5 x10 puntos.
- Figura 6 Correspondencia entre cdigos y caracteres (Extrado del catlogo de HITACHI).

126
Esta otra contiene los patrones de caracteres de 5 x 8 puntos, que es adems la que se
usar en el ejemplo de estas pginas.
- Figura 7 Correspondencia entre cdigos y caracteres (Extrado del catlogo de HITACHI).

127
Captulo 4
Control de un teclado matricial
El teclado matricial proporciona una interfaz sencilla de entrada de datos. Sus usos
pueden ser tan variados como aplicaciones que precisen de la introduccin manual de
datos puedan ocurrrsele al diseador. Desde una calculadora, pasando por una
cerradura codificada, un termostato programable, etc.
4.1 Descripcin
En el mercado es habitual encontrar teclados matriciales pasivos de 3 x 4 y de 4 x 4
teclas. Esencialmente estn constituidos por filas y columnas conductoras en cuyo cruce
se encuentra un pulsador mecnico o de membrana que, al ser pulsado, establece el
contacto elctrico entre la fila y la columna correspondiente.
- Figura 1 Esquema tpico de un teclado matricial de 4 filas y 4 columnas (cedido por Elena Muoz Salinero y Olga Cristina
Santos Martn-Moreno)
Para su conexin al microcontrolador se deben colocar unas resistencias de pull-up en
las filas (o las columnas). De esta forma si se pone a masa (cero lgico) una columna
(fila) se obtendr un cero en la fila (columna) correspondiente cuando se pulse una
tecla.
Al pulsar pueden producirse rebotes mecnicos e interpretarlos como varias repeticiones
de la misma tecla. Para evitarlo basta con esperar un tiempo superior a la duracin de
los mismos antes de seguir leyendo datos del teclado.
128
Este tiempo debe ser ajustado por el alumno de tal forma que ni se detecten pulsaciones
falsas ni resulte lento el manejo del teclado. El ajuste se puede realizar a tanto alzado,
aumentando la espera hasta que desaparezca el fenmeno de repeticin o bien de modo
ms preciso midiendo los transitorios con rebotes y su duracin con un osciloscopio
digital con captura sensible a flancos (como los disponibles en el laboratorio B-043).
4.2 Algoritmo de reconocimiento de teclas
Para conocer la tecla pulsada se puede seguir un algoritmo como el descrito a
continuacin:
REPETIR
Excitar una columna.
Retardo (necesario si hay optoacopladores)
Leer las filas.
Si no hay tecla pulsada pasar a la siguiente columna.
HASTA QUE SE PULSE UNA TECLA
Esperar un tiempo mayor que la duracin de los rebotes.
REPETIR
Leer la fila
HASTA QUE SE SUELTE LA TECLA
Determinar la tecla pulsada a partir de la fila y la columna.

En el caso de que los puertos lleven optoacopladores es necesario introducir un retardo
que asegure la propagacin de la seal, debido a la lentitud de los mismos.
4.3 Conexin al microcontrolador MC68331
Para conectar al microcontrolador un teclado de 4 x 4 teclas se necesitan ocho puntos de
conexin (pins), cuatro de salida y otros cuatro de entrada. Con las salidas se excitan las
columnas (filas) y con las entradas se leen las filas (columnas). El microcontrolador
MC68331 ofrece una amplia variedad de posibilidades de conexin, cuya eleccin
depender del diseo en cuestin.
En los ejemplos que se muestran a continuacin se ha optado por usar como salidas los
cuatro primeros bits del puerto C (PC0-PC3) para excitar las columnas y como entradas
129
los cuatro primeros del puerto E (PE0-PE3) para leer las filas, sin que exista una razn
que haga de sta una eleccin mejor que otra.
4.4 Rutina bsica de atencin al teclado
A continuacin se muestra el cdigo en ensamblador para el micro Motorola MC68331.
La rutina tiene por nombre TECLA_LEER y usa una subrutina llamada
TECLA_SOLTAR:
************************** TECLA_SOLTAR ***************************
* Permanece en un bucle mientras sigue pulsada la tecla indicada *
* en D5 y sale cuando se suelta. *
*******************************************************************
TECLA_SOLTAR
MOVE.L #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al
BSR DELAY * pulsar una tecla. (REBOTES_MATAR = 4)
SIGUE_PULSADA
BTST.B D3,PORTE * Se lee el puerto E
BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla
RTS

**************************** TECLA_LEER ***************************
* Esta rutina rastrea las filas y columnas del teclado en busca *
* de una tecla pulsada. Utiliza los registros D1 a D4 para su uso *
* interno y devuelve el nmero correspondiente a la tecla pulsada.*
*******************************************************************
TECLA_LEER
MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros a usar.
CLR.B D0 * D0 almacena el valor de la tecla pulsada.
MOVE.L #3,D1 * D1 es el contador de columnas.
MOVE.B #$0E,D4 * D4 es usado como registro auxiliar.
COLUMNA
MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110
MOVE.L #3,D2 * D2 es el contador de filas
MOVE.B #0,D3 * D3 guarda el nmero de bit a comprobar
FILA
BTST.B D3,PORTE * Comprueba el bit de la fila
BEQ TECLA * Salta si encontr la tecla pulsada
ADDQ.B #1,D0 * Siguiente tecla
130
ADDQ.B #1,D3 * Siguiente fila
DBF D2,FILA * Decrementa el contador de filas y salta a la
* siguiente
ORI.B #$10,CCR * Pone a 1 el bit de eXtensin del CCR
ROXL.B #1,D4 * Siguiente columna
ANDI.B #$0F,D4 * Elimina los cuatro bits ms significativos
DBF D1,COLUMNA * Decrementa el contador de columnas y salta a la
* siguiente
MOVE.B #$FF,D0 * Devuelve $FF si no hay tecla pulsada
BRA FIN
TECLA
BSR TECLA_SOLTAR * Salta a subrutina TECLA_SOLTAR
FIN
MOVEM.L (A7)+,D1-D4 * Restaura los registros desde la pila
RTE

4.5 Anexo Ejemplos de uso del teclado
4.5.1 Ejemplo 1 Programa bsico de atencin al teclado
El programa listado a continuacin utiliza la rutina bsica de atencin al teclado para
dejar en el registro D2 del micro el cdigo ASCII de la tecla pulsada.
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
131
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente si Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
132
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $0400 * Del orden de 100us.
MEDIO EQU $2800 * Del orden de 1ms.
LARGO EQU $C800 * Del orden de 5ms.
RETARDO EQU $FFFF * Se usa para el avance de caracteres.
REBOTES_MATAR EQU $0004 * Tiempo necesario para matar los transito-
* rios que se producen al pulsar una tecla.

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR0 DC.L TECLA_LEER

******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:

******************************************************************************
* LISTA DE TECLAS *
******************************************************************************
ORG $2000
TECLAS DC.B $41,$30,$42,$43,$37,$38,$39,$44,$34,$35,$36,$45,$31,$32,$33,$46

133
******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitorizacin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*

************************** PORT_EC_CFG ****************************
* Con esta rutina se configuran los puertos E y C que son los que *
* se usan para controlar el teclado. *
*******************************************************************
PORT_EC_CFG
MOVE.B #$F0,DDRE * PE0..PE3 entradas, PE4..PE7 salidas.
MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.
MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.
MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.
MOVE.B #$00,PORTE
MOVE.B #$0F,PORTC
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* SUBRUTINAS DE TECLADO *
******************************************************************************
************************** TECLA_SOLTAR ***************************
* Permanece en un bucle mientras sigue pulsada la tecla indicada *
* en D5 y sale cuando se suelta. *
*******************************************************************
TECLA_SOLTAR
134
MOVE.L D1,-(A7)
MOVE.L #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al
BSR DELAY * pulsar una tecla.
SIGUE_PULSADA
BTST.B D3,PORTE * Se lee el puerto E
BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla
MOVE.L (A7)+,D1
RTS

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS

******************************************************************************
* SERVICIOS DE DISPOSITIVOS *
******************************************************************************
******************************************************************************
* SERVICIOS DE TECLADO *
******************************************************************************
**************************** TECLA_LEER ***************************
* Esta rutina rastrea las filas y columnas del teclado en busca *
* de una tecla pulsada. Utiliza los registros D6 y D7 para su uso *
* interno y devuelve el cdigo ASCII de la tecla a travs de D0. *
*******************************************************************
TECLA_LEER
MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros que se van a usar
CLR.B D0 * D0 almacena el valor de la tecla pulsada
MOVE.L #3,D1 * D1 es el contador de columnas
MOVE.B #$0E,D4 * D4 es usado como registro auxiliar
COLUMNA
MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110
135
MOVE.L #3,D2 * D2 es el contador de filas
MOVE.B #0,D3 * D3 guarda el nmero de bit a comprobar
FILA
BTST.B D3,PORTE * Comprueba el bit de la fila
BEQ TECLA * Salta si encontr la tecla pulsada
ADDQ.B #1,D0 * Siguiente tecla
ADDQ.B #1,D3 * Siguiente fila
DBF D2,FILA * Decrementa fila y salta a la siguiente
ORI.B #$10,CCR * Pone a 1 el bit eXtensin del CCR
ROXL.B #1,D4 * Siguiente columna
ANDI.B #$0F,D4 * Elimina los cuatro bits ms significativos
DBF D1,COLUMNA * Decrementa columna y salta a la siguiente
MOVE.B #$FF,D0
BRA FIN
TECLA
BSR TECLA_SOLTAR
FIN
MOVEM.L (A7)+,D1-D4 * Restaura los registros desde la pila
RTE

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG
BSR PORT_EC_CFG
BUCLE
MOVE #LARGO,D1
BSR DELAY
CLR.L D0
TRAP #0
MOVE.B D0,D6
BRA BUCLE
END


136
4.5.2 Ejemplo 2 Uso combinado con un display LCD
Este ejemplo combina el uso del teclado con el de un display LCD. En el display
aparecer un rtulo indicativo de la tecla pulsada. Para ello utiliza una serie de rutinas
de control de un display LCD que podrn ser consultadas en las Notas sobre el control
de un display LCD.
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente con Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
137
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $0400 * Del orden de 100us.
MEDIO EQU $2800 * Del orden de 1ms.
LARGO EQU $C800 * Del orden de 5ms.
RETARDO EQU $FFFF * Se usa para el avance de caracteres.
REBOTES_MATAR EQU $0004 * Duracin del transitorio de la tecla.

******************************************************************************
* CONSTANTES DE INTERS *
******************************************************************************
INI_DR EQU $00 * Inicio de lnea nica de caracteres.
138
FIN_DR EQU $4F * Fin lnea nica de caracteres.
L1_INI_DR EQU $00 * Inicio de la primera lnea.
L1_FIN_DR EQU $27 * Fin de la primera lnea.
L2_INI_DR EQU $40 * Inicio de la segunda lnea.
L2_FIN_DR EQU $67 * Fin de la segunda lnea.
LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

******************************************************************************
* PUERTOS DEL DISPLAY *
******************************************************************************
BYTE_DATA EQU PORTE * Puerto de datos.
BYTE_CONTROL EQU PORTC * Puerto de control.
BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicacin.
* con el controlador del display.
BIT_RS EQU 5 * Seleccin del tipo de registro al que se escribe:
* 0 - Registro de Instrucciones (IR).
* 1 - Registro de Datos (DR).
BIT_RW EQU 6 * Cambio entre los modos de lectura y escritura.
FLAG EQU 7 * Posicin del flag de datos en el puerto.

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR0 DC.L DRIVER_SERVICIOS

******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:
139
******************************************************************************
* LISTA DE MENSAJES *
******************************************************************************
ORG $2000
MENSAJES DC.L
MENS1,MENS2,MENS3,MENS4,MENS5,MENS6,MENS7,MENS8,MENS9,MENS10,MENS11,MENS12,MEN
S13,MENS14,MENS15,MENS16
MENS1 DC.B 'TECLA C', $00
MENS2 DC.B 'TECLA B', $00
MENS3 DC.B 'CERO', $00
MENS4 DC.B 'TECLA A', $00
MENS5 DC.B 'TECLA D', $00
MENS6 DC.B 'NUEVE', $00
MENS7 DC.B 'OCHO', $00
MENS8 DC.B 'SIETE', $00
MENS9 DC.B 'TECLA E', $00
MENS10 DC.B 'SEIS',$00
MENS11 DC.B 'CINCO',$00
MENS12 DC.B 'CUATRO',$00
MENS13 DC.B 'TECLA F',$00
MENS14 DC.B 'TRES',$00
MENS15 DC.B 'DOS',$00
MENS16 DC.B 'UNO',$00

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
140
************************** PORT_EC_CFG ****************************
* Con esta rutina se configuran los puertos E y C que son los que *
* se usan para controlar el display y el teclado. *
*******************************************************************
PORT_EC_CFG
MOVE.B #$FF,DDRE * PE0..PE7 salidas.
MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.
MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.
MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.
MOVE.B #$00,PORTE
MOVE.B #$0F,PORTC
RTS
*----------------------------------------------------------------------------*

************************* CAMB_TECLADO ****************************
* Con esta rutina se cambia la configuracin del puerto E para *
* que los cuatro primeros bits funcionen como entrada y poder *
* rastrear las columnas de la matriz del teclado. *
*******************************************************************
CAMB_TECLADO
MOVE.B #$F0,DDRE * PE0..PE3 entradas, PE4..PE7 salidas.
RTS
*----------------------------------------------------------------------------*

************************* CAMB_DISPLAY ****************************
* Con esta rutina se devuelve al puerto E a su estado inicial con *
* todos los bits de salida para poder enviar datos al display. *
*******************************************************************
CAMB_DISPLAY
MOVE.B #$FF,DDRE * PE0..PE7 salidas.
RTS

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
141
DELAY
SUB.L #1,D1
BNE DELAY
RTS
*----------------------------------------------------------------------------*

************************* FLAG_ESPERAR ****************************
* Espera a que se baje el flag de ocupado. *
*******************************************************************
FLAG_ESPERAR
MOVE.B #$7F,DDRE
BSET.B #BIT_RW,BYTE_CONTROL
BSET.B #BIT_ENABLE,BYTE_CONTROL
OCUPADO
BTST.B #FLAG,BYTE_DATA
BNE OCUPADO
BCLR.B #BIT_ENABLE,BYTE_CONTROL
BCLR.B #BIT_RW,BYTE_CONTROL
MOVE.B #$FF,DDRE
RTS
*----------------------------------------------------------------------------*

*************************** ENABLE_LCD ****************************
* Provoca la ejecucin de la instruccin, generando un pulso de *
* duracin determinada en la lnea Enable del LCD. *
*******************************************************************
ENABLE_LCD
BSET.B #BIT_ENABLE,BYTE_CONTROL
BCLR.B #BIT_ENABLE,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* SUBRUTINAS DEL LCD (INSTRUCCIONES) *
******************************************************************************
************************** CFG_DISPLAY ****************************
* Configura el modo de funcionamiento del display. Bsicamente se *
* reduce a tres aspectos: *
* 1 - Comunicacin con el display con 8 o 4 bits. *
142
* 2 - 1 o 2 lneas en pantalla. *
* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *
* Suprimiendo el asterisco correspondiente se puede modificar la *
* opcin seleccionada por defecto. *
*******************************************************************
CFG_DISPLAY
BSR FLAG_ESPERAR
MOVE.B #$30,BYTE_DATA * Modo 8 bits, una lnea, fuentes 5x8 puntos.
* BCLR.B #4,BYTE_DATA * Modo 4 bits.
* BSET.B #3,BYTE_DATA * Habilita 2 lneas.
* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*
*************************** MODO_AVC ******************************
* El cursor avanza cuando se escribe un carcter en el registro *
* DR. El display permanece esttico. *
*******************************************************************
MODO_AVC
BSR FLAG_ESPERAR
MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*
*************************** MODO_AVT ******************************
* El cursor y el display avanzan solidariamente cuando se escribe *
* un carcter en el registro DR. *
*******************************************************************
MODO_AVT
BSR FLAG_ESPERAR
MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** MODO_RTC ******************************
* El cursor retrocede cuando se escribe un carcter en el regis- *
* tro DR. El display permanece esttico. *
*******************************************************************
143
MODO_RTC
BSR FLAG_ESPERAR
MOVE.B #$04,BYTE_DATA * Cursor atrs, display no acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** MODO_RTT ******************************
* El cursor y el display retroceden solidariamente cuando se es- *
* cribe un carcter en el registro DR. *
*******************************************************************
MODO_RTT
BSR FLAG_ESPERAR
MOVE.B #$05,BYTE_DATA * Cursor atrs, display acompaa.
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

************************** MODO_NORMAL ****************************
* Se configura el modo del display. Por defecto estar n tanto el *
* display como el cursor encendidos y sin parpadear el carcter *
* donde se encuentra el cursor. *
*******************************************************************
MODO_NORMAL
BSR FLAG_ESPERAR
MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF
* BCLR.B #2,BYTE_DATA * Display OFF
* BCLR.B #1,BYTE_DATA * Cursor OFF
* BSET.B #0,BYTE_DATA * Blinking ON
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

**************************** MODO_OFF *****************************
* Produce el apagado de la pantalla del LCD. Se puede seguir en- *
* viando ordenes al display que sern ejecutadas. La nica dife- *
* rencia es que no aparece reflejado hasta que no se enciende de *
* el LCD. *
*******************************************************************
144
MODO_OFF
BSR FLAG_ESPERAR
MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

***************************** CLEAR *******************************
* Borra el contenido del display y sita el cursor a la izquierda *
*******************************************************************
CLEAR
BSR FLAG_ESPERAR
MOVE.B #$01,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

************************** RETURN_HOME *****************************
* Devuelve el cursor a la primera posicin conservando el conteni- *
* de la memoria del display. *
********************************************************************
RETURN_HOME
BSR FLAG_ESPERAR
MOVE.B #$02,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** CURS_IZQ ******************************
* Mueve el cursor a la izquierda sin modificar el texto. *
*******************************************************************
CURS_IZQ
BSR FLAG_ESPERAR
MOVE.B #$10,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*


145


*************************** CURS_DCHA *****************************
* Mueve el cursor a la derecha sin modificar el texto. *
*******************************************************************
CURS_DCHA
BSR FLAG_ESPERAR
MOVE.B #$14,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** DISP_IZQ ******************************
* Desplaza la ventana del display hacia la izquierda. *
*******************************************************************
DISP_IZQ
BSR FLAG_ESPERAR
MOVE.B #$1C,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

*************************** DISP_DCHA *****************************
* Desplaza la ventana del display hacia la derecha. *
*******************************************************************
DISP_DCHA
BSR FLAG_ESPERAR
MOVE.B #$18,BYTE_DATA
BSR ENABLE_LCD
RTS
*----------------------------------------------------------------------------*

************************** CGRAM_ADDR *****************************
* Coloca la direccin indicada en D0 en el contador de la Memoria *
* del Generador de Caracteres (CGRAM). Este generador permite de- *
* finir 8 caracteres de usuario en el modo 5x8 y cuatro en el de *
* 5x10 puntos. Para un correcto uso de la instruccin deberemos *
* escribir una de las 64 direcciones posibles (de $00 a $3F)en D0 *
*******************************************************************
146
CGRAM_ADDR
BSR FLAG_ESPERAR
ADD.B #$40,D0
MOVE.B D0,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

************************** DDRAM_ADDR *****************************
* Coloca la direccin indicada en D0 en el contador de la Memoria *
* de Datos del Display (DDRAM). Existen 80 posiciones disponibles *
* que ser n consecutivas cuando el display trabaje en una nica *
* lnea o repartidas en dos grupos de 40 cuando trabaje en el *
* modo de dos lneas. *
* Vase detalle a continuacin: *
* - 80 posiciones x 1 lnea - las direcciones van de $0 a $4F. *
* - 40 posiciones x 2 lneas - las direcciones se reparten: *
* Lnea primera: de $00 a $27. *
* Lnea segunda: de $40 a $67. *
*******************************************************************
DDRAM_ADDR
BSR FLAG_ESPERAR
ADD.B #$80,D0
MOVE.B D0,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS
*----------------------------------------------------------------------------*

*************************** ESCRIBIR ******************************
* Esta instruccin permite escribir en el registro de datos (DR) *
* una palabra que puede ir destinada a la memoria del generador *
* de caracteres (CGRAM) o a la de datos del display (DDRAM) de- *
* pendiendo de cual fu la ultima seleccin. El dato a escribir *
* lo pondremos en el registro D0. *
*******************************************************************
147
ESCRIBIR
BSR FLAG_ESPERAR
MOVE.B D0,BYTE_DATA
BSET.B #BIT_RS,BYTE_CONTROL
BSR ENABLE_LCD
BCLR.B #BIT_RS,BYTE_CONTROL
RTS

******************************************************************************
* SUBRUTINAS DE TECLADO *
******************************************************************************
************************** TECLA_SOLTAR ***************************
* Permanece en un bucle mientras sigue pulsada la tecla indicada *
* en D5 y sale cuando se suelta. *
*******************************************************************
TECLA_SOLTAR
MOVE.L #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al
BSR DELAY * pulsar una tecla.
SIGUE_PULSADA
BTST.B D3,PORTE * Se lee el puerto E
BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla
RTS

******************************************************************************
* RUTINAS DE INICIALIZACIN DE DISPOSITIVOS *
******************************************************************************
**************************** INI_LCD ******************************
* Esta rutina realiza toda la inicializacin del display tras el *
* encendido del mismo. Despus de su ejecucin el display queda *
* preparado para recibir ordenes y caracteres. *
*******************************************************************
INI_LCD:
BSR CFG_DISPLAY
BSR MODO_NORMAL
BSR CLEAR
RTS
******************************************************************************
* SERVICIOS DE DISPOSITIVOS *
******************************************************************************
148
******************************************************************************
* SERVICIOS DEL DISPLAY *
******************************************************************************
************************** ESCR_MENSAJE ***************************
* Esta rutina escribe un mensaje completo en el display en el *
* sentido natural de escritura cuya direccin de inicio se la pa- *
* samos a travs del registro A0. El smbolo con que deber ter- *
* minarse el mensaje es $00. Si el mensaje es superior a los 16 *
* caracteres que tiene el LCD, al alcanzar el final de la lnea *
* automticamente se cambia del modo AVC al AVT en el que el dis- *
* play acompaa al cursor dando la sensacin de que el texto se *
* desplaza. *
*******************************************************************
ESCR_MENSAJE
BSR RETURN_HOME
BSR MODO_AVC
MOVE.B #LCD_LONG,D1 * Cuenta los caracteres escritos en el display.
BUCLE1
TST.B (A0)
BEQ FIN1
MOVE.B (A0)+,D0
BSR ESCRIBIR
SUB.B #1,D1
BEQ FIN_LIN1
BRA BUCLE1
FIN_LIN1
BSR MODO_AVT * Cambia al modo AVT para que el display acompae al cursor.
BRA BUCLE1
FIN1
RTS
*----------------------------------------------------------------------------*

*************************** DSP_ADELANTE **************************
* Esta rutina desplaza hacia la derecha la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ADELANTE
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE2
149
BSR DISP_DCHA
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE2
RTS
*----------------------------------------------------------------------------*

**************************** DSP_ATRAS ****************************
* Esta rutina desplaza hacia la izquierda la pantalla del display *
* recorriendo las 80 posiciones del registro DDRAM. *
*******************************************************************
DSP_ATRAS
MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.
BUCLE3
BSR DISP_IZQ
MOVE.L #RETARDO,D1
BSR DELAY
SUB.B #1,D0
BNE BUCLE3
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* SERVICIOS DE TECLADO *
******************************************************************************
**************************** TECLA_LEER ***************************
* Esta rutina rastrea las filas y columnas del teclado en busca *
* de una tecla pulsada. Utiliza los registros D6 y D7 para su uso *
* interno y devuelve el cdigo ASCII de la tecla a travs de D0. *
*******************************************************************
TECLA_LEER
MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros que se van a usar
CLR.B D0 * D0 almacena el valor de la tecla pulsada
MOVE.L #3,D1 * D1 es el contador de columnas
MOVE.B #$0E,D4 * D4 es usado como registro auxiliar
COLUMNA
MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110
MOVE.L #3,D2 * D2 es el contador de filas
150
MOVE.B #0,D3 * D3 guarda el nmero de bit a comprobar
FILA
BTST.B D3,PORTE * Comprueba el bit de la fila
BEQ TECLA * Salta si encontr la tecla pulsada
ADDQ.B #1,D0 * Siguiente tecla
ADDQ.B #1,D3 * Siguiente fila
DBF D2,FILA * Decrementa el contador de filas y salta a la
* siguiente
ORI.B #$10,CCR * Pone a 1 el bit extensin del CCR
ROXL.B #1,D4 * Siguiente columna
ANDI.B #$0F,D4 * Elimina los cuatro bits ms significativos
DBF D1,COLUMNA * Decrementa el contador de columnas y salta a la
* siguiente,
MOVE.B #$FF,D0
BRA FIN_T
TECLA
BSR TECLA_SOLTAR
FIN_T
MOVEM.L (A7)+,D1-D4 * Restaura los registros desde la pila
RTS
*----------------------------------------------------------------------------*

************************* DRIVER_SERVICIOS ************************
* Esta rutina realiza el servicio indicado a travs del registro *
* D7 con un nmero ordinal. Para llamar a la rutina de servicio *
* se coloca el nmero de servicio en el registro D7 y se ejecuta *
* un TRAP #0. *
*******************************************************************
DRIVER_SERVICIOS
CMP.B #1,D7
BEQ SERVICIO1
CMP.B #2,D7
BEQ SERVICIO2
CMP.B #3,D7
BEQ SERVICIO3
CMP.B #4,D7
BEQ SERVICIO4
BRA FIN
SERVICIO1
151
BSR ESCR_MENSAJE
BRA FIN
SERVICIO2
BSR DSP_ADELANTE
BRA FIN
SERVICIO3
BSR DSP_ATRAS
BRA FIN
SERVICIO4
BSR TECLA_LEER
FIN
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
MOVE.W #MENSAJES,A6
BSR INHAB_WDOG
BSR PORT_EC_CFG
BSR INI_LCD
BSR RETURN_HOME
BSR MODO_AVC
MOVE.B #LCD_LONG,D3 * Cuenta los caracteres escritos en el display.
BUCLE
CLR.L D0
BSR CAMB_TECLADO
MOVE.L #4,D7
TRAP #0
CMP.B #$FF,D0
BEQ BUCLE
MULU #4,D0
MOVE.L (A6,D0.L),A0
BSR CAMB_DISPLAY
BSR CLEAR
MOVE.L #1,D7
TRAP #0
152
SUB.B #1,D3
BEQ FIN_LIN
BRA BUCLE
FIN_LIN
BSR MODO_AVT * Cambia al modo AVT para que el display acompae al cursor.
BRA BUCLE
END

153
Captulo 5
Reproductor de mensajes basado en el
dispositivo ISD 25XX
La familia ISD 25XX proporciona servicios de grabacin y reproduccin de mensajes
vocales integrados en un solo circuito integrado. El dispositivo de clase CMOS integra
todos los elementos necesarios para la digitalizacin y posterior reproduccin de las
seales, para lo cual incorpora el oscilador, preamplificador para micrfono, control
automtico de ganancia (AGC), filtro antialiasing, filtro de reconstruccin,
amplificador de audio y una memoria no voltil con una estructura multi-nivel que
permite la grabacin de varios mensajes.
5.1 Descripcin general
Existen varias versiones que proporcionan diferentes niveles de calidad y duracin
dependiendo de la frecuencia de muestreo que emplean. Las diferentes versiones
trabajan con frecuencias de muestreo de 8, 6.4, 5.3 y 4 Khz. con una duracin
respectivamente de 32, 40, 48 y 64 segundos, cubriendo as un amplio abanico de
necesidades en cuanto a calidad y duracin. Una de las ventajas de la familia ISD 25XX
reside en la utilizacin de una memoria EEPROM capaz de conservar el mensaje
durante 100 aos sin necesidad de alimentacin y permitiendo que pueda ser regrabado
del orden de 100.000 veces.
Cabe resear que el dispositivo puede funcionar de dos formas, en Modo de Direccin y
en Modo de Funcin. En el primer modo la direccin proporcionada por las entradas de
direccin marcar el inicio de la grabacin o reproduccin de los mensajes, mientras
que en el segundo modo se han integrado 7 funciones (M0 - M6) que permiten la
utilizacin del dispositivo de una forma sencilla.
5.1.1 La memoria EEPROM de ISD25XX
Merece la pena entretenerse en este punto por lo peculiar de esta memoria. El chip de
ISD almacena en esta memoria el dato en formato analgico directamente, por lo que se
ahorra en el proceso dos conversiones, la A/D al grabar y la D/A al reproducir. El
154
mtodo de grabacin es denominado por ISD como break through (abrir paso) y
permite almacenar cada muestra en una celda en formato analgico. La grabacin de
cada celda es un proceso en bucle cerrado donde se compara el valor de la muestra con
el contenido en la celda de memoria y se van inyectando electrones en la misma hasta
que se iguala la tensin de la muestra. El dato almacenado tiene una cuantificacin
equivalente de 256 niveles (ocho bits). El proceso se basa en la tecnologa EEPROM
floating gate.
- Figura 1 Diagrama de bloques (Tomado del catlogo de ISD).
5.2 Descripcin de las seales y del patillaje
5.2.1 Alimentacin (V
CCA
, V
CCD
, V
SSA
, V
SSD
)
La tensin de alimentacin es de 5 voltios. Para reducir al mnimo el ruido, las partes
digital y analgica de los circuitos disponen de entradas de alimentacin independientes.
5.2.2 Entrada de corte de corriente (PD - power down)
Cuando la seal PD se pone a nivel alto el circuito entra en el modo de muy bajo
consumo. Cuando se produce la condicin de desbordamiento de la memoria, PD se
utiliza para llevar el puntero al inicio de la zona de grabacin o reproduccin. Adems
tiene una funcionalidad adicional cuando se trabaja en el Modo de Funcin M6 (Push-
Button) que se describir en la siguiente seccin.
155
5.2.3 Entrada para habilitar circuito (CE chip enable)
La entrada CE debe ponerse a nivel bajo para habilitar la operacin del circuito. Las
direcciones de entrada y la seal de grabacin/reproduccin (P/R) son capturadas
durante el flanco de bajada de la seal. Adems tiene una funcionalidad adicional
cuando se trabaja en el Modo de Funcin M6 (Push-Button) que se describir en la
siguiente seccin.
5.2.4 Entrada de Reproduccin/Grabacin (P/R
playback/record)
La entrada P/R permite seleccionar entre el modo de reproduccin (nivel alto) y el de
grabacin (nivel bajo). Durante un ciclo de grabacin la direccin de comienzo se
proporciona a travs de las correspondientes entradas y se detiene cuando se pone a
nivel alto cualquiera de las seales PD o CE, o cuando se produce un desbordamiento.
Cada vez que se termina un ciclo de grabacin mediante las seales PD o CE, se pone
una marca de fin de mensaje (EOM) en la direccin de memoria donde se finaliz.
Durante un ciclo de reproduccin se proporciona la direccin de comienzo y la
grabacin se reproduce de manera continua hasta que se encuentra una marca de fin de
mensaje (EOM). El dispositivo puede seguir reproduciendo a continuacin de una
marca de fin de mensaje (EOM) cuando se encuentra en el Modo de Funcin.
5.2.5 Seal de fin de mensaje y de funcionamiento (EOM)
La salida EOM genera un pulso a nivel bajo de duracin T
EOM
al final de cada mensaje.
Cuando el dispositivo se configura en el Modo de Funcin M6, esta salida se mantiene a
nivel alto mientras el dispositivo est grabando o reproduciendo.
5.2.6 Seal de desbordamiento (OVF)
Se genera un pulso a nivel bajo cuando se agota el espacio de memoria. La salida OVF
sigue a la entrada CE hasta que se reinicia el puntero de memoria con la seal PD. Esta
salida puede utilizarse para la conexin de varios dispositivos en cascada.
5.2.7 Entrada de micrfono (MIC)
La entrada va conectada a un preamplificador integrado junto con un control automtico
de ganancia (AGC) que regula la ganancia de ste desde 15 hasta 24 dB. La conexin
de un micrfono externo deber hacerse a travs de un condensador serie de desacoplo
156
que, junto con la resistencia interna de 10 KO de la entrada, determina la frecuencia de
corte inferior.
5.2.8 Entrada de referencia de micrfono (MIC REF)
Es la entrada no inversora del preamplificador para la conexin del micrfono y
proporciona una cancelacin de ruido gracias a su elevado grado de rechazo al modo
comn.
5.2.9 Entrada del Control Automtico de Ganancia (AGC)
El control automtico de ganancia permite cubrir un amplio margen de niveles de
entrada procedentes del micrfono, que van desde un pequeo susurro hasta sonidos
muy altos. El tiempo de activacin viene determinado por la constante de tiempo que
conforma un condensador externo conectado entre AGC y V
SSA
y la resistencia interna
de 5 KO. El tiempo de desactivacin viene determinado por la constante de tiempo
asociada al condensador externo anterior junto con una resistencia externa conectada en
paralelo con l. Los valores de 4.7 F y 470 KO para el condensador y la resistencia
respectivamente dan en la mayora de los casos un resultado satisfactorio.
5.2.10 Salida analgica (ANA OUT)
La salida del conjunto preamplificador control automtico de ganancia se conduce a
travs de este pin.
5.2.11 Entrada analgica (ANA IN)
A travs de esta entrada se conduce la seal al chip para su grabacin. La seal de
entrada debe desacoplarse con un condensador externo, incluso si procede de la salida
ANA OUT (caso de un micrfono), debiendo tenerse en cuenta que este condensador
junto con la resistencia interna de 3KO de la entrada conforma un filtro paso bajo que
pudiera recortar la seal.
5.2.12 Entrada de reloj externo (XCLK)
La tolerancia del reloj interno es de 5%. En caso de que se requiera una mayor
precisin, puede controlarse con una seal de reloj externa cuyo valor depender del
dispositivo de la familia que estemos utilizando. De este modo debern usarse los
siguientes valores 1024 Khz., 819.2 Khz.,682.7 Khz. y 512 Khz. para las frecuencias de
157
muestreo de 8 Khz., 6.4 Khz., 5.3 Khz. y 4 Khz. que usan los dispositivos ISD 2532,
ISD 2540, ISD 2548 e ISD 2564 respectivamente. En caso de no usarse, esta entrada
deber conectarse a masa.
5.2.13 Salidas de altavoz (SP+ y SP-)
Todos los dispositivos de esta familia disponen de una salida diferencial para altavoces
capaz de proporcionar 50 mW sobre un altavoz con impedancia de 16O si la seal
procede de AUX IN o 12.2 mW si procede de la memoria.
Nota: Cuando se usan varios dispositivos no se deben conectar en paralelo las salidas
de altavoz, ya que podra daar los dispositivos. Nunca se deben poner a masa las
salidas de altavoz.
5.2.14 Entrada auxiliar (AUX IN)
La entrada auxiliar permite multiplexar una seal al amplificador de salida y el altavoz
cuando las seales CE y P/R estn a nivel alto o cuando se produce un desbordamiento
durante la reproduccin. Esto permite conectar la seal de reproduccin al siguiente
dispositivo de una cascada.
5.2.15 Entradas de direccin y modo (AX/MX)
Las entradas de direccin y modo tienen dos funciones dependiendo de cmo se
conecten los dos bits ms significativos (A7 y A8).
Si cualquiera de estos dos bits o ambos se conectan a masa, las entradas A0..A8 se
interpretan como bits de direccin. Cuando ambos bits (A7 y A8) se conectan a nivel
alto, las entradas (M0..M6) se interpretan como bits indicativos de cada modo de
funcin.
De los siete modos posibles slo seis estn operativos. Es posible combinar varios
modos a la vez.
5.3 Modos de funcin
Hay dos consideraciones importantes que hacer sobre el uso de los modos de funcin.
En primer lugar, todas las acciones comienzan en la direccin cero y las posteriores
pueden hacerlo en cualquier posicin, dependiendo del modo en cuestin. Adems el
puntero de direcciones se pone a cero cada vez que se cambia del modo reproduccin al
158
modo grabacin o viceversa y cuando se ejecuta un ciclo de corte de corriente (Power-
Down).
En segundo lugar, los Modos de Funcin se ejecutan cuando la seal CE pasa a nivel
bajo y los dos bits de direccin ms significativos (A7-A8) estn a nivel alto,
mantenindose en el modo en cuestin hasta que se produce una nueva transicin de
nivel alto a bajo en la seal CE.
5.4 Descripcin de los modos de funcin
5.4.1 M0 Bsqueda de mensaje
Esta funcin permite al usuario pasar de mensaje en mensaje sin conocer la direccin de
inicio de cada uno. Cada transicin a nivel bajo de la seal CE hace que el puntero salte
al inicio del siguiente mensaje. Este modo inhabilita el amplificador de salida y
reproduce el mensaje a una velocidad 800 veces superior a la normal. Funciona como si
de un avance rpido se tratase.
5.4.2 M1 Borrado de los marcadores de fin de mensaje
Permite reproducir los mensajes grabados de modo continuo como si de un solo
mensaje se tratara.
5.4.3 M2 Sin uso
M2 debe ponerse a nivel bajo en el Modo de Funcin.
5.4.4 M3 Repeticin de mensaje
La funcin M3 permite la repeticin continua del mensaje situado en la primera
posicin de la memoria.
5.4.5 M4 Direccionamiento consecutivo
Durante el funcionamiento normal, el puntero de direcciones se pone a cero cuando se
llega al final del mensaje (EOM). Este modo inhibe la puesta a cero del puntero y los
mensajes son reproducidos consecutivamente.
159
5.4.6 M5 Activacin por nivel de la entrada CE
Por defecto la activacin del chip se realiza con el flanco de bajada de la seal CE
durante la reproduccin y por el nivel detectado de la seal CE durante la grabacin. El
modo de funcin M5 provoca que la activacin mediante la seal CE se realice siempre
por la deteccin del nivel.
5.4.7 M6 Pulsar Botn
El modo Pulsar Botn se usa, ante todo, en aplicaciones de muy bajo coste y ha sido
diseado para reducir al mximo los circuitos y componentes externos. En este modo el
dispositivo siempre entra en desconexin (power-down) al final de cada reproduccin.
En este modo varios de los terminales de entrada-salida tienen otra funcin diferente
que se describe a continuacin.
5.4.7.1 Entrada CE (START/PAUSE)
En el modo Pulsar Botn, CE acta como una seal START/PAUSE cuando se lleva a
nivel bajo. Un pulso a nivel bajo iniciar la grabacin o reproduccin y el siguiente
pulso aplicado generar una pausa. El contador de direcciones no es puesto a cero y otro
pulso ms provocar que la operacin contine en el punto donde se qued.
5.4.7.2 Entrada PD (STOP/RESET)
En el modo Pulsar Botn, cuando PD se lleva a nivel alto se termina el ciclo en
progreso y se pone a cero el contador de direcciones.
5.4.7.3 Salida EOM (RUN)
En este modo, EOM se convierte en una seal activa a nivel alto mientras el dispositivo
se encuentra funcionando, lo que permite alimentar un LED o activar cualquier otro
dispositivo externo.
5.5 El modo Pulsar Botn (Grabacin y reproduccin)
El modo Pulsar Botn es ideal para multitud de aplicaciones. Para el control del
dispositivo slo se requieren dos pulsadores y un conmutador para atacar las tres lneas
de control necesarias. Con el conmutador se selecciona el modo de grabacin o el de
reproduccin y con los pulsadores se activan las lneas CE (START/PAUSE) y PD
160
(STOP/RESET). Los pulsos generados para el control de las lneas CE y PD han de
tener, al menos, un ancho de 300 ns.
5.5.1 Proceso de grabacin en el modo Pulsar Botn
1. La entrada PD deber ponerse a nivel bajo. (normalmente mediante
una resistencia de pull-down)
2. La entrada P/R se pone a nivel bajo.
3. Se genera un pulso a nivel bajo en la entrada CE y la grabacin
comienza. La salida EOM se activa a nivel alto indicando la
operacin en progreso.
4. Generando otro pulso a nivel bajo, la grabacin se detiene y EOM
retorna a nivel bajo. El contador de direcciones mantiene su valor y
se almacena un marcador de fin de mensaje en la memoria. La
entrada P/R podra llevarse a nivel alto para iniciar la reproduccin.
5. Un nuevo pulso en CE ocasiona que la grabacin se inicie de nuevo
en la siguiente direccin y la salida EOM se activa a nivel alto.
5.5.2 Proceso de reproduccin en el modo Pulsar Botn
1. La entrada PD deber ponerse a nivel bajo. (normalmente mediante
una resistencia de pull-down)
2. La entrada P/R se pone a nivel alto.
3. Se genera un pulso a nivel bajo en la entrada CE y la reproduccin
comienza. La salida EOM se activa a nivel alto indicando la
operacin en progreso.
4. Cuando se genera un pulso a nivel bajo en la entrada CE o bien
cuando se encuentra una marca EOM, la reproduccin se detiene y
EOM retorna a nivel bajo. La entrada P/R podra llevarse a nivel
bajo para iniciar una grabacin.
5. Un nuevo pulso en CE ocasiona que la reproduccin se reanude
donde se dej y la salida EOM se activa a nivel alto.
161
6. La reproduccin contina segn los pasos 4 y 5 hasta que se genera
un pulso a nivel alto en la entrada PD o se produce un
desbordamiento.
5.5.3 Esquema de conexin.
- Figura 2 Esquema de conexin en modo Pulsar Botn (Tomado del catlogo de ISD).





162


- Figura 3 Esquema de conexin al microcontrolador MC68331 (Adaptado del catlogo de ISD).
5.6 Conexin al microcontrolador MC68331
Se desea utilizar el dispositivo para grabar mensajes y luego reproducirlos en el orden
adecuado en funcin de la opcin seleccionada en un men interactivo. El proceso de
grabacin se va a realizar de forma secuencial, por lo que lo ms sencillo es utilizar el
modo Pulsar Botn (M6). Se ha determinado que la mejor forma de hacerlo es
instalando un pulsador en el propio circuito que permita iniciar y finalizar la grabacin
de cada mensaje de forma manual por el usuario. Durante la reproduccin se desea
seleccionar previamente el mensaje a reproducir. Para ello, se hace un reset del puntero
de la memoria para situarlo al inicio de la misma. Seguidamente se irn reproduciendo
los mensajes previos al deseado en el modo M0, cuidando de seleccionar tambin el
modo M4 para que el puntero no vuelva al inicio del mensaje una vez reproducido. La
seal EOM va a ser muy til para conocer cundo empieza y finaliza la reproduccin de
un mensaje.

******************************************************************************
163
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente con Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
164
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $03FF * Del orden de 100us.
MEDIO EQU $03FF * Del orden de 1ms.
LARGO EQU $BFFF * Del orden de 5ms.

******************************************************************************
* CONSTANTES DE INTERS *
******************************************************************************
******************************************************************************
* PUERTO Y BITS DE CONTROL DEL DISPOSITIVO *
******************************************************************************
BYTE_CONTROL EQU PORTE * Puerto de control.
GRAB_M6 EQU $0C * Activa la grabacin en modo M6.
REPR_M6 EQU $2C * Activa la reproduccin en modo M6.
REPR_M04 EQU $2B * Activa la reproduccin en los modos M0 y M4
BIT_M0 EQU 0 * Con valor 1 selecciona el modo M0.
BIT_M4 EQU 1 * Con valor 1 selecciona el modo M4.
BIT_M6 EQU 2 * Con valor 1 selecciona el modo M6.
BIT_CE EQU 3 * Con valor 0 activa el chip.
165
BIT_PD EQU 4 * Con valor 1 provoca un POWER-DOWN.
BIT_PR EQU 5 * Con valor 1 reproduce y con 0 graba.
BIT_EOM EQU 6 * Bit de funcionamiento. (RUN)
BIT_PUSH EQU 7 * Bit de lectura de la tecla START/STOP.

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR0 DC.L MENSAJE_N

******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************

*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
166
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*

************************** PORT_E_CFG *****************************
* Con esta rutina se configura el puerto E que es el que se usa *
* para controlar el display y el teclado. *
*******************************************************************
PORT_E_CFG
MOVE.B #$3F,DDRE * PE0..PE5 salidas y PE6..PE7 entradas.
MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.
MOVE.B #8,PORTE * Pone la seal CE a nivel alto, el resto a cero.
RTS
*----------------------------------------------------------------------------*

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS
*----------------------------------------------------------------------------*

************************** PULSAR_BOTON ***************************
* Espera hasta que se accione el pulsador instalado. *
*******************************************************************
PULSAR_BOTON
BTST.B #BIT_PUSH,BYTE_CONTROL
BNE PULSAR_BOTON
RTS
*----------------------------------------------------------------------------*


**************************** PULSO_CE *****************************
167
* Genera un pulso a nivel bajo en la lnea CE. *
*******************************************************************
PULSO_CE
MOVE.L D1,-(A7)
MOVE.L #CORTO,D1
BCLR.B #BIT_CE,BYTE_CONTROL
BSR DELAY
BSET.B #BIT_CE,BYTE_CONTROL
MOVE.L (A7)+,D1
RTS
*----------------------------------------------------------------------------*

****************************** RESET ******************************
* Genera un reset en el puntero de direcciones mediante un pulso *
* a nivel alto en la lnea PD. *
*******************************************************************
RESET
MOVE.L D1,-(A7)
MOVE.L #LARGO,D1
BSET.B #BIT_PD,BYTE_CONTROL
BSR DELAY
BCLR.B #BIT_PD,BYTE_CONTROL
MOVE.L (A7)+,D1
RTS
*----------------------------------------------------------------------------*

*************************** INI_DSP_VOZ ***************************
* Inicializa el dispositivo de voz para reproduccin, con los mo- *
* dos M0 y M4 habilitados. Se coloca tambin el puntero de direc- *
* ciones al inicio mediante un reset. *
*******************************************************************
INI_DSP_VOZ
BSR PORT_E_CFG
BSR RESET
RTS
*----------------------------------------------------------------------------*


************************* GRABAR_MENSAJE **************************
168
* Se configura el chip en modo grabacin y se espera la orden de *
* arranque para iniciarla. La grabacin se termina cuando se re- *
* cibe la orden de Pausa o cuando se desborda la memoria del dis- *
* positivo. *
*******************************************************************
GRABAR_MENSAJE
MOVE.B #GRAB_M6,BYTE_CONTROL * Configura puerto modo grabacin
BSR PULSAR_BOTON * Espera la orden de arranque
BSR PULSO_CE * Inicia la grabacin
PARADA
BTST.B #BIT_EOM,BYTE_CONTROL * Se comprueba desbordamiento. Quiz no
* funcione y se requiera la seal OVF.
BEQ FIN * Si hay desbordamiento termina
BTST.B #BIT_PUSH,BYTE_CONTROL
BNE PARADA * Espera la orden de parada
BSR PULSO_CE * Finaliza la grabacin
FIN
RTS
*----------------------------------------------------------------------------*

**************************** BUSCAR_N *****************************
* Se configura el chip en modo M0 y se van reproduciendo los men- *
* sajes previos al deseado cuyo nmero de orden se encuentra en *
* en el registro D0. (Slo tiene sentido a partir del segundo) *
*******************************************************************
BUSCAR_N
MOVE.B #REPR_M04,BYTE_CONTROL * Se configuran los modos M0 y M4
SUBI.B #1,D0 * Se ajusta la salida del bucle DBF
BSR RESET * Se ejecuta un reset del chip
SIGUIENTE
BCLR.B #BIT_CE,BYTE_CONTROL * Se inicia reproduccin rpida
BSET.B #BIT_CE,BYTE_CONTROL
EOM_ESPERAR
BTST.B #BIT_EOM,BYTE_CONTROL
BNE EOM_ESPERAR * Se espera a que finalice el mensaje
SUBI.B #1,D0
BNE SIGUIENTE
RTS
*----------------------------------------------------------------------------*
169

************************** REPRODUCIR *****************************
* Se configura el chip en modo M6 y se reproduce el mensaje que *
* seala el puntero de direcciones. *
*******************************************************************
REPRODUCIR
MOVE.B #REPR_M6,BYTE_CONTROL * Activa el modo reproduccin M6
BSR PULSO_CE * Inicia la reproduccin del mensaje
RTS
*----------------------------------------------------------------------------*

*************************** MENSAJE_N *****************************
* Reproduce el mensaje cuyo nmero de orden N est contenido en *
* el registro D0. *
*******************************************************************
MENSAJE_N
BSR BUSCAR_N * Busca el mensaje N.
BCLR.B #BIT_M0,BYTE_CONTROL
BCLR.B #BIT_CE,BYTE_CONTROL * Reproduce el mensaje.
BSET.B #BIT_CE,BYTE_CONTROL
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG
MOVE.L #5,D0
TRAP #0 * Reproduce el mensaje nmero 5
FINAL
BRA FINAL
END
170
Captulo 6
Transceptor digital de datos por radio
6.1 Introduccin
Para cualquier aplicacin de telecontrol es necesaria la existencia de un canal sobre el
que transmitir las rdenes. Estos canales pueden ser almbricos o inalmbricos. Los
primeros suelen ser ms fiables pero tambin mucho ms costosos de instalar. En un
entorno como el de una oficina o un hogar donde se quieren distribuir un conjunto de
sensores y actuadores es a menudo inviable la realizacin de un cableado especfico.
Una solucin para estos casos es la utilizacin de canales de comunicacin
inalmbricos. Las dos opciones disponibles son la utilizacin de transceptores por luz
infrarroja o bien por radiofrecuencia. Ambas son bien conocidas por todos. La primera
es utilizada en la prctica totalidad de los mandos a distancia con que vienen equipados
la mayora de los aparatos domsticos y comerciales, y la segunda es ms frecuente
verla en aparatos de aeromodelismo, juguetes, mandos a distancia de garajes, etc.
La principales ventajas de los transceptores de radiofrecuencia frente a los de infrarrojos
son el mayor alcance y el que no sea necesaria la existencia de visin directa entre el
transmisor y el receptor.
Sin descartar que puedan existir o aparecer mejores opciones en el mercado, en el
presente documento se describe el funcionamiento de un par transmisor receptor
digital del fabricante AUREL. Se trata de sendos circuitos hbridos con unas
dimensiones de 38 x 12 mm que trabajan con una frecuencia portadora de 433,92 Mhz y
utilizan una modulacin ON-OFF en banda base tpica de 2 Khz.
6.1.1 Transmisor
El transmisor, modelo AUREL TX-SAW/433 s-Z, dispone de siete terminales
numerados segn se indica en la figura 1. Para la generacin de la seal cuenta con un
oscilador SAW.
171
6.1.1.1 Oscilador SAW
Un oscilador SAW (Surface Acoustic Wave) es aqul que utiliza un resonador basado en
ondas acsticas de superficie u ondas de Rayleigh. Este fenmeno que se produce
primordialmente en materiales con caractersticas piezoelctricas, se compone de dos
ondas, una de compresin y otra de cizallamiento, que confinan en la superficie del
cristal la energa de las ondas acsticas de superficie. Esta onda de compresin y
cizallamiento produce en el substrato piezo-elctrico una onda electrosttica asociada a
las anteriores.
La velocidad de propagacin de estas ondas de superficie es cuatro rdenes de magnitud
inferior a la velocidad de propagacin de las ondas electromagnticas. Esto permite que
las magnitudes de diseo derivadas sean manejables a nivel de integracin. Se trata de
una solucin de ms bajo coste que los osciladores de cuarzo y de peores prestaciones,
pero suficiente para muchas aplicaciones.
- Figura 1 Transmisor digital.
La funcin de cada terminal se describe en la tabla siguiente:
Pin 1-4-13
Masa Conexiones a masa (GND). Deben conectarse externamente a un nico
plano de tierra.
Pin 2
Entrada
Modulacin
Entrada de datos TTL con una impedancia de entrada de 5 KO. Slo se
utiliza si se utiliza alimentacin a 12 V.
Pin 3
Entrada
Modulacin
Entrada de datos TTL con una impedancia de entrada de 5 KO. Slo se
utiliza si se utiliza alimentacin a 5 V.
Pin 11 Salida RF Salida RF con una impedancia de 50 O.
Pin 15 +V Alimentacin a + 5 V. Tambin puede ser 12 V.
Tabla 1 Terminales de conexin del transmisor.
El funcionamiento del transmisor es extremadamente sencillo. Con el fin de obtener el
rendimiento descrito en las especificaciones tcnicas y una buena inmunidad al ruido, es
recomendable que se monte sobre una placa de circuito impreso auxiliar cuyo principal
cometido ser generar un buen plano de tierra.
172
Lo ideal sera utilizar una placa de doble cara con interconexiones cada 15 mm. entre las
dos caras a fin de garantizar la equipotencialidad. La masa debera rodear tanto a las
soldaduras como a los conductores serigrafiados.
La lnea de 50 O para la seal de radiofrecuencia deber ser lo ms corta posible. La
pista deber tener un ancho de 1,8 mm. para circuitos impresos de 1 mm. de espesor y
2,9 mm. para circuitos impresos de 1,6 mm. que es el caso ms habitual. La distancia de
separacin ente la pista y la masa circundante ha de ser de 2 mm. y el plano de masa
debe estar presente en la cara opuesta del circuito.
La antena consistir en un pequeo mstil de cobre o bronce con una longitud de 16,5
mm. y 1 mm. de dimetro. No debe existir ningn otro componente o pieza metlica en
un radio de 5 cm. y debe disponer de un buen plano de masa.
La alimentacin es recomendable desacoplarla con un condensador cermico de 100 nF
colocado lo ms prximo posible al terminal.
- Figura 2 Circuito impreso auxiliar.
Se deber tener en cuenta que para respetar las recomendaciones anteriormente
expuestas es necesaria la fabricacin de un PCB a doble cara. Lo ms normal es que
dicha solucin est fuera de nuestro alcance por lo que se deber tener en cuenta que
cuanto ms nos alejemos de las recomendaciones peor ser el funcionamiento y mayor
el ruido presente.
Una vez conectada la alimentacin y la antena slo queda proporcionar la seal TTL
moduladora a travs de cualquier puerto del microcontrolador. Para las pruebas
173
preliminares ser necesario tener el receptor operativo y se podr aplicar una onda
cuadrada de 2 Khz y 5 voltios de amplitud con un generador de funciones.
6.1.2 Receptor
El receptor modelo AURREL RX-BC-NBK dispone de ocho terminales numerados
segn la figura 3.
- Figura 3 Receptor digital.
La tabla siguiente describe la funcin de cada terminal:
Pin 2-7-11 Masa
Conexiones a masa (GND). Deben conectarse externamente a un nico
plano de tierra.
Pin 3 Antena Conexin de una antena con una impedancia de 50 O.
Pin 1-15 +V Alimentacin a + 5 V.
Pin 13
Terminal de
chequeo
Salida analgica de la seal demodulada que permite la conexin de un
osciloscopio para su visualizacin.
Pin 14 Salida digital Salida TTL de datos recibidos. Admite cargas de hasta 1 KO.
Tabla 2 Terminales de conexin del receptor.
Para el montaje del receptor es necesario utilizar una placa de circuito impreso auxiliar.
Se deben seguir exactamente las mismas recomendaciones dadas para el montaje del
transmisor.
- Figura 4 Circuito impreso auxiliar.

174
Probablemente no ser factible la fabricacin de una placa conforme con las
especificaciones dadas y por tanto deberemos adaptar los medios disponibles de la
forma ms adecuada para obtener el mejor rendimiento posible.
Cabe incidir en que el receptor tiene la salida en colector abierto y por tanto requiere
una resistencia de pull-up de 10 KO.
6.2 Conexin al microcontrolador
Existen diferentes posibilidades de conexin al MC68331.
El transmisor necesita enviar los datos con una tasa constante de unos 2400 baudios, por
lo que ser necesario generar una interrupcin peridica que marque el ritmo de
transmisin. La conexin fsica puede realizarse a travs de cualquier terminal de un
puerto de salida.
El proceso de recepcin es un tanto ms complejo. El receptor puede conectarse a travs
de cualquier puerto de entrada. Como la transmisin entre dos mdulos es asncrona, es
necesario muestrear la seal procedente del receptor y realizar la sincronizacin de bits
para al final obtener una secuencia digital. La programacin de un receptor puede llegar
a ser laboriosa y compleja.
Afortunadamente, el MC68331 tiene este problema resuelto si se utiliza el mdulo de
comunicacin serie QSM. La interfaz de comunicacin serie SCI sirve para la
transmisin y recepcin asncrona de datos serie, con lo que no ser necesario resolver
los problemas anteriormente comentados ya que esta interfaz los ofrece ya resueltos por
hardware, descargando de trabajo a la CPU32.
La conexin, por tanto, es extremadamente simple. En el caso del transmisor, la salida
de datos serie del microcontrolador TXD se conecta a la entrada de datos del transmisor
radio. En el caso del receptor, la salida de datos de ste se conecta a la entrada de datos
serie RXD del microcontrolador.
6.2.1 Programa bsico de atencin de comunicaciones.
Con este programa se pretende resolver el caso general de comunicacin en un entorno
domtico. Son bsicamente dos las funciones de comunicacin que se necesitan
resolver. Por un lado la difusin desde el microcontrolador de rdenes a diferentes
175
actuadores perifricos y por el otro la recepcin de medidas o informaciones desde
sensores remotos.
El protocolo de comunicacin que aqu se propone es muy sencillo. Se transmiten
palabras de siete bits de los cuales los cuatro bits menos significativos son el
identificador de dispositivo y los tres ms significativos el cdigo de instruccin. Luego
se configura el puerto serie SCI para que le aada un bit de paridad y los pertinentes
bits de arranque y parada.
De esta forma, con el envo de una nica trama de datos es suficiente.
La trama de datos que se transmite va radio tiene la estructura siguiente:
Bit 10 Bit 9 7 4 3 0 Bit 1
Parada Paridad Cdigo de instruccin Identificador Arranque
Tabla 3 Estructura de la trama de datos.
La aplicacin de ejemplo realiza lo siguiente:
1. Habilita las interrupciones del receptor y se queda esperando a recibir
un dato.
2. Una vez recibido, comprueba si es vlido o no.
3. Si es valido, lo guarda en un buffer de memoria y enva por el
transmisor una trama de confirmacin de dato recibido.
4. Si no es valido, enva por el transmisor una trama de confirmacin de
dato errneo.
5. Vuelve al paso 1.
Obsrvese que no se hace comprobacin del desbordamiento del buffer , ya que se
entiende que para una prueba de recepcin de rdenes es suficiente con un tamao de
500 tramas almacenadas en memoria.

******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
176
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente con Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
177
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* REGISTROS QSM-QSI *
******************************************************************************
QSMCR EQU $FFFC00 * Configuracin del QSM.
QILR EQU $FFFC04 * Configuracin del nivel de interrupcin.
QIVR EQU $FFFC05 * Configuracin del vector de interrupcin.
SCCR0 EQU $FFFC08 * Control 0 del SCI determina velocidad de transmisin.
SCCR1 EQU $FFFC0A * Control 1 del SCI para configuraciones varias.
SCSR EQU $FFFC0C * Registro de estado del SCI.
SCDR EQU $FFFC0E * Registro de datos del SCI (RDR y TDR).
PORTQS EQU $FFFC15 * Registro de lectura y escritura del Puerto QS.
PQSPAR EQU $FFFC16 * Asignacin de pins como Puerto QS o como QPSI.
DDRQS EQU $FFFC17 * Direccin E/S de los pins del Puerto QS.

******************************************************************************
* CONTROL DEL QSM - SCI *
******************************************************************************
BIT_FE EQU 16 * Bit indicador de error de trama (Frame Error).
BIT_PE EQU 17 * Bit de error de paridad (Parity Error).
BIT_TDRE EQU 24 * Bit indicador de registro TDR vaco.
BIT_TC EQU 23 * Bit indicador de transmisin finalizada.
TRAMA_NULA EQU $FF * Valor de inicializacin antes de recibir trama
ERR_TRAMA EQU $AA * Valor devuelto cuando hay error de trama
ERR_PARIDAD EQU $80 * Valor devuelto cuando hay error de paridad
TRAMA_OK EQU $55 * Valor de confirmacin de trama correcta
TRAMA_KO EQU $00 * Valor de confirmacin de trama errnea
178
******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL
******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $80
VECTOR_ESC DC.L ESCRIBIR_SCI * Vector de la excepcin TRAP #0
ORG $110
VECTOR_QSM DC.L LEER_SCI * Vector de interrupcin $44
******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:

******************************************************************************
* BUFFER DE RECEPCIN *
******************************************************************************
ORG $2000
BUFFER DS.B 500
INI_BUFFER:

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
179
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*

**************************** QSM_CFG *****************************
* Configuracin del QSM_SCI *
******************************************************************
QSM_SCI_CFG
MOVE.W #$008F,QSMCR * Supervisor de arbitrio 15.
MOVE.B #$44,QIVR * Vector de interrupcin $44.
MOVE.B #$06,QILR * Nivel de interrupcin 6 para el SCI.
MOVE.W #$00DC,SCCR0 * velocidad de TX/RX de 2400 baudios.
RTS
*----------------------------------------------------------------------------*

************************** RECEPTOR_CFG **************************
* Configura y habilita el mdulo receptor del QSM-SCI. Inhabi- *
* lita al tiempo el transmisor al tratarse de una comunicacin *
* semi-duplex. *
******************************************************************
RECEPTOR_CFG
MOVE.W #$0424,SCCR1 * Interrupciones habilitadas para la recepcin (RIE)
RTS * tramas de 7 bits + bit de paridad impar RTS

************************* TRANSMISOR_CFG *************************
* Configura y habilita el mdulo transmisor del QSM-SCI. Inhabi- *
* lita al tiempo el receptor al tratarse de una comunicacin *
* semi-duplex. *
******************************************************************
TRANSMISOR_CFG
MOVE.W #$0408,SCCR1 * tramas de 7 bits + bit de paridad impar RTS
RTS

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************


180
************************** LEER_SCI *****************************
* Rutina LEER_SCI de atencin a la interrupcin del modulo serie*
* El dato recibido se deja disponible en el registro D0 *
*****************************************************************
LEER_SCI
MOVE.L D1,-(A7)
MOVE.L SCSR,D1 * Lectura de los registros de estado y de datos.
* a la vez; se resetean los flags de estado.
* automticamente.
BTST.L #BIT_FE,D1 * Se comprueba el error de trama.
BNE TRAMA_ERROR
BTST.L #BIT_PE,D1 * Se comprueba el error de paridad.
BNE PARIDAD_ERROR
ANDI.W #$007F,D1 * Nos quedamos con los bits 0 a 6 en D3.
MOVE.W D1,D0 * Copia en D0 el dato bueno.
BRA FIN_LECTURA
TRAMA_ERROR
MOVE.W #ERR_TRAMA,D0
BRA FIN_LECTURA
PARIDAD_ERROR
MOVE.W #ERR_PARIDAD,D0
FIN_LECTURA
MOVE.L (A7)+,D1
RTE
*----------------------------------------------------------------------------*

************************ ESCRIBIR_SCI ***************************
* Rutina ESCRIBIR_SCI de atencin a la excepcin TRAP #0, de *
* modo que el dato depositado en el registro D0 se transmite *
* por la lnea serie. *
*****************************************************************
ESCRIBIR_SCI
MOVE.L D1,-(A7)
ESPERAR
MOVE.L SCSR,D1
BTST.L #BIT_TDRE,D1 * Se espera hasta que el transmisor est libre.
BEQ ESPERAR
ANDI.W #$FE7F,D1 * Se borran las banderas TDRE y TC.
MOVE.W D1,SCSR * Se actualiza el registro de estado del SCI.
181
MOVE.W D0,SCDR * Se copian los datos al registro TDR.
MOVE.L (A7)+,D1
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG * Se inhabilita watchdog
BSR QSM_SCI_CFG * Se configura el QSM
MOVEA.L #INI_BUFFER,A0 * Carga direccin inicio del buffer de datos.
NUEVA_TRAMA
MOVE.W #TRAMA_NULA,D0 * Valor de cuando no se recibe trama.
BSR RECEPTOR_CFG * Se activan las interrupciones del receptor
BUCLE
CMP.W #TRAMA_NULA,D0 * Espera a la recepcin de una trama
BEQ BUCLE
CMP.W #ERR_TRAMA,D0 * Comprueba si hay error en la trama
BEQ TRAMA_MAL
CMP.W #ERR_PARIDAD,D0 * Comprueba si hay error en la paridad
BEQ TRAMA_MAL
TRAMA_BIEN
MOVE.B D0,(A0)+ * Copia la trama recibida en el buffer.
MOVE.W #TRAMA_OK,D0 * Carga la confirmacin de trama correcta.
BRA CONFIRMACION_ENVIAR
TRAMA_MAL
MOVE.W #TRAMA_KO,D0 * Carga la confirmacin de error de trama.
CONFIRMACION_ENVIAR
BSR TRANSMISOR_CFG * Configura el transmisor.
TRAP #0 * Enva la confirmacin de recepcin de trama.
BRA NUEVA_TRAMA
END
182
Captulo 7
Telemando por infrarrojos
Debido a la popularidad de este tipo de mandos, raro va a ser no encontrarlos en
cualquier hogar u oficina. Algunos de los aparatos ms comunes que cuentan con ellos
son los televisores, vdeos, cadenas de msica, aparatos de aire acondicionado, etc.
Esto nos permite decodificar las rdenes del mando de cada uno de estos aparatos y con
un nico transmisor poderlos controlar sin necesidad de ninguna instalacin adicional.
Existen adems otras aplicaciones, como pueden ser la regulacin de la iluminacin de
una sala, el control de subida o bajada de persianas o toldos, para las que su uso puede
ser muy apropiado.
Con anterioridad a la aparicin de esta tecnologa, se utilizaban la radiofrecuencia y los
ultrasonidos. La primera tiene las desventajas de provocar interferencias
electromagnticas, necesitar autorizacin administrativa y que su alcance no est
limitado, por lo que podra interferir en el funcionamiento de otros equipos existentes en
otras salas o viviendas. Los segundos presentan problemas de interferencias por
multitrayecto y son susceptibles a los ultrasonidos generados por una multitud de
objetos y sucesos cotidianos como pueden ser la cada de una moneda, el sonido de una
campanilla, un timbre, un reloj, sonidos generados por aparatos elctricos como los
televisores, etc. En aquellas aplicaciones en las que slo se requiere un alcance de unos
pocos metros y que la transmisin quede confinada en una sala, la transmisin por
infrarrojos es la solucin ideal. De ah el xito que han tenido este tipo de mandos en los
ltimos aos.
7.1 Introduccin
En el mercado existen una multitud de soluciones para este tipo de dispositivos. Existen
diferentes circuitos integrados que implementan todas las funciones de comunicacin y
decodificacin de las seales y que permiten realizar sin apenas esfuerzo todas las
funciones del telemando.
183
Nuestro objetivo es ms ambicioso desde un punto de vista didctico, por lo que se van
a desarrollar tanto el transmisor como el receptor con componentes de propsito
general. En cualquier caso, no se deben olvidar los codificadores y decodificadores
comerciales en tanto en cuanto los incorporan muchos equipos y aparatos de consumo.
La transmisin por luz infrarroja no est exenta de problemas, como el ruido y las
interferencias. Las dos principales fuentes que suelen aparecer son:
La luz solar, que incorpora una importante componente de luz
infrarroja, lo que genera bastante ruido en el fotodiodo y puede
saturar el receptor, disminuyendo la sensibilidad.
Los tubos fluorescentes o las lmparas de bajo consumo presentan
tambin una componente de luz infrarroja oscilante a la frecuencia de
100 Hz.
Los motivos anteriormente expuestos desaconsejan la transmisin en banda base. La
mayora de los sistemas comerciales utilizan una modulacin ASK con una frecuencia
de portadora que oscila entre los 36 y los 40 Khz. aunque hay algunos que utilizan una
modulacin FSK con una frecuencia de la portadora de hasta 50 Khz.
7.1.1 Estndares de codificacin de comandos
Para la codificacin de los comandos existen dos estndares internacionales que son
RC-5 y RECS 80; pero stos no son los nicos, ya que hay muchos fabricantes que
tienen sus propias codificaciones, como NEC, DENON, SIRCS, MOTOROLA, etc.
De todas ellas la ms popular es la RC-5.
7.1.1.1 Codificacin RC-5
Para la codificacin de bits utiliza un cdigo bifase, de modo que un 0 se codifica por
una transicin de nivel alto a nivel bajo y un 1 como una de nivel bajo a nivel alto. La
trama es de 14 bits con la siguiente estructura:
S1 S2 T D4 D3 D2 D1 D0 C5 C4 C3 C2 C1 C0
Tabla 1 Trama de comando del estndar RC-5.
Cada bloque de bits tiene la siguiente funcin:
S1-S2 Son los bits de arranque y sirven para el ajuste del CAG y la
sincronizacin del receptor.
184
T Es el bit de toggle, que va alternndose entre una trama y otra
cuando se repite varias veces la transmisin del mismo comando.
D0-D4 Contienen el nmero de dispositivo a controlar.
C0-C5 Contienen el comando a ejecutar.
7.1.1.2 Codificacin RECS 80
La codificacin de bits empleada es una modulacin del ancho de pulso de modo que
cada bit se transmite como un pulso a nivel alto de duracin T seguido por otro a nivel
bajo de duracin 2T si se transmite un 0 y de duracin 3T si se transmite 1. En
cuanto a la longitud de la trama, depende de cada implementacin y del nmero de
comandos que es capaz de transmitir. En general, la estructura consiste en una secuencia
de referencia de duracin 3T, un bit de toggle para indicar si se trata de una repeticin
del comando o de uno nuevo y, por ltimo, la secuencia de bits de informacin que
puede contener un cdigo de identificacin de dispositivo y otro de comando, seguido
de un tiempo de inactividad antes de repetir o iniciar una nueva secuencia.
7.1.2 Codificacin de los comandos
Para no complicar en exceso el diseo del telemando, se va a utilizar un formato de
trama muy sencillo. Va a consistir en una secuencia formada por un bit de activacin,
seguido de un bit de arranque, ocho bits de informacin (comenzando por el menos
significativo) y uno de parada. Esta eleccin no es casual, sino que coincide con la
estructura de trama del mdulo de comunicacin serie SCI del microcontrolador y, por
tanto, se podr utilizar este mdulo para la recepcin.
Activacin Arranque Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Parada
1 0 X X X X X X X X 1
Tabla 2 Estructura de la trama de comando.
Los ocho bits de informacin pueden dividirse en una parte para la identificacin de
dispositivo y otra para la sealizacin de comando. De este modo, se pueden estructurar
de ocho formas diferentes. La eleccin de una u otra depender en cada caso de la
aplicacin, esta decisin se deja abierta al ser irrelevante de cara al diseo.
Estructura de la informacin N de dispositivos N de comandos
0 Id. Disp. y 8 Comando 1 256
1 Id. Disp. y 7 Comando 2 128
2 Id. Disp. y 6 Comando 4 64
3 Id. Disp. y 5 Comando 8 32
4 Id. Disp. y 4 Comando 16 16
185
5 Id. Disp. y 3 Comando 32 8
6 Id. Disp. y 2 Comando 64 4
7 Id. Disp. y 1 Comando 128 2
Tabla 3 Estructuras posibles de codificacin de la informacin.
Para la transmisin de bits se va a utilizar un cdigo NRZ unipolar con una frecuencia
de 100 Hz que va a determinar la velocidad de transmisin de la trama.
7.1.3 Tipo de modulacin
Se va a utilizar una modulacin ASK con una frecuencia de 38 Khz. La razn que
motiva esta decisin es la existencia de un buen nmero de dispositivos comerciales que
utilizan esta modulacin y el hecho de estar lo suficientemente alejada de la
interferencia de 100 Hz. provocada por los tubos fluorescentes y de la velocidad de
transmisin.
7.2 Transmisor de infrarrojos
Disponiendo de un microcontrolador, el diseo de un transmisor de infrarrojos podra
limitarse al modulador y al driver que gobierna al diodo fototransmisor, que suele
demandar bastante corriente, ya que todo el conformado y transmisin de la trama se
puede hacer por software a travs de un puerto.
Tambin se puede realizar una transmisin serie convencional utilizando el mdulo de
comunicacin serie SCI del MC68331, lo que simplifica enormemente las tareas para
algunas aplicaciones concretas como podran ser las de comunicacin con un PC o con
otro microcontrolador.
El objetivo que en esta seccin se pretende es el diseo de un mando de control remoto
totalmente independiente, que pueda alimentarse con pilas, sin perjuicio de la utilidad
que se le pueda dar a algunos de los bloques para otras aplicaciones de telemando.
7.2.1 Diagrama de bloques del transmisor
El conjunto del transmisor se ha descompuesto en seis mdulos que pueden ser
diseados con independencia segn se detalla en la figura 1.



186
- Figura 1 Diagrama de bloques del transmisor.
7.2.2 Generador de reloj
Como la velocidad de transmisin se ha determinado que sea de 100 baudios, ser
necesario generar una seal de reloj de esa frecuencia para marcar el ritmo de la
transmisin. Para ello se usar un temporizador 555 en configuracin aestable y con un
ciclo de trabajo prximo al 50 %.
- Figura 2 Esquema de conexin del 555.
La frecuencia de la seal generada viene dada por la frmula:
( ) C R R
f
+
=
2 1
2
44 . 1
, y el ciclo de trabajo por:
2 1
2
2 R R
R
Duty
+
=
La eleccin del condensador ms adecuado puede realizarse a partir de las curvas
proporcionadas por el fabricante.
187
- Figura 3 Frecuencia de oscilacin libre (Grfica obtenida del catlogo del fabricante National).
A partir de la frecuencia de diseo de 100 Hz, podemos observar que el par formado por
la recta de carga y el valor del condensador que adopta los valores ms razonables son
la de 100 KO y un condensador de 100 nF.
Para el valor del condensador de 100 nF se obtiene:
144
10 100 100
44 . 1
2
9 2 1
=

= +

R R KO
Por otro lado se quiere un ciclo de trabajo prximo al 50 %, para ello es necesario que
2 1
R R << . Si se toma un valor de
2 1
1 . 0 R R = y eligiendo aquellos valores comerciales
ms prximos se obtiene 68
2
= R KO y 2 . 8
1
= R KO. Debido a las tolerancias de los
componentes la frecuencia resultante no se ajustar al valor de diseo. Para resolverlo se
colocar en lugar de la resistencia de 68 KO la combinacin serie de una resistencia de
56 KO y un potencimetro multivuelta de 20 KO para permitir el ajuste de la frecuencia
exacta.
Con los valores calculados se obtendr un ciclo de trabajo de aproximadamente el 47 %.
Una vez conectado a la alimentacin, ser necesario ajustar con el potencimetro la
frecuencia de trabajo que se medir con el osciloscopio.
7.2.3 Generador del intervalo de trama
Cada trama consiste en la transmisin de un conjunto de once bits. Para ello se cargar
la palabra que compone la trama en dos registros de desplazamiento en cascada y se
sacarn en serie. La funcin que va a realizar el generador del intervalo de trama es la
de mantener activo al registro de desplazamiento slo mientras se transmite sta y al
finalizar inhibe el funcionamiento.
188
Para realizar esta funcin se va a utilizar un contador para implementar un autmata que
al recibir la seal de arranque mediante un pulsador mantiene activa la seal LOAD
durante ocho ciclos de reloj. El esquema se muestra en la figura 4.
- Figura 4 Generador del intervalo de trama.
La descripcin del funcionamiento es bastante sencilla:
El pulsador, dotado de un circuito antirebotes, genera un pulso a
nivel bajo en el terminal LOAD del contador.
El contador que se encontraba inhibido por la seal RCO (fin de
cuenta) aplicada a travs de un inversor a la entrada ENP carga el
valor 4 (0100) existente en los terminales D, C, B y A.
La seal RCO cambia a nivel bajo y desinhibe el contador que
prosigue la cuenta hasta el valor 15 (1111).
Cuando alcanza este valor, la seal RCO pasa a nivel alto e inhibe de
nuevo el contador.
La misma seal RCO negada utilizada para activar e inhibir el contador es la que activa
e inhibe el registro de desplazamiento. Como se puede observar, la seal se mantiene a
nivel alto durante los once ciclos de reloj que tarda el contador en finalizar la cuenta y
luego retorna a nivel bajo que es su estado normal.
189
A continuacin se representa el diagrama de estados que gobierna el autmata:
- Figura 5 Diagrama de estados del autmata generador del intervalo de trama.
7.2.4 Registro de desplazamiento
Se trata del alma del control remoto. El registro de desplazamiento recibe la trama a
travs de sus entradas en paralelo y la saca en serie al ritmo que le marca el reloj.
El valor de los bits de activacin, arranque y parada vienen van cableados de forma
permanente y los ocho bits de seleccin de dispositivo y comando se configuran a travs
de ocho microinterruptores.
El registro permanece con el cdigo de la trama precargado y en estado de inhibicin.
Cuando el generador de intervalo de trama activa el registro comienza la transmisin
hasta el ltimo bit de la trama, tras el cual pasa de nuevo a estado de inhibicin.





190
- Figura 6 Registro de desplazamiento.
Para evitar que se produzca una transmisin esprea durante la conexin inicial del
circuito, se ha introducido una red de inicializacin, conectada al terminal de inhibicin,
que garantiza un tiempo de 400 ms. Suficiente para que se estabilice el autmata.
Una peculiaridad importante es que en la salida serie aparece el valor precargado en el
ltimo biestable H y que ser, por tanto, el valor de reposo del terminal serie. Cuando se
produce la activacin del circuito, el primer impulso de reloj llevar a la salida serie el
valor contenido en la entrada G y, por tanto, slo se dispone de siete bits.
Afortunadamente el circuito cuenta con una entrada de datos serie que ataca al biestable
A y que pondremos a 1 para que haga la funcin de bit de parada.
Como se puede observar, con la conexin realizada la lnea permanece en reposo o nivel
lgico cero hasta que el generador de intervalo saca al circuito de su estado de
inhibicin. A partir de ese instante se transmite un 1 para la sincronizacin de trama, el
bit de arranque, los cinco bits de informacin y por ltimo el de parada.
7.2.5 Modulador ASK
Como ya se ha comentado se va a utilizar una modulacin digital ASK con una
frecuencia de 38 Khz. de modo que se transmitir la seal modulada para denotar un 1
lgico y no se emitir para denotar el 0 lgico.
Para ello se va a utilizar un 555 en modo aestable al igual que se hizo con el circuito de
reloj y se utilizar el terminal de reset para gobernar la transmisin.
191
Sin entrar en detalles justificativos, diremos que la utilizacin de una onda cuadrada
para modular la seal infrarroja presenta una serie de ventajas desde el punto de vista de
la potencia transmitida, por lo que no ser necesario filtrar la salida del 555.
A la salida del temporizador se conectarn dos inversores Schmitt Trigger en serie para
regenerar la seal sin negar la lgica.
- Figura 7 Modulador ASK
Para el clculo de los componentes de ajuste se consulta la grfica de la figura 3 y se
observa que para la recta de carga de 100 KO se precisa un valor de condensador de
entre 100pF y 1nF, por lo que si elegimos un valor comercial de 220 pF, se obtiene:
Para el valor del condensador de 100 nF se obtiene:
172
10 220 38000
44 . 1
2
12 2 1
=

= +

R R KO
Por otro lado se quiere un ciclo de trabajo prximo al 50 % para ello es necesario que
2 1
R R << . Si se toma un valor pequeo de 2
1
= R KO el ciclo de trabajo ser de 49.4 %
y el valor de 85
2
= R KO. Para resolver la desviacin de frecuencia debida a la
tolerancia de los componentes se colocar en lugar de la resistencia de 85 KO la
combinacin serie de una resistencia de 75 KO y un potencimetro multivuelta de 20
KO para permitir el ajuste de la frecuencia exacta.
Una vez conectado a la alimentacin ser necesario ajustar con el potencimetro la
frecuencia de trabajo que se medir con el osciloscopio.
7.2.6 Emisor de luz infrarroja
La seal procedente del modulador debe ser aplicada al fotodiodo de luz infrarroja que
se encarga de la emisin.
192
Se ha utilizado el diodo CQY89 que habitualmente se encuentra disponible en las
tiendas de electrnica. Tiene una longitud de onda de emisin es de 930 nm. con un
ngulo de emisin de 40. Admite una intensidad media de corriente de 100 mA con la
que alcanza una potencia de emisin de 15 mW.
Para la excitacin del LED IR se ha utilizado el circuito de la figura 8. Podemos
observar que para la polarizacin de la base se han utilizado dos diodos 1N4148. Con
ello se consigue la tensin adecuada en la base del transistor y se evitan los efectos de
carga que introducira un divisor resistivo.
- Figura 8 Transmisor de luz infrarroja.
Como el modulador proporciona una onda cuadrada, para que la corriente media por el
LED sea de 100 mA, se deber hacer pasar una corriente de 200 mA durante el ciclo
activo.
Como en el LED cae una tensin de 1.7 V. y la tensin mnima colector-emisor, fuera
de la saturacin, es 2 . 0 =
CE
V V., la resistencia de emisor necesaria para limitar la
corriente del diodo a 200 mA es:
5 . 15
2 . 0
2 . 0 7 . 1 5
=

= R O
El valor comercial ms prximo disponible es 18 O.
La tensin en la base del transistor ha de ser menor que:
8 . 3 7 . 0 2 . 0 7 . 1 5 7 . 0 = + = + s
E B
V V V.
Utilizando los dos diodos en serie, la tensin en la base es: 8 . 3 6 . 3 4 . 1 5 s = =
B
V V.
La tensin en el emisor del transistor ser: 9 . 2 7 . 0 4 . 1 5 = =
E
V V. y la potencia
disipada en la resistencia de 233 mW, por lo que es recomendable utilizar una
resistencia de W. La corriente de pico en el LED ser de 161 mA y la corriente media
de 80.5 mA.
193
7.2.7 Alimentacin
El mdulo transmisor ha de ser un elemento mvil para que realice la funcin de
telemando para la que fue diseado. Para ello se alimentar con una pila de 9 V. Ser
necesario el empleo de un regulador de tensin LM7805, conectado a la pila para
proporcionar a la salida los 5 V. que requiere todo el sistema. Dado lo popular de este
regulador se omite el esquema de conexin del mismo.
Una cuestin que debe tenerse en cuenta es la demanda de corriente del circuito.
Durante la transmisin la corriente media que va a consumir el circuito es de unos 100
mA durante los 80 ms que dura la transmisin, con una corriente de pico de 200 mA.
Como no se conocen datos sobre el comportamiento de la pila, debemos observar que
debe ser capaz de mantener una tensin superior a 7.5 V. para que el regulador funcione
correctamente. Si la pila no es capaz de soportar esa demanda de corriente, se deber
desacoplar la misma mediante un condensador de gran capacidad en paralelo que sea
capaz de aportar el exceso de corriente que no es capaz de dar la pila.
7.3 Receptor de infrarrojos
El receptor de infrarrojos debe ser capaz de demodular la seal ASK de 38 Khz. y
entregar los pulsos de la trama.
Para la recepcin existen dispositivos comerciales que integran todos los circuitos
necesarios para la correcta demodulacin de la seal. Estos dispositivos de pequeo
tamao integran en el mismo encapsulado, el receptor de luz infrarroja, una lente y toda
la lgica necesaria para distinguir seales moduladas a una determinada frecuencia.
Algunos de estos dispositivos son: el IS1U60 y el IS1U621 de Sharp, el PNA4602 y el
PNA4612 de Panasonic, el LTM-97DS-38 de LiteOn o el SFH5110 de Siemens.
Para el transmisor del ttulo anterior se adapta perfectamente el IS1U60, cuyo diagrama
de bloques se muestra en la figura 9.
194
- Figura 9 Diagrama de bloques del receptor integrado IS1U60 (extrado del catlogo de Sharp).
Continuando con los objetivos didcticos de esta prctica, se va a desarrollar un receptor
mediante elementos discretos, sin perjuicio de la utilidad y comodidad de usar
cualquiera de los componentes antes enumerados.
7.3.1 Diagrama de bloques del receptor
El receptor se puede descomponer en cuatro bloques que pueden ser diseados
independientemente.
- Figura 10 Diagrama de bloques del receptor.
7.3.2 Foto-receptor
La funcin de recepcin la va a realizar el fotodiodo BPW41. Este dispositivo presenta
su mxima sensibilidad con seales cuya longitud de onda es de 950 nm. y tiene un
ngulo de recepcin de 65 respecto de la normal.
Este dispositivo se polariza en inversa, de modo que la corriente que pasa por l se
comporta linealmente con respecto a la potencia de luz incidente.
195
- Figura 11 Corriente inversa en funcin de la irradiancia.
De este modo se puede asimilar el fotodiodo a un generador de corriente dependiente
linealmente de la luz incidente en el mismo. Las distintas formas en que puede
implementarse el circuito foto-receptor dependen del tipo de carga que presenten ante
dicho generador de corriente.
Carga resistiva: La carga es una simple resistencia. Se trata de una
solucin muy sencilla con un comportamiento plano con la
frecuencia. Como no elimina las bajas frecuencias puede suceder que
el receptor se sature con la iluminacin ambiente.
Carga reactiva (LC o RLC): Es la que promete un mejor
comportamiento, ya que slo presenta una alta impedancia en el
margen de frecuencias deseado. El problema reside en la dificultad
de obtener las bobinas y en la forma de ajustar la sintona por las
altas tolerancias de los componentes L y C.
Carga activa: Por medio de transistores con carga RC se puede
implementar una carga activa que presente una baja impedancia
frente a la corriente continua y que permita evitar la saturacin de los
transistores por efecto de la iluminacin ambiente.
En principio se va a utilizar el circuito de la figura 12 por su sencillez. El efecto de la
luz ambiente va a provocar una merma en la sensibilidad que, por lo general, podr
resolverse con un posterior filtrado y amplificacin.
- Figura 12 Circuito foto-receptor con carga resistiva.
Para el caso en que las condiciones de iluminacin de una aplicacin concreta
provoquen problemas de saturacin y mal funcionamiento, se propone un circuito con
196
carga activa alternativo con una inmunidad al ruido mayor.
- Figura 13 - Circuito foto-receptor con carga activa.
7.3.2.1 Red de desacoplo
Antes de entregar la seal al filtro paso banda es interesante desacoplar las bajas
frecuencias. Para ello se utilizar un filtro RC paso alto con una frecuencia de corte
situada, al menos, una dcada por encima de la interferencia de 100 Hz que provocan
los tubos fluorescentes y, al menos, una dcada por debajo de la seal modulada de
38Khz., es decir 1Khz < f
c
< 3.8 Khz. Con el fin de eliminar los efectos de carga entre
etapas se utilizar un seguidor de tensin, segn se puede observar en el esquema
general de la figura 14.
- Figura 14 Esquema completo de la etapa de foto-recepcin.
La red RC formada por un condensador de 220 pF y una resistencia de 560 KO presenta
una frecuencia de corte de 1290 Hz. y una impedancia de carga de alta. Por ltimo, el
amplificador operacional utilizado para el seguidor de tensin tiene que ser capaz de
seguir la seal de 38 Khz. y, por tanto, deber tener un Slew-Rate de:
2 . 1 5 38000 2 2 = = > t t
max osc
A f SR V/s.
Se ha escogido el TL082 que tiene un SR de 13 V/s y un producto GxBW de 4 Mhz.,
suficiente para la solucin adoptada.
7.3.3 Filtro paso banda
Para reducir el ruido antes de la demodulacin se debe realizar un filtrado paso banda
que slo permita pasar la seal de inters cuya frecuencia es de 38 Khz.
El espectro de la seal tiene el aspecto de una sinc por el efecto de la modulacin que
consiste en enventanar el tono de 38 Khz, por lo que es conveniente que la banda de
paso tenga un ancho finito, ya que si no eliminaramos una parte importante del espectro
de la seal. Esto es una ventaja ya que no va a ser necesario utilizar filtros con un orden
elevado.
197
El filtro paso banda se va a realizar mediante la conexin en cascada de dos filtros de
Sallen-Key, uno paso bajo y el otro paso alto. El resultado corresponde con el cuadrado
de la funcin de transferencia de un filtro paso banda.
( )
2
2 2 2
2
1 1 1
|
|
|
|
.
|

\
|
+ +
=
+ +

+ +
=
Q
s
s
As
Q
s
s
A
Q
s
s
As
H
BP
e
El mdulo de la funcin de transferencia vale: ( )
( )
( )
2
2
2
2
1
|
|
.
|

\
|
+
=
Q
A
H
BP
e
e
e
e
La frecuencia central vendr amplificada por el factor (AQ)
2
.
El problema principal que presentan este tipo de montajes es que los componentes
discretos, como son los condensadores y resistencia, presentan una tolerancia bastante
grande para la precisin del filtro. Por ello, nos iremos a resistencias con una tolerancia
del 1% y condensadores del 5% si es posible. El caso peor se presenta cuando las
frecuencias de normalizacin f
p
de ambos filtros son coincidentes y estn bastante
alejadas de la frecuencia objetivo, ya que sta queda en banda atenuada y encima se est
amplificando otra frecuencia prxima diferente.
- Figura 15 Filtro paso banda.
La estrategia que se propone es la de comprar un lote de resistencias y condensadores de
los valores que se necesitan y con la ayuda de un polmetro (los hay que miden
capacidades) elegir aqullos que presentan el menor error y se aproximan ms a los
valores de diseo.
198
Para obtener la frecuencia central objetivo, f
p
= 38 Khz, se han elegido los siguientes
valores comerciales C = 470 pF y R= 9 KO (el valor de la resistencia existe con
tolerancia del 1 %), por lo que la frecuencia real obtenida es f
p
= 37.625 Hz, valor
totalmente aceptable.
Para que las frecuencias de corte estn situadas en torno a 36 y 40 Khz el valor que
deber adoptar el factor de calidad es Q = 1.9059, con lo que la ganancia del
amplificador deber de ser:
475 . 2
1
3 = =
Q
A
Con los valores comerciales para las resistencias resistencias de 150 KO y 100 kO, en el
amplificador se obtiene una ganancia de 2.5 y el factor de calidad vale Q = 2.
La ganancia mxima que se puede obtener con el conjunto a la frecuencia de inters es
(AQ)
2
=(2.5 2)
2
=25.
En cuanto al amplificador, se seguir usando el TL082 cuyas caractersticas son
sobradas para el uso requerido.
7.3.4 Demodulador
El demodulador se va a encargar de reconstruir la seal en banda. La parte clave del
mismo es el detector de envolvente. La modulacin ASK es un caso particular de la
demodulacin AM con la ventaja de que la saturacin que se pueda presentar en los
amplificadores no tiene ningn efecto negativo en la seal y, por tanto, la ganancia de
los mismos no es un factor crtico. Esto es as porque la informacin no va codificada en
la amplitud, sino en la frecuencia, en este caso frecuencia 0 o 32 Khz.
El demodulador completo se compone de tres partes diferenciadas, que son: el
amplificador de entrada, el detector de envolvente y el regenerador.
7.3.4.1 Amplificador de entrada
Se trata de un amplificador no inversor cuya funcin es la de adaptar el nivel de la seal
recibida a un valor adecuado para el buen funcionamiento del detector de envolvente.
199
Experimentalmente se ha determinado que una ganancia en torno a 50 es adecuada. Con
la pareja de resistencias de 120 KO y 2K7 se obtiene una ganancia de 45 (33dB). En
cuanto al offset de tensin, la medida obtenida es de 340 mV., valor que se puede
asumir como aceptable.
- Figura 16 Demodulador.
7.3.4.2 Detector de envolvente
El detector de envolvente est formado por un rectificador de media onda con carga RC.
Si se aplica un tono senoidal al detector, durante el semiciclo positivo el diodo conduce
producindose una cada de tensin de 0.7 V. Una vez que la tensin alcanza este valor
el condensador comienza a cargarse y la tensin sube hasta el mximo y desciende de
nuevo hasta los 0.7 V. A partir de ese punto el diodo entra en corte y el condensador
comienza su descarga hasta que la tensin vuelve a superar el umbral de los 0.7 voltios
en el ciclo siguiente. Se pretende que la tensin caiga slo un 10 % durante el tiempo de
descarga, para lo cual:
9 . 0
2 /
exp =
|
.
|

\
|

t
T
; 125
9 . 0 ln
2 / 1
= =
f
t s
Como t = RC, se han escogido los siguientes valores: R =120 KO y C = 1nF, con lo que
t = 120 s.
El tiempo que tarda la seal en alcanzar el 10 % de su valor una vez finalizado el pulso
es:
287 1 . 0 ln = = t t s que es el 2.8 % de la duracin de un bit.
7.3.4.3 Regenerador
A la salida del detector de envolvente se aplican dos inversores Trigger-Schmitt en
cascada para regenerar la seal sin invertir la lgica.
A la salida de esta etapa ya tenemos la seal demodulada y disponible.
7.4 Conexin al microcontrolador
De las diferentes posibilidades de conexin al MC68331 slo vamos a plantear la
conexin del receptor a travs del mdulo de recepcin serie SCI del QSM, para
200
aprovechar las facilidades que este mdulo proporciona, ya que la programacin de un
receptor puede llegar a ser laboriosa y compleja, aunque bastante interesante.
La conexin es sencilla. La salida de datos del receptor se conecta a la entrada de datos
serie RXD del microcontrolador.
7.4.1 Programa bsico de atencin de comunicaciones
Si recordamos el protocolo de comunicacin del telemando, se trata de palabras de ocho
bits de los cuales una parte puede reservarse como identificacin de dispositivo y la otra
como cdigo de instruccin. La velocidad de transmisin es de 100 baudios y la trama
no contiene bit de paridad.



La trama de datos a recibir tiene la estructura siguiente:
Bit 10 7 0 Bit 1
Parada Cdigo de instruccin Identificador Arranque
Tabla 3 Estructura de la trama de datos.
La aplicacin de ejemplo realiza lo siguiente:
1. Habilita las interrupciones del receptor y se queda esperando a recibir
un dato.
2. Una vez recibido, comprueba si es vlido o no.
3. Si es valido, lo guarda en un buffer de memoria.
4. Si no es valido, no hace nada y sigue esperando al dato siguiente.
Cabe notar que no se hace comprobacin del desbordamiento del buffer, ya que se
entiende que es un programa de prueba y con un tamao de 500 tramas es suficiente
para comprobar la recepcin de ordenes.
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
201
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente con Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.
******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
202
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* REGISTROS QSM-QSI *
******************************************************************************
QSMCR EQU $FFFC00 * Configuracin del QSM.
QILR EQU $FFFC04 * Configuracin del nivel de interrupcin.
QIVR EQU $FFFC05 * Configuracin del vector de interrupcin.
SCCR0 EQU $FFFC08 * Control 0 del SCI determina velocidad de transmisin.
SCCR1 EQU $FFFC0A * Control 1 del SCI para configuraciones varias.
SCSR EQU $FFFC0C * Registro de estado del SCI.
SCDR EQU $FFFC0E * Registro de datos del SCI (RDR y TDR).
PORTQS EQU $FFFC15 * Registro de lectura y escritura del Puerto QS.
PQSPAR EQU $FFFC16 * Asignacin de pins como Puerto QS o como QPSI.
DDRQS EQU $FFFC17 * Direccin E/S de los pins del Puerto QS.

******************************************************************************
* CONTROL DEL QSM - SCI *
******************************************************************************
BIT_FE EQU 16 * Bit indicador de error de trama (Frame Error).
BIT_PE EQU 17 * Bit de error de paridad (Parity Error).
TRAMA_NULA EQU $FF * Valor de inicializacin antes de recibir trama
ERR_TRAMA EQU $AA * Valor devuelto cuando hay error de trama
ERR_PARIDAD EQU $80 * Valor devuelto cuando hay error de paridad

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
203
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL

******************************************************************************
* VECTORES DE INTERRUPCIN *
******************************************************************************
ORG $110
VECTOR_QSM DC.L LEER_SCI * Vector de interrupcin $44

******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:

******************************************************************************
* BUFFER DE RECEPCIN *
******************************************************************************
ORG $2000
BUFFER DS.B 500
INI_BUFFER:

******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
*----------------------------------------------------------------------------*
204

**************************** QSM_CFG *****************************
* Configuracin del QSM_SCI *
******************************************************************
QSM_SCI_CFG
MOVE.W #$008F,QSMCR * Supervisor de arbitrio 15.
MOVE.B #$44,QIVR * Vector de interrupcin $44.
MOVE.B #$06,QILR * Nivel de interrupcin 6 para el SCI.
MOVE.W #$0A3D,SCCR0 * velocidad de TX/RX de 100 baudios.
RTS
*----------------------------------------------------------------------------*
************************** RECEPTOR_CFG **************************
* Configura y habilita el mdulo receptor del QSM-SCI. Inhabi- *
* lita al tiempo el transmisor al tratarse de una comunicacin *
* semi-duplex. *
******************************************************************
RECEPTOR_CFG
MOVE.W #$0424,SCCR1 * Interrupciones habilitadas para la recepcin (RIE)
RTS * tramas de 7 bits + bit de paridad impar RTS

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************

************************** LEER_SCI *****************************
* Rutina LEER_SCI de atencin a la interrupcin del modulo serie*
* El dato recibido se deja disponible en el registro D0 *
*****************************************************************
LEER_SCI
MOVE.L D1,-(A7)
MOVE.L SCSR,D1 * Lectura de los registros de estado y de datos.
* a la vez; se resetean los flags de estado.
* automticamente.
BTST.L #BIT_FE,D1 * Se comprueba el error de trama.
BNE TRAMA_ERROR
BTST.L #BIT_PE,D1 * Se comprueba el error de paridad.
BNE PARIDAD_ERROR
ANDI.W #$007F,D1 * Nos quedamos con los bits 0 a 6 en D3.
MOVE.W D1,D0 * Copia en D0 el dato bueno.
205
BRA FIN_LECTURA
TRAMA_ERROR
MOVE.W #ERR_TRAMA,D0
BRA FIN_LECTURA
PARIDAD_ERROR
MOVE.W #ERR_PARIDAD,D0
FIN_LECTURA
MOVE.L (A7)+,D1
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG * Se inhabilita watchdog
BSR QSM_SCI_CFG * Se configura el QSM
MOVEA.L #INI_BUFFER,A0 * Carga direccin inicio del buffer de datos.
BSR RECEPTOR_CFG * Se activan las interrupciones del receptor
NUEVA_TRAMA
MOVE.W #TRAMA_NULA,D0 * Valor de cuando no se recibe trama.
BUCLE
CMP.W #TRAMA_NULA,D0 * Espera a la recepcin de una trama
BEQ BUCLE
CMP.W #ERR_TRAMA,D0 * Comprueba si hay error en la trama
BEQ NUEVA_TRAMA
CMP.W #ERR_PARIDAD,D0 * Comprueba si hay error en la paridad
BEQ NUEVA_TRAMA
MOVE.B D0,(A0)+ * Copia la trama recibida en el buffer.
BRA NUEVA_TRAMA
END

206
Captulo 8
Interfaz para lnea telefnica
El objetivo de esta interfaz es la utilizacin del servicio telefnico para transmitir
comandos mediante cdigos numricos a un sistema. De esta forma, gracias al carcter
universal del servicio, se pueden consultar desde cualquier punto las informaciones que
ste proporciona y transmitirle asimismo instrucciones.
8.1 Introduccin
El sistema se compone de un circuito de conversacin telefnico al que se conecta en un
extremo la lnea y en el otro la entrada y la salida de audio. Adems se ha incorporado
un circuito decodificador de tonos, que permite reconocer cualquier nmero que se
pulse. Algo tan sencillo abre un importante abanico de posibilidades, ya que permite
reproducir locuciones, reconocer secuencias de nmeros pulsados e incluso utilizar una
aplicacin de reconocimiento de voz.
Con el objeto de reducir la complejidad se ha subdividido en seis bloques
independientes que pueden ser montados y probados individualmente. En la Figura 1 se
puede observar el diagrama de bloques.
- Figura 1 Diagrama de bloques de la interfaz telefnica.
Haciendo una breve descripcin de lo que hace cada bloque se puede decir que el
detector de llamada genera un pulso cada vez que se recibe el tono de llamada. Esto
permite conocer que se est recibiendo una llamada e incluso contar el nmero de
timbres. El gancho no es otra cosa que un conmutador que permite colgar y descolgar
atendiendo a una seal de encendido o apagado. El duplexor se encarga de la conversin
207
de dos a cuatro hilos, aislando adems la lnea telefnica del resto de la electrnica. Los
amplificadores son los responsables de la adaptacin de niveles entre el duplexor y las
seales de entrada y salida de audio. El detector DTMF o de tonos tiene como fin
decodificarlos dando como resultado un nmero binario. Por ltimo, mencionar el
circuito de alimentacin encargado de filtrar y regular la tensin de alimentacin.
Para comprender el funcionamiento de algunos mdulos es necesario conocer algunas
especificaciones de la interfaz de lnea analgica.
8.2 La lnea telefnica
A continuacin se describen los parmetros de mayor inters aplicables en el Punto de
Terminacin de Red de la lnea bsica de usuario. Para mayor detalle se recomienda
consultar el documento de Telefnica de Espaa, S.A.U.:
http://www.telefonica.es/interfaces/doc_pdf/iteca001_v2.pdf
8.2.1 Alimentacin en corriente continua
La alimentacin consiste en un generador de tensin o de corriente que, a travs de una
determinada resistencia o impedancia y de un par simtrico de hilos de cobre, se aplican
transversalmente entre los dos terminales del Punto de Terminacin de Red (PTR, en
adelante).
La alimentacin puede ofrecerse mediante dos sistemas:
Alimentacin con puente convencional de baja resistencia.
Alimentacin con limitacin de corriente.
8.2.1.1 Alimentacin con puente convencional de baja resistencia
8.2.1.1.1 Tensin de alimentacin en reposo
La tensin en los terminales del PTR, en condiciones de circuito abierto (tensin del
generador equivalente de Thevenin), se caracteriza por un valor nominal de 48 V. c. c.
que puede fluctuar entre 42 y 57 voltios.
El valor ms usual para las resistencias del puente de alimentacin es de 2 x 250 10%.
Esta resistencia corresponde con la parte real de la impedancia del circuito de lnea. La
resistencia mxima del bucle local de usuario, salvo casos excepcionales, no supera el
valor de 1200 ohmios.
208
8.2.1.1.2 Mximo consumo de corriente en situacin de reposo
La corriente mxima que se puede extraer del PTR en estado de reposo es 1 mA. Si el
consumo es superior, no se garantiza el correcto funcionamiento de los equipos
conectados al PTR.
8.2.1.1.3 Corriente de lnea en estado de lnea tomada
La corriente de bucle viene dada por la Ley de Ohm, I=V/R, siendo R la resistencia
formada por el puente de alimentacin, resistencia del bucle local de usuario y
resistencia equivalente del equipo terminal junto con la red interior del usuario.
8.2.1.2 Alimentacin con limitacin de corriente
Es idntico a lo establecido en el caso de puente convencional de baja resistencia, con la
diferencia de que la corriente a travs del PTR durante el estado de lnea tomada est
limitada. La limitacin de corriente se realiza en un valor comprendido entre 36 y 49,5
mA.
Cuando el equipo terminal demande una corriente inferior al lmite, sta vendr
determinada por la ley de Ohm.
8.2.1.3 Polaridad
La polaridad que se proporciona entre los terminales del PTR no est predeterminada.
Adems, es habitual que se produzcan cambios de polaridad durante el establecimiento
y final de la comunicacin, ya que es normal que las centrales utilicen el cambio de
polaridad como forma de sealizacin.
8.2.2 Criterios de estado de la lnea
Las corrientes de bucle determinantes de la toma y liberacin de la lnea en el PTR, se
fijan de acuerdo con los siguientes criterios:
1. En situacin de bucle abierto, la red nunca interpreta que se ha
producido cierre de bucle cuando la corriente se mantiene por debajo
de 6 mA.
2. En situacin de bucle abierto, la red interpreta que se ha producido
cierre de bucle cuando la corriente supera los 15 mA.
209
3. En situacin de bucle cerrado, la red nunca interpreta que se ha
producido una apertura del bucle cuando la corriente se mantiene por
encima de 15 mA.
4. En situacin de bucle cerrado, la red siempre interpreta que se ha
producido una apertura del bucle cuando la corriente disminuye de 6
mA.
8.2.3 Nivel mximo a la entrada del PTR
8.2.3.1 Nivel medio mximo de transmisin
El nivel medio mximo de potencia activa generado a la entrada del PTR desde la red
interior de usuario debe ser inferior a 10 dBm respecto a la impedancia de referencia
de 600 O durante un periodo de 10 segundos.
8.2.3.2 Nivel de pico mximo
El nivel de pico mximo a la entrada del PTR generado desde la red de usuario debe ser
inferior a 1,5 V., medida sobre una resistencia de 600 O conectada a los terminales de
lnea.
8.2.4 Seal (corriente) de llamada
Es la seal alterna sinusoidal que la red presenta en el PTR de la lnea llamada para
indicar la existencia de una llamada entrante.
La corriente de llamada se presenta en el PTR superpuesta a la tensin de alimentacin
de corriente continua de la red.
Las caractersticas de la seal de llamada medidas en circuito abierto en el PTR se
detallan en la tabla siguiente:
CARACTERSTICA REQUISITOS
Frecuencia 25 Hz 3 Hz
Forma de onda Sinusoidal
Tensin alterna (valor eficaz) 75 V 10 %
Resistencia interna del
generador de seal de llamada.
200 O
210
Tiempo mximo de aplicacin 60 s.
Cadencia de la seal de
llamada
1500 ms 10 % (on) / 3000 ms 10%
(off)
Distorsin s 5 %
Mtodo de aplicacin Superpuesta a la corriente continua
Tabla 1 Caractersticas de la seal de llamada.
8.3 Descripcin modular y montaje del sistema
El conjunto del sistema ofrece un punto de conexin al PTR, una entrada y una salida
de audio que permiten conectar un reproductor cualquiera (radiocasete porttil, por
ejemplo) en la entrada y unos auriculares o una grabadora, etc. en la salida. Tambin
lleva acoplado un conector para el control del dispositivo. A travs del mismo se
ofrecen y reciben las siguientes seales:
FUNCIN SENTIDO
Aviso de llamada Salida
Cierre / apertura del bucle Entrada
Aviso de recepcin de tono Salida
Bit 0 - Tono recibido (Bit menos
significativo)
Salida
Bit 1 - Tono recibido Salida
Bit 2 - Tono recibido Salida
Bit 3 - Tono recibido (Bit ms
significativo)
Salida
Tabla 2 Seales de control.
Los diferentes mdulos que componen el sistema se describen a continuacin:
8.3.1 Detector de llamada
Este mdulo tiene como misin detectar la corriente de llamada en la lnea y generar
una seal que pueda ser tratada digitalmente. El circuito detector, como se puede ver en
la Figura 2, consiste de un filtro paso alto para eliminar la corriente continua seguido de
211
un rectificador de onda completa. La corriente rectificada excita el LED de un
optoacoplador cuando supera el umbral de 36 V impuesto por el diodo zener con el
objeto de discriminar la seal de llamada de otras de menor amplitud, como podra ser
la propia conversacin. En el transistor del optoacoplador se obtiene algo parecido a un
tren de impulsos con una frecuencia de 50 Hz. que, convenientemente filtrados,
conforman un pulso invertido coincidente con la duracin del tono.
El filtro paso alto est formado por una resistencia de 10 KO y un condensador de
alterna de 1F y 100 V., cuya frecuencia de corte es 15,92 Hz. y, por tanto, permite el
paso de la seal de 25 Hz.
Hz
RC
f
c
92 , 15
10 10 2
1
2
1
6 4
=

= =

t t

- Figura 2 Circuito detector de llamada.
El zener slo permite el paso de corriente cuando se supera su tensin umbral. Esto
sucede cuando la amplitud de la sinusoide de llamada es superior a la tensin del zener
ms las de polarizacin del LED y los diodos del puente rectificador, aproximadamente
36 + 2,5 = 38,5 V. Como resultado, el diodo pasa por sucesivos estados ON/OFF (uno
por cada semiciclo de la seal de llamada) generando un tren de pulsos de frecuencia 50
Hz., con aspecto similar al que se muestra en la figura 3.
212
- Figura 3 Impulsos de corriente en el diodo LED.
En el colector del fototransistor se obtiene una seal cuadrada e invertida respecto de la
anterior, como la que podemos observar en la figura 4.
- Figura 4 Tensin de colector con tono de llamada presente.
Con el condensador de 10 F entre el colector y masa, se eliminan los impulsos gracias
a la elevada constante de tiempo del conjunto R-C. La tensin en el colector viene dada
por la expresin:
( )
t
RC
t
CC C
e e V V

=
|
|
.
|

\
|
= 1 5 1
De la ecuacin se desprende que para la duracin de los pulsos (5 ms.) la tensin que
alcanza el colector es de 25 mV.
El resultado final es una tensin de 5 V. (1 lgico) en estado de reposo y que cambiar a
0 V. (0 lgico) mientras est presente la corriente de llamada, lo que va a permitir,
incluso, contar el nmero de timbrazos.
Para montar este mdulo se deber poner especial cuidado en la polaridad de los
mltiples diodos. Para la prueba basta con alimentarlo y conectarlo a la lnea telefnica.
Como su funcionamiento es independiente del resto de mdulos, por razones de
comodidad al conectarlo, se recomienda probarlo una vez montados el gancho y el
regulador de tensin. La prueba consistir en llamar y comprobar el cambio de tensin
en el colector del optotransistor.
213
AVISO IMPORTANTE: No utilizar nunca el osciloscopio para medir
directamente sobre la lnea telefnica, ya que se podra provocar una avera. En caso
de ser necesaria la realizacin de alguna medida, puede utilizarse un polmetro. El
objetivo principal que se persigue con el uso del optoacoplador es el aislamiento de la
lnea telefnica del resto de la electrnica, tanto por razones de seguridad, como para
evitar que un fallo en un lado afecte al otro. Tambin hay que mencionar que no existe
conexin entre la masa a un lado y a otro del optoacoplador.
8.3.2 Alimentacin
Todos los mdulos se alimentan a 5 V., por lo que se ha usado un sencillo regulador
7805 de tres terminales que proporciona 5 V. estables en su patilla de salida. La
intensidad mxima que puede proporcionar es de 1,5 amperios y la tensin a la entrada
ha de ser superior a 7 voltios para que funcione correctamente. La eleccin de 9 V. es
por la existencia de pilas de ese voltaje en el mercado, pero podra ser cualquier otro
que superase el umbral. Por ejemplo existen adaptadores comerciales que ofrecen 7,5 V.
En la figura 5 puede verse el esquema de conexin.
- Figura 5 Regulador de tensin.
Los tres condensadores de la entrada son: uno cermico, otro de plstico y el tercero
electroltico, para el correcto filtrado de la alta, media y baja frecuencia
respectivamente.
La red en pi de la salida incluye un choque (VK200) para filtrar espreos a travs de
masa. En caso necesario, la red completa puede simplificarse dejando un nico
condensador de filtro.
Con respecto al montaje y prueba del circuito no se observa ninguna dificultad.
8.3.3 Gancho automtico
Merece la pena comenzar aclarando el porqu de la denominacin gancho. El origen
data de los primeros tiempos de la telefona y hace referencia al gancho donde se
colgaba el auricular finalizada la conversacin. Este gancho por el propio peso del
214
auricular accionaba un conmutador que cortaba la comunicacin. En nuestro caso
apenas se reduce a un pequeo rel de tan slo un par de centmetros cbicos.
En reposo conecta la lnea con el circuito de timbre y al alimentar el rel conmuta al
circuito de conversacin. Debido al elevado consumo del rel se utiliza un transistor
para la conmutacin. El diodo tiene como fin la descarga de la bobina del rel cuando el
transistor corta.
El montaje y prueba del circuito no reviste dificultad alguna.
- Figura 6 Gancho automtico.
8.3.4 Duplexor
Este mdulo es el responsable de la conversin de dos a cuatro hilos y del aislamiento
de la lnea telefnica. Vase en detalle el funcionamiento:
- Figura 7 Duplexor

Lo primero que se observa es una resistencia y un puente rectificador de diodos. Este
ltimo puede ocasionar algn quebradero de cabeza si no se cae en la cuenta de que su
funcin no es la de rectificar, sino la de ofrecer una polaridad fija independientemente
de la que presente la lnea en todo momento, recurdese que la polaridad de la lnea no
est predeterminada y adems puede cambiar durante la conversacin.
215
El diodo zener tiene como fin proteger el resto de la circuitera contra sobretensiones.
La resistencia de 820 O junto con la que presenta la lnea cuando se encuentra tomada,
limitan, a su vez, la corriente mxima por el zener. El condensador cermico de 10 nF
eliminar los picos de alta frecuencia no deseados.
El optoacoplador que se observa guarda la clave del funcionamiento de este mdulo.
Utiliza un par fotodiodo-fototransistor para cada sentido de la conversacin. Es el
responsable de la conversin de dos a cuatro hilos y del aislamiento de la lnea
telefnica. Para un correcto funcionamiento del circuito de conversacin, debe
polarizarse adecuadamente y presentar una impedancia que garantice el correcto cierre
del bucle.
8.3.4.1 Clculo de la polarizacin
Para cerrar el bucle es necesario que la corriente sea superior a 15 mA. El principal
problema que se plantea es que, dependiendo de la distancia entre el PTR y la central de
conmutacin, la parte real de la impedancia que presenta la lnea puede variar desde un
mnimo de 500 O cuando la distancia es muy corta (centralitas privadas, por ejemplo) y
un mximo de 1200 O como caso peor para distancias muy largas. La resistencia de
carga (R
IT
) ofrecida por la interfaz telefnica (equipo terminal) ha de ser tal que
funcione correctamente con independencia de la lnea a que se conecte.
Se ha partido de las dos condiciones de diseo siguientes:
Un mnimo de corriente de 20 mA para garantizar siempre la apertura
del bucle.
Un mximo de corriente de 30 mA para evitar que la central limite la
corriente.
En los casos lmite se tendr:
La resistencia mxima para garantizar una corriente de bucle superior
a la mnima es:
mA
R R
V
I
IT Lmax
L
L
20 >
+
=
1200 1200
10 20
48
20
3
=

= s
Lmax
L
IT
R
mA
V
R O
216
La resistencia mnima para garantizar una corriente de bucle inferior
a la mxima es:
mA
R R
V
I
IT Lmin
L
L
30 s
+
=
1100 500
10 30
48
30
3
=

= >
Lmin
L
IT
R
mA
V
R O
Por tanto, la resistencia podr tomar cualquier valor dentro del margen posible,
escogiendo finalmente el valor central:
1200 1100 s s
IT
R
La resistencia R
IT
depende de dos parmetros de diseo, que son las resistencias R
1
y
R
2
, y la corriente que circula por el optotransistor y de otros dos de la lnea, que son la
parte real de la impedancia de lnea, R
L
y la tensin en circuito abierto V
L
(generador
equivalente de Thevenin).

( )
|
|
|
|
.
|

\
|
+
+
+ =
2
1
2 1
R
I
V
R R
I
V
R R R
TRT
L
L
TRT
L
IT

Como una primera aproximacin, que por lo general ser suficiente para el objetivo que
se pretende, se tomar la siguiente expresin:

2 1
4 , 0 R R R
IT
+ =
El valor obtenido no va a diferir mucho del real, habida cuenta que tanto los parmetros
de la lnea como los de diseo han de tomar unos valores razonables comprendidos
dentro de las cotas de diseo. Por ejemplo, la tensin nominal de lnea de 48 V, la
corriente en el TRT de 15 mA, la resistencia de lnea de 850 O, etc.
Para los valores de R
1
= R
2
= 820 O la resistencia R
IT
podr tomar, en funcin de la
resistencia de la lnea, R
L
, valores comprendidos entre 1060 O y 1200 O, por lo que la
corriente por el fotodiodo estar comprendida entre 20 y 30 mA. El fototransistor
colocado en paralelo con la resistencia de 820 O ser el responsable de inyectar en la
lnea la seal de audio. Se ha fijado una corriente de polarizacin de unos 15 mA.,
mediante la resistencia de 180 O que limita la corriente por su respectivo fotodiodo.
217
Debe tenerse en consideracin que las resistencias R
1
y R
2
pueden llegar a disipar las
potencias de 0,6 W y 0,2 W, por lo que es recomendable montar resistencias de 1W y
W respectivamente.
La tensin en el diodo zener oscilar entre:
6 . 10 2 . 4 s s
Z
V
8.3.4.2 Transmisin de la seal
8.3.4.2.1 Recepcin de la seal vocal
La seal telefnica se recibe como una corriente eficaz superpuesta a la continua que
recorre el bucle. En la figura 8 se describe el circuito equivalente de seal.
- Figura 8 Circuito equivalente de recepcin de seal.
Si se considera que la seal est producida por un generador de corriente, i
s1
, y llega al
PTR con una potencia P
1
(100 W aproximadamente), el valor de esta corriente ser:
247
1640
10
4
2 1
1
1
= ~
+
=

R R
P
i
s
A.
La corriente por el fototransistor es de un 60% aproximadamente y, por tanto, la tensin
en colector es de:
32 10 247 220 6 . 0 6 . 0
6
1 1
= = =

s C s
i R v mV
Los valores referidos son corrientes y tensiones eficaces. La tensin pico-pico que se
puede medir con un osciloscopio es 110 mV
pp
.
8.3.4.2.2 Transmisin de la seal vocal
El circuito equivalente de seal para la transmisin se muestra en la figura 9.
218
- Figura 9 Circuito equivalente de transmisin de seal.
La corriente en la lnea i
L
se modula con la corriente i
s2
del fototransistor y depender de
la parte real de la impedancia de la lnea, R
L
que como modelo se considerar de 600 O.
2
2 1
2
s
L
L
i
R R R
R
i
+ +
=
Para la potencia media mxima de 100 W que se puede inyectar en el PTR con una
impedancia de carga en lnea de 600 O, la corriente eficaz media en el fototransistor es:
L
L
s
i
R
R R R
i
+ +
=
2
2 1
2

L
L
R
P
i =
1 . 1
600
10
820
820 820 600
4
2
=
+ +
=

s
i mA
La corriente eficaz mxima en el fotodiodo ha de ser de 1,82 mA. Esta corriente se le
suma a la de polarizacin del diodo mediante una resistencia de 1KO y por tanto la
tensin eficaz mxima a aplicar en este punto ser de 1,82V.
8.3.4.3 Montaje y prueba del circuito
Este mdulo es el ms complejo en cuanto al montaje y prueba. Debe cuidarse muy bien
la polaridad de los componentes, ya que puede ser bastante fcil equivocarse.
Supngase que una vez montado y comprobado el correcto cableado, la conexin y
polaridad de todos los componentes el duplexor sigue sin funcionar. Pues bien, a
continuacin se relacionan una serie de comprobaciones que pueden ayudar a
determinar el origen del fallo:
Colocar la sonda del osciloscopio en el colector del fototransistor de entrada de seal.
Conectar la lnea telefnica y cerrar el bucle con el gancho. Se debe observar en el
osciloscopio una sinusoide de 425 Hz. y unos 100 mV de amplitud. Esta seal es la de
invitacin a marcar, por lo que la recepcin es presumiblemente correcta (ntese que
slo est presente durante 20 segundos de una forma continua y durante otro minuto
ms de forma intermitente, por lo que se deber abrir y cerrar el bucle cada minuto
aproximadamente para no perder el tono).
Si no aparece, realizar las siguientes comprobaciones:
219
Medir la tensin en bornes de R
1
y calcular la corriente que pasa por
ella mediante la ley de Ohm. Debe dar un valor entre 20 y 30 mA.
Si es superior a 35 mA es probable que la central est limitando la
corriente. Es muy posible que debido a un cortocircuito la
impedancia sea muy baja. Se recomienda revisar todas las
conexiones y comprobar la correcta polaridad de los componentes
especialmente los diodos y el puente rectificador.
Si es nula o muy pequea es posible que el circuito est abierto o que
algn componente se haya quemado o est defectuoso. Obsrvese
que las resistencias R
1
y R
2
son de 1W y W respectivamente y si
no se ha respetado han podido quemarse.
Medir la tensin en bornes del diodo zener que deber estar
comprendida entre 4,2 V y 10.6 V.
Si vale 15 V es porque el diodo ha entrado en avalancha y est
limitando la tensin. La causa puede ser alguna de las siguientes:
La rama del optoacoplador est en circuito abierto (por ejemplo, el
fotodiodo se ha quemado).
La corriente por la resistencia R
2
es superior a lo debido.
Si vale menos de 1 V puede deberse a:
Un cortocircuito en la rama del optoacoplador o en el condensador
cermico.
El diodo zener est cortocircuitado o se ha montado al revs y
conduce en directa.
El puente de diodos se ha montado mal o est averiado.

Para comprobar la rama del optoacoplador pueden seguirse los
siguientes pasos:
Con la lnea desconectada, sacar la resistencia R
2
y comprobar que
no se ha quemado midiendo su valor de 820 O. Sustituir si es
necesario.
220
Con la lnea conectada medir la tensin en R
2
.
Si vale 0 V el circuito est cortado, probablemente en el fotodiodo.
Comprubense las conexiones, el fotodiodo y el fototransistor. En
alguno de estos puntos debe estar el problema. Debe considerarse
que un cortocircuito en el fototransistor o en R
2
puede quemar el
fotodiodo.
Si vale 13,8 V la rama est saturada en corriente. En bornes del diodo
zener se han alcanzado 15 V y ste conduce todo el excedente de
corriente. Posiblemente se deba a que el fototransistor no
conduce o que la corriente es insuficiente y no alcanza los 15 mA
de diseo. Abrir la rama y medir la corriente con un ampermetro.
Como se conoce la corriente en la lnea (medida en R
1
), las leyes
de Kirchhoff permiten determinar la corriente por cada rama y
deducir la causa del problema. Si se debe a que la corriente por el
fototransistor no es correcta, comprobar la corriente que pasa por
su fotodiodo y calcular la relacin de transferencia, para ello
medir la tensin en resistencia de 180 O que limita la corriente en
el fotodiodo. Calcular la resistencia adecuada.
Medir la tensin en el fotodiodo. Debe ser de 1.2 V
aproximadamente.
Medir con el polmetro la tensin en bornes de la resistencia de
colector del fototransistor de entrada y comprobar que no est
saturado.
Para comprobar la correcta transmisin inyectar una seal de 1 Khz
(o menos) y 2.8 V
pp
(1 V
rms
) en la entrada. Llamar desde otro
telfono, cerrar el bucle con la seal CONEC del gancho y se deber
escuchar el pitido al otro lado. Tambin aparecer en el colector del
optotransistor de recepcin debido a la realimentacin que se
produce.
Importante: Pasados 80 segundos la central pasa al estado de lnea aparcada,
manteniendo slo una corriente de supervisin de tan slo 6 mA, estado en el cual no
funciona nada (de ah la importancia de abrir y cerrar el bucle cada minuto).
221
8.3.5 Amplificadores
Los amplificadores son necesarios para la adaptacin de las seales. El amplificador de
audio LM 386 se eligi en un principio para la etapa de salida, ya que era necesario
suministrar la potencia suficiente para alimentar unos auriculares. Despus se valoraron
otras ventajas como son:
Montaje extremadamente sencillo que no precisa apenas de
componentes externos para funcionar en condiciones normales.
Funciona con alimentacin asimtrica a 5 V.
stas motivaron que se utilizase tambin para la etapa de entrada, sobre todo por la
alimentacin, ya que el sobrecoste que implica frente a un operacional convencional se
ve ampliamente compensado al no tener que montar una fuente de alimentacin
simtrica.
En la entrada de la etapa de salida se ha incorporado un filtro RC con una frecuencia de
corte de 3400 Hz para eliminar el soplido de alta frecuencia, ya que los optoacopladores
utilizados son muy ruidosos y con esta medida mejora un poco.
- Figura 10 Amplificadores de entrada y salida.
8.3.6 Detector de tonos (DTMF)
La sealizacin de usuario a la red se puede realizar de dos formas:
Mediante sealizacin a impulsos consistentes en aperturas y cierres
del bucle local con una duracin determinada para que la red no
222
interprete que se ha producido la apertura del bucle (habitualmente
10 ips con relaciones apertura/cierre en % de 50/50 o 70/30).
Mediante sealizacin a multifrecuencia por aplicacin de pares de
tonos (DTMF, Dual Tone MultiFrecuency) de caractersticas
especificadas por ETSI en el documento ETR 206 [5].
La sealizacin a multifrecuencia consiste en transmitir a travs de la red de un par de
frecuencias pertenecientes cada una a uno de los dos grupos de cuatro frecuencias. Las
cuatro frecuencias del grupo bajo junto con las cuatro del grupo alto permiten sealizar
un total de 16 dgitos, que son 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *, #, A, B, C, D, segn la
especificacin ETSI ETR 206 [5]. Por el momento, en la red de Telefnica de Espaa
S.A.U., no se utilizan los caracteres A, B, C y D.
- Figura 11 Croquis de un teclado DTMF con las frecuencias asociadas.
Aprovechando la capacidad de los aparatos de telfono actuales de generar la
sealizacin a multifrecuencia se ha incorporado en la interfaz de lnea telefnica un
receptor de tonos del fabricante MITEL modelo MT8870. El esquema de conexin
propuesto por el fabricante se muestra en la figura 12.
223
- Figura 12 Receptor y decodificador de tonos.
La seal procedente del mdulo de amplificacin se aplica a la entrada DTMF. Cada
vez que se recibe un tono, se genera un pulso positivo en la salida TR para indicar que
el cdigo del nmero recibido est disponible en la salidas Q1-Q4. En la tabla 3 puede
consultarse la correspondencia entre los dgitos marcados, los tonos y el cdigo binario.
Esta facilidad agregada a la interfaz abre un importante abanico de posibilidades. Se
pueden implementar aplicaciones de control remoto, que tras la identificacin del
usuario mediante un cdigo, permitan activar o desactivar dispositivos, o bien un
sistema de telepago con tarjeta, etc.


f
baja
f
alta
N Q4 Q3 Q2 Q1
697 1209 1 0 0 0 1
697 1336 2 0 0 1 0
697 1477 3 0 0 1 1
770 1209 4 0 1 0 0
770 1336 5 0 1 0 1
770 1477 6 0 1 1 0
852 1209 7 0 1 1 1
852 1336 8 1 0 0 0
852 1477 9 1 0 0 1
941 1209 0 1 0 1 0
941 1336 * 1 0 1 1
941 1477 # 1 1 0 0
697 1633 A 1 1 0 1
770 1633 B 1 1 1 0
224
852 1633 C 1 1 1 1
941 1633 D 0 0 0 0
Tabla 3 Codificacin de las seales DTMF.
8.4 Ejemplos de aplicaciones
8.4.1 Rutinas bsicas de gestin del interfaz
******************************************************************************
* REGISTROS SIM *
******************************************************************************
SIMCR EQU $FFFA00 * Controla la configuracin del sistema ($00CF).
SYNCR EQU $FFFA04 * Fija frecuencia y modo de operacin del reloj ($3F08).
RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).
PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.
PORTE1 EQU $FFFA13 * Tiene exactamente la misma funcin que el anterior.
DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.
PEPAR EQU $FFFA17 * Asignacin del puerto E (Puerto o control de BUS).
PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.
PORTF1 EQU $FFFA1B * Tiene exactamente la misma funcin que el anterior.
DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.
PFPAR EQU $FFFA1F * Asignacin del puerto F (Puerto F o control de BUS).
PICR EQU $FFFA22 * Configuracin de interrupciones peridicas ($000F).
PITR EQU $FFFA24 * Contiene la cuenta del timer peridico ($0000).
SYPCR EQU $FFFA21 * Controla las funciones de monitorizacin del sistema
* como es el caso del Watchdog. ($40 anula watchdog).
SWSR EQU $FFFA27 * Se debe escribir peridicamente con Watchdog activado.
CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la funcin de
CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).
PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

******************************************************************************
* REGISTROS GPT-PWM *
******************************************************************************
GPTMCR EQU $FFF900 * Configuracin del GPT.
ICR EQU $FFF904 * Configuracin de interrupciones del GPT.
DDRGP EQU $FFF906 * Determina el sentido del puerto GP.
PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.
OC1M EQU $FFF908 * Mscara para asignar los pin de captura de OC.
225
OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.
TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.
PACTL EQU $FFF90C * Configuracin del acumulador de pulsos PAI.
PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.
TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.
TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.
TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.
TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.
TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.
TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.
TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.
TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una funcin TIC o TOC).
TCTL1 EQU $FFF91E * Configura el modo de comparacin y nivel de salida.
TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.
TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.
TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.
TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.
TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER
CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.
PWMC EQU $FFF925 * Configuracin del PWM.
PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)
PWMCNT EQU $FFF928 * Registro del contador del PWM.
PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.
PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.
PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

******************************************************************************
* TIPOS DE RETARDO *
******************************************************************************
CORTO EQU $03FF * Del orden de 100us.
MEDIO EQU $03FF * Del orden de 1ms.
LARGO EQU $BFFF * Del orden de 5ms.
RETARDO EQU $6FFF * Se usa para el avance de caracteres.

******************************************************************************
* CONSTANTES DE INTERS *
******************************************************************************
NUM_TIMBRES EQU 4
226

******************************************************************************
* CONTROL DEL INTERFAZ TELEFNICO *
******************************************************************************
PUERTO EQU PORTF * Puerto de comunicacin con el interfaz.
BIT_TONO EQU 4 * Se pone a 1 durante un tiempo al recibirse un tono.
BIT_TIMBRE EQU 5 * Se pone a 1 cuando aparece el timbre de llamada.
BIT_GANCHO EQU 6 * 0 colgado y 1 para descolgar.

******************************************************************************
* VECTORES DEL RESET *
******************************************************************************
ORG $0
PILA_RESET DC.L FIN_PILA
PC_RESET DC.L PRINCIPAL
******************************************************************************
* PUNTERO DE PILA *
******************************************************************************
ORG $4000
PILA DS.L 200
FIN_PILA:



******************************************************************************
* SUBRUTINAS *
******************************************************************************
ORG $1000

******************************************************************************
* CONFIGURACION DEL HARDWARE DEL MICRO *
******************************************************************************
*************************** INHAB_WDOG ****************************
* Inhabilita el Watchdog que es una funcin de monitoriracin del *
* sistema para detectar la entrada en un bucle infinito. *
*******************************************************************
INHAB_WDOG:
MOVE.B #$40,SYPCR * Inhabilitamos WatchDog
RTS
227
*----------------------------------------------------------------------------*

*************************** PORT_F_CFG ****************************
* Con esta rutina se configura el puerto F con el que se comunica *
* con el interfaz telefnico. *
*******************************************************************
PORT_F_CFG
MOVE.B #$40,DDRF * PF0..PF3 entradas, PF4..PF7 salidas.
MOVE.B #$00,PFPAR * Configura el registro de control del puerto F.
MOVE.B #$00,PORTF
RTS
*------------------------------------------------------------------*

******************************************************************************
* RUTINAS DE CONTROL *
******************************************************************************
***************************** DELAY *******************************
* Produce un retardo cuya duracin viene determinada por el valor *
* almacenado en el registro D1. *
*******************************************************************
DELAY
SUB.L #1,D1
BNE DELAY
RTS
************************* LLAMADA_ESPERAR *************************
* Esta rutina se queda esperando hasta que se activa el bit de *
* llamada y descuelga tras un nmero de timbrazos definido por la *
* constante NUM_TIMBRES. *
*******************************************************************
LLAMADA_ESPERAR
MOVE.L D0,-(A7)
MOVE.L #NUM_TIMBRES,D0
NO_HAY_TIMBRE
BTST.B #BIT_TIMBRE,PUERTO
BNE NO_HAY_TIMBRE
HAY_TIMBRE
BTST.B #BIT_TIMBRE,PUERTO
BEQ HAY_TIMBRE
SUBQ #1,D0
228
BNE NO_HAY_TIMBRE
BSET.B #BIT_GANCHO,PUERTO
MOVE.L (A7)+,D0
RTS
*-------------------------------------------------------------------*

***************************** COLGAR ******************************
* Esta rutina cuelga desactivando el rel del gancho automtico. *
*******************************************************************
COLGAR
BCLR.B #BIT_GANCHO,PUERTO
RTS
*-------------------------------------------------------------------*

************************** TONO_RECIBIR ***************************
* Esta rutina lee el decodificador de tonos y devuelve a travs *
* del registro D0 el tono recibido. *
*******************************************************************
TONO_ESPERAR
CLR.L D0
ESPERAR_TONO
BTST.B #BIT_TONO,PUERTO
BNE ESPERAR_TONO
MOVE.B PUERTO,D0
ANDI.B #$0F,D0
RTS
*----------------------------------------------------------------------------*

************************* DRIVER_INTER_TEL ************************
* Esta rutina realiza el servicio indicado a travs del registro *
* D7 con un nmero ordinal. Para llamar a la rutina de servicio *
* se coloca el nmero de servicio en el registro D7 y se ejecuta *
* un TRAP #0. *
*******************************************************************
DRIVER_INTER_TEL
CMP.B #1,D7
BEQ SERVICIO1
CMP.B #2,D7
BEQ SERVICIO2
229
CMP.B #3,D7
BEQ SERVICIO3
BRA FIN
SERVICIO1
BSR LLAMADA_ATENDER
BRA FIN
SERVICIO2
BSR COLGAR
BRA FIN
SERVICIO3
BSR TONO_RECIBIR
FIN
RTE
*----------------------------------------------------------------------------*

******************************************************************************
* PRINCIPAL *
******************************************************************************
ORG $400
PRINCIPAL
BSR INHAB_WDOG
BSR PORT_F_CFG
MOVE.B #00,PUERTO
NUEVA_LLAMADA
MOVE.B #2,D7 * Llamada al servicio colgar
TRAP #0
MOVE.B #1,D7
TRAP #0 * Descuelga cuando entra una llamada
BUCLE
MOVE.B #3,D7
TRAP #0 * Recibe un tono y lo guarda en D0
CMP.B #C,D0 * Comprueba si es la tecla #
BEQ NUEVA_LLAMADA * Si lo es cuelga y espera una nueva llamada
BRA BUCLE * Si no lo es espera recibir otro tono
END
230
Conclusiones
Al consistir el proyecto en el diseo de prcticas guiadas para el montaje de interfaces y
dispositivos, las conclusiones estn determinadas por cada una de stas.
El montaje de los circuitos electrnicos de cada prctica supone una dedicacin y
esfuerzo razonable por parte de los alumnos, adems de ser de bastante utilidad y recibir
muy buena aceptacin. Los diferentes circuitos varan desde un mnimo de complejidad,
como son el teclado, el display y los mdulos de transmisin por radio, hasta un
mximo en el caso del transmisor y receptor de infrarrojos y el interfaz telefnico.
Cuestin aparte merece la placa entrenadora del 68331. Debido a la complejidad de su
montaje, es importante que el alumno combine cierta habilidad y meticulosidad para no
cometer errores fatales. Por otro lado, el micro es un elemento delicado y crtico por ser
insustituible, de modo que cualquier dao que sufra llevar al traste todo el trabajo.
En el curso 99/00, en el que se inici esta experiencia docente, se apuntaron 31 parejas
para el montaje y realizacin de las prcticas de la asignatura de LSED (Laboratorio de
Sistemas Electrnicos digitales). Los resultados de los montajes fueron:
Tres placas no llegaron a funcionar despus de montadas por causas
desconocidas.
Dos placas se quemaron durante la fase de montaje.
Tres ms se quemaron durante el desarrollo de la prcticas.
En la mayora de los casos los alumnos necesitaron un apoyo muy
importante por parte del coordinador de la asignatura D. Juan Manuel
Montero Martnez.
En resumen, un 25 % de los alumnos tuvo problemas que les imposibilitaron el
desarrollo normal de los trabajos. Del seguimiento que se ha podido hacer de las placas
se puede constatar que se han ido averiando presentando un cortocircuito interno. En
muchos de los casos no ha sido posible determinar la causa.
Como consecuencia, se desaconseja la realizacin de montajes tan complejos, ms an
cuando existen elementos crticos insustituibles.

231
Apndice I
Tcnicas de Conexionado
Para la interconexin de las componentes que van a constituir nuestros diseos,
utilizaremos dos tcnicas:
I.1 Soldadura de estao
Si describimos brevemente los pasos a seguir:
1. Retirar la longitud adecuada de aislante del hilo de cobre.
2. Estaar la punta del hilo desnudo (no si se dispone de hilo estaado).
3. Soldar, calentando con el soldador unos instantes y despus
aplicando el hilo de estao con decapante hasta fundir.
4. Dejar enfriar.
Debe tenerse especial cuidado en no calentar en exceso los componentes para evitar su
deterioro. Tambin es importante cuidar la colocacin del soldador para evitar
quemaduras accidentales.
Las principales ventajas que presenta son la robustez y fiabilidad de las conexiones.
Como principal inconveniente, la necesidad de cierta precisin en la soldadura del
cableado para evitar cortocircuitos indeseados. Ello hace que la tcnica sea delicada y
laboriosa.
I.2 Wrapping o enrollado
Consiste en enrollar helicoidalmente la punta desnuda de un fino hilo de cobre alrededor
del terminal. Para ello nos ayudamos de una herramienta especfica, tomando al final la
conexin un aspecto similar a un muelle.
I.2.1 Descripcin de la herramienta
El wrappinador podra asemejarse a un bolgrafo acabado en ambos extremos en
sendas puntas cilndricas. La ms larga se usa para enrollar y la corta para desenrollar.
Ambas puntas presentan un agujero central donde se inserta el terminal sobre el que se
232
enrolla o desenrolla. El extremo largo presenta adems otro orificio descentrado ms
fino que comunica con una ranura lateral siguiendo la generatriz del cilindro y que se
usar para alojar el hilo de cobre. El utensilio tiene, adems, en su parte central una
cuchilla peladora de cable.
I.2.1.1 Procedimiento de conexin:
1. Pelar de 20 a 25 mm., ayudndonos del pelador. Para evitar romper la
cuchilla es preferible introducir el hilo por el lado contrario a la
cuchilla, de modo que, al tirar del hilo, sta queda asentada sobre la
herramienta.
2. Introducir el hilo desnudo por el agujero descentrado hasta el
aislante. Observaremos que sale por la ranura lateral.
3. Insertar la herramienta junto con el hilo en el terminal y, presionando
ligeramente, girar sin extraer la herramienta hasta que el hilo quede
completamente enrollado. Evitar una presin excesiva para que no se
monten las espiras.
Las principales ventajas son la facilidad, flexibilidad y fiabilidad del cableado, pudiendo
corregirse fcilmente errores de conexionado. Como inconvenientes cabe destacar la
necesidad de usar zcalos y terminales especficos, y el elevado precio de la
herramienta.
Hay componentes a los que no se puede aplicar esta tcnica y que necesariamente hay
que soldarlos; por ello, emplearemos ambas tcnicas, dejando la soldadura slo para
aquellos casos en que su uso sea ms adecuado.
233
Apndice II
Estudio de viabilidad de la obtencin de
alimentacin para un sistema de telemando
telefnico de la propia lnea
En primera instancia precisamos conocer las caractersticas que, a nivel elctrico,
presenta la lnea de abonado. En este momento disponemos de las especificaciones de la
antigua CTNE para la lnea de abonado ordinaria (LAO), las cuales deberemos
actualizar, pero entretanto, confiamos en que stas no difieran mucho de las actuales, o
que las centrales de conmutacin sigan respetando las mismas por razones de
compatibilidad tecnolgica, hiptesis bastante razonable puesto que el servicio y los
terminales telefnicos no han sufrido variacin sustancial.
II.1 Especificaciones del bucle de abonado
De la especificacin 620.006 de la CTNE sobre los requisitos que deben cumplir las
centrales en cuanto a la lnea de abonado ordinaria (LAO), extraemos aquellas
caractersticas que son de nuestro inters.
II.1.1 Caractersticas en corriente continua
Alimentacin de 48V. nominales a travs de un puente de 2 x 250O
10% o con circuito limitador de corriente fijado a 45mA. 10% para
corrientes inferiores al lmite y con tensin dependiente de la
resistencia de carga de la lnea.
Resistencia del bucle completo con aparato descolgado de 1800O
mximo.
Resistencia del par de hilos comprendida entre 0 y 1200O.
Caractersticas del par de hilos como las de un cable subterrneo de
0.405mm:
234
Impedancia caracterstica a 800Hz de 150 (1-j) O con 286O/Km y
50nF/Km.
Dos posibles estados del bucle:
Abierto: Se interpreta que se est en este estado si la corriente es
inferior a un valor entre 8.5 y 12mA 10%.
Cerrado: Se interpreta que se est en bucle cerrado si la corriente
del bucle es superior a un valor comprendido entre 12 y 13.5mA
10% y se tomar como paso a bucle abierto cuando la corriente
caiga por debajo de un valor entre 8.5 y 9.5mA 10%.
II.2 Especificaciones del aparato de abonado
De la especificacin N 315.022 de la CTNE sobre estos aparatos, nos interesa slo:
II.2.1 Caractersticas en corriente continua
En estado colgado la impedancia ha de ser superior a 100KO, en
conversacin no ser superior a 600O.
II.3 Hiptesis de partida
A partir de las especificaciones efectuamos algunas suposiciones que nos permiten
obtener una primera aproximacin:
II.3.1 Estado de bucle abierto
Para garantizar que la central detecte este estado, en el caso peor la corriente deber ser
inferior a 7.65mA (8.5 menos el 10%=7.65). Si sobre este valor respetamos un margen
de seguridad de un 5% por posibles fluctuaciones en la carga, la corriente mxima que
podremos extraer es de 7.25mA.
Como el sistema de telemando est pensado para utilizarse en entornos domsticos o
pequeas oficinas, lo normal ser que la lnea no est dedicada y, por tanto, tenga otros
terminales conectados en paralelo. Como la resistencia de carga en continua de un
terminal ha de ser mayor que 100KO, la corriente consumida por los mismos ser
235
inferior a 500A. Respetando el caso comn de tener dos aparatos conectados a la lnea,
la mxima corriente que podremos extraer ser 6.25mA.
La potencia disponible en este estado es:
( ) mW I V P
A A A
280 25 . 6 10 25 . 6 250 2 48
3
= = =


II.3.2 Estado de bucle cerrado
En este estado consideraremos:
La nica carga en continua sobre la lnea es la que origina el circuito
de extraccin de corriente, lo que significa que el muestreo e
insercin de seal se hace con una impedancia en continua infinita
(muy alta).
El circuito deber ser inmune a la polaridad de la lnea, y
comportarse como una carga resistiva de 600O.
Bajo estas hiptesis, la potencia disponible en bucle cerrado ser:
W I R I V P
C C C C
14 . 1
500 2 600
48
600
2
=
|
.
|

\
|
+
= = =
II.3.3 Eficiencia de la fuente
Partimos de la hiptesis de una fuente de alto rendimiento. Segn la documentacin
consultada, tomamos como referencia el regulador conmutado MC34129, cuyo diseo
es especfico para este tipo de aplicaciones y con el que se obtienen eficiencias del
orden del 75%.
II.4 Potencia final disponible
La potencia que al final tendremos disponible para nuestra aplicacin ser:
Bucle abierto:
mW P P
A BA
210 280 75 . 0 = = =q
Bucle cerrado:
mW P P
C BC
855 1140 75 . 0 = = =q
236
II.4.1 Planteamiento general de la solucin
Disponemos de un equipo electrnico (Interfaz + Microcontrolador), con dos modos de
funcionamiento: espera (standby) y activo (run). En el primer modo, el equipo tiene un
consumo mnimo de potencia, P
min
, con la nica funcin de escuchar la lnea en espera
de una llamada. Cuando sta se recibe, el detector de llamada enva una seal de
activacin y el sistema pasa al modo activo, en el que tiene plena capacidad de
operacin y un consumo de potencia P
max
.
Para que el sistema pueda funcionar de forma autnoma alimentndose a travs de la
lnea, su consumo medio deber ser inferior a la energa que es capaz de proporcionar
sta. El origen del problema est en el hecho de que P
max
> P
BC
y por ello vamos a
necesitar de un mdulo que almacene toda la energa disponible para que nuestro equipo
vaya extrayndola segn precise. El primer requisito que debe cumplir el sistema para
que haya almacenamiento neto es que P
min
< P
BA
. Adems deber verificarse el
siguiente balance energtico:
Energa consumida s Energa suministrada

Si partimos de la suposicin inicial de que el nico trfico que soporta la lnea es el
asociado a la aplicacin de telemando y que su valor medio en un periodo (T) de un da
(24 horas) es a, las energas puestas en juego son:
1. Energa consumida = [(1-a)P
min
+ aP
max
]T
2. Energa suministrada = [(1-a)P
BA
+ aP
BC
]T
El balance energtico es una funcin del trfico soportado y habr un valor umbral por
encima del cual no se cumple.
El trfico mximo soportado es:
[(1-a)P
min
+ aP
max
]T s [(1-a)P
BA
+ aP
BC
]T
a(P
max
- P
min
+ P
BA
- P
BC
) s P
BA
- P
min

( ) ( )
min BC BA max
min BA
P P P P
P - P
+ +
s a
Como no disponemos de datos reales de consumo del equipo estableceremos unos
mrgenes razonables para el funcionamiento del mismo:
237
50mW s P
min
s 100mW
5W s P
max
s 10W
En el caso peor, en que P
min
= 100mW y P
max
=10W, el trfico mximo soportado es:
a
max
= 0.012 Erlang,
En el otro extremo, P
min
= 50mW y P
max
=5W, obtendremos un trfico mximo
aceptable de:
a
max
= 0.037 Erlang.
Por tanto, dependiendo de las medidas reales de consumo que efectuemos, tendremos
un balance energtico favorable dentro de los siguientes mrgenes de trfico ofrecido:
a s a
max

0.012 s a
max
s 0.037
Los valores entre los que se mueve a
max
se corresponden con el trfico tpico de un
usuario domstico que no accede a la red Internet.
Las funciones de telemando en un entorno domstico generan un trfico muy pequeo,
ya que estaramos hablando de acciones como conectar o desconectar la calefaccin,
aire acondicionado, alarmas, electrodomsticos, y, por tanto, verificaran los requisitos
de trfico.
Tambin se podra pensar en nuevas funciones como la telemetra, proporcionando el
conjunto de mediciones para las que se haya diseado cada vez que se llama al equipo.
Una aplicacin podra ser la de pequeas estaciones meteorolgicas.
En cuanto al trfico permitido y, siempre que la complejidad no elevase el consumo del
equipo por encima de los mrgenes especificados, podra llegar a utilizarse para
funciones de mensajera domstica (contestador automtico).
II.4.2 Dimensionado de la batera
A la hora de escoger el tamao de la batera debemos considerar el modo en el que se va
a usar el dispositivo. El caso peor sera aqul en que todo el consumo se realiza en una
nica vez de forma continuada y el resto del da se recarga la batera; por el contrario, el
caso mejor sera aqul en que el consumo se hace de forma equiespaciada con una
pequea duracin del mismo.
238
Veamos dos ejemplos para ilustrar lo dicho: queremos comparar la capacidad que
requeriran sendas bateras para alimentar un equipo de 6W que soporta un trfico
medio diario de a = 0,005 < a
max
, en los casos:
a) Un nico consumo
En este caso la operacin del telemando dura 24 60 0.005 = 7.2 minutos y
la energa consumida es 67.2 / 60= 720 mWh.
b) Consumos equiespaciados de duracin 30 segundos:
Los 7.2 minutos de consumo se dividen en fracciones de 30 segundos, con lo
que resulta un total de 7.230/60 = 14.4 operaciones de telemando, lo que se
traduce en una operacin de telemando cada 100 minutos. Como el trfico
est por debajo del umbral, la batera se recarga completamente entre cada
par de operaciones. La energa consumida en cada operacin es 630 / 3600 =
50 mWh.
Como podemos observar, en el primer caso precisamos una batera con una capacidad
del orden de 15 veces superior. Otro parmetro fundamental para elegir la batera
adecuada es la corriente mxima que es capaz de suministrar, que debe ser superior a la
que consume el equipo.
II.4.3 Otros aspectos a considerar
Otro aspecto importante es la rentabilidad de esta solucin en cuanto a complejidad.
Dependiendo de la aplicacin a que se destine y de la posibilidad de usar un regulador y
fuente convencionales puede merecer o no la pena usar este medio de alimentacin. Por
ejemplo, si estamos diseando un telfono puede ser importante obtener la alimentacin
de la propia lnea y no condicionar su uso a la disponibilidad de un enchufe adicional.
En el caso de un equipo de telemetra aislado tambin puede merecer la pena el aumento
de complejidad, frente al coste de llevar una lnea de alimentacin al punto de medicin.
Otro ejemplo podra ser el de un programador para calefaccin o aire acondicionado que
permita la conexin/desconexin a travs del telfono. Si ste va incorporado en el
aparato, es mejor alimentarlo convencionalmente ya que disponemos de otra
alimentacin alternativa, pero si se comercializa como accesorio aislado habra que
valorar si conviene condicionar el uso a la existencia de un enchufe cercano. Otra
alternativa nada despreciable cuando el consumo es bajo es el uso de pilas, ya que en un
239
entorno domstico la operacin de cambiar las pilas una o dos veces al ao es ms
fcilmente aceptada que la de colocar un enchufe cerca.
240
Apndice III
Estudios previos para el desarrollo de un
mdem de red elctrica
Tal y como se adelant en la introduccin, sta es una solucin muy interesante y por
ello ha sido objeto de algunos estudios. Cualquier dispositivo sensor o actuador remoto
necesita de una alimentacin elctrica. Salvo aquellos diseos cuyo consumo sea muy
pequeo y puedan ser alimentados con pilas, lo normal ser tomar la alimentacin de la
red. Pues bien, si existe la necesidad de una conexin fsica a la red elctrica, parece
razonable utilizarla como medio de transmisin. El prototipo no se ha llevado a cabo
debido a que no se han resuelto los problemas de seguridad elctrica de una forma
satisfactoria.
III.1 Introduccin
En el mercado existen algunos circuitos integrados que implementan la funcin de
modem para red elctrica y que se pueden utilizar para la construccin de algn
prototipo.
En la tabla 1 se detallan los mismos:
REFERENCIA FABRICANTE DENOMINACIN PRECIO
PL513/TW523 X-10 Inc. Interfaz de lnea elctrica -----------------
LM1893 National Transceptor para lnea de alimentacin 18,30
TDA5051A Philips Modem para automatizacin domstica 13,40
Tabla 1 Dispositivos para la comunicacin a travs de la red elctrica.
En cuanto a los sistemas comerciales encontrados, se puede observar lo siguiente:
El PL513/TW523 del fabricante X-10 Inc. no ha sido posible
localizarlo ni obtener la documentacin tcnica necesaria.
El circuito TDA5051 de Philips es una buena solucin que permite la
comunicacin full-duplex con un precio bastante asequible. Utiliza
una modulacin ASK a 132 Khz y soporta una velocidad de
transmisin de hasta 1200 baudios. La tensin de alimentacin es de
5V. El inconveniente que presenta es que slo se fabrica con
241
encapsulado SMD y sera necesario encargar placas con el chip
montado, encareciendo as el conjunto.
El circuito LM1893 de National permite la comunicacin full-duplex.
Utiliza una modulacin FSK, por lo que presenta una buena
inmunidad al ruido y permite velocidades de transmisin de hasta
4800 baudios. La frecuencia de la portadora se puede seleccionar
entre 50 Khz y 300 Khz, aunque se recomienda un valor de 125 Khz.
La tensin de alimentacin se admite en un margen entre 15 y 30 V.
Se fabrica con el encapsulado estndar MDIP (Molded Dual In-line
Package).
Tanto el LM1893 como el TDA5051 son dispositivos que las tiendas del sector
consultadas no tienen en stock. Es posible obtenerlos por encargo a partir de 25
unidades.
III.2 Mdem para red elctrica
Debido a la dificultad de conseguir estos circuitos, se pens en la posibilidad de disear
un modem utilizando componentes discretos.
Entre los diferentes aspectos que dificultan el desarrollo de un sistema de
comunicaciones a travs de la red elctrica, el ruido presente en el canal es el ms
importante. Los diferentes elementos conectados la red, como motores, lmparas
fluorescentes, reguladores a base de tiristores, apagados y encendidos de interruptores
etc., generan ruido de diferentes caractersticas, como son el ruido impulsivo y el ruido
tonal.
Para comunicar a travs de la red elctrica lo haremos modulando una seal a una
frecuencia lo suficientemente alejada de la propia de la red y de los ruidos tpicos de
sta. Para determinar la frecuencia de transmisin ms adecuada sera necesario
caracterizar tanto el ruido de la red como la propia lnea elctrica. Para ello es necesario
utilizar transformadores que permitan el paso de un margen amplio de frecuencias, ya
que el osciloscopio no puede conectarse directamente a la red.
Los dispositivos que para este fin existen en el mercado realizan la modulacin en
frecuencias que oscilan entre los 50 Khz y los 150 Khz, siendo usual el uso de una
frecuencia de entre 125 y 135 Khz. Se ha optado, a partir de estos datos, por utilizar una
242
frecuencia de 130 Khz considerando que los fabricantes han realizado los estudios
suficientes para determinar su adecuacin, sin perjuicio de que, de una caracterizacin
completa del medio de transmisin, resultase ms conveniente la utilizacin de otra
frecuencia.
Entre las diferentes modulaciones a considerar se pens por razones de sencillez en FSK
y en ASK. La primera presenta una mayor inmunidad al ruido que la segunda a costa de
aumentar la complejidad. El modulador ASK es bastante ms sencillo de implementar y
presenta la ventaja de que la informacin se va a transmitir en la frecuencia de modo
que estar presente la portadora para transmitir un 1 y ausente para transmitir un 0,
por lo que las fluctuaciones en la amplitud de la seal no van a afectar a la informacin,
siempre y cuando se mantengan dentro de unos lmites. La amplitud de la seal que se
aplicar a la red elctrica es de 1 Vrms., que es la que aplica el fabricante Philips en la
modulacin ASK que implementa el circuito TDA5051.
Al no existir una caracterizacin del medio de transmisin es difcil predecir la
velocidad que se va a poder alcanzar, en principio se va a suponer que es de 500
baudios. Durante la fase de pruebas se podr corregir este valor segn los resultados.
La conexin de un circuito a la red elctrica conlleva un importante problema de
seguridad elctrica. Trabajar con un prototipo de laboratorio en el que los terminales
estn al aire con tensiones de red supone un peligro y un riesgo que es necesario
eliminar. El circuito de acoplo a la red elctrica debe aislar la parte de transmisin de
datos de la corriente alterna de la red. Esto se hace mediante el filtrado con un simple
circuito LC. En caso de fallo de alguno de los componentes del filtro, la tensin de red
podra pasar a nuestro circuito con el consiguiente peligro de manipulacin. Para poder
disponer de una adecuada seguridad es necesario intercalar un transformador de
aislamiento y separar fsicamente la parte de red colocndola en un circuito aparte
debidamente aislado, de modo que el circuito que se manipula recibe la salida del
transformador de aislamiento.



243
III.2.1 Estructura de bloques del transmisor
- Figura 1 Diagrama de bloques del transmisor.
Conceptualmente el modelo de transmisor es muy sencillo. Se dispone de un oscilador a
la frecuencia de modulacin que genera una onda cuadrada. La forma de modular la
seal en banda base es mediante la conmutacin ON/OFF del oscilador. A continuacin
un amplificador ajustable para la adaptacin de nivel de la seal y por ltimo se filtra la
seal para que se parezca bastante a un tono puro y se inyecta en la red a travs del
separador de red.
III.2.2 Estructura de bloques del receptor
- Figura 2 Diagrama de bloques del receptor.
En recepcin, la seal que llega del separador de red se filtra para dejar slo la banda de
inters. Antes de entrar en el demodulador se procede a una adaptacin de nivel. La
demodulacin se realiza mediante un detector de envolvente y, por ltimo, se hace pasar
la seal por dos inversores con histresis (Schmitt-Trigger) para conformar la seal.
III.2.3 Estructura de bloques de un conjunto transceptor
La necesidad de disponer en un mismo punto de un transmisor y un receptor para
transmitir comandos y recibir confirmaciones o viceversa es algo bastante comn.
Cuando se enva un comando a un actuador remoto es necesario que ste confirme la
recepcin del mismo, ya que, de no ser as, el sistema tendra siempre una incertidumbre
sobre la ejecucin o no del mismo. Tan slo en algunos dispositivos, como pueden ser
los de telemetra con envo peridico de medidas, no se precisa de confirmacin ya que
es el propio sistema el que detecta el problema cuando transcurren varios periodos sin
haber recibido la medida correspondiente.
244
Como el medio es compartido por los dos sentidos de transmisin, si se quiere
implementar una comunicacin full duplex ser necesario multiplexar las seales.
Afortunadamente para la mayora de las aplicaciones domticas con una comunicacin
semi-duplex es suficiente y no se requiere elevar la complejidad del sistema.
El sistema que se desea implementar va a ser semi-duplex. Las dos estructuras anteriores
tienen en comn el separador de red y el filtro paso banda. Por ello, se propone
compartir estos dos mdulos utilizando un conmutador electrnico que conecte
alternativamente el filtro y el separador de red a cada semicircuito.
- Figura 3 Diagrama de bloques del transceptor semi-duplex.
III.3 Descripcin del transceptor
- Figura 4 Transceptor semi duplex para red elctrica.

245
La solucin propuesta est contenida en el esquema general de la figura 3. Cada uno de
los mdulos que lo forman se describen en su correspondiente apartado.
III.3.1 Mdulos comunes
Los mdulos compartidos por el transmisor y el receptor son el separador de red, el
filtro paso banda y el conmutador.
III.3.1.1 Separador de red
Durante el montaje y manipulacin de este mdulo debe ponerse especial cuidado ya
que recibe directamente la tensin de la red. Este mdulo es necesario montarlo en un
circuito aparte y proceder a su aislamiento introducindolo en una caja de plstico o
similar.
- Figura 5 - Circuito separador de red.
El transformador es el elemento que aporta el adecuado aislamiento elctrico al separar
fsicamente la parte de red de la parte de usuario. No se trata de un transformador
convencional ya que tiene que permitir el paso de la seal modulada a 130 Khz.
Tambin cuenta con otros elementos de proteccin, que son:
Un fusible de 50 mA a la entrada.
Un filtro paso alto formado por un circuito LC serie a la entrada
destinado a suprimir antes del transformador la tensin de red. La
frecuencia de corte de la red LC es:

Un filtro paso alto formado por un circuito LC paralelo a la salida del
transformador con una frecuencia de corte de 107.3 Khz.
Un diodo zener de 5 V. para proteger de cualquier sobretensin de la
red que no haya sido eliminada por los anteriores filtros.
Khz
LC
f
c
85 . 33
2
1
= =
t
246
Con todo esto el circuito es capaz de garantizar la transmisin de las seales de inters
garantizando unos niveles de aislamiento y seguridad adecuados.
III.3.1.2 Filtro paso banda
Para el filtrado paso banda se ha optado por un filtro de segundo orden (estructura de
Rausch).
- Figura 6 Filtro paso banda.
Las caractersticas vienen dadas por las expresiones siguientes:

III.3.1.3 Conmutador
Para poder compartir el filtro y el separador de red es necesario conmutar la posicin
del filtro para que, en el caso del receptor, reciba la seal de la red y entregue la seal
filtrada al adaptador de nivel del receptor para su demodulacin, y en el caso del
transmisor reciba la seal del modulador y la entregue al separador para su insercin en
la red. Se va a utilizar el circuito integrado CD4053 que es un switch bidireccional que
por su configuracin puede usarse como conmutador de tres terminales, uno de ellos
comn.





Khz
R R C
f
c
6 . 132
2
1
3 2
=

=
t
5
2
3 2
3
= =
R R
R
Q
2 1
100 R R =
247
- Figura 7 Diagrama de bloques del CD4053 (extrado del catlogo de National).
Este circuito va a permitir controlar el modo de funcionamiento con una nica seal
TX/RX aplicada a los switches.
III.3.2 Mdulos del transmisor
Los mdulos de la parte de transmisin son el modulador y un adaptador de nivel.
III.3.2.1 Modulador
El modulador se ha implementado de una forma extremadamente sencilla. Se trata de un
oscilador conectado a uno de los conmutadores del CD4053, de modo que conectando y
desconectando el switch se conmuta la portadora.
El oscilador se ha implementado con un 555 en configuracin aestable. Como la seal
generada es una onda cuadrada, es necesario su posterior filtrado para conseguir algo
parecido a un tono senoidal.
- Figura 8 Modulador.

248
III.3.2.2 Adaptador de nivel
Como el 555 genera una seal con amplitud suficiente es necesario incorporar un
atenuador formado por un simple divisor de tensin variable conectado a un seguidor de
tensin.
III.3.3 Mdulos del receptor
- Figura 9 Modulador.

III.3.3.1 Adaptador de nivel
El adaptador de tensin es un amplificador no inversor con una ganancia de 30dB con
un divisor variable de tensin a la entrada. Tiene por objeto ajustar el nivel ptimo para
el detector de envolvente usado para la demodulacin de la seal.
III.3.3.2 Demodulador
La demodulacin se hace con un detector de envolvente basado en un rectificador de
media onda con carga RC. Para que la tensin caiga slo un 10 % durante el tiempo de
descarga debe tener una constante de tiempo de:
s
f
t 5 . 36
9 . 0 ln
2 / 1
= =
Como t = RC, se han escogido los siguientes valores: R =120 KO y C = 330pF, con lo
que t = 39.6 s.
El tiempo que tarda la seal en alcanzar el 10 % de su valor una vez finalizado el pulso
es:
91 1 . 0 ln = = t t s que es el 4.5 % de la duracin de un bit.
249
III.3.3.3 Conformador de seal
Para la conformacin de la seal se aplican dos inversores con histresis 74LS14 para
no invertir la lgica de la seal.
III.4 Observacin finales
No ha sido posible encontrar en tiendas de componentes transformadores adecuados
para el aislamiento de la lnea. El Newport 76250 se poda adquirir bajo pedido mnimo
de 50 unidades. Se pens en la posibilidad de realizar el aislamiento por filtrado pero no
pareca adecuado para unas prcticas de laboratorio debido al peligro que entraaba.

250
Bibliografa

Los siguientes libros, manuales de usuario, artculos y catlogos, ordenados por orden
alfabtico, han sido utilizados como documentacin de consulta y/o referencia en la
realizacin de este PFC:

[Crdoba, 1999]: R. de Crdoba, Temporizador de Propsito General, GPT.
Transparencias, 1999.
[Darley, 1995]: S. Darley, M. Maiolani y C. Melear, An Introduction to the
MC68332. Motorola Semiconductor Device Tutorial, 1995. http://www.motorola.com
[Hernando, 1991]: J.M. Hernando Rbanos, Transmisin por Lnea y Redes. Madrid:
E.T.S.I. Telecomunicacin, 1991.
[ISD, 1996]: Voice Record and Playback ICs. ISD Data Book, 1996.
[Kelly-Bootle, 1989]: S. Kelly-Bootle B. Fowler, 68000/68010/68020 Arquitectura y
programacin en ensamblador. Madrid: Anaya Multimedia, 1989.
[Mata, 1999]: N.G. Mata, Filtros de Onda Acstica Superficial Saw. Universidad
Tecnolgica Nacional F.R. Baha Blanca - Departamento Electrnica Ctedra de
Electrnica Aplicada III.
[Montero, 1999]: J.M. Montero Martnez, Mdulo de Integracin de Sistemas: SIM,
1999.
[Motorola #1, 1996]: MC68331 Users Manual. http://www.motorola.com
[Motorola #2, 1996]: CPU 32 Reference Manual. http://www.motorola.com
[Motorola #3, 1996]: QSM Queued Serial Module. Reference Manual.
http://www.motorola.com
[Motorola #4, 1995]: GPT General-Purpose Timer. Reference Manual.
http://www.motorola.com
[Snchez, 1994]: D. Snchez Maqueda, Domtica: Tecnologa y Calidad de Vida.
Apfelsine, S.L. Montajes e Instalaciones, 1994. http://www.energuia.es
251
[Telefnica, 2001]: Red Telefnica Pblica con Conmutacin. Interfaz de Lnea
Analgica. Caractersticas Tcnicas de las Interfaces de Telefnica de Espaa, S.A.U.
http://www.telefonica.es/interfaces/doc_pdf/iteca001_v2.pdf
V
NDICE DE CONTENIDO
1. TELECONTROL Y MICROCONTROLADORES ............................................... 1
1.1 INTRODUCCIN ............................................................................................................................ 1
1.1.1 SERVICIOS DOMTICOS .............................................................................................................. 4
1.1.1.1 Gestin del sistema de calefaccin y refrigeracin .............................................................. 4
1.1.1.2 Estadsticas de consumo ....................................................................................................... 4
1.1.1.3 Control de las tomas elctricas ............................................................................................ 4
1.1.1.4 Control de las persianas y toldos ......................................................................................... 5
1.1.1.5 Control de la iluminacin exterior ....................................................................................... 5
1.1.1.6 Control del riego en jardn y jardineras ............................................................................... 5
1.1.1.7 Gestin de la piscina ............................................................................................................ 5
1.1.1.8 Gestin de la alarma antiintrusin ....................................................................................... 5
1.1.1.9 Control de accesos................................................................................................................ 5
1.1.1.10 Gestin de la alarma mdica/pnico ............................................................................... 6
1.1.1.11 Gestin de la alarma de incendio .................................................................................... 6
1.1.1.12 Gestin de la alarma de inundacin ................................................................................ 6
1.1.1.13 Gestin de la alarma de monxido de carbono ............................................................... 6
1.1.1.14 Supervisin de la temperatura del congelador ................................................................ 6
1.1.1.15 Transmisor telefnico ...................................................................................................... 6
1.1.1.16 Distribucin de audio ...................................................................................................... 7
1.1.2 LAS REDES DE COMUNICACIONES ............................................................................................... 7
1.1.2.1 Comunicacin almbrica ..................................................................................................... 8
1.1.2.1.1 Cableado especfico .................................................................................................................. 8
1.1.2.1.2 Utilizacin de la red elctrica .................................................................................................... 8
1.1.2.2 Comunicacin inalmbrica .................................................................................................. 9
1.1.2.2.1 Transmisin por radio ............................................................................................................... 9
1.1.2.2.2 Transmisin ptica por infrarrojos ............................................................................................ 9
1.1.3 SISTEMAS BASADOS EN UN MICROCONTROLADOR ...................................................................... 9
1.1.3.1 El microcontrolador Motorola MC68331 ............................................................................ 9
1.1.4 OBJETIVOS ............................................................................................................................... 11
2. MONTAJE Y DESCRIPCIN DE LA PLACA ENTRENADORA BASADA EN
EL MICROCONTROLADOR MOTOROLA 68331 ........................................... 12
2.1 ANTECEDENTES .......................................................................................................................... 12
2.2 INSTRUCCIONES DE MONTAJE .............................................................................................. 13
2.2.1 MICROCONTROLADOR .............................................................................................................. 14
2.2.2 REGULADOR DE TENSIN ......................................................................................................... 14
2.2.3 REPLANTEO GENERAL DEL CIRCUITO ....................................................................................... 16
VI
2.2.4 CIRCUITO DE RELOJ .................................................................................................................. 16
2.2.5 FILTROS DE RELOJ DEL SISTEMA ............................................................................................... 17
2.2.6 CIRCUITO DE CONFIGURACIN DEL MICRO ............................................................................... 17
2.2.7 RESET DEL SISTEMA .................................................................................................................. 19
2.2.8 RESISTENCIAS DE PULL-UP ....................................................................................................... 21
2.2.9 ALIMENTACIN DEL MICROCONTROLADOR .............................................................................. 21
2.2.10 PRUEBA DE FUNCIONAMIENTO ................................................................................................. 22
2.2.11 COMUNICACIN BDM (BACKGROUND DEBUG MODE) ............................................................. 23
2.2.12 MEMORIA ................................................................................................................................. 25
2.2.13 COMUNICACIN SERIE.............................................................................................................. 26
2.3 DESCRIPCIN DE FUNCIONAMIENTO ................................................................................. 30
2.3.1 MDULO DE INTEGRACIN DE SISTEMAS (SIM) ....................................................................... 30
2.3.1.1 Terminales del SIM ............................................................................................................. 31
2.3.1.2 Subsistema de configuracin y proteccin ......................................................................... 32
2.3.1.2.1 Ubicacin de los registros en memoria.................................................................................... 32
2.3.1.2.2 Configuracin tras el Reset...................................................................................................... 32
2.3.1.2.3 Arbitraje de interrupciones ...................................................................................................... 33
2.3.1.2.4 Supervisin del bus externo durante trasferencias internas ..................................................... 33
2.3.1.2.5 Modo Verificacin en fbrica. ................................................................................................. 34
2.3.1.2.6 Accesibilidad de los registros del SIM .................................................................................... 34
2.3.1.2.7 Causa del ltimo Reset ............................................................................................................ 34
2.3.1.2.8 Supervisin del Bus Interno .................................................................................................... 35
2.3.1.2.9 Supervisin de Parada (Halt) .................................................................................................. 35
2.3.1.2.10 Supervisin de interrupciones espreas ................................................................................... 35
2.3.1.2.11 Supervisin SW ....................................................................................................................... 36
2.3.1.2.12 Interrupciones peridicas: el PIT............................................................................................. 36
2.3.1.2.13 Funcionamiento en bajo consumo ........................................................................................... 38
2.3.1.2.14 Funcionamiento durante la depuracin.................................................................................... 38
2.3.1.3 Reloj del sistema ................................................................................................................. 39
2.3.1.3.1 Reloj del sistema externo ........................................................................................................ 39
2.3.1.3.2 Reloj de referencia externo...................................................................................................... 39
2.3.1.3.3 Generacin de reloj para un bus externo sncrono ................................................................... 40
2.3.1.3.4 Generacin de reloj en bajo consumo ..................................................................................... 40
2.3.1.3.5 Supervisin del reloj de referencia .......................................................................................... 40
2.3.1.4 Interfaz del bus externo asncrono: EBI ............................................................................. 40
2.3.1.4.1 Temporizacin del bus externo ............................................................................................... 41
2.3.1.4.2 Tamao dinmico del bus de datos ......................................................................................... 41
2.3.1.4.3 Los cdigos de funcin ........................................................................................................... 42
2.3.1.4.4 Puntos de ruptura..................................................................................................................... 43
2.3.1.4.5 Cesin del bus ......................................................................................................................... 43
2.3.1.5 Interrupciones ..................................................................................................................... 44
2.3.1.5.1 Fuentes de interrupcin externas ............................................................................................. 44
VII
2.3.1.5.2 Arbitraje de interrupciones simultneas .................................................................................. 44
2.3.1.5.3 Ciclo de reconocimiento y confirmacin de una interrupcin externa .................................... 44
2.3.1.6 Lgica de direcciones ......................................................................................................... 45
2.3.1.6.1 Registros de configuracin de la lgica de direcciones: CSBORBT y CSOR0..CSOR10 ...... 45
2.3.1.6.2 Registros de configuracin de la direccin base: CSBARBT y CSBAR0..CSBAR10 ............ 46
2.3.1.7 Inicializacin del SIM ......................................................................................................... 47
2.3.2 TEMPORIZADOR DE PROPSITO GENERAL (GPT) ...................................................................... 49
2.3.2.1 Registros del GPT y mapa de direcciones .......................................................................... 50
2.3.2.2 Funcionamiento por polling o por interrupciones ......................................................... 50
2.3.2.2.1 Funcionamiento por polling ................................................................................................. 51
2.3.2.2.2 Interrupciones del GPT ........................................................................................................... 52
2.3.2.3 Descripcin de los terminales ............................................................................................ 53
2.3.2.3.1 Terminales de captura de entradas (IC[1:3]) ........................................................................... 53
2.3.2.3.2 Terminal de captura de entrada / comparacin de salida (IC4/OC5) ....................................... 53
2.3.2.3.3 Terminales de comparacin de salidas (OC[1:4]) ................................................................... 54
2.3.2.3.4 Terminal de entrada del acumulador de pulsos (PAI) ............................................................. 54
2.3.2.3.5 Terminales de modulacin de ancho de pulso (PWMA, PWMB) ........................................... 54
2.3.2.3.6 Entrada auxiliar de reloj del temporizador (PCLK) ................................................................. 54
2.3.2.4 E/S de propsito general .................................................................................................... 54
2.3.2.5 Preescalador ....................................................................................................................... 55
2.3.2.6 Unidad de captura/comparacin ........................................................................................ 57
2.3.2.6.1 Contador del Temporizador..................................................................................................... 57
2.3.2.6.2 Funciones de captura de entradas ............................................................................................ 58
2.3.2.6.3 Funciones de comparacin de salidas ...................................................................................... 59
2.3.2.6.3.1 Comparacin de salida 1 .................................................................................................... 60
2.3.2.6.3.2 Comparacin de salida forzada .......................................................................................... 60
2.3.2.6.4 Captura de entrada 4 / Comparacin de salida 5 ..................................................................... 60
2.3.2.7 Acumulador de pulsos ........................................................................................................ 61
2.3.2.8 Unidad de modulacin de ancho de pulso .......................................................................... 62
2.3.2.8.1 Contador PWM ....................................................................................................................... 62
2.3.2.8.2 Funcin PWM ......................................................................................................................... 63
2.3.3 UNIDAD CENTRAL DE PROCESO (CPU32) ................................................................................. 64
2.3.3.1 Registros de la CPU32 ....................................................................................................... 65
2.3.3.2 Modos de direccionamiento ................................................................................................ 67
2.3.3.2.1 Nuevos modos de direccionamiento ........................................................................................ 67
2.3.3.3 Instrucciones de la CPU32 ................................................................................................. 67
2.3.3.3.1 Nuevas instrucciones ............................................................................................................... 68
2.3.3.4 Depuracin en segundo plano (BDM) ................................................................................ 69
2.3.4 MDULO DE COMUNICACIONES SERIE (QSM) .......................................................................... 70
2.3.4.1 Registros generales del QSM .............................................................................................. 70
2.3.4.1.1 Atencin a las interrupciones .................................................................................................. 71
2.3.4.2 Registros de control de los terminales del QSM ................................................................. 71
2.3.4.3 Interfaz de Comunicacin Serie (SCI) ................................................................................ 72
VIII
2.3.4.4 Registros de SCI ................................................................................................................. 72
2.3.4.4.1 Registros de control ................................................................................................................. 72
2.3.4.4.2 Registro de estado ................................................................................................................... 72
2.3.4.4.3 Registro de datos ..................................................................................................................... 73
2.3.4.5 Terminales de la SCI .......................................................................................................... 73
2.3.4.6 Funcionamiento de la SCI .................................................................................................. 73
2.3.4.6.1 Definiciones ............................................................................................................................ 73
2.3.4.6.2 Formatos de transmisin serie ................................................................................................. 74
2.3.4.6.3 Reloj de transmisin ................................................................................................................ 74
2.3.4.6.4 Comprobacin de paridad ....................................................................................................... 75
2.3.4.6.5 Funcionamiento del transmisor ............................................................................................... 75
2.3.4.6.6 Funcionamiento del receptor ................................................................................................... 77
2.3.4.6.7 Deteccin de lnea desocupada ................................................................................................ 78
3. CONTROL DE UN DISPLAY LCD DE MODO TEXTO ................................... 80
3.1 DESCRIPCIN GENERAL .......................................................................................................... 80
3.2 FUNCIONAMIENTO DEL DISPLAY .......................................................................................... 81
3.2.1 ALIMENTACIN Y CONTROL DE CONTRASTE ............................................................................ 82
3.2.2 LA PANTALLA Y LOS CARACTERES ........................................................................................... 82
3.2.3 LA MEMORIA DEL DISPLAY .................................................................................................... 83
3.2.3.1 Display Data RAM (DDRAM) ............................................................................................ 83
3.2.3.2 Character Generator RAM (CGRAM) ................................................................................ 84
3.2.4 SEALES DE CONTROL Y REGISTROS INTERNOS ........................................................................ 86
3.2.4.1 Seales de control ............................................................................................................... 86
3.2.4.2 Registros internos ............................................................................................................... 87
3.2.5 CONJUNTO DE INSTRUCCIONES ................................................................................................. 88
3.2.5.1 Borrar display, Clear Display ........................................................................................ 88
3.2.5.2 Cursor a inicio, Return Home ........................................................................................ 88
3.2.5.3 Establecer modo de trabajo, Entry Mode Set ................................................................. 89
3.2.5.4 Control ON/OFF del display .............................................................................................. 89
3.2.5.5 Desplazamiento del cursor o display .................................................................................. 89
3.2.5.6 Establecer modo de interfaz, Function Set ..................................................................... 90
3.2.5.7 Fijar direccin de CGRAM ................................................................................................ 90
3.2.5.8 Fijar direccin de DDRAM ................................................................................................ 91
3.2.5.9 Escritura de datos en la CGRAM o DDRAM ..................................................................... 91
3.2.5.10 Lectura de datos de la CGRAM o DDRAM ................................................................... 91
3.2.6 SECUENCIA TPICA DE INICIALIZACIN DEL LCD ..................................................................... 91
3.2.7 FORMAS DE CONEXIN A UN MICROCONTROLADOR ................................................................. 92
3.2.7.1 Longitud del bus de datos ................................................................................................... 92
3.2.7.2 Modos de control del LCD ................................................................................................. 93
IX
3.3 EJEMPLOS DE CONTROL DEL LCD CON EL MICRO MC68331 ...................................... 94
3.3.1 EJEMPLO DE CONTROL EN BUCLE ABIERTO ............................................................................... 94
3.3.1.1 Descripcin de la aplicacin de control ............................................................................. 94
3.3.1.2 Descripcin de la conexin y modo de control ................................................................... 95
3.3.1.3 Implementacin en cdigo ensamblador del programa de control .................................... 95
3.3.1.3.1 Observaciones sobre el ajuste de parmetros ........................................................................ 109
3.3.1.3.1.1 Ajuste de la seal de activacin, Enable. ...................................................................... 109
3.3.2 EJEMPLO DE CONTROL EN BUCLE CERRADO ........................................................................... 110
3.3.2.1 Descripcin de la aplicacin de control ........................................................................... 110
3.3.2.2 Descripcin de la conexin y modo de control ................................................................. 110
3.3.2.3 Implementacin en cdigo ensamblador del programa de control .................................. 111
3.4 ANEXO I ....................................................................................................................................... 125
4. CONTROL DE UN TECLADO MATRICIAL ................................................... 127
4.1 DESCRIPCIN ............................................................................................................................ 127
4.2 ALGORITMO DE RECONOCIMIENTO DE TECLAS ......................................................... 128
4.3 CONEXIN AL MICROCONTROLADOR MC68331............................................................ 128
4.4 RUTINA BSICA DE ATENCIN AL TECLADO ................................................................. 129
4.5 ANEXO EJEMPLOS DE USO DEL TECLADO ................................................................... 130
4.5.1 EJEMPLO 1 PROGRAMA BSICO DE ATENCIN AL TECLADO ................................................ 130
4.5.2 EJEMPLO 2 USO COMBINADO CON UN DISPLAY LCD ............................................................ 136
5. REPRODUCTOR DE MENSAJES BASADO EN ELDISPOSITIVO ISD25XX ........................ 153
5. REPRODUCTOR DE MENSAJES BASADO EN EL DISPOSITIVO
ISD25XX .................................................................................................................. 153
5.1 DESCRIPCIN GENERAL ........................................................................................................ 153
5.1.1 LA MEMORIA EEPROM DE ISD25XX ................................................................................... 153
5.2 DESCRIPCIN DE LAS SEALES Y DEL PATILLAJE ...................................................... 154
5.2.1 ALIMENTACIN (V
CCA
, V
CCD
, V
SSA
, V
SSD
) ............................................................................. 154
5.2.2 ENTRADA DE CORTE DE CORRIENTE (PD - POWER DOWN) ....................................................... 154
5.2.3 ENTRADA PARA HABILITAR CIRCUITO (CE CHIP ENABLE) .................................................... 155
5.2.4 ENTRADA DE REPRODUCCIN/GRABACIN (P/R PLAYBACK/RECORD) ................................. 155
5.2.5 SEAL DE FIN DE MENSAJE Y DE FUNCIONAMIENTO (EOM) ................................................... 155
5.2.6 SEAL DE DESBORDAMIENTO (OVF) ..................................................................................... 155
5.2.7 ENTRADA DE MICRFONO (MIC) ........................................................................................... 155
5.2.8 ENTRADA DE REFERENCIA DE MICRFONO (MIC REF) .......................................................... 156
5.2.9 ENTRADA DEL CONTROL AUTOMTICO DE GANANCIA (AGC) .............................................. 156
X
5.2.10 SALIDA ANALGICA (ANA OUT) .......................................................................................... 156
5.2.11 ENTRADA ANALGICA (ANA IN) .......................................................................................... 156
5.2.12 ENTRADA DE RELOJ EXTERNO (XCLK) .................................................................................. 156
5.2.13 SALIDAS DE ALTAVOZ (SP+ Y SP-) ........................................................................................ 157
5.2.14 ENTRADA AUXILIAR (AUX IN) .............................................................................................. 157
5.2.15 ENTRADAS DE DIRECCIN Y MODO (AX/MX) ........................................................................ 157
5.3 MODOS DE FUNCIN ............................................................................................................... 157
5.4 DESCRIPCIN DE LOS MODOS DE FUNCIN ................................................................... 158
5.4.1 M0 BSQUEDA DE MENSAJE ................................................................................................ 158
5.4.2 M1 BORRADO DE LOS MARCADORES DE FIN DE MENSAJE .................................................... 158
5.4.3 M2 SIN USO ......................................................................................................................... 158
5.4.4 M3 REPETICIN DE MENSAJE .............................................................................................. 158
5.4.5 M4 DIRECCIONAMIENTO CONSECUTIVO .............................................................................. 158
5.4.6 M5 ACTIVACIN POR NIVEL DE LA ENTRADA CE ................................................................ 159
5.4.7 M6 PULSAR BOTN ............................................................................................................. 159
5.4.7.1 Entrada CE (START/PAUSE) ........................................................................................... 159
5.4.7.2 Entrada PD (STOP/RESET) ............................................................................................. 159
5.4.7.3 Salida EOM (RUN) ........................................................................................................... 159
5.5 EL MODO PULSAR BOTN (GRABACIN Y REPRODUCCIN) ................................... 159
5.5.1 PROCESO DE GRABACIN EN EL MODO PULSAR BOTN ......................................................... 160
5.5.2 PROCESO DE REPRODUCCIN EN EL MODO PULSAR BOTN .................................................... 160
5.5.3 ESQUEMA DE CONEXIN. ......................................................................................................... 161
5.6 CONEXIN AL MICROCONTROLADOR MC68331............................................................ 162
6. TRANSCEPTOR DIGITAL DE DATOS POR RADIO .................................... 170
6.1 INTRODUCCIN ........................................................................................................................ 170
6.1.1 TRANSMISOR .......................................................................................................................... 170
6.1.1.1 Oscilador SAW ................................................................................................................. 171
6.1.2 RECEPTOR .............................................................................................................................. 173
6.2 CONEXIN AL MICROCONTROLADOR ............................................................................. 174
6.2.1 PROGRAMA BSICO DE ATENCIN DE COMUNICACIONES. ...................................................... 174

7. TELEMANDO POR INFRARROJOS ................................................................. 182
7.1 INTRODUCCIN ........................................................................................................................ 182
7.1.1 ESTNDARES DE CODIFICACIN DE COMANDOS ..................................................................... 183
7.1.1.1 Codificacin RC-5 ............................................................................................................ 183
XI
7.1.1.2 Codificacin RECS 80 ...................................................................................................... 184
7.1.2 CODIFICACIN DE LOS COMANDOS ......................................................................................... 184
7.1.3 TIPO DE MODULACIN ............................................................................................................ 185
7.2 TRANSMISOR DE INFRARROJOS ......................................................................................... 185
7.2.1 DIAGRAMA DE BLOQUES DEL TRANSMISOR ............................................................................ 185
GENERADOR DE RELOJ.......................................................................................................................... 186
7.2.3 GENERADOR DEL INTERVALO DE TRAMA ............................................................................... 187
7.2.4 REGISTRO DE DESPLAZAMIENTO ............................................................................................ 189
7.2.5 MODULADOR ASK ................................................................................................................. 190
7.2.6 EMISOR DE LUZ INFRARROJA .................................................................................................. 191
7.2.7 ALIMENTACIN ...................................................................................................................... 193
7.3 RECEPTOR DE INFRARROJOS .............................................................................................. 193
7.3.1 DIAGRAMA DE BLOQUES DEL RECEPTOR ................................................................................ 194
7.3.2 FOTO-RECEPTOR .................................................................................................................... 194
Red de desacoplo ............................................................................................................................ 196
7.3.3 FILTRO PASO BANDA .............................................................................................................. 196
7.3.4 DEMODULADOR ..................................................................................................................... 198
7.3.4.1 Amplificador de entrada ................................................................................................... 198
7.3.4.2 Detector de envolvente ..................................................................................................... 199
7.3.4.3 Regenerador ..................................................................................................................... 199
7.4 CONEXIN AL MICROCONTROLADOR ............................................................................. 199
7.4.1 PROGRAMA BSICO DE ATENCIN DE COMUNICACIONES ....................................................... 200
8. INTERFAZ PARA LNEA TELEFNICA ........................................................ 207
8.1 INTRODUCCIN ........................................................................................................................ 206
8.2 LA LNEA TELEFNICA .......................................................................................................... 207
8.2.1 ALIMENTACIN EN CORRIENTE CONTINUA ............................................................................. 207
8.2.1.1 Alimentacin con puente convencional de baja resistencia ............................................. 207
8.2.1.1.1 Tensin de alimentacin en reposo ....................................................................................... 207
8.2.1.1.2 Mximo consumo de corriente en situacin de reposo .......................................................... 208
8.2.1.1.3 Corriente de lnea en estado de lnea tomada ........................................................................ 208
8.2.1.2 Alimentacin con limitacin de corriente ......................................................................... 208
8.2.1.3 Polaridad .......................................................................................................................... 208
8.2.2 CRITERIOS DE ESTADO DE LA LNEA ....................................................................................... 208
8.2.3 NIVEL MXIMO A LA ENTRADA DEL PTR ............................................................................... 209
8.2.3.1 Nivel medio mximo de transmisin ................................................................................. 209
8.2.3.2 Nivel de pico mximo ....................................................................................................... 209
8.2.4 SEAL (CORRIENTE) DE LLAMADA ......................................................................................... 209
XII
8.3 DESCRIPCIN MODULAR Y MONTAJE DEL SISTEMA .................................................. 210
8.3.1 DETECTOR DE LLAMADA ........................................................................................................ 210
8.3.2 ALIMENTACIN ...................................................................................................................... 213
8.3.3 GANCHO AUTOMTICO .......................................................................................................... 213
8.3.4 DUPLEXOR ............................................................................................................................. 214
8.3.4.1 Clculo de la polarizacin................................................................................................ 215
Transmisin de la seal .................................................................................................................. 217
8.3.4.2.1 Recepcin de la seal vocal................................................................................................... 217
8.3.4.2.2 Transmisin de la seal vocal ............................................................................................... 217
8.3.4.3 Montaje y prueba del circuito ........................................................................................... 218
8.3.5 AMPLIFICADORES ................................................................................................................... 221
8.3.6 DETECTOR DE TONOS (DTMF) ............................................................................................... 221
8.4 EJEMPLOS DE APLICACIONES ............................................................................................. 224
8.4.1 RUTINAS BSICAS DE GESTIN DEL INTERFAZ ........................................................................ 224
CONCLUSIONES ...................................................................................................... 232
APNDICES
I. TCNICAS DE CONEXIONADO ....................................................................... 233
I.1 SOLDADURA DE ESTAO ....................................................................................................... 231
I.2 WRAPPING O ENROLLADO ................................................................................................. 231
I.2.1 DESCRIPCIN DE LA HERRAMIENTA ....................................................................................... 231
I.2.1.1 Procedimiento de conexin: ............................................................................................. 232
II. ESTUDIO DE VIABILIDAD DE LA OBTENCIN DE ALIMENTACIN
PARA UN SISTEMA DE TELEMANDO TELEFNICO DE LA PROPIA
LNEA ................................................................................................................. 235
II.1 ESPECIFICACIONES DEL BUCLE DE ABONADO ............................................................. 233
II.1.1 CARACTERSTICAS EN CORRIENTE CONTINUA ........................................................................ 233
II.2 ESPECIFICACIONES DEL APARATO DE ABONADO ....................................................... 234
II.2.1 CARACTERSTICAS EN CORRIENTE CONTINUA ........................................................................ 234
II.3 HIPTESIS DE PARTIDA ......................................................................................................... 234
II.3.1 ESTADO DE BUCLE ABIERTO ................................................................................................... 234
II.3.2 ESTADO DE BUCLE CERRADO.................................................................................................. 235
II.3.3 EFICIENCIA DE LA FUENTE ...................................................................................................... 235
II.4 POTENCIA FINAL DISPONIBLE ............................................................................................ 235
XIII
II.4.1 PLANTEAMIENTO GENERAL DE LA SOLUCIN ......................................................................... 236
II.4.2 DIMENSIONADO DE LA BATERA ............................................................................................. 237
II.4.3 OTROS ASPECTOS A CONSIDERAR ........................................................................................... 238
III. ESTUDIOS PREVIOS PARA EL DESARROLLO DE UN MODEM PARA
RED ELECTRICA ............................................................................................. 242
III.1 INTRODUCCIN ........................................................................................................................ 240
III.2 MDEM PARA RED ELCTRICA .......................................................................................... 241
III.2.1 ESTRUCTURA DE BLOQUES DEL TRANSMISOR ......................................................................... 243
III.2.2 ESTRUCTURA DE BLOQUES DEL RECEPTOR ............................................................................. 243
III.2.3 ESTRUCTURA DE BLOQUES DE UN CONJUNTO TRANSCEPTOR .................................................. 243
III.3 DESCRIPCIN DEL TRANSCEPTOR .................................................................................... 244
III.3.1 MDULOS COMUNES .............................................................................................................. 245
III.3.1.1 Separador de red ......................................................................................................... 245
III.3.1.2 Filtro paso banda......................................................................................................... 246
III.3.1.3 Conmutador ................................................................................................................. 246
III.3.2 MDULOS DEL TRANSMISOR .................................................................................................. 247
III.3.2.1 Modulador ................................................................................................................... 247
III.3.2.2 Adaptador de nivel ....................................................................................................... 248
III.3.3 MDULOS DEL RECEPTOR ...................................................................................................... 248
III.3.3.1 Adaptador de nivel ....................................................................................................... 248
III.3.3.2 Demodulador ............................................................................................................... 248
III.3.3.3 Conformador de seal ................................................................................................. 249
III.4 OBSERVACIN FINALES ........................................................................................................ 249
BIBLIOGRAFA ........................................................................................................ 252