Vous êtes sur la page 1sur 263

Captulo 1 Telecontrol y microcontroladores

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

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,

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

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.

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.

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.

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

Varios dispositivos con canales dedicados: tan slo hay que acceder al canal del dispositivo en cuestin para resolver la comunicacin.

Varios

dispositivos

receptores

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

Lontalk, X10, etc. Al no tratarse de un mercado maduro es difcil decantarse por un sistema u otro. 1.1.1.17 1.1.1.17.1 Comunicacin inalmbrica 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.1.17.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.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:

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.

10

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.

11

Captulo 2 Montaje y descripcin de la entrenadora basada en 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.

placa el

12

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) 2) 3) 4) 5) 6) 7) 8) 9)

Microcontrolador. Regulador de tensin. Replanteo general del circuito. Circuito de reloj. Filtros de reloj de sistema. Circuito de configuracin del micro. Reset del sistema. Resistencias de pull-up. Alimentacin del microcontrolador. de funcionamiento. BDM (Background Debug Mode).

10) Prueba

11) Comunicacin 12) Memoria. 13) Comunicacin

serie.

13

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 con los bornes, luego se montarn los condensadores C1 y C2 y finalmente el L7805 en 14

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

15

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.

16

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

17

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 2 3 4 5 6 7 8 1 2 4 6 8

DATA0 DATA1 DATA2 DATA3 DATA4 DATA5 DATA6 DATA7 DATA8 DATA9

PORTF como puerto de entrada/salida DATA11 Modo esclavo desactivado Modo esclavo activado MODCLK VCO = Reloj del sistema EXTAL = Reloj del sistema #BKPT Modo de depuracin Modo de depuracin desactivado activado
Tabla 1 Modos de configuracin del micro.

El microcontrolador funciona con un bus de memoria de 16 bits. #CS0 #CS1 #CS2 #CS3 #CS4 #CS5 #CS6 #CS[7:6] #CS[8:6] #CS[9:6] #CS[10:6] #DSACK0, #DSACK1, #AVEC, #DS, #AS, #SIZE #IRQ[7:1], MODCLK

El microcontrolador funciona con un bus de memoria de 8 bits. #BR #BG #BGACK FC0 FC1 FC2 ADDR19 ADDR[20:19] ADDR[21:19] ADDR[22:19] ADDR[23:19] PORTE como puerto de entrada/salida

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

18

(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 (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:

19

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 VT = 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.

20

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 , 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 K 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 1 56 2 68 Denominacin #BKPT/DSCLK #RESET 3 4 N terminal 78 79 Denominacin PF0/#MODCLK R/#W

Tabla 2 Terminales que ya tienen conectadas las resistencias de pull-up.

Por lo tanto slo quedan por conectar los siguientes terminales: 1 2 3 4 5 6 7 N terminal 57 69 70 71 72 73 74 Denominacin TSC #HALT #BERR PF7/#IRQ7 PF6/#IRQ6 PF5/#IRQ5 PF4/#IRQ4 8 9 10 11 12 13 14 N terminal 75 76 77 87 88 89 113 Denominacin PF3/#IRQ3 PF2/#IRQ2 PF1/#IRQ1 PE2/#AVEC PE1/#DSACK1 PE0/#DSACK0 #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 (VSS) y los 14 de alimentacin a 5 voltios (VDD).

21

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: VSS 2 VDD 11 12 19 20 25 26 37 35 47 48 61 54 72 62 84 74 86 82 89 91 107 120 128 134 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:

22

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 23

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

24

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

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 26

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.

27

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.

28

Figura 10 Detalle del conexionado con wire-wrapping.

Figura 11 Detalle del montaje de la placa.

29

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

30

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.

31

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 0 1 Zona ocupada del mapa de memoria $7FF000-$7FFFFF $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 chipselect 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 de datos y direcciones (SIZ[0..1], #AS, #DS, #AVEC y #DSACK[0..1]).

32

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 alta impedancia para impedir que este flujo interno afecte a dispositivos externos como, por ejemplo, la memoria). 33

SHEN 00 01 10 11

Ciclos Internos Invisibles desde el exterior Visibles Visibles Invisibles

Arbitraje externo Habilitado Deshabilitado Habilitado 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.

Prdida de la seal de referencia de reloj (Loss of Clock).

34

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 00 01 10 11 Tiempo mximo de espera 64 ciclos de reloj 32 ciclos de reloj 16 ciclos de reloj 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. 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

35

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 0 0 0 0 1 1 1 1 SWT 00 01 10 11 00 01 10 11 Ciclos de reloj 2 elevado a 9 2 elevado a 11 2 elevado a 13 2 elevado a 15 2 elevado a 18 2 elevado a 20 2 elevado a 22 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 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

36

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). Por lo tanto, el PIT estar habilitado y en condiciones de interrumpir correctamente si IARB>0, PIRQL>IP o PIRQL=7 y PIV>=$40.

37

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

38

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. 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). 39

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

40

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:

Tipos de transferencia. SIZ[0:1] ADDR DSACK[1: Datos efectivos De <origen> a <puerto o memoria de 0 0] transferidos destino> 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] 41

De 16 bits a 8 bits en direccin par De 16 bits a 16 bits en direcc. Par De 32 bits a 8 bits en direccin par De 32 bits a 16 bits en direcc. Par De 24 bits a 8

10 10 00 00 11

0 0 0 0 1

10 01 10 01 10

DATA[8..15] DATA[0..15] DATA[8..15] DATA[0..15] 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 0 0 0 0 1 1 1 1 FC1 0 0 1 1 0 0 1 1 FC0 0 1 0 1 0 1 0 1 Estado interno Valor no usado Acceso a datos en modo usuario Lectura de instrucciones en modo usuario Valor no usado Valor no usado Acceso a datos en modo supervisor Lectura de instrucciones en modo supervisor 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:

A23..A2 A19 A18 A17 A16 A15..A5 A 0 4 (1) pto. Ruptura 0 0 0 0 0 0 X (2) bajo 0 0 0 1 1 1 1 consumo (3) Interr. 1 1 1 1 1 1 1

Subestado

A 3 X 1 X

A 2 X 1 X

A A0 1 Y 0 1 0 X 1

42

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

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

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.

44

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

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

45

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). 5 4 SPACE 3 2 1 0 IPL AVEC#

Bit Campo

15 14 13 12 11 10 9 8 7 6 MODE BYTE R/W# STRB DSACK#

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] 000 001 010 011 100 101 110 111 Tamao del bloque 2 KB 8 KB 16 KB 64 KB 128 KB 256 KB 512 KB 1 MB Bits de direcciones fijos ADDR[23..11] ADDR[23..13] ADDR[23..14] ADDR[23..16] ADDR[23..17] ADDR[23..18] ADDR[23..19] ADDR[23..20]

Tabla 12 Determinacin del tamao de bloque de memoria.

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:

46

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). 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:

47

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): 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).

48

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. 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: 49

Direccin $FFF900 $FFF902 $FFF904 $FFF906 $FFF908 $FFF90A $FFF90C $FFF90E $FFF910 $FFF912 $FFF914 $FFF916 $FFF918 $FFF91A $FFF91C $FFF91E $FFF920 $FFF922 $FFF924 $FFF926 $FFF928 $FFF92A $FFF92C

15

8 7 0 MDULO DE CONFIGURACIN DEL GPT (GPTMCR) (RESERVADA PARA TEST) CONFIGURACIN DE INTERRUPCIN (ICR) DIRECC. DATOS PGP (DDRGP) DATOS PGP (PORTGP) MSCARA DE ACCIN OC1 (OC1M) DATOS DE ACCIN OC1 (OC1D) CONTADOR DEL TEMPORIZADOR (TCNT) CONTROL DE PA (PACTL) CONTADOR DE PA (PACNT) ENTRADA DE CAPTURA 1 (TIC1) ENTRADA DE CAPTURA 2 (TIC2) ENTRADA DE CAPTURA 3 (TIC3) SALIDA DE COMPARACIN 1 (TOC1) SALIDA DE COMPARACIN 2 (TOC2) SALIDA DE COMPARACIN 3 (TOC3) SALIDA DE COMPARACIN 4 (TOC4) ENTRADA DE CAPTURA 4/SALIDA DE COMPARACIN 5 (TI4/O5) CONTROL DE TEMP. 1 (TCTL1) CONTROL DE TEMP. 2 (TCTL2) MSCARA DE TEMP. 1 (TSMK1) MSCARA DE TEMP. 2 (TSMK2) FLAG DE TEMP. 1 (TFLG1) FLAG DE TEMP. 2 (TFLG2) COMPRAR. FORZADA (CFORC) CONTROL C DE PWM (PWMC) CONTROL A DE PWM (PWMA) CONTROL B DE PWM (PWMB) CONTADOR DE PWM (PWMCNT) BUFFER DE PWMA (PWMBUFA) BUFFER DE PWMB (PWMBUFB) 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 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

50

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 Fuente Registros 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 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

51

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

52

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 --IC1 IC2 IC3 OC1 OC2 OC3 OC4 IC4/OC 5 TO PAOV PAI Nmero de Fuente 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 Fuente Canal de Ajuste Entrada de Captura 1 Entrada de Captura 2 Entrada de Captura 3 Salida de Comparacin 1 Salida de Comparacin 2 Salida de Comparacin 3 Salida de Comparacin 4 Entrada de Captura 4 / Salida de Comparacin 5 Desbordamiento del Temporizador Desbordamiento del Acumulador de Pulsos Entrada del Acumulador de Pulsos
Tabla 15 Fuentes de interrupcin del GPT.

Nmero de Vector IVBA : 0000 IVBA : 0001 IVBA : 0010 IVBA : 0011 IVBA : 0100 IVBA : 0101 IVBA : 0110 IVBA : 0111 IVBA : 1000 IVBA : 1001 IVBA : 1010 IVBA : 1011

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 de entrada tiene la misma histresis que cualquier otro. Tambin se puede utilizar como E/S de propsito general.

53

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). 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 54

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.

55

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

56

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.

57

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

58

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.

59

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

60

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

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

62

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] 000 001 010 011 100 101 110 111 Salida del Preescalador 8.39 Mhz 16.78 Mhz Div 2 = 4.19 Mhz Div 2 = 8.39 Mhz Div 4 = 2.10 Mhz Div 4 = 4.19 Mhz Div 8 = 1.05 Mhz Div 8 = 2.10 Mhz Div 16 = 524 Khz Div 16 = 1.05 Mhz Div 32 = 262 Khz Div 32 = 524 Khz Div 64 = 131 Khz Div 64 = 262 Khz Div 128 = 66 Khz Div 128 = 131 Khz
PCLK PCLK

SFA/B=0 8.39 Mhz 16.78 Mhz 16.4 Khz 32.8 Khz 8.19 Khz 16.4 Khz 4.09 Khz 8.19 Khz 2.05 Khz 4.09 Khz 1.02 Khz 2.05 Khz 512 Hz 1.02 Khz 256 Hz 512 Hz
PCLK/256 PCLK/256

SFA/B=1 8.39 Mhz 16.78 Mhz 128 Hz 256 Hz 64 Hz 128 Hz 32 Hz 64 Hz 16 Hz 32 Hz 8 Hz 16 Hz 4 Hz 8 Hz 2 Hz 4 Hz


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,

63

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.

64

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 D4 D5 D6 D7 31 16 15 0 A0 A1 A2 A3 A4 A5 A6 31 31 16 15 0 PC 7 0 CCR REGISTRO DE CDIGOS DE CONDICIN
Tabla 17 Registros del modo usuario.

REGISTROS DE DATOS

REGISTROS DE DIRECCIONES

0 A7 (USP) PUNTERO DE PILA DE USUARIO CONTADOR DE PROGRAMA

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.

65

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.

66

A7 (SSP) 31 31 16 0 VBR 7 0 SFC DFC 15 8 7 0 (CCR) SR

PUNTERO DE PILA DE SUPERVISOR REGISTRO DE ESTADO REGISTRO DEL VECTOR BASE CODIGO DE FUNCIN DE ORIGEN 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. 67

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.

68

datos.

Dx (15:8) offset dentro de la tabla del primero de los

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

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.

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.

70

QILR (Registro de niveles de interrupcin) Permite configurar el nivel de prioridad de las interrupciones para cada uno de los mdulos del 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.

71

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.

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

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

73

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. 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: 74

Velocidad _ de _ Transmisin = El valor de SCBR vara entre 1 y 8191.

Re loj _ del _ sistema 32 * SCBR

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 0 0 1 1 PE Resultado 0 8 bits de datos 1 7 bits de datos y 1 de paridad 0 9 bits de datos 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

75

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

76

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

77

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

78

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

79

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.

80

Figura 1 - Aspecto general de un display.

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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Smbolo Vss Vdd Vo RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 Descripcin Masa Alimentacin Voltaje de ajuste del contraste Seleccin de registro Lectura / escritura Validacin de datos (Enable) Bit de datos menos significativo Bit de datos Bit de datos Bit de datos Bit de datos Bit de datos Bit de datos 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

81

controla con las tres lneas de control (RS, R/W y E) conforme al cronograma del dispositivo.

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 82

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 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 $20 Espacio $30 $21 $31 $22 $32 $23 # $33 $24 $ $34 $25 % $35 $26 & $36 $27 $37 $28 ( $38 $29 ) $39 $2A * $3A $2B + $3B $2C , $3C $2D $3D $2E . $3E $2F / $3F Carac. 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Cdigo $40 $41 $42 $43 $44 $45 $46 $47 $48 $49 $4A $4B $4C $4D $4E $4F Carac. @ A B C D E F G H I J K L M N O Cdigo $50 $51 $52 $53 $54 $55 $56 $57 $58 $59 $5 $5B $5C $5D $5E $5F Carac. P Q R S T U V W X Y Z [ \ ] ^ _ Cdigo $60 $61 $62 $63 $64 $65 $66 $67 $68 $69 $6A $6B $6C $6D $6E $6F Carac. ` A B C D E F G H I J K L M N O Cdigo $70 $71 $72 $73 $74 $75 $76 $77 $78 $79 $7A $7B $7C $7D $7E $7F Carac. P Q R S T U V W X Y Z { | } ~

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

83

fraccionada en dos bloques de 40 posiciones consecutivas por lnea. Existe una tercera 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 Direccin 2 3 00 4 5 01 6 02 7 03 04 79 80 05 06 4E 4F

Modo de 2 lneas.
1 Lnea 1 Lnea 2 2 3 00 40 4 5 01 41 6 02 42 7 03 43 04 44 39 40 05 45 06 46 26 66 27 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

84

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 (26 = 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 000 001 010 011 000 100 101 110 111 000 001 010 011 001 100 101 110 111 000 001 010 011 100 101 110 111 Dato CGRAM 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0

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

111

Tabla 3 - Creacin de caracteres de usuario.

85

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

86

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 0 0 1 1 R/W 0 1 0 1 Accin Operacin de escritura en IR (instruccin u operacin interna). Operacin de lectura de IR (permite leer el AC (IR0-IR6) y el BF (IR7)). Operacin de escritura en DR (escritura del dato en la DDRAM o CGRAM). Operacin de lectura de DR (lectura del dato de la DDRAM o CGRAM).

87

Tabla 4 Seleccin de registro.

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 Borrar display. Cursor a inicio. Establecer modo de trabajo. Control ON/OFF del display. Desplazamiento del cursor / display. Establecer modo de interfaz. Fijar direccin de CGRAM. Fijar direccin de DDRAM. Lectura de BF y AC Escritura de datos en CGRAM/DDRAM Lectura de datos en CGRAM/DDRAM RS 0 0 0 0 0 0 0 0 0 1 1 R/W 0 0 0 0 0 0 0 0 1 0 1 DB7 0 0 0 0 0 0 0 1 BF DB6 0 0 0 0 0 0 1 ADD AC DB5 0 0 0 0 0 1 ACG ADD AC DB4 DB3 0 0 0 0 0 0 0 1 1 S/C DL N ACG ACG ADD ADD AC AC Datos a escribir Lectura de datos DB2 0 0 1 D R/L F ACG ADD AC DB1 0 1 I/D C ----ACG ADD AC DB0 1 --S B ----ACG ADD AC Duracin 1.52 ms. 37 s. 37 s. 37 s. 37 s. 37 s. 37 s. 37 s. 0 s. 37 s. 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.

2.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. 88

TIEMPO DE EJECUCIN: 37 s.

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.

89

3.2.5.5 Desplazamiento del cursor o display CDIGO: 0 0 0 1 S/C R/L 0 0 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. 90

TIEMPO DE EJECUCIN: 37 s.

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. 3.2.5.10 TIEMPO DE EJECUCIN: 37 s.

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

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:

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.

92

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.

93

Bucle cerrado Bucle abierto

Bus de 4 bits 3 pins de salida para el control 4 pins E/S 2 pins de salida para el control 4 pins de salida para los datos

Bus de 8 bits 3 pins de salida para el control 8 pins de E/S 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. 94

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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin.

PORTE1 EQU $FFFA13 DDRE EQU $FFFA15

95

PEPAR PORTF

EQU $FFFA17 EQU $FFFA19

* Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * Controla las funciones de monitorizacin del sistema * como es el caso del Watchdog. ($40 anula watchdog).

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

SWSR

EQU $FFFA27

* Se debe escribir peridicamente si Watchdog activado. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

****************************************************************************** GPTMCR ICR DDRGP PORTGP OC1M OC1D TCNT PACTL PACNT TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 TMSK1 TMSK2 TFLG1 EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 EQU $FFF90A EQU $FFF90C EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F EQU $FFF920 EQU $FFF921 EQU $FFF922 * Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC. * Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI. * Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC. * Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC. * Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC.

96

TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * TIPOS DE RETARDO *

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

****************************************************************************** * CONSTANTES DE INTERS *

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

****************************************************************************** * PUERTOS DEL DISPLAY *

****************************************************************************** BYTE_DATA EQU PORTE * Puerto de datos. * Puerto de control. * 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.

BYTE_CONTROL EQU PORTC BIT_ENABLE EQU 4

97

****************************************************************************** * 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 MENS1 DC.B MENS2 DC.B DC.L MENS1,MENS2,MENS3 'PRIMERA PRUEBA. ESCRITURA NORMAL DE TEXTO.',$00 '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 *

******************************************************************************

98

*************************** 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 RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

************************** 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 MOVE.B MOVE.B MOVE.W MOVE.B MOVE.B RTS *----------------------------------------------------------------------------* ****************************************************************************** * RUTINAS DE CONTROL * #$FF,DDRE #$00,PEPAR #$00,CSPAR0 #$0000,CSPAR1 #$00,PORTE #$0F,PORTC * PE0..PE7 salidas. * Configura el registro de control del puerto E. * PC0-PC2 utilizables. * PC3-PC6 utilizables.

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

*******************************************************************

99

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 * * * BCLR.B #4,BYTE_DATA BSET.B #3,BYTE_DATA BSET.B #2,BYTE_DATA BSR TOGGLE RTS *----------------------------------------------------------------------------* * Modo 8 bits, una lnea, fuentes 5x8 puntos. * Modo 4 bits. * Habilita 2 lneas. * Fuentes de 5x10 puntos.

*************************** MODO_AVC ****************************** * El cursor avanza cuando se escribe un carcter en el registro * DR. El display permanece esttico. * Retardo necesario CORTO. * * *

*******************************************************************

100

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 *----------------------------------------------------------------------------*

101

************************** 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 * * * BCLR.B #2,BYTE_DATA BCLR.B #1,BYTE_DATA BSET.B #0,BYTE_DATA BSR TOGGLE RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF * Display OFF * Cursor OFF * Blinking ON

**************************** 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 BSR TOGGLE RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF

***************************** 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 *----------------------------------------------------------------------------*

102

************************** 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

103

*************************** 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

*******************************************************************

104

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 BSR CFG_DISPLAY BSR MODO_NORMAL BSR CLEAR RTS *----------------------------------------------------------------------------* * Fijamos la duracin de retardo.

105

****************************************************************************** * 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 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 BRA BUCLE1 FIN1 MOVEM.L (A7)+,D0-D2 RTS * Cambia al modo AVT para que el display acompae al cursor. * Cuenta los caracteres escritos en el display.

106

*************************** 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 BUCLE2 BSR DISP_DCHA MOVE.L #RETARDO,D1 BSR DELAY SUB.B #1,D0 BNE BUCLE2 MOVEM.L (A7)+,D0-D1 RTS *----------------------------------------------------------------------------* * Cuenta los caracteres escritos en el display.

**************************** 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 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. * * * * * Cuenta los caracteres escritos en el display.

*******************************************************************

107

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 BRA ESCR_MENSAJE FIN

SERVICIO2 BSR BRA DSP_ADELANTE FIN

SERVICIO3 BSR FIN MOVEM.L (A7)+,D0-D1 RTE *----------------------------------------------------------------------------* DSP_ATRAS

****************************************************************************** * PRINCIPAL *

****************************************************************************** ORG $400 PRINCIPAL BSR BSR BSR INHAB_WDOG PORT_EC_CFG INI_LCD #MENSAJES,A6 (A6)+,A0 #1,D7

MOVEA.L MOVEA.L MOVE.L TRAP #0 MOVEA.L MOVE.L TRAP #0

(A6)+,A0 #1,D7

BSR MODO_OFF MOVEA.L MOVE.L (A6),A0 #1,D7

108

TRAP #0 BSR MODO_NORMAL MOVE.B #3,D3 LOOP1 MOVE.L TRAP #0 SUB.B #1,D3 BNE LOOP1 MOVE.B #3,D3 LOOP2 MOVE.L TRAP #0 SUB.B #1,D3 BNE LOOP2 FINAL BRA END FINAL #3,D7 #2,D7

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

109

*----------------------------------------------------------------------------*

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

110

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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * 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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

****************************************************************************** GPTMCR ICR DDRGP PORTGP OC1M OC1D TCNT PACTL EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 EQU $FFF90A EQU $FFF90C * Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC. * Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI.

111

PACNT TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 TMSK1 TMSK2 TFLG1 TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F EQU $FFF920 EQU $FFF921 EQU $FFF922 EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC. * Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC. * Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC. * Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * TIPOS DE RETARDO *

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

****************************************************************************** * CONSTANTES DE INTERS *

****************************************************************************** INI_DR FIN_DR L1_INI_DR L1_FIN_DR L2_INI_DR EQU $00 EQU $4F EQU $00 EQU $27 EQU $40 * Inicio de lnea nica de caracteres. * Fin lnea nica de caracteres. * Inicio de la primera lnea. * Fin de la primera lnea. * Inicio de la segunda lnea.

112

L2_FIN_DR LCD_LONG

EQU $67 EQU $0F

* Fin de la segunda lnea. * Longitud de la pantalla del LCD.

****************************************************************************** * PUERTOS DEL DISPLAY *

****************************************************************************** BYTE_DATA EQU PORTE * Puerto de datos. * Puerto de control. * 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 FLAG EQU 6 EQU 7 * Cambio entre los modos de lectura y escritura. * Posicin del flag de datos en el puerto.

BYTE_CONTROL EQU PORTC BIT_ENABLE EQU 4

****************************************************************************** * 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

113

MENSAJES DC.L MENS1,MENS2,MENS3,MENS4,MENS5,MENS6,MENS7,MENS8,MENS9,MENS0,MENSLARGO MENS1 DC.B MENS2 DC.B MENS3 DC.B MENS4 DC.B MENS5 DC.B MENS6 DC.B MENS7 DC.B MENS8 DC.B MENS9 DC.B MENS0 DC.B 'UNO',$00 'DOS',$00 'TRES',$00 'CUATRO',$00 'CINCO',$00 'SEIS',$00 'SIETE',$00 'OCHO',$00 'NUEVE',$00 'CERO',$00 'ES UNA PRUEBA DE MENSAJE LARGO PARA VER QUE PASA',$00

MENSLARGO DC.B

****************************************************************************** * 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 RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

************************** 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 MOVE.B MOVE.B #$FF,DDRE #$00,PEPAR #$00,CSPAR0 * PE0..PE7 salidas. * Configura el registro de control del puerto E. * PC0-PC2 utilizables.

114

MOVE.W MOVE.B MOVE.B RTS

#$0000,CSPAR1 #$00,PORTE #$0F,PORTC

* PC3-PC6 utilizables.

*----------------------------------------------------------------------------*

****************************************************************************** * 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 BCLR.B #BIT_ENABLE,BYTE_CONTROL #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. * *

*******************************************************************

115

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 * * * BCLR.B #4,BYTE_DATA BSET.B #3,BYTE_DATA BSET.B #2,BYTE_DATA BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* * Modo 8 bits, una lnea, fuentes 5x8 puntos. * Modo 4 bits. * Habilita 2 lneas. * Fuentes de 5x10 puntos.

*************************** 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 *----------------------------------------------------------------------------*

116

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

117

******************************************************************* MODO_NORMAL BSR FLAG_ESPERAR MOVE.B #$0E,BYTE_DATA * * * BCLR.B #2,BYTE_DATA BCLR.B #1,BYTE_DATA BSET.B #0,BYTE_DATA BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF * Display OFF * Cursor OFF * Blinking ON

**************************** 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 BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF

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

********************************************************************

118

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

119

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

120

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 *

****************************************************************************** ******************************************************************************

121

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 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 BRA BUCLE1 FIN1 MOVEM.L (A7)+,D0-D1 RTS *----------------------------------------------------------------------------* * Cambia al modo AVT para que el display acompae al cursor. * Cuenta los caracteres escritos en el display.

*************************** 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 BUCLE2 * Cuenta los caracteres escritos en el display.

122

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 BUCLE3 BSR DISP_IZQ MOVE.L #RETARDO,D1 BSR DELAY SUB.B #1,D0 BNE BUCLE3 MOVEM.L (A7)+,D0-D1 RTS *----------------------------------------------------------------------------* * Cuenta los caracteres escritos en el display.

************************** 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

123

BEQ BRA

SERVICIO3 FIN

SERVICIO1 BSR BRA ESCR_MENSAJE FIN

SERVICIO2 BSR BRA DSP_ADELANTE FIN

SERVICIO3 BSR FIN MOVEM.L (A7)+,D0-D1 RTE *----------------------------------------------------------------------------* DSP_ATRAS

******************************** 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 BSR BSR INIC_D0 MOVEA.W MOVE.L LOOP1 BSR MOVEA.L MOVE.L TRAP #0 MOVE.L BSR SUBI.B BEQ BRA END #LARGO,D1 DELAY #1,D0 INIC_D0 LOOP1 CLEAR (A6)+,A0 #1,D7 #MENSAJES,A6 #$B,D0 INHAB_WDOG PORT_EC_CFG INI_LCD

124

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

125

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

126

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.

127

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

128

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 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 BSR DELAY SIGUE_PULSADA BTST.B BEQ.S RTS D3,PORTE SIGUE_PULSADA * Se lee el puerto E * Si son iguales SIGUE PULSADA la tecla #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al * pulsar una tecla. (REBOTES_MATAR = 4)

**************************** 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 CLR.B MOVE.L MOVE.B COLUMNA MOVE.B MOVE.L MOVE.B FILA BTST.B D3,PORTE * Comprueba el bit de la fila D4,PORTC #3,D2 #0,D3 * Pone el Puerto C el valor 0000 1110 * D2 es el contador de filas * D3 guarda el nmero de bit a comprobar D1-D4,-(A7) D0 #3,D1 #$0E,D4 * Se salva en la pila los registros a usar. * D0 almacena el valor de la tecla pulsada. * D1 es el contador de columnas. * D4 es usado como registro auxiliar.

129

BEQ ADDQ.B ADDQ.B DBF

TECLA #1,D0 #1,D3 D2,FILA

* Salta si encontr la tecla pulsada * Siguiente tecla * Siguiente fila * Decrementa el contador de filas y salta a la * siguiente

ORI.B ROXL.B ANDI.B DBF

#$10,CCR #1,D4 #$0F,D4 D1,COLUMNA

* Pone a 1 el bit de eXtensin del CCR * Siguiente columna * Elimina los cuatro bits ms significativos * Decrementa el contador de columnas y salta a la * siguiente

MOVE.B BRA TECLA BSR FIN MOVEM.L RTE

#$FF,D0 FIN

* Devuelve $FF si no hay tecla pulsada

TECLA_SOLTAR

* Salta a subrutina TECLA_SOLTAR

(A7)+,D1-D4

* Restaura los registros desde la pila

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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS).

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR EQU $FFFA1D EQU $FFFA1F

130

PICR PITR SYPCR

EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

* Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * 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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

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

131

PWMCNT

EQU $FFF928

* Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * TIPOS DE RETARDO *

****************************************************************************** CORTO MEDIO LARGO RETARDO REBOTES_MATAR EQU $0400 EQU $2800 EQU $C800 EQU $FFFF EQU $0004 * Del orden de 100us. * Del orden de 1ms. * Del orden de 5ms. * Se usa para el avance de caracteres. * 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

132

TECLAS DC.B

$41,$30,$42,$43,$37,$38,$39,$44,$34,$35,$36,$45,$31,$32,$33,$46

****************************************************************************** * 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 RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

************************** 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 MOVE.B MOVE.B MOVE.W MOVE.B MOVE.B RTS *----------------------------------------------------------------------------* #$F0,DDRE #$00,PEPAR #$00,CSPAR0 #$0000,CSPAR1 #$00,PORTE #$0F,PORTC * PE0..PE3 entradas, PE4..PE7 salidas. * Configura el registro de control del puerto E. * PC0-PC2 utilizables. * PC3-PC6 utilizables.

****************************************************************************** * SUBRUTINAS DE TECLADO *

****************************************************************************** ************************** TECLA_SOLTAR *************************** * Permanece en un bucle mientras sigue pulsada la tecla indicada * en D5 y sale cuando se suelta. * *

133

******************************************************************* TECLA_SOLTAR MOVE.L MOVE.L BSR DELAY SIGUE_PULSADA BTST.B BEQ.S MOVE.L RTS D3,PORTE SIGUE_PULSADA (A7)+,D1 * Se lee el puerto E * Si son iguales SIGUE PULSADA la tecla D1,-(A7) #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al * pulsar una tecla.

****************************************************************************** * 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 CLR.B MOVE.L MOVE.B D1-D4,-(A7) * Se salva en la pila los registros que se van a usar D0 #3,D1 #$0E,D4 * D0 almacena el valor de la tecla pulsada * D1 es el contador de columnas * D4 es usado como registro auxiliar

134

COLUMNA MOVE.B MOVE.L MOVE.B FILA BTST.B BEQ ADDQ.B ADDQ.B DBF ORI.B ROXL.B ANDI.B DBF MOVE.B BRA TECLA BSR FIN MOVEM.L RTE (A7)+,D1-D4 * Restaura los registros desde la pila TECLA_SOLTAR D3,PORTE TECLA #1,D0 #1,D3 D2,FILA #$10,CCR #1,D4 #$0F,D4 D1,COLUMNA #$FF,D0 FIN * Comprueba el bit de la fila * Salta si encontr la tecla pulsada * Siguiente tecla * Siguiente fila * Decrementa fila y salta a la siguiente * Pone a 1 el bit eXtensin del CCR * Siguiente columna * Elimina los cuatro bits ms significativos * Decrementa columna y salta a la siguiente D4,PORTC #3,D2 #0,D3 * Pone el Puerto C el valor 0000 1110 * D2 es el contador de filas * D3 guarda el nmero de bit a comprobar

****************************************************************************** * PRINCIPAL *

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

135

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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * 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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

****************************************************************************** GPTMCR ICR DDRGP PORTGP OC1M OC1D EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 * Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC.

136

TCNT PACTL PACNT TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 TMSK1 TMSK2 TFLG1 TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF90A EQU $FFF90C EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F EQU $FFF920 EQU $FFF921 EQU $FFF922 EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI. * Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC. * Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC. * Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC. * Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * TIPOS DE RETARDO *

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

****************************************************************************** * CONSTANTES DE INTERS *

****************************************************************************** INI_DR EQU $00 * Inicio de lnea nica de caracteres.

137

FIN_DR L1_INI_DR L1_FIN_DR L2_INI_DR L2_FIN_DR LCD_LONG

EQU $4F EQU $00 EQU $27 EQU $40 EQU $67 EQU $0F

* Fin lnea nica de caracteres. * Inicio de la primera lnea. * Fin de la primera lnea. * Inicio de la segunda lnea. * Fin de la segunda lnea. * Longitud de la pantalla del LCD.

****************************************************************************** * PUERTOS DEL DISPLAY *

****************************************************************************** BYTE_DATA EQU PORTE * Puerto de datos. * Puerto de control. * 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 FLAG EQU 6 EQU 7 * Cambio entre los modos de lectura y escritura. * Posicin del flag de datos en el puerto.

BYTE_CONTROL EQU PORTC BIT_ENABLE EQU 4

****************************************************************************** * 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:

138

****************************************************************************** * 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 MENS2 MENS3 MENS4 MENS5 MENS6 MENS7 MENS8 MENS9 MENS10 MENS11 MENS12 MENS13 MENS14 MENS15 MENS16 DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B DC.B 'TECLA C', $00 'TECLA B', $00 'CERO', $00 'TECLA A', $00 'TECLA D', $00 'NUEVE', $00 'OCHO', $00 'SIETE', $00 'TECLA E', $00 'SEIS',$00 'CINCO',$00 'CUATRO',$00 'TECLA F',$00 'TRES',$00 'DOS',$00 '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 RTS * Inhabilitamos WatchDog

139

************************** 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 MOVE.B MOVE.B MOVE.W MOVE.B MOVE.B RTS *----------------------------------------------------------------------------* #$FF,DDRE #$00,PEPAR #$00,CSPAR0 #$0000,CSPAR1 #$00,PORTE #$0F,PORTC * PE0..PE7 salidas. * Configura el registro de control del puerto E. * PC0-PC2 utilizables. * PC3-PC6 utilizables.

************************* 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 RTS *----------------------------------------------------------------------------* #$F0,DDRE * PE0..PE3 entradas, PE4..PE7 salidas.

************************* 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 RTS #$FF,DDRE * PE0..PE7 salidas.

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

****************************************************************************** ***************************** DELAY ******************************* * Produce un retardo cuya duracin viene determinada por el valor * * almacenado en el registro D1. *

*******************************************************************

140

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 BCLR.B #BIT_ENABLE,BYTE_CONTROL #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. * *

141

* *

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 * * * BCLR.B #4,BYTE_DATA BSET.B #3,BYTE_DATA BSET.B #2,BYTE_DATA BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* *************************** MODO_AVC ****************************** * El cursor avanza cuando se escribe un carcter en el registro * DR. El display permanece esttico. * * * Modo 8 bits, una lnea, fuentes 5x8 puntos. * Modo 4 bits. * Habilita 2 lneas. * Fuentes de 5x10 puntos.

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

*******************************************************************

142

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 * * * BCLR.B #2,BYTE_DATA BCLR.B #1,BYTE_DATA BSET.B #0,BYTE_DATA BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF * Display OFF * Cursor OFF * Blinking ON

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

*******************************************************************

143

MODO_OFF BSR FLAG_ESPERAR MOVE.B #$08,BYTE_DATA BSR ENABLE_LCD RTS *----------------------------------------------------------------------------* * Display y Cursor ON, blinkin OFF

***************************** 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 *----------------------------------------------------------------------------*

144

*************************** 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 * *******************************************************************

145

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

*******************************************************************

146

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 BSR DELAY SIGUE_PULSADA BTST.B BEQ.S RTS D3,PORTE SIGUE_PULSADA * Se lee el puerto E * Si son iguales SIGUE PULSADA la tecla #REBOTES_MATAR,D1 * Duracin del transitorio que aparece al * pulsar una tecla.

****************************************************************************** * 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 *

******************************************************************************

147

****************************************************************************** * 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 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 BRA BUCLE1 FIN1 RTS *----------------------------------------------------------------------------* * Cambia al modo AVT para que el display acompae al cursor. * Cuenta los caracteres escritos en el display.

*************************** 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 BUCLE2 * Cuenta los caracteres escritos en el display.

148

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 BUCLE3 BSR DISP_IZQ MOVE.L #RETARDO,D1 BSR DELAY SUB.B #1,D0 BNE BUCLE3 RTE *----------------------------------------------------------------------------* * Cuenta los caracteres escritos en el display.

****************************************************************************** * 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 CLR.B MOVE.L MOVE.B COLUMNA MOVE.B MOVE.L D4,PORTC #3,D2 * Pone el Puerto C el valor 0000 1110 * D2 es el contador de filas D1-D4,-(A7) * Se salva en la pila los registros que se van a usar D0 #3,D1 #$0E,D4 * D0 almacena el valor de la tecla pulsada * D1 es el contador de columnas * D4 es usado como registro auxiliar

149

MOVE.B FILA BTST.B BEQ ADDQ.B ADDQ.B DBF

#0,D3

* D3 guarda el nmero de bit a comprobar

D3,PORTE TECLA #1,D0 #1,D3 D2,FILA

* Comprueba el bit de la fila * Salta si encontr la tecla pulsada * Siguiente tecla * Siguiente fila * Decrementa el contador de filas y salta a la * siguiente

ORI.B ROXL.B ANDI.B DBF

#$10,CCR #1,D4 #$0F,D4 D1,COLUMNA

* Pone a 1 el bit extensin del CCR * Siguiente columna * Elimina los cuatro bits ms significativos * Decrementa el contador de columnas y salta a la * siguiente,

MOVE.B BRA TECLA BSR FIN_T MOVEM.L RTS

#$FF,D0 FIN_T

TECLA_SOLTAR

(A7)+,D1-D4 * Restaura los registros desde la pila

*----------------------------------------------------------------------------*

************************* 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 BRA SERVICIO4 FIN

SERVICIO1

150

BSR BRA

ESCR_MENSAJE FIN

SERVICIO2 BSR BRA DSP_ADELANTE FIN

SERVICIO3 BSR BRA DSP_ATRAS FIN

SERVICIO4 BSR FIN RTE *----------------------------------------------------------------------------* TECLA_LEER

****************************************************************************** * PRINCIPAL *

****************************************************************************** ORG $400 PRINCIPAL MOVE.W BSR BSR BSR BSR BSR MOVE.B BUCLE CLR.L BSR MOVE.L TRAP CMP.B BEQ MULU MOVE.L BSR BSR MOVE.L TRAP D0 CAMB_TECLADO #4,D7 #0 #$FF,D0 BUCLE #4,D0 (A6,D0.L),A0 CAMB_DISPLAY CLEAR #1,D7 #0 #MENSAJES,A6 INHAB_WDOG PORT_EC_CFG INI_LCD RETURN_HOME MODO_AVC #LCD_LONG,D3 * Cuenta los caracteres escritos en el display.

151

SUB.B BEQ

#1,D3 FIN_LIN

BRA BUCLE FIN_LIN BSR MODO_AVT BRA BUCLE END * Cambia al modo AVT para que el display acompae al cursor.

152

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

153

ahorra en el proceso dos conversiones, la A/D al grabar y la D/A al reproducir. El 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 (VCCA, VCCD, VSSA, VSSD)
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 (PushButton) que se describir en la siguiente seccin.

154

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 playback/record)

(P/R

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 TEOM 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 155

que, junto con la resistencia interna de 10 K 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 VSSA y la resistencia interna de 5 K. 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 K 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 3K 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

156

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 16 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

157

puntero de direcciones se pone a cero cada vez que se cambia del modo reproduccin al modo grabacin o viceversa y cuando se ejecuta un ciclo de corte de corriente ( PowerDown). 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.

158

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

159

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

160

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

161

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.

162

****************************************************************************** * REGISTROS SIM *

****************************************************************************** SIMCR SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * 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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

****************************************************************************** GPTMCR ICR DDRGP PORTGP OC1M OC1D TCNT PACTL PACNT TIC1 TIC2 TIC3 TOC1 EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 EQU $FFF90A EQU $FFF90C EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 * Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC. * Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI. * Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC.

163

TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 TMSK1 TMSK2 TFLG1 TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F EQU $FFF920 EQU $FFF921 EQU $FFF922 EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC. * Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC. * Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * TIPOS DE RETARDO *

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

****************************************************************************** * CONSTANTES DE INTERS *

****************************************************************************** ****************************************************************************** * PUERTO Y BITS DE CONTROL DEL DISPOSITIVO *

****************************************************************************** BYTE_CONTROL EQU PORTE GRAB_M6 REPR_M6 REPR_M04 BIT_M0 BIT_M4 BIT_M6 EQU $0C EQU $2C EQU $2B EQU 0 EQU 1 EQU 2 * Puerto de control. * Activa la grabacin en modo M6. * Activa la reproduccin en modo M6. * Activa la reproduccin en los modos M0 y M4 * Con valor 1 selecciona el modo M0. * Con valor 1 selecciona el modo M4. * Con valor 1 selecciona el modo M6.

164

BIT_CE BIT_PD BIT_PR BIT_EOM BIT_PUSH

EQU 3 EQU 4 EQU 5 EQU 6 EQU 7

* Con valor 0 activa el chip. * Con valor 1 provoca un POWER-DOWN. * Con valor 1 reproduce y con 0 graba. * Bit de funcionamiento. (RUN) * 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. *

*******************************************************************

165

INHAB_WDOG: MOVE.B #$40,SYPCR RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

************************** 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 MOVE.B MOVE.B RTS *----------------------------------------------------------------------------* #$3F,DDRE #$00,PEPAR #8,PORTE * PE0..PE5 salidas y PE6..PE7 entradas. * Configura el registro de control del puerto E. * Pone la seal CE a nivel alto, el resto a cero.

****************************************************************************** * 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 BNE RTS *----------------------------------------------------------------------------* #BIT_PUSH,BYTE_CONTROL

PULSAR_BOTON

166

**************************** PULSO_CE ***************************** * Genera un pulso a nivel bajo en la lnea CE. *

******************************************************************* PULSO_CE MOVE.L D1,-(A7) MOVE.L BCLR.B BSR #CORTO,D1 #BIT_CE,BYTE_CONTROL

DELAY #BIT_CE,BYTE_CONTROL

BSET.B

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 BSET.B BSR #LARGO,D1 #BIT_PD,BYTE_CONTROL

DELAY #BIT_PD,BYTE_CONTROL

BCLR.B

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 *----------------------------------------------------------------------------*

167

************************* GRABAR_MENSAJE ************************** * 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 * Espera la orden de arranque * Inicia la grabacin

BSR PULSAR_BOTON BSR PULSO_CE PARADA BTST.B #BIT_EOM,BYTE_CONTROL

* Se comprueba desbordamiento. Quiz * funcione y se requiera la seal OVF.

no

BEQ FIN BTST.B #BIT_PUSH,BYTE_CONTROL

* Si hay desbordamiento termina

BNE PARADA BSR PULSO_CE FIN RTS

* Espera la orden de parada * Finaliza la grabacin

*----------------------------------------------------------------------------*

**************************** 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 SUBI.B BSR SIGUIENTE BCLR.B BSET.B EOM_ESPERAR BTST.B BNE SUBI.B BNE RTS #BIT_EOM,BYTE_CONTROL EOM_ESPERAR #1,D0 SIGUIENTE * Se espera a que finalice el mensaje #BIT_CE,BYTE_CONTROL #BIT_CE,BYTE_CONTROL * Se inicia reproduccin rpida #REPR_M04,BYTE_CONTROL #1,D0 RESET * Se configuran los modos M0 y M4 * Se ajusta la salida del bucle DBF * Se ejecuta un reset del chip

168

*----------------------------------------------------------------------------*

************************** 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 * Inicia la reproduccin del mensaje

BSR PULSO_CE RTS

*----------------------------------------------------------------------------*

*************************** MENSAJE_N ***************************** * Reproduce el mensaje cuyo nmero de orden N est contenido en * el registro D0. * *

******************************************************************* MENSAJE_N BSR BUSCAR_N BCLR.B BCLR.B BSET.B RTE *----------------------------------------------------------------------------* #BIT_M0,BYTE_CONTROL #BIT_CE,BYTE_CONTROL #BIT_CE,BYTE_CONTROL * Reproduce el mensaje. * Busca el mensaje N.

****************************************************************************** * PRINCIPAL *

****************************************************************************** ORG $400 PRINCIPAL BSR INHAB_WDOG MOVE.L #5,D0 TRAP #0 FINAL BRA FINAL END * Reproduce el mensaje nmero 5

169

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.

170

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 Pin 2 Pin 3 Pin 11 Pin 15 Masa Entrada Modulacin Entrada Modulacin Salida RF +V Conexiones a masa (GND). Deben conectarse externamente a un nico plano de tierra. Entrada de datos TTL con una impedancia de entrada de 5 K. Slo se utiliza si se utiliza alimentacin a 12 V. Entrada de datos TTL con una impedancia de entrada de 5 K. Slo se utiliza si se utiliza alimentacin a 5 V. Salida RF con una impedancia de 50 . 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. 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.

171

La lnea de 50 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 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.

172

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 Pin 3 Pin 1-15 Pin 13 Pin 14 Masa Antena +V Terminal de chequeo Salida digital Conexiones a masa (GND). Deben conectarse externamente a un nico plano de tierra. Conexin de una antena con una impedancia de 50 . Alimentacin a + 5 V. Salida analgica de la seal demodulada que permite la conexin de un osciloscopio para su visualizacin. Salida TTL de datos recibidos. Admite cargas de hasta 1 K.
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.

173

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

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

174

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 Parada Bit 9 Paridad 7 Cdigo de instruccin 43 0 Identificador Bit 1 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 SYNCR RSR EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware).

175

PORTE

EQU $FFFA11

* Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * Controla las funciones de monitorizacin del sistema * como es el caso del Watchdog. ($40 anula watchdog).

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

SWSR

EQU $FFFA27

* Se debe escribir peridicamente con Watchdog activado. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

****************************************************************************** GPTMCR ICR DDRGP PORTGP OC1M OC1D TCNT PACTL PACNT TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 EQU $FFF90A EQU $FFF90C EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F * Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC. * Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI. * Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC. * Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC.

176

TMSK1 TMSK2 TFLG1 TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF920 EQU $FFF921 EQU $FFF922 EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC. * Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * REGISTROS QSM-QSI *

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

****************************************************************************** * CONTROL DEL QSM - SCI *

****************************************************************************** BIT_FE BIT_PE BIT_TDRE BIT_TC TRAMA_NULA ERR_TRAMA ERR_PARIDAD TRAMA_OK TRAMA_KO EQU 16 EQU 17 EQU 24 EQU 23 EQU $FF EQU $AA EQU $80 EQU $55 EQU $00 * Bit indicador de error de trama (Frame Error). * Bit de error de paridad (Parity Error). * Bit indicador de registro TDR vaco. * Bit indicador de transmisin finalizada. * Valor de inicializacin antes de recibir trama * Valor devuelto cuando hay error de trama * Valor devuelto cuando hay error de paridad * Valor de confirmacin de trama correcta * Valor de confirmacin de trama errnea

177

****************************************************************************** * 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 ORG $110 VECTOR_QSM DC.L LEER_SCI * Vector de interrupcin $44 * Vector de la excepcin TRAP #0

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

*******************************************************************

178

INHAB_WDOG: MOVE.B #$40,SYPCR RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

**************************** QSM_CFG ***************************** * Configuracin del QSM_SCI *

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

************************** 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 RTS * Interrupciones habilitadas para la recepcin (RIE) * 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 RTS * tramas de 7 bits + bit de paridad impar RTS

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

******************************************************************************

179

************************** 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 MOVE.L D1,-(A7) SCSR,D1 * Lectura de los registros de estado y de datos. * a la vez; se resetean los flags de estado. * automticamente. BTST.L BNE BTST.L BNE ANDI.W MOVE.W BRA TRAMA_ERROR MOVE.W BRA #ERR_TRAMA,D0 FIN_LECTURA #BIT_FE,D1 TRAMA_ERROR #BIT_PE,D1 PARIDAD_ERROR #$007F,D1 D1,D0 FIN_LECTURA * Nos quedamos con los bits 0 a 6 en D3. * Copia en D0 el dato bueno. * Se comprueba el error de paridad. * Se comprueba el error de trama.

PARIDAD_ERROR MOVE.W FIN_LECTURA MOVE.L RTE *----------------------------------------------------------------------------* (A7)+,D1 #ERR_PARIDAD,D0

************************ 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 ESPERAR MOVE.L BTST.L BEQ ANDI.W MOVE.W SCSR,D1 #BIT_TDRE,D1 ESPERAR #$FE7F,D1 D1,SCSR * Se borran las banderas TDRE y TC. * Se actualiza el registro de estado del SCI. * Se espera hasta que el transmisor est libre. D1,-(A7)

180

MOVE.W MOVE.L RTE

D0,SCDR (A7)+,D1

* Se copian los datos al registro TDR.

*----------------------------------------------------------------------------*

****************************************************************************** * PRINCIPAL *

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

CONFIRMACION_ENVIAR BSR TRANSMISOR_CFG TRAP #0 BRA END NUEVA_TRAMA * Configura el transmisor. * Enva la confirmacin de recepcin de trama.

181

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.

182

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

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 1 Arranque 0 Bit 0 X Bit 1 X Bit 2 X Bit 3 X Bit 4 X Bit 5 X Bit 6 X Bit 7 X Parada 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 0 Id. Disp. y 8 Comando 1 Id. Disp. y 7 Comando 2 Id. Disp. y 6 Comando 3 Id. Disp. y 5 Comando N de dispositivos 1 2 4 8 N de comandos 256 128 64 32

184

4 Id. Disp. y 4 Comando 5 Id. Disp. y 3 Comando 6 Id. Disp. y 2 Comando 7 Id. Disp. y 1 Comando

16 32 64 128

16 8 4 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.

185

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:


f =

R2 1.44 , y el ciclo de trabajo por: Duty = ( R1 + 2 R2 ) C R1 + 2 R2

La eleccin del condensador ms adecuado puede realizarse a partir de las curvas proporcionadas por el fabricante.

186

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 K y un condensador de 100 nF. Para el valor del condensador de 100 nF se obtiene:
R1 + 2 R2 = 1.44 = 144 K 100 100 10 9

Por otro lado se quiere un ciclo de trabajo prximo al 50 %, para ello es necesario que
R1 << R2 . Si se toma un valor de R1 = 0.1 R2 y eligiendo aquellos valores

comerciales ms prximos se obtiene R2 = 68 K y R1 = 8.2 K. 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 K la combinacin serie de una resistencia de 56 K y un potencimetro multivuelta de 20 K 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. 187

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.

188

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.

189

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

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 K 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:
R1 + 2 R2 = 1.44 = 172 K 38000 220 10 12

Por otro lado se quiere un ciclo de trabajo prximo al 50 % para ello es necesario que
R1 << R2 . Si se toma un valor pequeo de R1 = 2 K el ciclo de trabajo ser de 49.4 %

y el valor de R2 = 85 K. Para resolver la desviacin de frecuencia debida a la tolerancia de los componentes se colocar en lugar de la resistencia de 85 K la combinacin serie de una resistencia de 75 K y un potencimetro multivuelta de 20 K 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.

191

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 VCE = 0.2 V., la resistencia de emisor necesaria para limitar la corriente del diodo a 200 mA es:
R= 5 1.7 0.2 = 15.5 0.2

El valor comercial ms prximo disponible es 18 . La tensin en la base del transistor ha de ser menor que:
VB VE + 0.7 = 5 1.7 0.2 + 0.7 = 3.8 V.

Utilizando los dos diodos en serie, la tensin en la base es: VB = 5 1.4 = 3.6 3.8 V. La tensin en el emisor del transistor ser: VE = 5 1.4 0.7 = 2.9 V. y la potencia disipada en la resistencia de 233 mW, por lo que es recomendable utilizar una

192

resistencia de W. La corriente de pico en el LED ser de 161 mA y la corriente media de 80.5 mA.

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.

193

Para el transmisor del ttulo anterior se adapta perfectamente el IS1U60, cuyo diagrama de bloques se muestra en la figura 9.

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

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.

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.

195

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 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 < fc < 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 K presenta una frecuencia de corte de 1290 Hz. y una impedancia de carga de alta. Por ltimo, el 196

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:
SR 2 f osc Amax = 2 38000 5 = 1.2 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. 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.
As A As H BP () = = s s s s2 + +1 s 2 + +1 s 2 + +1 Q Q Q
2 2

El mdulo de la funcin de transferencia vale:

H BP ( ) =

( A ) 2

(1 )

2 2

+ Q

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

197

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. Para obtener la frecuencia central objetivo, fp = 38 Khz, se han elegido los siguientes valores comerciales C = 470 pF y R= 9 K (el valor de la resistencia existe con tolerancia del 1 %), por lo que la frecuencia real obtenida es fp = 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:
A =3 1 = 2.475 Q

Con los valores comerciales para las resistencias resistencias de 150 K y 100 k, 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 198

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. Experimentalmente se ha determinado que una ganancia en torno a 50 es adecuada. Con la pareja de resistencias de 120 K 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:
T /2 exp = 0.9 ;

1/ 2 f = 125 s ln 0.9

199

Como = RC, se han escogido los siguientes valores: R =120 K y C = 1nF, con lo que = 120 s. El tiempo que tarda la seal en alcanzar el 10 % de su valor una vez finalizado el pulso es:
t = ln 0.1 = 287 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 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 Parada 7 Cdigo de instruccin 0 Identificador Bit 1 Arranque

200

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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000). * 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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR SYPCR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24 EQU $FFFA21

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

******************************************************************************

201

GPTMCR ICR DDRGP PORTGP OC1M OC1D TCNT PACTL PACNT TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TI4O5 TCTL1 TCTL2 TMSK1 TMSK2 TFLG1 TFLG2 CFORC PWMC PWMA PWMB PWMCNT

EQU $FFF900 EQU $FFF904 EQU $FFF906 EQU $FFF907 EQU $FFF908 EQU $FFF909 EQU $FFF90A EQU $FFF90C EQU $FFF90D EQU $FFF90E EQU $FFF910 EQU $FFF912 EQU $FFF914 EQU $FFF916 EQU $FFF918 EQU $FFF91A EQU $FFF91C EQU $FFF91E EQU $FFF91F EQU $FFF920 EQU $FFF921 EQU $FFF922 EQU $FFF923 EQU $FFF924 EQU $FFF925 EQU $FFF926 EQU $FFF927 EQU $FFF928

* Configuracin del GPT. * Configuracin de interrupciones del GPT. * Determina el sentido del puerto GP. * Registro de lectura y escritura del puerto GP. * Mscara para asignar los pin de captura de OC. * Registro de datos a comparar con el puerto OC. * Registro del GPT asociado a las capturas IC, OC y PAI. * Configuracin del acumulador de pulsos PAI. * Es el contador de registro de eventos del PAI. * Capturan el TCNT cuando se registra un evento en IC1. * Capturan el TCNT cuando se registra un evento en IC2. * Capturan el TCNT cuando se registra un evento en IC3. * Cuando coincide con TCNT causa eventos en los pin OC. * Si el valor coincide con TCNT causa un evento en OC2. * Si el valor coincide con TCNT causa un evento en OC3. * Si el valor coincide con TCNT causa un evento en OC4. * Pin compartido (Puede realizar una funcin TIC o TOC). * Configura el modo de comparacin y nivel de salida. * Configura que flanco provoca la captura en los IC. * Habilita las interrupciones de IC y OC. * Habilita las interrupciones del PAI y del TIMER. * Registro de flags de interrupciones de IC y OC. * Registro de flags de interrupciones del PAI y TIMER * Fuerza una salida en los pin OC y PWM. * Configuracin del PWM. * Determina el ancho de pulso. ($80 es medio ciclo) * Determina el ancho de pulso. ($80 es medio ciclo) * Registro del contador del PWM. * Buffer para prevenir glitches cuando modificamos PWMA. * Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

PWMBUFA EQU $FFF92A PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

****************************************************************************** * REGISTROS QSM-QSI *

****************************************************************************** QSMCR QILR QIVR SCCR0 EQU $FFFC00 EQU $FFFC04 EQU $FFFC05 EQU $FFFC08 * Configuracin del QSM. * Configuracin del nivel de interrupcin. * Configuracin del vector de interrupcin. * Control 0 del SCI determina velocidad de transmisin.

202

SCCR1 SCSR SCDR PORTQS PQSPAR DDRQS

EQU $FFFC0A EQU $FFFC0C EQU $FFFC0E EQU $FFFC15 EQU $FFFC16 EQU $FFFC17

* Control 1 del SCI para configuraciones varias. * Registro de estado del SCI. * Registro de datos del SCI (RDR y TDR). * Registro de lectura y escritura del Puerto QS. * Asignacin de pins como Puerto QS o como QPSI. * Direccin E/S de los pins del Puerto QS.

****************************************************************************** * CONTROL DEL QSM - SCI *

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

****************************************************************************** * VECTORES DEL RESET *

****************************************************************************** ORG $0 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 * ******************************************************************************

203

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 RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

**************************** QSM_CFG ***************************** * Configuracin del QSM_SCI *

****************************************************************** QSM_SCI_CFG MOVE.W #$008F,QSMCR MOVE.B #$44,QIVR MOVE.B #$06,QILR MOVE.W #$0A3D,SCCR0 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. * * * * Supervisor de arbitrio 15. * Vector de interrupcin $44. * Nivel de interrupcin 6 para el SCI. * velocidad de TX/RX de 100 baudios.

****************************************************************** RECEPTOR_CFG MOVE.W #$0424,SCCR1 RTS * Interrupciones habilitadas para la recepcin (RIE) * tramas de 7 bits + bit de paridad impar RTS

204

****************************************************************************** * 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 MOVE.L D1,-(A7) SCSR,D1 * Lectura de los registros de estado y de datos. * a la vez; se resetean los flags de estado. * automticamente. BTST.L BNE BTST.L BNE ANDI.W MOVE.W BRA TRAMA_ERROR MOVE.W BRA #ERR_TRAMA,D0 FIN_LECTURA #BIT_FE,D1 TRAMA_ERROR #BIT_PE,D1 PARIDAD_ERROR #$007F,D1 D1,D0 FIN_LECTURA * Nos quedamos con los bits 0 a 6 en D3. * Copia en D0 el dato bueno. * Se comprueba el error de paridad. * Se comprueba el error de trama.

PARIDAD_ERROR MOVE.W FIN_LECTURA MOVE.L RTE *----------------------------------------------------------------------------* (A7)+,D1 #ERR_PARIDAD,D0

****************************************************************************** * PRINCIPAL *

****************************************************************************** ORG $400 PRINCIPAL BSR BSR MOVEA.L INHAB_WDOG QSM_SCI_CFG #INI_BUFFER,A0 * Se inhabilita watchdog * Se configura el QSM * Carga direccin inicio del buffer de datos.

205

BSR NUEVA_TRAMA MOVE.W BUCLE CMP.W BEQ CMP.W BEQ CMP.W BEQ MOVE.B BRA END

RECEPTOR_CFG

* Se activan las interrupciones del receptor

#TRAMA_NULA,D0

* Valor de cuando no se recibe trama.

#TRAMA_NULA,D0 BUCLE #ERR_TRAMA,D0 NUEVA_TRAMA #ERR_PARIDAD,D0 NUEVA_TRAMA D0,(A0)+

* Espera a la recepcin de una trama

* Comprueba si hay error en la trama

* Comprueba si hay error en la paridad

* Copia la trama recibida en el buffer.

NUEVA_TRAMA

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

207

atendiendo a una seal de encendido o apagado. El duplexor se encarga de la conversin 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

208

resistencia mxima del bucle local de usuario, salvo casos excepcionales, no supera el valor de 1200 ohmios. 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 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 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 Frecuencia Forma de onda Tensin alterna (valor eficaz) Resistencia interna del generador de seal de llamada. REQUISITOS 25 Hz 3 Hz Sinusoidal 75 V 10 % 200

210

Tiempo mximo de aplicacin Cadencia llamada Distorsin Mtodo de aplicacin de la seal

60 s.

de 1500 ms 10 % (on) / 3000 ms 10% (off) 5% 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 Aviso de llamada Cierre / apertura del bucle Aviso de recepcin de tono Bit 0 - Tono recibido (Bit menos significativo) Bit 1 - Tono recibido Bit 2 - Tono recibido Bit 3 - Tono recibido (Bit ms significativo)
Tabla 2 Seales de control.

SENTIDO Salida Entrada Salida Salida Salida Salida Salida

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 K 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.
fc = 1 1 = = 15,92 Hz 2RC 2 10 4 10 6

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 VC =VCC 1 e

= 5 (1 e t )

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

213

regulador de tensin. La prueba consistir en llamar y comprobar el cambio de tensin en el colector del optotransistor. 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.

214

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 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:

215

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. El diodo zener tiene como fin proteger el resto de la circuitera contra sobretensiones. La resistencia de 820 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 cuando la distancia es muy corta (centralitas privadas, por ejemplo) y un mximo de 1200 como caso peor para distancias muy largas. La resistencia de carga (RIT) 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.

216

En los casos lmite se tendr: La resistencia mxima para garantizar una corriente de bucle superior a la mnima es:
IL = VL 20mA RLmax + RIT

RIT

VL 48 RLmax = 1200 = 1200 20mA 20 10 3

La resistencia mnima para garantizar una corriente de bucle inferior a la mxima es:

IL =

VL 30mA RLmin + RIT

RIT

VL 48 RLmin = 500 = 1100 30mA 30 10 3

Por tanto, la resistencia podr tomar cualquier valor dentro del margen posible, escogiendo finalmente el valor central:
1100 R IT 1200

La resistencia RIT depende de dos parmetros de diseo, que son las resistencias R1 y R2, 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, RL y la tensin en circuito abierto VL (generador equivalente de Thevenin).

VL ( R1 + RL ) I RIT = R1 + R2 TRT VL + R 2 I TRT

Como una primera aproximacin, que por lo general ser suficiente para el objetivo que se pretende, se tomar la siguiente expresin:
RIT = R1 + 0,4 R2

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

217

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 , etc. Para los valores de R1 = R2 = 820 la resistencia RIT podr tomar, en funcin de la resistencia de la lnea, RL, valores comprendidos entre 1060 y 1200 , 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 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 que limita la corriente por su respectivo fotodiodo. Debe tenerse en consideracin que las resistencias R1 y R2 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:
4.2 VZ 10.6

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 P1 (100 W aproximadamente), el valor de esta corriente ser:
i s1 = P1 10 4 = 247 A. R1 + R2 1640

218

La corriente por el fototransistor es de un 60% aproximadamente y, por tanto, la tensin en colector es de:
v s1 = 0.6 RC is1 = 0.6 220 247 10 6 = 32 mV

Los valores referidos son corrientes y tensiones eficaces. La tensin pico-pico que se puede medir con un osciloscopio es 110 mVpp. 8.3.4.2.2 Transmisin de la seal vocal

El circuito equivalente de seal para la transmisin se muestra en la figura 9.

Figura 9 Circuito equivalente de transmisin de seal.

La corriente en la lnea iL se modula con la corriente is2 del fototransistor y depender de la parte real de la impedancia de la lnea, RL que como modelo se considerar de 600 .
iL = R2 is 2 RL + R1 + R2

Para la potencia media mxima de 100 W que se puede inyectar en el PTR con una impedancia de carga en lnea de 600 , la corriente eficaz media en el fototransistor es:
is 2 = RL + R1 + R2 iL R2
iL = P RL

is 2 =

600 + 820 + 820 10 4 = 1.1 mA 820 600

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 1K 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. 219

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: Medir la tensin en bornes de R1 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 R1 y R2 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 R2 es superior a lo debido.

220

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 R2 y

comprobar que no se ha quemado midiendo su valor de 820 . Sustituir si es necesario. Con la lnea conectada medir la tensin en R2. 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 R2 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 R1), 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 que limita la corriente en el fotodiodo. Calcular la resistencia adecuada.

221

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 Vpp (1 Vrms) 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).

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.

222

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

223

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

fbaja

falta

Q4

Q3

Q2

Q1

224

697 697 697 770 770 770 852 852 852 941 941 941 697 770 852 941

1209 1336 1477 1209 1336 1477 1209 1336 1477 1209 1336 1477 1633 1633 1633 1633

1 2 3 4 5 6 7 8 9 0 * # A B C D

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

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

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

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 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 SYNCR RSR PORTE EQU $FFFA00 EQU $FFFA04 EQU $FFFA06 EQU $FFFA11 * Controla la configuracin del sistema ($00CF). * Fija frecuencia y modo de operacin del reloj ($3F08). * Guarda la causa de un reset (Ej.-$80, reset hardware). * Registro de lectura y escritura en el puerto E. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto E pin a pin. * Asignacin del puerto E (Puerto o control de BUS). * Registro de lectura y escritura en el puerto F. * Tiene exactamente la misma funcin que el anterior. * Determina el sentido del puerto F pin a pin. * Asignacin del puerto F (Puerto F o control de BUS). * Configuracin de interrupciones peridicas ($000F). * Contiene la cuenta del timer peridico ($0000).

PORTE1 EQU $FFFA13 DDRE PEPAR PORTF EQU $FFFA15 EQU $FFFA17 EQU $FFFA19

PORTF1 EQU $FFFA1B DDRF PFPAR PICR PITR EQU $FFFA1D EQU $FFFA1F EQU $FFFA22 EQU $FFFA24

225

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. * Sirve junto con CSPAR1 para configurar la funcin de * los pins de Chip Select (CS, Port C, etc.). * Registro de escritura en el puerto C.

CSPAR0 EQU $FFFA44 CSPAR1 EQU $FFFA46 PORTC EQU $FFFA41

****************************************************************************** * REGISTROS GPT-PWM *

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

PWMBUFA EQU $FFF92A

226

PWMBUFB EQU $FFF92B PRESCL EQU $FFF92C

* Buffer para prevenir glitches cuando modificamos PWMB. * Guarda el valor del multiplicador del GPT.

****************************************************************************** * TIPOS DE RETARDO *

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

****************************************************************************** * CONSTANTES DE INTERS *

****************************************************************************** NUM_TIMBRES EQU 4

****************************************************************************** * CONTROL DEL INTERFAZ TELEFNICO *

****************************************************************************** PUERTO BIT_TONO BIT_TIMBRE BIT_GANCHO EQU PORTF EQU 4 EQU 5 EQU 6 * Puerto de comunicacin con el interfaz.

* Se pone a 1 durante un tiempo al recibirse un tono. * Se pone a 1 cuando aparece el timbre de llamada. * 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:

227

****************************************************************************** * 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 RTS *----------------------------------------------------------------------------* * Inhabilitamos WatchDog

*************************** 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 MOVE.B MOVE.B RTS *------------------------------------------------------------------* #$40,DDRF #$00,PFPAR #$00,PORTF * PF0..PF3 entradas, PF4..PF7 salidas. * Configura el registro de control del puerto F.

****************************************************************************** * 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

228

************************* 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 MOVE.L D0,-(A7) #NUM_TIMBRES,D0

NO_HAY_TIMBRE BTST.B #BIT_TIMBRE,PUERTO

BNE NO_HAY_TIMBRE HAY_TIMBRE BTST.B BEQ SUBQ #BIT_TIMBRE,PUERTO HAY_TIMBRE #1,D0

BNE NO_HAY_TIMBRE BSET.B MOVE.L RTS *-------------------------------------------------------------------* #BIT_GANCHO,PUERTO (A7)+,D0

***************************** COLGAR ****************************** * Esta rutina cuelga desactivando el rel del gancho automtico. *

******************************************************************* COLGAR BCLR.B RTS *-------------------------------------------------------------------* #BIT_GANCHO,PUERTO

************************** TONO_RECIBIR *************************** * Esta rutina lee el decodificador de tonos y devuelve a travs * del registro D0 el tono recibido. * *

******************************************************************* TONO_ESPERAR CLR.L ESPERAR_TONO BTST.B BNE MOVE.B #BIT_TONO,PUERTO ESPERAR_TONO PUERTO,D0 D0

229

ANDI.B RTS

#$0F,D0

*----------------------------------------------------------------------------*

************************* 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

CMP.B #3,D7 BEQ BRA SERVICIO3 FIN

SERVICIO1 BSR BRA LLAMADA_ATENDER FIN

SERVICIO2 BSR BRA COLGAR FIN

SERVICIO3 BSR FIN RTE *----------------------------------------------------------------------------* TONO_RECIBIR

****************************************************************************** * PRINCIPAL * ****************************************************************************** ORG $400 PRINCIPAL BSR BSR MOVE.B INHAB_WDOG PORT_F_CFG #00,PUERTO

NUEVA_LLAMADA

230

MOVE.B TRAP #0 MOVE.B TRAP #0 BUCLE MOVE.B TRAP #0 CMP.B BEQ BRA END

#2,D7

* Llamada al servicio colgar

#1,D7 * Descuelga cuando entra una llamada

#3,D7 * Recibe un tono y lo guarda en D0 #C,D0 NUEVA_LLAMADA BUCLE * Comprueba si es la tecla # * Si lo es cuelga y espera una nueva llamada * Si no lo es espera recibir otro tono

231

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.

232

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.

233

I.1.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 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.

234

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 250 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 1800 mximo. Resistencia del par de hilos comprendida entre 0 y 1200. Caractersticas del par de hilos como las de un cable subterrneo de 0.405mm:

235

Impedancia caracterstica a 800Hz de 150 (1-j) con

286/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 100K, en conversacin no ser superior a 600.

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 100K, la corriente consumida por los mismos ser

236

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:

PA = V A I A = 48 2 250 6.25 10 3 6.25 = 280mW

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 600. Bajo estas hiptesis, la potencia disponible en bucle cerrado ser:
48 2 PC = VC I C = R I C = 600 = 1.14W 600 + 2 500

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:
PBA = PA = 0.75 280 = 210mW

Bucle cerrado:
PBC = PC = 0.75 1140 = 855mW

237

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, Pmin, 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 Pmax. 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 Pmax > PBC 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 Pmin < PBA. Adems deber verificarse el siguiente balance energtico: Energa consumida 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)Pmin + aPmax]T 2. Energa suministrada = [(1-a)PBA + aPBC]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)Pmin + aPmax]T [(1-a)PBA + aPBC]T a(Pmax - Pmin + PBA - PBC) PBA - Pmin

( Pmax

PBA - Pmin + PBA ) ( PBC + Pmin )

Como no disponemos de datos reales de consumo del equipo estableceremos unos mrgenes razonables para el funcionamiento del mismo: 238

50mW Pmin 100mW 5W Pmax 10W En el caso peor, en que Pmin = 100mW y Pmax =10W, el trfico mximo soportado es: amax = 0.012 Erlang, En el otro extremo, Pmin = 50mW y Pmax =5W, obtendremos un trfico mximo aceptable de: amax = 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 amax 0.012 amax 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. 239

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 < amax , 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 240

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.

241

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

242

5V. El inconveniente que presenta es que slo se fabrica con 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 243

frecuencia de entre 125 y 135 Khz. Se ha optado, a partir de estos datos, por utilizar una 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.

244

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 transceptor

de

bloques

de

un

conjunto

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

245

es el propio sistema el que detecta el problema cuando transcurren varios periodos sin haber recibido la medida correspondiente. 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.

246

Figura 3 Diagrama de bloques del transceptor semi-duplex.

III.3 Descripcin del transceptor

Figura 4 Transceptor semi duplex para red elctrica.

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.

247

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:
fc = 1 2 LC = 33.85 Khz

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.

Con todo esto el circuito es capaz de garantizar la transmisin de las seales de inters garantizando unos niveles de aislamiento y seguridad adecuados.

248

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:


fc = 1 2 C R2 R3 = 132.6 Khz

Q=

R3 2 R2 R3

=5

R1 = 100 R2

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.

249

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.

250

Figura 8 Modulador.

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:

251

1/ 2 f = 36.5s ln 0.9

Como = RC, se han escogido los siguientes valores: R =120 K y C = 330pF, con lo que = 39.6 s. El tiempo que tarda la seal en alcanzar el 10 % de su valor una vez finalizado el pulso es:
t = ln 0.1 = 91 s que es el 4.5 % de la duracin de un bit.

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.

252

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

253

[Snchez, 1994]: D. Snchez Maqueda, Domtica: Tecnologa y Calidad de Vida. Apfelsine, S.L. Montajes e Instalaciones, 1994. http://www.energuia.es [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

254

NDICE DE CONTENIDO
1. TELECONTROL Y MICROCONTROLADORES................................................1
1 INTRODUCCIN....................................................................................................................................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.2 LAS REDES DE COMUNICACIONES........................................................................................................7 1.1.2.1 Comunicacin almbrica.........................................................................................................8
1.1.2.1 Cableado especfico...........................................................................................................................8 1.1.2.2 Utilizacin de la red elctrica.............................................................................................................8

1.1.1.17 Comunicacin inalmbrica....................................................................................................9


1.1.1.17.1 Transmisin por radio...................................................................................................................9 1.1.1.17.2 Transmisin ptica por infrarrojos................................................................................................9

1.3 SISTEMAS BASADOS EN UN MICROCONTROLADOR..............................................................................9 1.1.3.1 El microcontrolador Motorola MC68331................................................................................9 1.4 OBJETIVOS.........................................................................................................................................11 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 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...........................................................................................................................35 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....................................................................................................................38


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.........................................................................39 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........................................................................................................................43
2.3.1.5.1 Fuentes de interrupcin externas...................................................................................................43 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

VI

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............................................................................................................46 2.3.2 TEMPORIZADOR DE PROPSITO GENERAL (GPT)...........................................................................49 2.3.2.1 Registros del GPT y mapa de direcciones.............................................................................49 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.1Comparacin de salida 1........................................................................................................60 2.3.2.6.3.2Comparacin 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 2.3.4.4 Registros de SCI.....................................................................................................................72
2.3.4.4.1 Registros de control.......................................................................................................................72

VII

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.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 2.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.....................................................................................90 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 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

VIII

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.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.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 (VCCA, VCCD, VSSA, VSSD)........................................................................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 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

IX

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.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.1 INTRODUCCIN.............................................................................................................................182 7.1.1 ESTNDARES DE CODIFICACIN DE COMANDOS...........................................................................183 7.1.1.1 Codificacin RC-5................................................................................................................183 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 7.2.2 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 7.3.2.1 Red de desacoplo.................................................................................................................196 7.3.3 FILTRO PASO BANDA.....................................................................................................................197 7.3.4 DEMODULADOR............................................................................................................................198 7.3.4.1 Amplificador de entrada......................................................................................................199 7.3.4.2 Detector de envolvente.........................................................................................................199 7.3.4.3 Regenerador.........................................................................................................................200 7.4 CONEXIN AL MICROCONTROLADOR..................................................................................200 7.4.1 PROGRAMA BSICO DE ATENCIN DE COMUNICACIONES.............................................................200 8.1 INTRODUCCIN.............................................................................................................................207 8.2 LA LNEA TELEFNICA...............................................................................................................208 8.2.1 ALIMENTACIN EN CORRIENTE CONTINUA...................................................................................208 8.2.1.1 Alimentacin con puente convencional de baja resistencia................................................208
8.2.1.1.1 Tensin de alimentacin en reposo..............................................................................................208 8.2.1.1.2 Mximo consumo de corriente en situacin de reposo................................................................209 8.2.1.1.3 Corriente de lnea en estado de lnea tomada...............................................................................209

8.2.1.2 Alimentacin con limitacin de corriente............................................................................209 8.2.1.3 Polaridad.............................................................................................................................209 8.2.2 CRITERIOS DE ESTADO DE LA LNEA.............................................................................................209 8.2.3 NIVEL MXIMO A LA ENTRADA DEL PTR....................................................................................210 8.2.3.1 Nivel medio mximo de transmisin....................................................................................210 8.2.3.2 Nivel de pico mximo...........................................................................................................210 8.2.4 SEAL (CORRIENTE) DE LLAMADA...............................................................................................210 8.3 DESCRIPCIN MODULAR Y MONTAJE DEL SISTEMA......................................................211 8.3.1 DETECTOR DE LLAMADA..............................................................................................................211 8.3.2 ALIMENTACIN.............................................................................................................................214 8.3.3 GANCHO AUTOMTICO.................................................................................................................215 8.3.4 DUPLEXOR....................................................................................................................................215 8.3.4.1 Clculo de la polarizacin ..................................................................................................216 8.3.4.2 Transmisin de la seal.......................................................................................................218
8.3.4.2.1 Recepcin de la seal vocal.........................................................................................................218 8.3.4.2.2 Transmisin de la seal vocal......................................................................................................219

8.3.4.3 Montaje y prueba del circuito..............................................................................................219 8.3.5 AMPLIFICADORES.........................................................................................................................222 8.3.6 DETECTOR DE TONOS (DTMF).....................................................................................................223

XI

8.4 EJEMPLOS DE APLICACIONES..................................................................................................225 8.4.1 RUTINAS BSICAS DE GESTIN DEL INTERFAZ.............................................................................225 I.1 SOLDADURA DE ESTAO............................................................................................................233 I.2 WRAPPING O ENROLLADO.....................................................................................................233 I.1.1 DESCRIPCIN DE LA HERRAMIENTA..............................................................................................234 I.2.1.1 Procedimiento de conexin:.................................................................................................234 II.1 ESPECIFICACIONES DEL BUCLE DE ABONADO.................................................................235 II.1.1 CARACTERSTICAS EN CORRIENTE CONTINUA..............................................................................235 II.2 ESPECIFICACIONES DEL APARATO DE ABONADO...........................................................236 II.2.1 CARACTERSTICAS EN CORRIENTE CONTINUA..............................................................................236 II.3 HIPTESIS DE PARTIDA.............................................................................................................236 II.3.1 ESTADO DE BUCLE ABIERTO........................................................................................................236 II.3.2 ESTADO DE BUCLE CERRADO.......................................................................................................237 II.3.3 EFICIENCIA DE LA FUENTE...........................................................................................................237 II.4 POTENCIA FINAL DISPONIBLE................................................................................................237 II.4.1 PLANTEAMIENTO GENERAL DE LA SOLUCIN..............................................................................238 II.4.2 DIMENSIONADO DE LA BATERA..................................................................................................239 II.4.3 OTROS ASPECTOS A CONSIDERAR................................................................................................240 III.1 INTRODUCCIN.........................................................................................................................242 III.2 MDEM PARA RED ELCTRICA ..........................................................................................243 III.2.1 ESTRUCTURA DE BLOQUES DEL TRANSMISOR...........................................................................245 III.2.2 ESTRUCTURA DE BLOQUES DEL RECEPTOR................................................................................245 III.2.3 ESTRUCTURA DE BLOQUES DE UN CONJUNTO TRANSCEPTOR....................................................245 III.3 DESCRIPCIN DEL TRANSCEPTOR.....................................................................................247 III.3.1 MDULOS COMUNES..................................................................................................................247 III.3.1.1 Separador de red...............................................................................................................247 III.3.1.2 Filtro paso banda..............................................................................................................248 III.3.1.3 Conmutador......................................................................................................................249 III.3.2 MDULOS DEL TRANSMISOR.....................................................................................................249 III.3.2.1 Modulador.........................................................................................................................250 III.3.2.2 Adaptador de nivel............................................................................................................250 III.3.3 MDULOS DEL RECEPTOR..........................................................................................................250 III.3.3.1 Adaptador de nivel............................................................................................................251 III.3.3.2 Demodulador....................................................................................................................251

XII

III.3.3.3 Conformador de seal.......................................................................................................251 III.4 OBSERVACIN FINALES..........................................................................................................251

BIBLIOGRAFA.........................................................................................................252

XIII

Vous aimerez peut-être aussi