MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

346
Capítulo 1 Telecontrol y microcontroladores 1.1 Introducción El rápido avance de las telecomunicaciones en los últimos años ha supuesto una auténtica revolución en nuestras vidas. En los hogares nadie se plantea levantarse para cambiar el canal de la televisión, encender el equipo de música o el aparato de aire acondicionado. El mando a distancia al igual que el teléfono móvil se han convertido en elementos tan cotidianos que no se les da apenas importancia. La posibilidad de mantener una conexión permanente a internet por un precio módico 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 calefacción, o encender el riego del jardín. El término telecontrol, contiene el prefijo “tele” que proviene del griego cuyo significado es “lejos”. Por tanto etimológicamente 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 día, ha sido y es de una dificultad tecnológica importante. Debemos notar que las primeras aplicaciones de telecontrol aparecen 1

Transcript of MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Page 1: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 1

Telecontrol y microcontroladores

1.1 Introducción

El rápido avance de las telecomunicaciones en los últimos años ha supuesto una

auténtica revolución en nuestras vidas. En los hogares nadie se plantea levantarse para

cambiar el canal de la televisión, encender el equipo de música o el aparato de aire

acondicionado. El mando a distancia al igual que el teléfono móvil se han convertido en

elementos tan cotidianos que no se les da apenas importancia. La posibilidad de

mantener una conexión permanente a internet por un precio módico 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 calefacción, o encender el

riego del jardín.

El término telecontrol, contiene el prefijo “tele” que proviene del griego cuyo

significado es “lejos”. Por tanto etimológicamente 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 día, ha sido y es de una dificultad tecnológica importante.

Debemos notar que las primeras aplicaciones de telecontrol aparecen en el ámbito

industrial durante la década de los sesenta, tan sólo hace unos cuarenta años.

El control a distancia de las máquinas ha sido una necesidad que ha ido apareciendo con

la evolución de la industria. Una breve reseña desde sus orígenes nos permitirá tomar

conciencia del esfuerzo científico y tecnológico que ha supuesto llegar al estado actual.

Las industrias, en sus inicios, eran grandes talleres con algunos ingenios mecánicos que

permitían elevar la producción respecto del método tradicional y que debido a su

complejidad eran manejadas por maestros artesanos con un importante grado de

conocimiento técnico. La mecanización consistió en descomponer el trabajo artesanal,

necesitado de bastantes conocimientos, en tareas simples y repetitivas que eran

ejecutadas por máquinas cada vez más evolucionadas y que, a su vez, requerían una

intervención cada vez menor del hombre en la producción. A medida que aumentaba la

1

Page 2: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

automatización fueron apareciendo productos cada vez más elaborados cuyos procesos

de fabricación eran cada vez más complejos. De esta forma nace la necesidad de un

centro de mando de todo el proceso que permitiese una mejor coordinación de los

diferentes elementos que lo componen.

La industria nace con el descubrimiento del vapor como medio para la transformación

de la energía calorífica en mecánica. Las técnicas en valvulería y calderería fueron las

primeras en despegar y aún hoy en día son muchas las industrias que utilizan el vapor en

alguna fase del proceso de fabricación. Los primeros cuadros de mandos permitían la

operación de los diferentes elementos mediante accionamientos mecánicos como la

apertura y el cierre manual de válvulas, movimiento de palancas, etc.

El siguiente paso en la automatización y en el perfeccionamiento de los procesos fue la

regulación. Según fue aumentando la complejidad de los productos (textiles, químicos,

metalúrgicos, etc.) y según fueron apareciendo maquinas cada vez más grandes,

empezaron a ser necesarios sistemas de regulación continua.

La regulación permitió la mejora de los procesos industriales, obteniendo mayores

rendimientos mediante la intervención coordinada de grandes máquinas con mayor

capacidad de producción. El aumento del tamaño de éstas las convertía en grandes

devoradoras de energía que movían grandes cantidades de materias primas en el proceso

de fabricación. Las primeras regulaciones estaban basadas en la neumática. La acción de

la presión del aire a través de los conductos y la existencia de válvulas de doble acción,

actuadores y otros dispositivos permitía la centralización del control.

La llegada de los dispositivos eléctricos y electromecánicos supuso un nuevo empujón

hacia la centralización del control de las industrias, ya que permitían transmitir las

señales eléctricas 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 fábrica ha hecho

que las necesidades de telecontrol se limiten a la centralización de los controles de las

diferentes máquinas que intervienen en el proceso. En general, en las grandes industrias

una parada súbita (también conocida como disparo) suele tener graves consecuencias y

en muchas ocasiones importantes pérdidas económicas hasta que se normaliza de nuevo

la producción. Por este motivo, los industriales han sido tradicionalmente bastante

reacios a introducir cambios que no ofreciesen una clara ventaja.

2

Page 3: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Las primeras industrias en demandar nuevas necesidades de telecontrol fueron aquéllas

cuya producción se hallaba distribuida geográficamente. Un ejemplo de ellas son las

industrias petroleras que transportaban el combustible por medio de oleoductos o

gasoductos que discurrían por extensas zonas de terreno con estaciones de bombeo o

compresión distribuidas por todo el recorrido.

Fue en la década de los sesenta cuando éstas empezaron a tender líneas de

telecomunicación paralelas a los conductos que permitieron la centralización del control

de las subestaciones de bombeo y compresión por medio del telecontrol.

Uno de los problemas omnipresentes en este proceso ha sido la fiabilidad. Las

tecnologías de telecontrol en sus inicios sólo tenían justificación en un número muy

reducido de aplicaciones debido al elevado coste de las mismas y la escasa fiabilidad

que ofrecían.

El enorme avance de la tecnología electrónica y lo ajustado de los precios hace que hoy

podamos disponer de equipos para el control y telecontrol de dispositivos y máquinas,

tanto de la gama profesional como de la doméstica, 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 más elevado, es posible encontrar una diversidad de

dispositivos en el mercado de consumo destinados al telecontrol dentro del ámbito

doméstico, como pueden ser mandos para puertas de garaje, alarmas de intrusión,

programadores de riego, dispositivos para la activación telefónica de aparatos como la

calefacción, etc.

La forma de vida actual obliga a una continua evolución de todo aquello que nos rodea,

evolución a la que no escapan nuestros hogares; desde la búsqueda de nuevos estilos de

diseño, técnicas de edificación y nuevos materiales hasta la incorporación de

tecnologías que gestionen el uso de la energía, 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 aparición

del concepto de vivienda. No obstante, las necesidades actuales son muy diferentes de

las de hace cincuenta años. La vivienda es, en la mayoría de los casos, la principal

inversión que realiza una familia a lo largo de su vida y las características del entorno

social en el que nos movemos hacen que nuestra preocupación principal se centre

actualmente en posibles agresiones exteriores, robo, incendio, intrusión, fugas de agua,

3

Page 4: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 doméstico existen una multitud de aplicaciones y servicios destinados a

mejorar nuestra seguridad y confort que han dado lugar a un área tecnológica que se

denomina domótica.

A continuación se detallan algunos de los servicios que pueden ser implementados en

una vivienda.

1.1.1 Servicios domóticos

1.1.1.1Gestión del sistema de calefacción y refrigeración

El sistema de gestión, a nivel central, permitirá la programación diaria y semanal, así

como las consignas de regulación 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 optimización, dependencia a dependencia, en

función de la ocupación, de las temperaturas interior y exterior y de las condiciones

térmicas de la edificación.

1.1.1.2Estadísticas de consumo

El sistema contabiliza y permite conocer el consumo de los sistemas de calefacción,

refrigeración, ACS, agua y teléfono, empleando para ello contadores con salida de

impulsos. La presentación de los consumos es de tipo totalizador o parcial, según

intervalos de tiempo y pueden realizarse gráficas estadísticas.

1.1.1.3Control de las tomas eléctricas

Se realiza el control sobre diferentes tomas eléctricas, lo que permite gestionar el

consumo energético de electrodomésticos conectándolos a las horas más propicias de

consumo en función de las tarifas eléctricas. También puede gestionar funciones de

conexión y desconexión de dispositivos para realizar una multitud de funciones tales

como despertador, desconexión de enchufes en las zonas de juego de los niños,

simulación de presencia, etc.

1.1.1.4Control de las persianas y toldos

Las motorizaciones de toldos y persianas se controlan mediante pulsadores locales, de

planta y a través del sistema de gestión centralizado. Permite la programación horaria y

4

Page 5: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

semanal por el usuario, actuando en función de datos captados como son la insolación,

las temperaturas interior y exterior, la pluviometría y la velocidad del viento.

1.1.1.5Control de la iluminación exterior

Puede realizarse un control sobre diferentes zonas de alumbrado exterior en función de

un programa horario, semanal, mensual y crepuscular.

1.1.1.6Control del riego en jardín y jardineras

Puede realizarse una programación horaria y semanal secuenciada sobre diferentes

zonas de jardín y jardineras, en función de la humedad del terreno, la insolación y la

pluviometría, condicionando el funcionamiento de los aspersores a la no presencia de

personas en el jardín, para evitar sobresaltos derivados de la conexión del riego.

1.1.1.7Gestión de la piscina

Al margen de los sistemas habituales de programación, según la tarifa eléctrica, 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 detección del porcentaje de cloro en el agua, con la

corrección del mismo.

1.1.1.8Gestión de la alarma antiintrusión

La alarma antiintrusión se gestiona según dos esquemas de trabajo: ausencia o presencia

de los usuarios en el interior de la vivienda.

1.1.1.9Control de accesos

Se realiza el control de accesos mediante teclado codificador y/o lector de tarjetas

magnéticas o inteligentes, con actuación sobre la puerta principal de acceso. Es posible

un programa de restricción de horarios de uso y código de seguridad antiatraco, con

apertura de la puerta y disparo de alarma silenciosa. El acceso al garaje se controla

mediante sistema de radio, con codificación ternaria, que inicia la temporización de

entrada del sistema de alarma, al tiempo que realiza la apertura de la puerta basculante.

1.1.1.10 Gestión de la alarma médica/pánico

Gestión de la alarma médica/pánico a partir de un medallón emisor por radio y un

receptor específico conectado al bus de comunicaciones. Es posible la selección

mediante programa del tipo de actuación tras una alarma: transmisor telefónico, sirena,

etc.

5

Page 6: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1.1.1.11 Gestión de la alarma de incendio

Se realiza la detección infrarroja/termovelocimétrica de incendios en los puntos de

mayor riesgo: garaje, cocina, salón comedor, dormitorios, etc. Tras la detección de

incendio se desencadena una actuación dirigida a advertir a las personas presentes en la

vivienda mediante la señalización interior y la actuación de la sirena, seguidas de

llamadas de aviso a los números telefónicos de emergencia.

1.1.1.12 Gestión de la alarma de inundación

Si se detecta agua en el pavimento de las zonas de riesgo: cuartos de baño, cocina y

lavadero, se acciona la electroválvula de corte de suministro de agua a la vivienda y se

inician las llamadas de aviso a los números de teléfono prefijados.

1.1.1.13 Gestión de la alarma de monóxido de carbono

Esta alarma detecta el grado de toxicidad por concentración de monóxido de carbono en

el garaje. Tras la detección de una concentración peligrosa de gas tóxico se produce la

puesta en marcha del sistema de ventilación del garaje, así como la actuación de la

señalización interior de la vivienda y la sirena y se inician las llamadas de aviso a los

números de teléfono prefijados.

1.1.1.14 Supervisión de la temperatura del congelador

Si se detecta la elevación de la temperatura del congelador por encima del umbral

prefijado se activa la señalización interior de la vivienda y el transmisor telefónico.

1.1.1.15 Transmisor telefónico

Hay un sistema de transmisión telefónica que puede realizar llamadas automáticas y

secuenciales a diferentes números de abonados particulares y a los servicios de

emergencia o compañía de seguridad. Tras efectuar la llamada de aviso, existe la

posibilidad de realizar la escucha del local bajo protección.

1.1.1.16 Distribución de audio

La distribución del sistema de audio se realiza sobre diferentes zonas, para sonorización

ambiental, con mando local sobre el equipo de música (marcha/paro) y control

individual del volumen en la dependencia, admitiendo posibilidad de selección entre

varios canales. Puede emplearse el sistema de sonorización para la difusión de mensajes

vocales de alarma que adviertan a los usuarios de las posibles eventualidades e

incidencias existentes en la instalación.

6

Page 7: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1.1.2 Las redes de comunicaciones

Para implantar cualquiera de los sistemas anteriormente descritos en una vivienda es

necesaria una planificación previa de las redes tanto eléctrica como de comunicaciones

necesarias. Durante la construcción de una vivienda se puede prever la instalación de las

conducciones y redes necesarias para una instalación domótica sin que ello suponga un

sobreprecio muy grande con respecto a una instalación convencional. El problema surge

cuando se quiere hacer la instalación en una vivienda ya construida debido a la

necesidad de llevar las conexiones de red a los diferentes puntos de la instalación, labor

ésta que supone la realización de las canalizaciones necesarias y que suele ser bastante

costoso o sencillamente inviable porque supone hacer obras.

En una instalación domótica, siempre se deberá disponer de una serie de elementos

distribuidos a lo largo de ésta, que servirán para recoger información sobre el estado de

aquellas variables que intervienen en los procesos de regulación y control; a estos

elementos se les denomina captadores, su misión es convertir las variables físicas o

eléctricas que recogen en señales eléctricas comprensibles por el sistema. De la misma

manera, siempre que se deba efectuar una operación de gobierno sobre un elemento bajo

control, se deberá disponer de actuadores, normalmente elementos electromecánicos,

adecuados a la acción a realizar. Toda la información que deba transitar entre los

captadores y el centro de gestión que rige la instalación y entre éste y los actuadores

utilizará para su transporte un soporte de comunicaciones adecuado al tipo de

información a transmitir.

A la hora de resolver la comunicación entre dispositivos se pueden dar varias

situaciones:

Varios dispositivos con canales dedicados: tan sólo hay que

acceder al canal del dispositivo en cuestión para resolver la

comunicación.

Varios dispositivos receptores y un único transmisor

compartiendo un mismo canal: la comunicación se puede resolver

por difusión asignando un identificador a cada receptor para

discriminar a quién va dirigida la orden.

Varios transmisores compartiendo un mismo canal: en este caso

pueden producirse colisiones que habrá que resolver. Una forma

7

Page 8: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

sencilla de resolver la contienda es realizando cada transmisión 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 recepción de los datos

no es un factor crítico en el tiempo, como sucede en la mayoría de las

aplicaciones, simplemente se tomarán medidas para reducir la

probabilidad de colisión 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

comunicación con el centro de control. Algunos de los posibles medios de

comunicación a nuestro alcance son:

1.1.2.1Comunicación alámbrica

1.1.2.1.1 Cableado específico

Esta solución goza de una gran fiabilidad y minimiza la complejidad de cada

dispositivo. Resulta idónea en el caso de nueva construcción pero es bastante costosa e

incómoda en los demás casos.

1.1.2.1.2 Utilización de la red eléctrica

Aprovecha la red eléctrica existente en todas las viviendas y locales para utilizarla como

red de comunicaciones entre los distintos dispositivos. Los diferentes sistemas

disponibles utilizan un módem para la red eléctrica. No existe un estándar único en el

mercado pudiéndose optar entre diferentes sistemas propietarios como son Cebus,

Lontalk, X10, etc. Al no tratarse de un mercado maduro es difícil decantarse por un

sistema u otro.

1.1.2.2Comunicación inalámbrica

1.1.2.2.1 Transmisión por radio

Es una solución interesante para multitud de aplicaciones. Existen en el mercado

transceptores digitales de onda media a precios muy asequibles y muy fáciles de operar.

El principal problema que presentan es que todos los dispositivos acceden al medio

radioeléctrico por contienda y se debe resolver el problema de las colisiones en el caso

de que varios transmisores operen al mismo tiempo.

8

Page 9: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1.1.2.2.2 Transmisión óptica por infrarrojos

Es la solución más utilizada en la actualidad en el entorno doméstico. Muchos de los

electrodomésticos de uso común disponen de un mando a distancia por infrarrojos, lo

que puede aprovecharse para su control por el sistema con sólo incorporar el transmisor

correspondiente. Los principales inconvenientes residen en la necesidad de que exista

visión directa entre el transmisor y el receptor y en el acceso al medio por contienda

cuando existen varios transmisores.

1.1.3 Sistemas basados en un microcontrolador

La innovación tecnológica pone a nuestro alcance la capacidad de poner en práctica, de

un modo sencillo, una multitud de aplicaciones que hasta hace poco eran impensables

debido a su complejidad o elevado coste. Para que una aplicación desarrollada con un

sistema basado en un microprocesador pueda interactuar con el mundo real necesita una

interfaz adecuada al propósito de la aplicación que se desarrolla. Si, por ejemplo, se está

desarrollando un sistema para el control de un ascensor, será necesario que reciba las

diferentes señales como son los detectores de puerta cerrada, las células 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.1El 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 periféricos. El microcontrolador se

compone de los cuatro módulos siguientes:

Unidad Central de Proceso (CPU 32).

Módulo de Integración del Sistema (SIM).

Temporizador de Propósito General (GPT).

Módulo de Comunicación Serie (QSM).

Los principales dispositivos, puertos y periféricos que integra son:

Generador de interrupciones periódicas.

Sistema de supervisión 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.

9

Page 10: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

12 señales programables para selección de dispositivos (chip-select),

7 de las cuales pueden configurarse como salidas de propósito

general bajo la denominación de puerto C.

Modo de Depuración en Segundo Plano (BDM), que permite que

otro sistema tome el control del microcontrolador.

2 interfaces de comunicación serie (QSM), una de propósito general

y otra destinada a periféricos.

Unidad de captura/comparación de señales que contiene tres canales

de captura, cuatro de comparación 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 propósito 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 circuitería externa simplificando aún más el

desarrollo de los prototipos. A pesar de ello, es necesario disponer de una serie de

interfaces que permitan la captación de los datos que han de ser procesados.

1.1.4 Objetivos

Los objetivos que se persiguen son el desarrollo de prácticas guiadas para que aquellos

alumnos que, con una especial motivación, 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 añadida al trabajo académico.

El primer objetivo del presente proyecto ha sido disponer del sistema basado en el

microcontrolador totalmente operativo. Después se han ido incorporando diferentes

interfaces y dispositivos para cubrir un abanico de aplicaciones.

Uno de los interfaces que ha sido objeto de interés ha sido el Módem para Red

Eléctrica. Después de realizar algunos estudios y desarrollos, no ha sido posible

implementarlo por no encontrar en el mercado unidades sueltas de algunos de los

componentes. Sólo era posible conseguirlos por encargo, para lo cual se exigía un

pedido mínimo de 25 o 50 unidades, según el componente.

10

Page 11: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Se ha optado por incluir este estudio previo en un apéndice 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 TELEFÓNICO.

Capítulo 2

Montaje y descripción de la placa entrenadora basada en el microcontrolador Motorola 68331

2.1 Antecedentes

Durante el curso 1999/2000, el Departamento de Ingeniería Electrónica pone en marcha

una experiencia docente relacionada con la asignatura de Laboratorio de Sistemas

Electrónicos 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 práctica especial a los alumnos que, con una especial motivación,

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 autónoma

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

11

Page 12: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

se encuentran perforados 136 agujeros que conectan con los 132 terminales del Micro.

El resto de la placa también 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 Introducción to the

MC68332”, by Sharon Darley, Mark Maiolani, and Charles Melear -1995). El primer

prototipo fue montado por Tomás Palacios Gutiérrez quien redactó un documento con

unas primeras instrucciones de montaje. Éstas sirvieron de base para perfeccionar el

prototipo y confeccionar posteriores instrucciones de montaje.

2.2 Instrucciones de montaje

El prototipo completo puede considerarse que está formado por nueve subsistemas o

módulos más 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 continuación:

1) Microcontrolador.

2) Regulador de tensión.

3) Replanteo general del circuito.

4) Circuito de reloj.

5) Filtros de reloj de sistema.

6) Circuito de configuración del micro.

7) Reset del sistema.

8) Resistencias de pull-up.

9) Alimentación del microcontrolador.

10) Prueba de funcionamiento.

11) Comunicación BDM (Background Debug Mode).

12) Memoria.

12

Page 13: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

13) Comunicación serie.

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 sólo tiene 33 patillas por banda, uno de los extremos de la

banda más exterior no tiene conexión con el micro. Para una mejor localización 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 conexión. Empezaremos soldando un terminal de

cada extremo de la tira para que se sujete y después seguiremos soldando todos y cada

uno de los 33 pines para asegurar el contacto eléctrico con el micro. A la hora de soldar

13

Page 14: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

se recomienda que se tenga cuidado de no sobrecalentar el micro. Si observamos que

está muy caliente, esperar unos minutos a que se enfríe. Como recomendación, 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

tirón sin calentar peligrosamente el micro.

Repetiremos la operación en cada una de las tres bandas restantes.

2.2.2 Regulador de tensión

Toda la electrónica del prototipo precisa ser alimentada a 5 voltios. Para ello se utilizará

un regulador L7805 que se conectará según el esquema adjunto. Comenzar el montaje

con los bornes, luego se montarán los condensadores C1 y C2 y finalmente el L7805 en

las posiciones indicadas en el croquis. Al tratarse del circuito de alimentación que va a

tener que soportar toda la corriente del sistema, se recomienda soldar los cuatro

componentes y realizar las conexiones con cable más grueso para evitar caídas de

tensión. Conectar la salida de tensión regulada y la masa a las líneas de alimentación

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 líneas de alimentación. No debemos olvidarnos de colocar y conectar las dos

tiras cortas que aparecen junto al Microcontrolador que están dispuestas para distribuir

la alimentación 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

alimentación. El primero (C13 - 33F.) es un condensador electrolítico adecuado para

el filtrado de baja frecuencia, el segundo es cerámico (C14 - 22nF.) para el filtrado de

las altas frecuencias y el tercero de plástico (C15 – 100nF.) para las frecuencias medias.

Con esta disposición se conseguirá una mejor inmunidad al ruido de alimentación. En el

montaje aparecen dos condensadores electrolíticos, C1 y C13, con los que deberá

ponerse especial cuidado con la polaridad para no dañarlos y evitar que puedan reventar.

14

Page 15: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 2 – Esquema de conexión del regulador de tensión.

En ningún caso deberemos conectar las líneas de alimentación del micro, ya que

primero deberá probarse el correcto funcionamiento del regulador. Por último se

recomienda alimentar los bornes de entrada con una tensión de entre 8 y 10 voltios y se

medirá en las líneas de alimentación 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 máxima a 150 mA. (máximo 200

mA.). En caso de no disponer de una fuente de estas características se deberá colocar un

fusible de entre 150 y 200 mA. en la entrada de alimentación, siendo recomendable

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 módulos 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 colocación. 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 más facilidad.

2.2.4 Circuito de reloj

El sistema de generación de reloj del MC68331 es un tanto peculiar. Utiliza un

oscilador Pierce, también 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 función 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.

15

Page 16: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

La longitud de las pistas, cableados, disposición de los componentes, etc. introducen

efectos resistivos y capacitivos que pueden alterar el correcto funcionamiento del

oscilador.

Por todos estos motivos se recomienda la colocación del oscilador lo más próximo

posible a las conexiones del micro y que se suelden los componentes al circuito impreso

para garantizar un buen contacto eléctrico.

Para la conexión de los componentes se recomienda colocarlos según el croquis de la

figura 1 y siguiendo el esquema de la figura 3.

Figura 3 – Esquema de conexión del oscilador de cuarzo.

2.2.5 Filtros de reloj del sistema

El circuito del apartado anterior junto con la electrónica interna conforma un

sintetizador PLL (Phase Lock Loop) de frecuencia. Para garantizar la estabilidad y un

adecuado rendimiento del PLL es necesario incorporar tan próximo a los terminales del

microcontrolador como sea posible el circuito de filtro capacitivo de la figura. Para su

montaje síganse el croquis y el esquema adjuntos.

16

Page 17: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 4 – Red de filtrado del reloj del sistema.

2.2.6 Circuito de configuración 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 deberán aplicarse las señales seleccionadas con los microinterruptores a los

terminales de configuración del micro y después deberán quedar en estado de alta

impedancia para permitir que éstos realicen su función normal.

En el prototipo se han montado dos grupos de ocho microinterruptores con los que se

podrán seleccionar los diferentes modos. Como sólo hay trece señales, tres de ellos

quedan sin uso. En la tabla adjunta se indica el número de microinterruptor, el pin sobre

el que actúa y la función del mismo dependiendo de la selección realizada. Durante la

secuencia de reset se configuran tanto las opciones de funcionamiento del micro como

la función de aquellos pines que pueden realizar dos funciones alternativas.

Microinterruptor Pin de selección

Función cuando está en posición de +5V

Función cuando está en posición de 0V

1 DATA0 El microcontrolador funciona con un bus de

memoria de 16 bits.

El microcontrolador funciona con un bus de

memoria de 8 bits.2 DATA1 #CS0

#CS1#CS2

#BR#BG

#BGACK3 DATA2 #CS3

#CS4#CS5

FC0FC1FC2

45678

DATA3DATA4DATA5DATA6DATA7

#CS6#CS[7:6]#CS[8:6]#CS[9:6]#CS[10:6]

ADDR19ADDR[20:19]ADDR[21:19]ADDR[22:19]ADDR[23:19]

17

Page 18: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1’ DATA8 #DSACK0, #DSACK1, #AVEC, #DS, #AS,

#SIZE

PORTE como puerto de entrada/salida

2’ DATA9 #IRQ[7:1], MODCLK PORTF como puerto de entrada/salida

4’ DATA11 Modo esclavo desactivado Modo esclavo activado6’ MODCLK VCO = Reloj del sistema EXTAL = Reloj del sistema8’ #BKPT Modo de depuración

desactivadoModo de depuración

activado

Tabla 1 – Modos de configuración del micro.

El significado de cada una de estas funciones se deja para un desarrollo posterior en el

capítulo dedicado a la puesta en marcha y nos centraremos en la electrónica que va a

permitir esta selección y en su montaje.

La base de funcionamiento del circuito de configuración se halla en el circuito integrado

74HC244. Se trata de un buffer de 8 entradas y 8 salidas con dos señales de activación

(enable), una por cada cuatro salidas, que permiten desactivarlas dejándolas en estado

de alta impedancia. Durante el reset se activará el buffer y las señales de configuración

estarán disponibles en las respectivas patillas del micro y, una vez finalizado, los buffer

quedarán en estado de alta impedancia permitiendo el funcionamiento normal del

microcontrolador.

Las señales, 0 voltios o 5 voltios, que se aplican a la entrada del buffer se configuran

con los microinterruptores. El esquema de conexión es el siguiente:

18

Page 19: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 5 – Circuito de configuración del micro.

2.2.7 Reset del sistema

La generación de la señal de RESET en la línea parece una tarea bastante sencilla. Sin

embargo, conforme han ido adquiriendo mayor complejidad los microprocesadores, las

líneas de reset bidireccionales se han convertido en algo común. Éstas permiten que el

microprocesador pueda reiniciar dispositivos externos. Una línea bidireccional va

gobernada por un transistor en colector abierto, por lo que se debe colocar a nivel lógico

1 mediante una resistencia de 820 (resistencia de pull-up).

Cuando se usa el sintetizador PLL interno para generar la señal de reloj, como es el

caso que nos ocupa, el RESET funciona de la siguiente forma:

Durante el encendido el microcontrolador pone el pin de RESET a nivel

bajo.

Una vez que el PLL se estabiliza, libera la señal 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

19

Page 20: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

cuales, si se alcanza el nivel alto en el pin de RESET en el intervalo de

10 ciclos, se inicia la ejecución del programa.

El prototipo cuenta con un circuito de reset evolucionado que incluye un dispositivo

inhibidor (MC34064) que mantiene la señal de reset a nivel bajo hasta que la

alimentación 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 alimentación. El circuito

debería implementarse con una puerta AND con salida en colector abierto como las que

contiene el integrado 74LS09. Con el fin de optimizar el número de circuitos integrados

se utiliza, en su lugar, una puerta NAND sin uso del integrado 74HC00 montado para el

circuito de configuración 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 tensión en el

terminal de #RESET que deberá ser de +5 voltios. Después se comprobará que al

apretar el pulsador la tensión pasa a valer 0 voltios.

En caso de no funcionar correctamente se repasarán de nuevo las conexiones y en caso

de no detectarse ningún error se repetirán los pasos anteriores pero midiendo ahora en la

salida de la puerta NAND. En este caso la tensión en reposo debe ser de 0 voltios y al

pulsar toma el valor de 5 voltios. Si no es correcto se comprobarán 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.

20

Page 21: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.2.8 Resistencias de pull-up

Varios terminales del microcontrolador necesitan resistencias de pull-up para

determinar su tensión en estado de reposo. Así se evita que puedan tomar valores

indeterminados que provoquen un mal funcionamiento. En general todas las entradas

deberán tener un estado conocido. Para esta operación se utilizarán dos arrays de

resistencias de 10 K que se conectarán a un punto de alimentación a 5 voltios. Para

ello se conectará a 5 voltios el extremo común, normalmente señalado con un punto.

Hay cuatro terminales que ya disponen de las resistencias de pull-up y que son:

Nº terminal Denominación Nº terminal Denominación1 56 #BKPT/DSCLK 3 78 PF0/#MODCLK2 68 #RESET 4 79 R/#W

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

Por lo tanto sólo quedan por conectar los siguientes terminales:

Nº terminal Denominación Nº terminal Denominación1 57 TSC 8 75 PF3/#IRQ3

2 69 #HALT 9 76 PF2/#IRQ23 70 #BERR 10 77 PF1/#IRQ14 71 PF7/#IRQ7 11 87 PE2/#AVEC5 72 PF6/#IRQ6 12 88 PE1/#DSACK16 73 PF5/#IRQ5 13 89 PE0/#DSACK07 74 PF4/#IRQ4 14 113 #BR/#CS0

Tabla 3 – Terminales pendientes de conectar las resistencias de pull-up.

2.2.9 Alimentación del microcontrolador

La conexión de la alimentación es el último paso a seguir para que el sistema funcione

de una forma muy básica. Esta operación es muy sencilla y tan sólo deberemos conectar

los 15 terminales de masa (VSS) y los 14 de alimentación a 5 voltios (VDD).

Para la conexión deberemos recordar que existen dos tiras cortas próximas al terminal

número 1 del microcontrolador con el fin de que todas las líneas de alimentación del

micro estén referenciadas a un único punto. Además se obtiene, de esta manera, una

mayor inmunidad al ruido.

Los terminales que se deberán conectar se relacionan en la siguiente tabla:

VSS 2 12 20 26 35 48 54 62 74 82 91 107 120 128 134VDD 11 19 25 37 47 61 72 84 86 89 109 121 135 144

21

Page 22: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Tabla 4 – Terminales de alimentación 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 limitación 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 limitación de corriente, asegurarse de haber colocado un

fusible calibrado a 150 mA. en serie con la línea de alimentación.

Antes de conectar la alimentación se deberán colocar todos los microinterruptores en

posición OFF (5 V.) a excepción del 8’ que se pondrá en posición ON (0 V.) para

activar el modo de depuración BDM. En cualquier caso, para esta prueba inicial sólo es

estrictamente imprescindible que los microinterruptores 4’ y 6’ estén en posición OFF.

Conectaremos la alimentación, observando el amperímetro para apagar rápidamente si

vemos que el consumo es elevado.

Si las conexiones están bien hechas, tras un pico inicial de corriente durante el arranque,

ésta se estabilizará en torno a los 50 o 70 mA. A continuación mediremos con el

osciloscopio la señal 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 señal de reloj a 8 Mhz.

generada por el sintetizador PLL del sistema.

Si la corriente es excesiva, seguramente habrá un cortocircuito o una conexión mal

hecha. Inevitablemente habrá que repasar de nuevo el conexionado y buscar un posible

cortocircuito.

En el caso de que no aparezca la señal de reloj, comprobar que:

El microinterrruptor 6’ está en posición OFF, ya que con él se configura

el funcionamiento del sintetizador.

La señal de reset está a 5 voltios.

Las conexiones del circuito de reloj son correctas.

Si no existe un error aparente habría que pensar en la posibilidad de que el cristal de

cuarzo se haya deteriorado durante el proceso de soldado.

22

Page 23: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.2.11 Comunicación BDM (Background Debug Mode)

El modo de depuración 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 depuración. Durante la operación en

segundo plano, la ejecución normal de instrucciones es suspendida, y el microcódigo

ejecuta las instrucciones internas de depuración bajo el control de una máquina externa.

La interfaz de comunicación 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 máximo

cuidado posible. En la figura 7 se muestra el esquema de conexión. La disposición de

los diferentes componentes se debe consultar en la figura 1.

Figura 7 – Circuito interfaz para la comunicación BDM.

Una vez acabado el circuito de comunicación se deberá montar el cable. Para la

conexión 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 conexión al puerto

paralelo. Para ello utilizaremos cable plano y conectores de presión. Para el montaje se

deberá quitar uno de los hilos del cable, ya que sobra, y se deberá prestar especial

atención en que queden interconectados entre si los terminales número 1 de ambos

conectores. Para ello obsérvese 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 alimentación observando de nuevo que la corriente consumida se

encuentre dentro de los límites antes comentados.

23

Page 24: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 continuación nos solicitará que indiquemos la

velocidad de conexión. 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

comunicación BDM. Pulsando la tecla H obtendremos una breve explicación sobre la

función 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

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

24

Page 25: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 ningún mensaje de error la comunicación está funcionando

correctamente. Si por el contrario aparece el mensaje “error en las comunicaciones” se

desconectará la placa y se revisarán todas las conexiones de nuevo ya que lo más fácil

es que se trate de un error en alguna conexión.

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 diseño y reduce el coste, pero implica una importante

penalización en el rendimiento que será tanto mayor cuantos más 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 utilizarán 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 “wrappinarán” en

paralelo. Los terminales A0 de la memoria se conectarán al terminal de direcciones A1

del microcontrolador y así sucesivamente hasta los terminales A14 que se conectarán al

A15 del micro. El terminal A0 del micro se dejará sin conectar.

Los pins de datos (D0-D7) de una de las memorias se conectarán a los homónimos del

microcontrolador y los de la otra a los terminales D8-D15 del microcontrolador.

La señal chip enable (CE) será generada por el terminal CSBOOT del MC68331.

Con el objeto de eliminar ruidos en la alimentación, especialmente cuando se trabaja a

altas frecuencias, es muy recomendable conectar un condensador de 100 nF en paralelo

con la alimentación de cada chip de memoria.

25

Page 26: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Una vez finalizado este montaje será posible la carga de programas en memoria para su

ejecución. Sólo queda, por tanto, probar el correcto funcionamiento de esta parte.

Para ello repetiremos la secuencia del paso anterior. Se encenderá la fuente de

alimentación cuidando de que no exista ningún cortocircuito, se arrancará el programa

TEST32.EXE y después de seleccionar el puerto paralelo al que se haya conectado la

placa y la velocidad de comunicación de 50 se quedará a la espera de la introducción 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 dirección de inicio y el programa mostrará en pantalla los 256

bytes siguientes a la dirección indicada.

En caso de que se produzca algún error deberán revisarse todas las conexiones y, en

especial, la alimentación.

2.2.13 Comunicación serie

Cuando se emprenda la realización 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 módulo de adaptación de niveles para las

comunicaciones serie mediante el protocolo RS232.

La parte más importante de este subsistema es el chip MAX232, que permite adaptar los

niveles de tensión de 0 y 5V del microcontrolador, a los establecidos por la norma

RS232 (entre –15 y 15V). Curiosamente, gracias a los distintos condensadores que se

añaden al sistema, el chip MAX232 sólo necesita ser alimentado con 5V, aunque sea

capaz de dar una tensión mayor a su salida.

Se debe conectar el circuito de la figura:

26

Page 27: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 8 – Circuito interfaz para la comunicación serie.

El punto donde más errores se suelen cometer es en la polaridad de los distintos

condensadores electrolíticos y en la identificación de cada uno de los pines del chip

MAX232. Por tanto, se debe prestar especial atención a estos dos aspectos.

Junto con el subsistema de adaptación de niveles desarrollado en la placa entrenadora,

se debe realizar también un cable de “módem nulo” que permita la conexión de la placa

al ordenador mediante el protocolo RS-232.

27

Page 28: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 9 – Vista general de placa entrenadora.

Figura 10 – Detalle del conexionado con wire-wrapping.

28

Page 29: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 11 – Detalle del montaje de la placa.

2.3 Descripción de funcionamiento

El funcionamiento del sistema viene determinado por el funcionamiento de los cuatro

subsistemas que lo componen y que son:

Módulo de Integración de Sistemas: SIM (System Integration Module).

Temporizador de Propósito General: GPT (General Purpose Timer).

Unidad Central de Proceso: CPU 32 (Central Processing Unit – 32 bits).

Módulo de Comunicaciones Serie: QSM (Queued Serial Module).

2.3.1 Módulo de integración de sistemas (SIM)

Para la integración de los subsistemas CPU32, GPT y QSM en un único circuito VLSI

ha sido necesario que el fabricante incorpore un módulo especialmente diseñado para

este fin. Así como al diseñar un sistema electrónico digital basado en un

microprocesador necesitaremos añadir no sólo memoria o periféricos, sino también

circuitos de reloj, de reset, de arbitraje de las interrupciones o una lógica de selección de

direcciones, de la misma manera el microcontrolador MC68331 cuenta con un módulo

29

Page 30: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

de integración de sistemas denominado SIM que realiza todas estas funciones y algunas

otras adicionales.

Las funciones básicas que realiza el SIM son:

1. Generar la señal de reloj que comparten todos los módulos del micro.

Dicha señal de reloj puede ser generada con un sintetizador PLL

interno a partir de una señal de referencia externa, o bien tomada

directamente de una fuente exterior.

2. Proporcionar señales de chip-select configurables, que permitan

añadir memoria y nuevos periféricos al sistema sin tener que recurrir

a circuitería externa para la lógica 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 través del bus

intermodular (InterModule Bus), así como arbitrar la generación de

interrupciones simultáneas (Interrupt Arbitration).

4. Permitir la configuración y protección general del sistema: para ello

contiene submódulos de supervisión interna (Bus Monitor, Halt

Monitor, Spurious Interrupt Monitor) y de supervisión del código

en ejecución (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).

Además de esto, proporciona un nuevo submódulo: un reloj de

tiempo real (Periodic Interrupt Timer), capaz de generar

interrupciones periódicas. El conjunto de todos estos submódulos

forma la interfaz del bus externo (External Bus Interface).

5. Incorporar circuitos que permitan la depuración de nuevos programas

en desarrollo sin tener que recurrir al puerto serie y a un programa

monitor (Background Debug Mode) y la verificación del

funcionamiento del microcontrolador cuando todavía se encuentra en

fábrica (System Test Block).

Ofrecer varios puertos de Entrada/Salida (ports E, F y C), que sólo estarán disponibles

si lo permite la configuración de la funcionalidad anterior. Por ejemplo: si no

30

Page 31: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

empleamos todas las señales externas de chip-select, podremos emplear las no asignadas

como parte de un puerto denominado C.

2.3.1.1Terminales del SIM

Las señales externas o terminales del microcontrolador que tienen relación, 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 señal de reloj.

TSC/TSTME# y FREEZE/QOUT: proporcionan al fabricante la

posibilidad de probar el correcto funcionamiento el microcontrolador.

2.3.1.2Subsistema de configuración y protección

El submódulo de configuración y protección permite realizar las siguientes funciones:

2.3.1.2.1 Ubicación de los registros en memoria.

Un importante parámetro que es posible configurar en el 68331 es la situación

(mapping) de los 4-Kbytes del bloque de registros de propósito específico disponibles

en el microcontrolador. El bit MM (Module Mapping) del registro de configuración del

SIM (SIMCR) determina qué posiciones ocupan los registros en el mapa de memoria

general del sistema:

Bit MM Zona ocupada del mapa de memoria

0 $7FF000-$7FFFFF

1 $FFF000-$FFFFFF

Tabla 5 – Opciones de ubicación de los registros en el mapa de memoria.

Después del reset, el bit MM se inicializa con un 1.

31

Page 32: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.1.2.2 Configuración tras el Reset

Durante la secuencia de arranque del micro se produce la configuración 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 cómo

quiere el usuario configurar el sistema. Entre las opciones de configuración que se

pueden determinar están:

Qué chip-selects están activos: existen 3 grupos de terminales de chip-

select que, alternativamente pueden funcionar como terminales de

función 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 están disponibles: dado que el número de

terminales disponibles (132 en la versión utilizada) es inferior al número

de señales que pueden ser manejadas, algunos terminales son

compartidos por dos o más señales, de modo que durante el reset se

deberá determinar la función sacrificando unas en favor de las otras. Por

ejemplo, el puerto E compartesus terminales con las señales de los buses

de datos y direcciones (SIZ[0..1], #AS, #DS, #AVEC y #DSACK[0..1]).

Aunque estos terminales son fundamentales en cualquier sistema basado

en un microprocesador como el MC68000 (cuya unidad central de

proceso es muy similar a la CPU32), la disponibilidad de chip-selects

programables, reduce su interés en el caso del 68331 (excepto en

sistemas grandes o complejos).

Si se va a funcionar o no en modo verificación (Test Mode).

Si se habilita o deshabilita la depuración en segundo plano (Background

Debug Mode).

Las diferentes posibilidades de configuración se resumen en la tabla 1 (Apartado 2.6).

2.3.1.2.3 Arbitraje de interrupciones

Los distintos módulos 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 también puede solicitar interrupciones, en SIMCR existe

32

Page 33: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

un campo denominado IARB, que contiene su prioridad. En el caso de peticiones

simultaneas de interrupción, 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 (máxima prioridad). Si un

módulo cuyo IARB es $0 solicita una interrupción, no sólo no es atendida sino que se

genera una excepción por interrupción espúrea.

2.3.1.2.4 Supervisión del bus externo durante trasferencias internas

Los 2 bits del campo SHEN del registro SIMCR de configuración del SIM controlan el

comportamiento del bus externo durante las transferencias de datos internas (por

ejemplo, al mover datos entre registros de los módulos 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.

También 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).

SHEN Ciclos Internos Arbitraje externo00 Invisibles desde el exterior Habilitado01 Visibles Deshabilitado10 Visibles Habilitado

11 InvisiblesHabilitado, pero una

petición de bus detiene la transferencia interna

Tabla 6 – Comportamiento del bus externo durante las transferencias.

2.3.1.2.5 Modo Verificación en fábrica.

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 verificación de fábrica

(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

33

Page 34: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

encontrarse en el espacio de datos del supervisor, sólo se pondrá acceder a los registros

estando la CPU32 funcionando en modo supervisor. De esta manera un sistema

operativo puede impedir que los programas ejecutándose en modo usuario puedan

reconfigurar partes esenciales del SIM y del sistema.

2.3.1.2.7 Causa del último Reset

El registro de sólo lectura RSR guarda la causa del último Reset producido. Contiene un

bit por cada una de las 7 posibles causas, pudiéndose 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 diseño del programa.

Supervisor de parada (Halt Monitor): interviene cuando se produce un

fallo doble de bus (Double Bus Fault), o cuando se activa la señal

#HALT.

Pérdida de la señal de referencia de reloj (Loss of Clock).

Ejecución de la instrucción de RESET.

Submódulo de Verificación (Test Submodule): usado por el fabricante.

2.3.1.2.8 Supervisión del Bus Interno

El funcionamiento asíncrono del bus de la CPU32 obliga a la existencia de señales de

reconocimiento y confirmación (acknowledge) de datos y autovectores. Cada vez que se

realiza una transferencia usando el bus interno, el SIM comprueba que se cumplen las

restricciones máximas en cuanto a tiempo de respuesta. Si las señales 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 protección del

sistema (SYPCR), permite definir cuál es el tiempo máximo de espera:

BMT Tiempo máximo de espera00 64 ciclos de reloj01 32 ciclos de reloj10 16 ciclos de reloj

34

Page 35: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

11 8 ciclos de reloj

Tabla 7 – Tiempo de espera de las señales de reconocimiento antes de generar un error de bus.

Al salir del Reset el tiempo está configurado en 64 ciclos de reloj de espera máxima.

2.3.1.2.9 Supervisión de Parada (Halt)

La activación de la señal #HALT del 68331 provoca la entrada en funcionamiento del

supervisor de parada (siempre y cuando dicha intervención esté habilitada en el bit

HME del SYPCR), y el consiguiente Reset del sistema. También interviene este

supervisor cuando se produce un fallo doble de bus (Double Bus Fault).

2.3.1.2.10 Supervisión de interrupciones espúreas

Si el arbitraje de interrupciones no se llega a resolver (debido a que el correspondiente

campo IARB del módulo que ha provocado la interrupción es igual a 0 y, por lo tanto,

no está habilitado), el supervisor de interrupciones espúreas (Spurious Interrupt

Monitor) provoca la activación de la señal #BERR y un Reset del sistema. Esta

supervisión no se puede deshabilitar.

2.3.1.2.11 Supervisión SW

El bit SWE del registro de control de protección SYPCR habilita o deshabilita la

supervisión de programas en ejecución (Software WatchDog). En caso de estar

habilitada dicha supervisión, 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 diseñado o que se ha

producido un bloqueo o una entrada en algún bucle infinito y provocará un Reset del

microcontrolador.

El plazo de tiempo disponible depende de los valores de los campos SWP y SWT del

SYPCR:

SWP SWT Ciclos de reloj0 00 2 elevado a 90 01 2 elevado a 110 10 2 elevado a 130 11 2 elevado a 15

35

Page 36: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1 00 2 elevado a 181 01 2 elevado a 201 10 2 elevado a 221 11 2 elevado a 24

Tabla 8 – Tiempo de actualización 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 periódicas: el PIT

El SIM incluye un temporizador (el PIT) capaz de provocar interrupciones periódicas.

Estas interrupciones se usan para controlar tareas críticas en el tiempo y que deben de

ejecutarse con gran regularidad o bien que han de respetar unos plazos máximos en

cuanto a su tiempo de respuesta.

El periodo de generación de esta interrupción viene fijado por la señal EXTAL (reloj

externo o de referencia) y el valor del registro de configuración del temporizador de

interrupciones periódicas (PITR). Este registro contiene el bit PTP con el que se

selecciona un preescalado de 4 (PTP=0) o de 2048 (PTP=1); también 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 señal

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

fórmula:

Frecuencia del PIT=Frecuencia EXTAL/(PITM * Preescalado).

La frecuencia máxima 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 mínima

será EXTAL/522.240 y se producirá cuando el PITM contenga su valor máximo ($FF)

y apliquemos el mayor preescalado (PTP=1). Si el reloj externo es 32,768 KHz., el

periodo de interrupción podrá variar entre un máximo de 15,93 s. y un mínimo de 122

s.

Las interrupciones periódicas se habilitan en función del valor contenido en los tres

registros siguientes:

36

Page 37: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1. SR o registro de estado de la CPU32: los bits de máscara de

interrupción IP deben contener un valor que permita las

interrupciones del PIT.

2. SIMCR o registro de configuración 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 interrupción

asignado al PIT que esté habilitado por la máscara de

interrupción del SR (PIRQL>IP)

El campo PIV debe contener el número del vector de interrupción

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.

2.3.1.2.13 Funcionamiento en bajo consumo

Cuando la CPU32 ejecuta la instrucción LPSTOP, se desactivan los supervisores de

bus, de parada y de interrupciones espúreas, 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

interrupción habilitada (por ejemplo, un reset, una interrupción externa o una

interrupción del PIT que cumpla las condiciones antes señaladas).

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 básico sea la atención a interrupciones externas

puede tener una rutina principal que, tras la inicialización, se quede en modo de bajo

consumo esperando la aparición de una interrupción que atender.

37

Page 38: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.1.2.14 Funcionamiento durante la depuración

Si el sistema externo que controla la depuración en segundo plano activa la señal

FREEZE y dicha depuración está permitida, el SIM se ve afectado de la siguiente

manera:

Los supervisores de parada y de interrupciones espúreas continúan

funcionando con normalidad, pudiendo provocar un reset en caso de

detectar algún 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 depuración paso a paso, podremos deshabilitar el

supervisor de SW que podría provocar un reset no deseado.

2.3.1.3Reloj del sistema

Una de las funciones más importantes del SIM es la generación y distribución de la

señal de reloj que emplearán todos los módulos del microcontrolador. Para ello, el SIM

nos ofrece 2 alternativas: o bien generar la señal de reloj sintetizándola internamente a

partir de una señal de referencia externa, o bien usar directamente una fuente externa de

reloj. La señal de referencia presenta la ventaja de ser una señal de menor frecuencia

(más fácil 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 señal de reloj en el terminal EXTAL (dejando flotante el terminal XTAL), el SIM

distribuirá (eso sí, a través de un buffer interno) dicha señal de reloj a lo largo del

sistema. La frecuencia de esta señal de reloj vendrá limitada por la frecuencia máxima

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 máxima.

2.3.1.3.2 Reloj de referencia externo

Si mantenemos a nivel alto el terminal MODCLK durante el reset y proporcionamos

una señal de reloj de referencia entre los terminales EXTAL y XTAL, se activará el

38

Page 39: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PLL interno (Phase Lock Loop) que sintetiza una señal de reloj del sistema

configurable por medio de los campos X (1 bit), W (1 bit) e Y (6 bits) del registro

SYNCR.

La relación entre ambas señales 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 señal 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

armónicos de la señal de reloj del sistema cuando usemos una referencia externa.

2.3.1.3.3 Generación de reloj para un bus externo síncrono

Al igual que el MC68000 y por compatibilidad con los periféricos síncronos del 6800,

el 68331 proporciona una señal de reloj ECLK que permite a la CPU32 sincronizarse

con dichos periféricos. Si el campo CSPA1 del registro CSPAR1 contiene 00, ECLK

estará habilitado y disponible. Su frecuencia de trabajo vendrá determinada por el bit

EDIV del SYNCR, pudiendo ser la frecuencia del sistema dividida por 8 (EDIV =0) o

por 16 (EDIV =1).

2.3.1.3.4 Generación de reloj en bajo consumo

Durante los ciclos de funcionamiento en bajo consumo, los bits STSIM y STEXT del

registro SYNCR determinan qué señal 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 señal CLKOUT no proporcionará reloj alguno al sistema digital basado en

el microcontrolador.

2.3.1.3.5 Supervisión del reloj de referencia

Si el supervisor de reloj detecta la pérdida de la señal de referencia puede provocar dos

situaciones, dependiendo de cómo 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 máxima del sistema.

39

Page 40: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

El bit SLIMP del SYNCR refleja si el sistema está operando en modo

limp (SLIMP =1) o no (SLIMP =0).

2.3.1.4Interfaz del bus externo asíncrono: EBI

Además de controlar el bus interno, el SIM se encarga de proporcionar las señales que

permiten la comunicación con dispositivos (memoria o periféricos) 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 señales de validación de datos #UDS y #LDS, una

señal de validación de direcciones #AS, un terminal de lectura/escritura R/#W, tres

señales de códigos de función FC, una señal #DTACK de confirmación de fin del ciclo

de bus, #BERR que indicaba error de bus durante una trasferencia, la señal de parada

#HALT y una señal #AVEC que indica al micro que la interrupción solicitada es

autovectorizada.

Las señales de tamaño de bus SIZ permiten definir si la transferencia de datos a través

de DATA es de 8, 16 o 32 bits.

2.3.1.4.1 Temporización 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 duración mínima será de 3 ciclos ya que

los ciclos de lectura o escritura se componen de 6 estados de medio ciclo de reloj cada

uno.

Además de los ciclos ordinarios de lectura y escritura, la ejecución de la instrucción

TAS (que de un modo indivisible pone a uno el bit 7 de una posición del mapa de

memoria), provoca una secuencia especial de ciclos que facilita la implantación de

mecanismo de semáforos en sistemas multiprocesador con compartición de memoria.

2.3.1.4.2 Tamaño dinámico del bus de datos

El bus de datos permite realizar transferencias de 1, 2 o 4 bytes entre el micro y una

memoria o periférico externos de 8 o 16 bits, reflejando a través de SIZ cuántos 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 periférico o memoria implicados, supondrá varios subciclos de lectura o

escritura como los descritos en el apartado anterior. A lo largo de estos subciclos el

40

Page 41: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

contenido de SIZ irá decreciendo. El dispositivo externo deberá confirmar a través 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

periférico 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 periférico o la memoria implicados,

primero se transferirán los bytes más significativos y, posteriormente, los menos

significativos.

Los tipos de transferencias posibles se resumen en la siguiente tabla:

Tipos de transferencia.De <origen> a <puerto o memoria de

destino>

SIZ[0:1] ADDR0

DSACK[1:0]

Datos efectivos

transferidosDe 8 bits a 8 bits en dirección par 01 0 10 DATA[8..15]

De 8 bits a 8 bits en dirección impar 01 1 10 DATA[8..15]De 8 bits a 16 bits en dirección par 01 0 01 DATA[ 0..7 ]

De 8 bits a 16 bits en dirección impar 10 1 01 DATA[8..15]De 16 bits a 8 bits en dirección par 10 0 10 DATA[8..15]De 16 bits a 16 bits en direcc. Par 10 0 01 DATA[0..15]De 32 bits a 8 bits en dirección par 00 0 10 DATA[8..15]De 32 bits a 16 bits en direcc. Par 00 0 01 DATA[0..15]

De 24 bits a 8 11 1 10 DATA[8..15]

Tabla 9 – Tipos de transferencias.

Las transferencias de 24 bits a puertos o memorias de 8 son subciclos dentro de una

transferencia de 32 bits a 8. La CPU32 exige que las transferencias de 16 o 32 bits a 16

bits estén alineadas, esto es, que tengan como destino direcciones pares, lo cual

restringe las posibilidades de combinaciones correctas a tan sólo 9.

2.3.1.4.3 Los códigos de función

El valor de las señales FC depende del estado del microcontrolador. Los 8 valores

posibles se decodifican de acuerdo con la siguiente tabla:

FC2 FC1 FC0 Estado interno0 0 0 Valor no usado0 0 1 Acceso a datos en modo usuario0 1 0 Lectura de instrucciones en modo usuario0 1 1 Valor no usado1 0 0 Valor no usado1 0 1 Acceso a datos en modo supervisor

41

Page 42: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1 1 0 Lectura de instrucciones en modo supervisor1 1 1 3 subestados posibles:

(1) reconocimiento y confirmación de una interrupción,

(2) reconocimiento y confirmación de un punto de ruptura,

(3) ciclo de paso a funcionamiento en bajo consumo.

Tabla 10 – Códigos de función.

Para distinguir los tres posibles subestados del estado 111, se puede decodificar el bus

de direcciones de la siguiente manera:

Subestado A23..A20

A19 A18 A17 A16 A15..A5 A4

A3

A2

A1

A0

(1) pto. Ruptura 0 0 0 0 0 0 X X X Y 0(2) bajo consumo

0 0 0 1 1 1 1 1 1 1 0

(3) Interr. 1 1 1 1 1 1 1 X X X 1

Tabla 11 – Subestados del código de función 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 señal externa, nos permite detener la ejecución 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 instrucción

BKPT, al llegar a ella, el microcontrolador detiene la ejecución e inicia

un ciclo de confirmación del punto de ruptura.

Por medio de la señal #BKPT: si algún dispositivo externo activa esta

señal, la CPU32 responde con un ciclo de confirmación.

2.3.1.4.5 Cesión del bus

El MC68331 dispone de 3 señales para arbitrar el uso y compartición de los buses de

datos y direcciones: #BR (petición de bus por el dispositivo externo), #BG (señal de

42

Page 43: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

cesión del bus) y #BGACK (confirmación de fin de petición, 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 señal #BR, para informar al 68331

de sus intenciones. Cuando éste finalice el ciclo de bus en curso, activará la señal #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 señal #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.5Interrupciones

2.3.1.5.1 Fuentes de interrupción externas

Además de las interrupciones generadas por el temporizador periódico (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 también al flanco

de bajada.

Las interrupciones externas están sujetas a un esquema de prioridad en el cual #IRQ0

recibe la mínima e #IRQ7 la máxima; en caso de simultaneidad de interrupciones se

atenderá primero a la más prioritaria. El dispositivo solicitante debe mantener la

petición de interrupción hasta que ésta es atendida, ya que las peticiones no son

capturadas (latched) por el micro.

2.3.1.5.2 Arbitraje de interrupciones simultáneas

Si se produce la petición simultanea de una interrupción de origen interno y otra de

origen externo (o entre dos de origen interno), el SIM usa los campos IARB para

decidir cuál 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 interrupción espúrea.

2.3.1.5.3 Ciclo de reconocimiento y confirmación de una interrupción externa

La solicitud y atención a una interrupción implica un diálogo entre el 68331 y el

dispositivo solicitante de acuerdo con el siguiente protocolo de comunicaciones:

El dispositivo solicita la interrupción activando alguna línea #IRQ[1..7].

43

Page 44: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

El micro responde (si la interrupción 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 periférico debe activar AVEC# (para solicitar la atención en modo

autovectorizado) o DSACK# (en cuyo caso la interrupción será atendida

en modo vectorizado y el dispositivo debe haber colocado previamente el

vector de interrupción en el bus de datos).

En cualquiera de estos casos el 68331 responde desactivando #DS y

#AS, cuando el periférico desactive #DSACK, la CPU32 comenzará la

atención efectiva a la interrupción (si las interrupciones son

autovectorizadas esto es inmediato, dado que las señales #DSACK no

estarán activas durante el ciclo). Este proceso conlleva guardar en la pila

el estado de ejecución (esto es, los registros PC y SR), buscar el vector

de interrupción adecuado y ejecutarlo.

Si deseamos que todas las #IRQ[1..7] sean autovectorizadas podemos poner a nivel

bajo el terminal AVEC# permanentemente.

2.3.1.6Lógica de direcciones

El SIM permite que el diseñador de sistemas basados en el 68331 disponga de la

posibilidad de generar hasta 12 señales de selección de pastilla (chip-selects) sin

necesidad de añadir nuevos circuitos integrados. Es posible programar qué zona del

mapa de memoria activa cada una de estas señales y generar internamente las señales

DSACK# y AVEC# con los tiempos de respuesta adecuados al dispositivo periférico o

la memoria utilizados.

2.3.1.6.1 Registros de configuración de la lógica de direcciones: CSBORBT y CSOR0..CSOR10

Usando estos registros podemos programar el modo de funcionamiento de la lógica de

direcciones incorporada en el SIM. Todos ellos comparten una misma estructura interna

de campos:

MODE: permite seleccionar si el chip-select correspondiente es

asíncrono (MODE=0) o está sincronizado con la señal de reloj ECLK.

44

Page 45: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BYTE: permite definir si el dispositivo activado usa el byte más

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 sólo lectura

(R/#W=01), de sólo escritura (R/#W=10) o de lectura-escritura

(R/#W=11).

STRB: si se ha seleccionado el modo asíncrono (MODE=0), permite

definir si la activación del chip-select depende de #AS (STRB=0) o de

#DS.

#DSACK: especifica el número de estados de espera que se ha de

insertar antes de finalizar el ciclo de bus asociado a esta señal; el mínimo

es 0000 y el máximo es 1101; el valor 1110 indica que deseamos un

acceso rápido de sólo 2 ciclos de reloj.

SPACE: determina en qué modo de funcionamiento ha de estar la

CPU32 para que el ciclo de bus se pueda ejecutar con normalidad: modo

usuario (SPACE=01), modo supervisor (SPACE=10) o cualquiera de

los dos (SPACE=11).

IPL: nivel de prioridad asociado a la señal, en el caso de que sea usada

para generar las señales DSACK# o AVEC# para un dispositivo que

haya solicitado una interrupción.

AVEC#: habilita las interrupciones autovectorizadas (AVEC#=1).

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Campo MODE BYTE R/W# STRB DSACK# SPACE IPL AVEC#

2.3.1.6.2 Registros de configuración de la dirección base: CSBARBT y CSBAR0..CSBAR10

La memoria accesible con cada señal de chip-select puede comenzar en cualquier

dirección que sea múltiplo de 2 KB. El tamaño del bloque de memoria al que se accede

puede tomar 8 valores entre un mínimo de 2 KB y un máximo 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 tamaño del bloque accedido:

BLKSZ[2..0] Tamaño del bloque Bits de direcciones fijos

45

Page 46: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

000 2 KB ADDR[23..11]001 8 KB ADDR[23..13]010 16 KB ADDR[23..14]011 64 KB ADDR[23..16]100 128 KB ADDR[23..17]101 256 KB ADDR[23..18]110 512 KB ADDR[23..19]111 1 MB ADDR[23..20]

Tabla 12 – Determinación del tamaño de bloque de memoria.

Para permitir el autoarranque, el CSBOOT# se conectará a una memoria no volátil y

debe estar configurado en la dirección base $000000, ya que es ahí donde la CPU32 lee

los vectores de interrupción 0 y 1 tras el reset.

2.3.1.7Inicialización del SIM

El SIM debe ser el primer módulo que inicialicemos al salir del reset, dado que realiza

funciones de supervisión y arbitraje del sistema. Los pasos a seguir son:

1. Programar el SIMCR, principalmente los siguientes puntos:

El campo IARB que determina el nivel de arbitraje de las

interrupciones del SIM (al salir del reset vale $F, el nivel

máximo).

El campo IARB que determina el nivel de arbitraje de las

interrupciones del SIM (al salir del reset vale $F, el nivel

máximo).

El bit MM que determina la posición en el mapa de memoria de

los registros (por defecto estarán 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 sólo pueden hacerlo los

programas que funcionen en el modo supervisor).

El bit FRZSW deshabilita el supervisor SW y las interrupciones

periódicas durante la ejecución paso a paso del BDM

(deshabilitado por defecto).

El bit FRZBM habilita el supervisor de bus durante la ejecución

paso a paso del BDM (deshabilitado por defecto).

46

Page 47: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

mínimo valor).

El bit HME habilita el supervisor de parada (inicialmente

deshabilitado).

El bit BMT fija el tiempo máximo de espera de supervisor de bus

antes de generar internamente la señal #BERR (por defecto espera

64 ciclos de reloj, su valor máximo).

3. Programar el SYPCR, principalmente:

Los bits W, X e Y permiten establecer la velocidad del reloj del

sistema (por defecto multiplican la frecuencia de referencia por

256).

El bit RSTEN habilita la provocación 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

periódicas (o bien las deshabilita).

El campo PIV establece el número del vector de interrupción de

las mismas (por defecto vale $F, que es el vector asociado a las

interrupciones no inicializadas). Lo inicializaremos con algún

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 periódicas (por defecto se usa el

preescalado).

El campo PITM fija el periodo del interrupción de dicho

temporizador.

47

Page 48: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 señales DATA8 y DATA9

durante el reset).

Los registros DDRE Y DDRF configuran cada bit de los mismos

como entradas (DDREx=0) o como salidas (por defecto son

entradas).

Los registros PORTE y PORTF reflejan el contenido de los

puertos (para los bits configurados como entradas) o bien lo

establecen (para los bits configurados como salidas).

2.3.2 Temporizador de propósito general (GPT)

Un temporizador de propósito 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/comparación, un acumulador de pulsos y dos

moduladores de ancho de pulso. La conexión interna se realiza a través del bus

intermodular (IMB) mediante una unidad de interfaz.

La unidad de captura/comparación incluye tres canales de captura de entrada, cuatro de

comparación de salidas y otro canal más que puede seleccionarse tanto como captura de

entrada como de comparación de salida. Estos canales comparten un contador continuo

de 16 bits cuya señal de reloj se puede obtener de un preescalador de nueve etapas

conectado al reloj del sistema o bien a través de una señal 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 señal periódica cuadrada cuya

duración del ciclo de trabajo se puede seleccionar desde el 0 % al 100 % mediante

48

Page 49: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

software. En el caso de un ciclo de trabajo del 50 % tendremos la típica 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/comparación o por la entrada del PCLK.

Todos los terminales del GPT pueden utilizarse como entradas/salidas de propósito

general. Los terminales de captura de entradas y los de comparación de salidas

constituyen un puerto paralelo bidireccional de 8 bits (PORTGP). Los terminales del

PWM son sólo de salida y los de PAI y PCLK son sólo de entrada.

2.3.2.1Registros del GPT y mapa de direcciones

Los registros del GPT con su respectivo mapa de direcciones se detallan en la tabla

siguiente:

Dirección 15 8 7 0$FFF900 MÓDULO DE CONFIGURACIÓN DEL GPT (GPTMCR)$FFF902 (RESERVADA PARA TEST)$FFF904 CONFIGURACIÓN DE INTERRUPCIÓN (ICR)$FFF906 DIRECC. DATOS PGP (DDRGP) DATOS PGP (PORTGP)$FFF908 MÁSCARA DE ACCIÓN OC1 (OC1M) DATOS DE ACCIÓN OC1 (OC1D)$FFF90A CONTADOR DEL TEMPORIZADOR (TCNT)$FFF90C CONTROL DE PA (PACTL) CONTADOR DE PA (PACNT)$FFF90E ENTRADA DE CAPTURA 1 (TIC1)$FFF910 ENTRADA DE CAPTURA 2 (TIC2)$FFF912 ENTRADA DE CAPTURA 3 (TIC3)$FFF914 SALIDA DE COMPARACIÓN 1 (TOC1)$FFF916 SALIDA DE COMPARACIÓN 2 (TOC2)$FFF918 SALIDA DE COMPARACIÓN 3 (TOC3)$FFF91A SALIDA DE COMPARACIÓN 4 (TOC4)$FFF91C ENTRADA DE CAPTURA 4/SALIDA DE COMPARACIÓN 5 (TI4/O5)$FFF91E CONTROL DE TEMP. 1 (TCTL1) CONTROL DE TEMP. 2 (TCTL2)$FFF920 MÁSCARA DE TEMP. 1 (TSMK1) MÁSCARA DE TEMP. 2 (TSMK2)$FFF922 FLAG DE TEMP. 1 (TFLG1) FLAG DE TEMP. 2 (TFLG2)$FFF924 COMPRAR. FORZADA (CFORC) CONTROL C DE PWM (PWMC)$FFF926 CONTROL A DE PWM (PWMA) CONTROL B DE PWM (PWMB)$FFF928 CONTADOR DE PWM (PWMCNT)$FFF92A BUFFER DE PWMA (PWMBUFA) BUFFER DE PWMB (PWMBUFB)$FFF92C PREESCALADOR DEL GPT (PRESCL)

Tabla 13 – Mapa de direcciones de los registros del GPT.

Se puede acceder a todos los registros utilizando accesos a byte o a palabra. A los

registros de captura/comparación y de modulación 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), podría 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.

49

Page 50: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.2.2Funcionamiento por “polling” o por interrupciones

Todas las funciones del GPT tienen asociadas una interrupción y una bandera de estado.

Los registros de la bandera de interrupción del temporizador (TFLG1 y TFLG2)

contienen las banderas de estado utilizadas para el funcionamiento por “polling” o por

interrupciones, los registros de máscara (TMSK1 y TMSK2) contienen bits de control

de la interrupción. 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 interrupción de

servicio cuando dicho evento se produce. La utilización de interrupciones evita tener

que hacer un “polling” continuo de las banderas de estado para ver si se ha producido

algún evento. Las banderas de estado deben borrarse después de dar servicio a una

interrupción, para deshabilitar la petición de interrupción.

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 posición. La interrupción asociada a un evento sólo se genera cuando se

encuentra habilitado su respectivo bit de máscara.

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, después

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 continuación se muestra la tabla de banderas de estado del GPT:

Nemónico Asignación de Registros

Fuente

50

Page 51: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

IC1F TFLG1 Entrada de Captura 1IC2F TFLG1 Entrada de Captura 2IC3F TFLG1 Entrada de Captura 3OC1F TFLG1 Salida de Comparación 1OC2F TFLG1 Salida de Comparación 2OC3F TFLG1 Salida de Comparación 3OC4F TFLG1 Salida de Comparación 4I4/O5F TFLG1 Entrada de Captura 4 / Salida de Comparación 5TOF TFLG2 Desbordamiento del temporizador

PAOVF TFLG2 Desbordamiento del acumulador de pulsosPAIF TFLG2 Entrada del acumulador de pulsos

Tabla 14 – Tabla de banderas de estado del GTP.

2.3.2.2.2 Interrupciones del GPT

El GPT tiene 11 fuentes internas que pueden provocar una petición de interrupción.

É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 después de

un reset. Cada bit de TMSK1 y TMSK2 tiene su respectivo bit en TFLG1 y TFLG2

situado en la misma posición. TMSK2 controla también el funcionamiento del

preescalador.

El valor del campo de nivel de interrupción (IRL) del registro de control de

interrupciones (ICR) determina la prioridad de las peticiones de interrupción del GPT.

Los valores de IRL se corresponden con las señales de petición de interrupción

#IRQ[7:1] del MCU. IRQ7 es la señal de petición de interrupción de mayor prioridad e

IRQ1 la de menor. Un valor de 111 hace que se active IRQ7 cuando se produce una

petición de interrupción, valores inferiores hacen que se activen las correspondientes

señales de petición de menor prioridad. Si se pone el campo a 000, se desactivan las

interrupciones.

La CPU32 reconoce sólo señales de petición de interrupción con una prioridad mayor

que el valor de la máscara de prioridad de interrupción (IP) del registro de estado.

Cuando la CPU reconoce una petición de interrupción, la prioridad de dicha petición se

anota en la máscara de IP y se pone en las líneas de dirección 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 configuración, GPTMCR. A cada módulo del microcontrolador que

51

Page 52: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

pueda hacer peticiones de interrupción, debe asignársele un valor IARB diferente y

distinto de cero para poder implementar un esquema de arbitraje.

Cuando el GPT gana el arbitraje de interrupción, responde al ciclo de reconocimiento

de la CPU colocando un número de vector de interrupción en el bus de datos. El

número de vector se utiliza para calcular el desplazamiento dentro de la tabla de

vectores de excepción de la CPU32. Los números de vector se forman mediante la

concatenación del valor del campo IVBA del ICR con un número de 4 bits que

proporciona el GPT en función de la petición de interrupción atendida. El hardware

evita que el número de vector pueda cambiar cuando se está sacando al IMB. La

asignación de los números de vectores se muestra en la siguiente tabla:

NombreNúmero de

FuenteFuente

Número de Vector

--- 0000 Canal de Ajuste IVBA : 0000IC1 0001 Entrada de Captura 1 IVBA : 0001IC2 0010 Entrada de Captura 2 IVBA : 0010IC3 0011 Entrada de Captura 3 IVBA : 0011OC1 0100 Salida de Comparación 1 IVBA : 0100OC2 0101 Salida de Comparación 2 IVBA : 0101OC3 0110 Salida de Comparación 3 IVBA : 0110OC4 0111 Salida de Comparación 4 IVBA : 0111IC4/OC5

1000Entrada de Captura 4 / Salida de

Comparación 5IVBA : 1000

TO 1001 Desbordamiento del Temporizador IVBA : 1001

PAOV 1010Desbordamiento del Acumulador de

PulsosIVBA : 1010

PAI 1011 Entrada del Acumulador de Pulsos IVBA : 1011

Tabla 15 – Fuentes de interrupción del GPT.

2.3.2.3Descripción de los terminales

El GPT utiliza 12 terminales, cada uno de los cuales puede llevar a cabo más de una

función. 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 función de captura de entrada

del GPT. El funcionamiento tiene la histéresis siguiente: se garantiza que cualquier

pulso de duración superior a dos ciclos de reloj es válido 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 también

como E/S de propósito general.

52

Page 53: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.2.3.2 Terminal de captura de entrada / comparación de salida (IC4/OC5)

Este pin puede configurarse tanto para la captura de entrada como para la comparación

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 comparación de salida. Cuando se usa para la captura

de entrada tiene la misma histéresis que cualquier otro. También se puede utilizar como

E/S de propósito general.

2.3.2.3.3 Terminales de comparación de salidas (OC[1:4])

Estos terminales se utilizan para las funciones comparación de salida del GPT. Cada

terminal tiene asociado un registro de comparación y un comparador de 16 bits. Los

terminales OC2, OC3 y OC4 están asociados a su propia función de comparación,

mientras que la función del OC1 puede afectar a la salida de todos los terminales de

comparación. Si el terminal OC1 no se necesita para ninguna función de comparación,

puede utilizarse para sacar la señal de reloj seleccionada para el temporizador. Todos

estos terminales pueden utilizarse también como E/S de propósito 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 señal en el terminal PAI. El PAI tiene la misma histéresis que los

terminales de captura de entradas. También puede utilizarse como entrada de propósito

general

2.3.2.3.5 Terminales de modulación de ancho de pulso (PWMA, PWMB)

Los terminales PWMA y PWMB están conectados a las salidas del modulador de

ancho de pulso. Los moduladores pueden programarse para generar una onda periódica

de frecuencia y porcentaje del ciclo de trabajo variables. PWMA puede utilizarse para

sacar la señal de reloj seleccionada como entrada del contador del PWM. Estos

terminales pueden utilizarse también como salidas de propósito 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

señal de reloj de la unidad de captura/comparación o de la unidad PWM en lugar de la

proporcionada por el preescalador. La histéresis de PCLK es la misma del resto de

entradas del GPT. También puede utilizarse como entrada de propósito general.

53

Page 54: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.2.4E/S de propósito general

Cualquier terminal del GPT puede utilizarse como E/S de propósito general si no se

está usando para otra cosa. Los terminales de captura/comparación son bidireccionales.

La función como entrada o salida se controla con el bit de dirección de datos del registro

de dirección 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 están configurados para una función del

temporizador. Los datos leídos 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 comparación de salidas, pero el dato es capturado por el registro del puerto. Cuando

se desactiva la función de comparación 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 propósito 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 modulación de ancho de pulso, A y B, pueden servir como

salidas de propósito general. Los bits FPWMx y F1x de los registros CFORC y

PWMC, respectivamente, controlan su funcionamiento.

2.3.2.5Preescalador

Las unidades de captura/comparación y de modulación de ancho de pulso tienen

contadores continuos independientes de 16 bits como componentes principales para la

temporización. 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/comparación y otro para la unidad PWM.

54

Page 55: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

máscara 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.

Después 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

inicialización se puede cambiar el factor de división con la particularidad de que en los

bits PPR se puede escribir en cualquier momento, pero en los bits CPR sólo se puede

escribir una vez después del reset, salvo que el GPT se encuentre en modo test o freeze.

El preescalador se puede leer en cualquier momento. En modo freeze también se puede

escribir en él. Deben utilizarse accesos a palabra para garantizar la coherencia aunque se

55

Page 56: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

permiten los accesos a byte. El valor del preescalador se encuentra en los bits [8:0],

mientras que los bits [15:9] no están implementados y se leen como ceros.

Las salidas del multiplexor (incluida la señal 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 señales de reloj, su ciclo

de trabajo no es del 50%.

El preescalador proporciona también tres señales de reloj al selector de reloj del

acumulador de pulsos, que son: el reloj del sistema dividido por 512, la señal del reloj

externo que viene del terminal PCLK y la señal de reloj de la unidad de

captura/comparación.

2.3.2.6Unidad de captura/comparación

La unidad de captura/comparación consta del contador del temporizador (TCNT), las

funciones de captura de entradas (IC) y las de comparación 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/comparación. 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 señal 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 también se pueden

hacer accesos a byte. El contador se pone a $0000 durante el reset y funciona como un

registro de sólo lectura, salvo en los modos test y freeze en que se puede escribir

cualquier valor en él.

56

Page 57: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 interrupción con el correspondiente bit de activación

de interrupciones (TOI) del registro 2 de la máscara 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 lógica de

detección/selección de flanco. Cada función de captura de entrada tiene asociada una

bandera de estado y puede hacer que el GPT lance una petición de interrupción de

servicio.

Cuando el flanco de la señal realiza la transición seleccionada en un terminal de captura

de entrada, el “latch” asociado captura el contenido del TCNT y activa la bandera de

estado correspondiente. También se puede generar una petición de interrupción cuando

se detecta la transición.

La lógica de detección de flancos consta de dos bits de control por cada entrada que

activan la detección de flancos y seleccionan una transición 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 sólo flancos de subida, sólo flancos de

bajada o ambos. Si se borran ambos bits, se desactiva la función 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 lógica de interrupciones de la captura de entradas incluye una bandera de estado, que

indica que se ha detectado un flanco, y un bit de activación de interrupción. Un evento

de captura de entrada pone a 1 el bit ICxF del registro 1 de la bandera de interrupción

del temporizador (TFLG1) y hace que el GPT pida una interrupción si está activado el

correspondiente bit ICxI en el registro 1 de la máscara de interrupción 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 asíncronos con el contador del

temporizador. Debido a esto, es necesario adaptar las señales por medio de un

57

Page 58: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

sincronizador y un filtro digital. Como los eventos están sincronizados con el reloj del

sistema, la transición 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

histéresis, la captura de cualquier transición mayor que dos ciclos de reloj está

garantizada y cualquier transición de duración inferior a un ciclo de reloj se ignora.

Debido a estas necesidades de sincronización y a los tiempos de propagación de las

señales transcurren varios ciclos de reloj del sistema desde que se produce la transición

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 leído

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 comparación de salidas

Cada terminal de comparación de salida del GPT tiene asociados un registro de

comparación y un comparador, ambos de 16 bits. Cada función de comparación de

salida tiene asociada una bandera de estado y puede hacer que el GPT genere una

petición de interrupción de servicio. La lógica de las salidas de comparación está

diseñada para prevenir falsas comparaciones durante los periodos de transición de los

datos.

Cuando el contenido programado de un registro de salida de comparación coincide con

el valor del TCNT, se activa un bit (OCxF) de la bandera de estado de salida de

comparación en TFLG1. Si está activado el correspondiente bit de interrupción (OCxI)

de TMSK1, se origina una petición de interrupción al producirse la coincidencia.

El funcionamiento de la comparación de salida 1 (OC1) difiere de las otras funciones de

comparación de salida. La lógica de control de OC1 puede programarse para provocar

cambios de estado en otros terminales de comparación cuando se produce una

coincidencia en OC1. Los bits de control del registro de comparación forzada del

temporizador (CFORC) permiten forzar el valor de las salidas.

58

Page 59: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.2.6.3.1 Comparación de salida 1

La comparación de salida 1 puede afectar a cualquiera de los OC[1:5] cuando se

produce una coincidencia. Además, para permitir la generación de múltiples señales de

control a partir de una única comparación, esta función hace posible que dos o más

funciones de salida de comparación controlen el estado de un único terminal de

comparación. Se pueden generar de esta forma pulsos de salida con una duración de tan

sólo un ciclo de contador del temporizador.

Los registros de máscara de acción (OC1M) y de datos de acción (OC1D) controlan la

función 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 función OC1 es la

que toma el control del terminal.

2.3.2.6.3.2 Comparación de salida forzada

El registro de comparación forzada (CFORC) se utiliza para hacer comparaciones

forzadas. La acción resultante de una comparación forzada es la misma que cuando se

produce una coincidencia en una salida de comparación, excepto que no se activan las

banderas de estado. Los canales forzados ejecutan las acciones programadas

inmediatamente después de la escritura en el CFORC.

El registro CFORC es el byte superior de un registro de 16 bits que contiene también 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 comparación forzada (FOC) no tienen

ningún sentido y siempre devuelven ceros.

2.3.2.6.4 Captura de entrada 4 / Comparación de salida 5

El terminal IC4/OC5 se puede utilizar para la captura de entrada, para la comparación

de salida y como E/S de propósito general. La función del terminal como captura de

entrada (IC4) o comparación de salida (OC5) se configura con el bit de activación de

función (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 dirección de

datos del puerto GP (DDRGP).

59

Page 60: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

El registro de 16 bits (TI4/O5) utilizado con la función IC4/OC5 actúa como un

registro de captura de entrada o como uno de comparación de salida según la función

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.7Acumulador 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 transición

seleccionada en la entrada del acumulador de pulsos (PAI). La tasa de reloj máxima que

admite es la del reloj del sistema dividida por cuatro.

En el modo acumulador de tiempo, un señal 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) señala 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 petición de interrupción cuando está a uno cada una de las banderas

de estado. Sin embargo, la operación de interrupción del PAI depende del modo de

operación. En modo de contador de sucesos, se pide una interrupción cuando se detecta

el flanco que se va a contar. En modo contado de tiempo, la petición se produce cuando

la entrada del PAI cambia de estado activo a inactivo. Las peticiones de interrupción

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 operación en el modo de

contador de sucesos o contador de tiempo. En modo de contador de sucesos, el bit de

control (PEDGE) determina la detección por flanco de subida o de bajada; en modo

contador de tiempo, PEDGE especifica si la señal 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.

60

Page 61: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 también como entrada de propósito general. El estado

lógico del bit PAIS en PACTL muestra el estado del pin.

2.3.2.8Unidad de modulación de ancho de pulso

La unidad de modulación 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 rápido 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 también

sacar la señal de reloj que va al contador PWM. Los terminales PWM pueden utilizarse

también 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/comparación. Durante el reset, el GPT está configurado para que el contador

utilice el reloj del sistema divido por dos. El software de inicialización 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, admitiéndose también los accesos a byte. El contador se pone a cero con el

reset y es un registro de sólo lectura salvo en los modos test y freeze.

Quince de los dieciséis bits del contador son salidas hacia los multiplexores A y B. Los

multiplexores proporcionan los modos lento y rápido 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 rápido, los bits [7:0] de PWMCNT son utilizados para marcar el ritmo a la lógica

61

Page 62: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 rápido.

PPR [2:0]

Salida del Preescalador SFA/B=0 SFA/B=18.39 Mhz 16.78 Mhz 8.39 Mhz 16.78 Mhz 8.39 Mhz 16.78 Mhz

000 Div 2 = 4.19 Mhz Div 2 = 8.39 Mhz 16.4 Khz 32.8 Khz 128 Hz 256 Hz001 Div 4 = 2.10 Mhz Div 4 = 4.19 Mhz 8.19 Khz 16.4 Khz 64 Hz 128 Hz010 Div 8 = 1.05 Mhz Div 8 = 2.10 Mhz 4.09 Khz 8.19 Khz 32 Hz 64 Hz011 Div 16 = 524 Khz Div 16 = 1.05 Mhz 2.05 Khz 4.09 Khz 16 Hz 32 Hz100 Div 32 = 262 Khz Div 32 = 524 Khz 1.02 Khz 2.05 Khz 8 Hz 16 Hz101 Div 64 = 131 Khz Div 64 = 262 Khz 512 Hz 1.02 Khz 4 Hz 8 Hz110 Div 128 = 66 Khz Div 128 = 131 Khz 256 Hz 512 Hz 2 Hz 4 Hz111 PCLK PCLK PCLK/256 PCLK/256 PCLK/32768 PCLK/32768

Tabla 16 – Margen de frecuencias del PWM para señales de reloj del sistema de 8.39 MHz y 16.78 Mhz.

2.3.2.8.2 Función 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 señal continua de nivel

lógico cero. Un valor de $80 hace que la correspondiente señal de salida tenga un ciclo

de trabajo del 50% y así sucesivamente hasta llegar al valor máximo, $FF, que se

corresponde con una salida que está en el nivel lógico 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 señal continua de nivel lógico uno. El

nivel lógico del terminal asociado no varía 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

dirección de palabra como PWMC.

Los datos escritos a PWMA y PWMB no se utilizan hasta haber finalizado el ciclo

completo. Esto evita la aparición 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,

62

Page 63: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PWMBUFA y PWMBUFB, son de sólo 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 también como salida de propósito

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 módulo de procesamiento de instrucciones de primera generación de la

familia MC68300 basada en la conocida familia de procesadores MC68000. Como ya

se ha tenido la ocasión de comentar, un microcontrolador está formado por un

microprocesador unido a un conjunto de periféricos y opcionalmente puede disponer de

memoria también integrada en el chip.

La CPU32 tiene muchas características del MC68010 y del MC68020, así como

algunas características específicas 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. También incorpora dos nuevas instrucciones para facilitar ciertas

tareas de control como son las funciones de ahorro de energía y de búsqueda e

interpolación 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 modificación.

La CPU32 presenta un consumo muy bajo de energía durante la ejecución normal

gracias a la tecnología HCMOS con que ha sido desarrollada. Además el consumo de

energía puede reducirse a un mínimo durante los periodos de inactividad mediante la

ejecución de la instrucción LPSTOP que detiene a la CPU32 así como a otros

submódulos.

También presenta una mayor velocidad de ejecución 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 depuración en segundo plano que permite que

un PC tome el control del microcontrolador para la depuración.

63

Page 64: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.3.1Registros de la CPU32

El modelo de programación de la CPU32 es básicamente 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. También dispone de un registro de estado de 16

bits y tres nuevos registros accesibles sólo 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 0D0D1D2D3 REGISTROS DE DATOSD4D5D6D7

31 16 15 0A0A1A2A3 REGISTROS DE DIRECCIONESA4A5A6

31 16 15 0A7 (USP) PUNTERO DE PILA DE USUARIO

31 0PC CONTADOR DE PROGRAMA

7 0CCR REGISTRO DE CÓDIGOS DE CONDICIÓN

Tabla 17 – Registros del modo usuario.

En el modo supervisor se tiene acceso a nuevos registros. Por un lado se dispone de un

puntero de pila específico. Además es visible el registro de estado (SR) completo, ya

que en el modo usuario sólo estaba disponible el byte inferior (CCR) que contiene los

códigos de condición. En el byte superior se encuentran los tres bits de la máscara de

interrupción (IP), dos bits para habilitar o inhabilitar los dos modos de trazado en los

que puede trabajar el microprocesador y el bit de selección de modo con el que se puede

determinar el nivel de privilegio usuario/supervisor que se desea.

64

Page 65: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Los modos de traza son una ayuda al desarrollo de programas que generan una

excepción tras la ejecución de cada instrucción o bien cada vez que se produce una

bifurcación y que permite la utilización de un programa monitor para la depuración.

Figura 13 – Registro de estado.

También se tiene acceso a los tres nuevos registros que incorpora la CPU32 cuyas

funciones se describen a continuación:

Registro del Vector Base ( VBR ) : Contiene la dirección base de la tabla

de vectores de excepción cuya extensión es de 1024 bytes y contiene 256

vectores. Estos vectores son la dirección de memoria donde comienza la

rutina de atención a la excepción. Cada vector tiene asignado un número

de ocho bits. El procesador multiplica ese número por cuatro y le suma el

VBR para calcular la dirección de memoria del vector .

Registros SFC ( Source Function Code ) y DFC ( Destination Function

Code ) : Son registros de 3 bits. Los códigos de función pueden

considerarse como extensiones de los 24 bits de direcciones disponibles

proporcionando gracias a los códigos de función hasta 8 espacios

direccionables de 16 Mbytes. La instrucción MOVES copia datos

utilizando los registros SFC y/o DFC. Para el movimiento de datos en

los registros de códigos de función se utiliza la instrucción MOVEC. Se

trata de una transferencia de doble palabra siendo ignorados los 29 bits

superiores.

A7’ (SSP) PUNTERO DE PILA DE SUPERVISOR

65

Page 66: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

31 16 15 8 7 0(CCR) SR REGISTRO DE ESTADO

31 0VBR REGISTRO DEL VECTOR BASE

7 0SFC CODIGO DE FUNCIÓN DE ORIGENDFC CODIGO DE FUNCIÓN DE DESTINO

Tabla 18 – Registros adicionales del modo supervisor.

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

programación. La CPU32 comparte los mismos modos de direccionamiento que la

familia MC68000 y añade algunos otros nuevos que se describen a continuación.

2.3.3.2.1 Nuevos modos de direccionamiento

Indirecto a registro con índice y desplazamiento de base: (bd, An, Xn).

La dirección efectiva es: <ea> = (An) + (Xn) + bd

Indirecto a contador de programa con índice y desplazamiento de base:

(bd, PC, Xn)

La dirección 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 instrucción Bcc

admite desplazamientos de 32 bits al igual que el MC68020, ya que el

68000 y el 68010 sólo admite desplazamientos de 16 bits.

2.3.3.3Instrucciones de la CPU32

La familia MC68300 participa de la filosofía de Motorola de mantener una

compatibilidad ascendente de modo que los programas de usuario puedan ser ejecutados

en procesadores más avanzados sin la necesidad de que sean modificados y que los

programas que se ejecutan en modo supervisor sólo requieran unas mínimas

modificaciones.

66

Page 67: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

La CPU32 puede ejecutar el código objeto desarrollado para el 68000 y el 68010. Es

muy similar al 68020 soportando la mayoría de las instrucciones de éste.

Las siguientes instrucciones del 68020 no están 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 código 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 instrucción 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

instrucción y el procesador se para. La ejecución se reanuda de nuevo

cuando se genera un ciclo de interrupción, se entra en modo traza o

después de un reset.

MOVEC <origen>,<destino> - Es una instrucción específica 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 operación 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 códigos de función SFC y

DFC. Las operaciones pueden ser de 8, 16 y 32 bits.

TBLS.size <ea>,Dn – Esta instrucción sirve para realizar la búsqueda e

interpolación 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 interpolación.

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

67

Page 68: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Dx (7:0) – fracción de interpolación entre 0 y 255.

Ejemplo: Dada la tabla de pares de valores de una función (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 fracción 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

depuración en segundo plano. El vector asociado es el número 12.

MULS, MULU – El funcionamiento es idéntico 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 límites genera

una excepción. <ea> contiene la dirección efectiva de la pareja de

límites, primero el inferior y luego el superior. Esta instrucción es del

68020.

TRAPcc - Causa una excepción TRAP cuando se cumple la condición

cc. Se trata de una instrucción del 68020.

2.3.3.4Depuración en segundo plano (BDM)

La CPU32 presenta una cualidad única que consiste en llevar implementado un

depurador en el propio microcódigo de la CPU. El BDM incorpora un conjunto

completo de herramientas de depuración que permiten ver y modificar los registros y la

memoria.

El BDM permite establecer una comunicación serie bidireccional con un equipo

externo. Con tan sólo implementar un sencillo circuito de comunicación se puede

controlar la ejecución desde un PC, por ejemplo. Los terminales asociados a este

proceso de comunicación son DSI, DSO y DSCLK.

La depuración en segundo plano (BDM) es una función que se activa durante el reset.

Durante el modo de operación BDM, la ejecución normal se suspende.

68

Page 69: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.4 Módulo de comunicaciones serie (QSM)

El QSM contiene dos interfaces serie, la interfaz serie de periféricos en cola (QSPI) y la

interfaz serie de comunicaciones (SCI).

La QSPI facilita la expansión periférica o la comunicación entre procesadores mediante

un bus de tres líneas, síncrono y full-duplex. Dispone de cuatro terminales de selección

de chip programables permiten seleccionar hasta 16 dispositivos periféricos. Lleva

integrada una cola memoria RAM que permite realizar hasta 16 transferencias serie, de

8 a 16 bits cada una, o bien la transmisión de una cadena de datos de 256 bits, sin

intervención de la CPU. Un modo especial de bucle proporciona muestreo continuo de

un periférico serie, con actualización automática de la RAM de la QSPI, para

proporcionar una interfaz eficiente con los convertidores A/D.

La SCI utiliza un un formato NRZ estándar. Funciona tanto en modo full-duplex como

en semi-duplex. Dispone de bits independientes para la activación del transmisor y del

receptor. Un generador de flujo de datos tipo módulo 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 generación y control de paridad tanto par como impar. Dispone de una

función despertador que permite que la CPU se dedique a otras tareas hasta que un dato

completo esté disponible.

En este capítulo sólo se describe la interfaz de comunicación serie (QSI) por entenderse

que es la de mayor interés para las aplicaciones que se van a desarrollar.

2.3.4.1Registros generales del QSM

Existen básicamente tres registros de configuración generales que son:

QSMCR (Registro de configuración del QSM) – Contiene los

parámetros de interconexión con el bus intermodular, que son: el campo

de arbitraje de interrupciones IARB, el bit de restricción del modo

usuario SUPV, el bit FRZ1 que permite ignorar la señal FREEZE o

detener el QSPI cuando el IMB activa la señal y el bit STOP que

detiene el reloj del QSM.

QILR (Registro de niveles de interrupción) – Permite configurar el

nivel de prioridad de las interrupciones para cada uno de los módulos del

69

Page 70: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

interrupción, INTV[7:0], de ambos submódulos. Cuando se escribe en

este registro sólo 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 Atención a las interrupciones

Ambos submódulos disponen de niveles de prioridad independientes. El funcionamiento

no difiere en esencia del resto de los módulos. Cuando la CPU32 reconoce una

interrupción de este módulo coloca el valor de prioridad en la máscara de interrupciones

IP y atiende la excepción salvo que exista otra del mismo nivel que deberá entonces

resolverse mediante el arbitrio de interrupciones.

2.3.4.2Registros de control de los terminales del QSM

El QSM utiliza 9 terminales de los cuales ocho pueden utilizarse como E/S de propósito

general. Los registros que permiten la configuración de la función de los terminales se

describen a continuación:

PQSPAR (Registro de asignación 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 propósito general.

Al escribir un 1 se asigna la función asociada al QSPI. Este registro no

afecta al funcionamiento de los terminales del SCI.

DDRQS (Registro de dirección de los datos) – Se determina si los

terminales actúan como entradas o como salidas. Escribiendo un 1 en el

bit correspondiente a un terminal actúa como salida y escribiendo un 0

como entrada.

PORTQS (Registro del Puerto QS) – A través de este registro se leen

los terminales determinados como entrada y se escribe en los terminales

de salida.

70

Page 71: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.4.3Interfaz de Comunicación Serie (SCI)

La SCI se comunica con los dispositivos externos a través de un bus serie asíncrono,

utilizando un formato de transmisión NRZ estándar. Es totalmente compatible con otros

sistemas de Motorola, tales como los que incorporan el M68HC11 y M68HC05.

2.3.4.4Registros de SCI

La programación de la SCI se realiza a través 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 selección de la velocidad de transmisión,

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 parámetros de configuración, entre los que se

incluyen los bits de activación del emisor y el receptor, los de

interrupción 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 operación 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 continuación, 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 continuación leyendo o escribiendo en el SCDR. En una

lectura de doble palabra se puede acceder consecutivamente a ambos registros, SCSR y

SCDR. Esta acción borra los bits de las banderas de estado de recepción que se

activaron durante la lectura, pero no las de transmisión, TDRE o TC.

Si la SCI envía una señal de activación de un bit de estado después de que la CPU haya

leído los bits de estado, pero antes de que haya leído o escrito en el SCDR, el bit de

estado afectado no se borra.

71

Page 72: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 dirección. El RDR es un registro

de sólo lectura que contiene datos recibidos por la interfaz serie de la SCI. Los datos

entran al registro de desplazamiento de recepción y son transferidos al RDR. El TDR es

un registro de sólo escritura que contiene datos a transmitir. Los datos se escriben

primero en el TDR y a continuación se transfieren al registro de desplazamiento de

transmisión, donde se añaden 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 función.

2.3.4.5Terminales de la SCI

La SCI tiene únicamente dos terminales unidireccionales asociados y que son, el TXD

(datos de transmisión) y el RXD (datos de recepción). El terminal TXD puede utilizarse

también como E/S de propósito general. Su funcionamiento se asigna mediante el

registro de asignación de pines del puerto QS (PQSPAR). El terminal de datos de

recepción (RXD) está dedicado a la SCI.

2.3.4.6Funcionamiento de la SCI

Las banderas de estado de la SCI permiten la gestión 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 (Duración de bit) - Tiempo requerido para transmitir o recibir

un bit de datos; un periodo completo de la frecuencia de transmisión en

baudios.

Start Bit (Bit de arranque) – Se trata del primer bit de la trama de

transmisión y que sirve para indicar el comienzo de una trama de datos.

72

Page 73: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Un bit de arranque tiene lógica cero y anuncia el inicio de la trama con

una transición de uno a cero.

Stop Bit (Bit de parada) - Se trata del último bit de la trama con lógica

uno y que señala el final de una trama de datos.

Frame (Trama) – Es una unidad completa de información 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 información.

Como la línea 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

sólo ceros y sin bit de parada.

2.3.4.6.2 Formatos de transmisión serie

Todas las tramas de datos deben tener un bit de arranque y al menos uno de parada. Los

dispositivos de recepción y transmisión 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 número de

bits por trama.

El formato de trama de datos de diez bits, el más 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 típica 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 transmisión

El reloj de transmisión de la SCI se programa escribiendo un valor de 13 bits en el

campo de velocidad de transmisión (SCBR) del registro SCCR0 de control de la SCI.

La velocidad de transmisión 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 transmisión en baudios se calcula con la siguiente fórmula:

VelocidaddeTransmisión=

Re lojdelsistema

32∗SCBR

73

Page 74: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

El valor de SCBR varía entre 1 y 8191.

Como el receptor de la SCI funciona en modo asíncrono, se necesita un reloj interno

para sincronizarlo con un flujo de datos entrante. El generador de reloj de la SCI

produce una señal de muestreo para la recepción (RT) con un frecuencia 16 veces

superior a la frecuencia de transmisión. La SCI determina los límites de la señal de bit a

partir de transiciones de la onda recibida y ajusta el muestreo dentro del periodo del bit

para una correcta detección.

2.3.4.6.4 Comprobación de paridad

El bit de selección 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 activación de paridad (PE) de SCCR1

habilita la comprobación de paridad cuando PE=1 o la inhabilita cuando PE=0. Cuando

PE está a uno, se utiliza el bit más significativo de los datos de una trama para la

función de paridad. Para datos enviados, se genera un bit de paridad; para datos

recibidos, se comprueba dicho bit. Cuando está activada la comprobación 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 número de bits de una trama constante cuando se activa la paridad se

reduce en uno el número de bits de datos de una trama., lo que puede afectar, a su vez,

al tamaño de la trama.

M PE Resultado0 0 8 bits de datos0 1 7 bits de datos y 1 de paridad1 0 9 bits de datos1 1 8 bits de datos y 1 de paridad

Tabla 19 – Efecto del control de paridad en el tamaño 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 través del registro de datos de la SCI (SCDR). Dispone de un buffer

doble, lo que supone que se pueden cargar datos en el TDR mientras el registro de

desplazamiento está transmitiendo otros. El bit de activación del transmisor (TE) de

SCCR1 activa el transmisor cuando vale 1 y lo desactiva cuando vale 0.

74

Page 75: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

La salida del registro de desplazamiento mantiene la conexión con el terminal TXD

mientras el transmisor está funcionando (TE=1 o TE=0 y la transmisión 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 estándar 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 lógico 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

propósito general.

Los datos a transmitir se escriben en TDR y a continuación se transfieren al registro de

desplazamiento serie. La bandera de registro de datos de transmisión vacío (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 transmitirán los datos.

La bandera de transmisión 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 automáticamente, 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 preámbulo de la siguiente trama de datos; si

TC=0, se continúa la operación en curso hasta el envío del bit de parada, y entonces se

envía la trama nula.

El bit de trama de ruptura (SBK) de SCCR1 se utiliza para insertar tramas de ruptura en

una transmisión. Se transmite un número entero distinto de cero de tramas de ruptura

mientras SBK está a uno. La transmisión de ruptura comienza cuando SBK se pone a

uno y acaba cuando que se borra SBK o TE y finaliza la transmisión en curso. Si el bit

SBK se pone a uno durante una transmisión, ésta finaliza normalmente antes de

comenzar la trama de ruptura. Para garantizar el tiempo mínimo de ruptura, se debe

75

Page 76: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

conmutar rápidamente 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 lógico 1 para asegurar el

reconocimiento del bit de arranque.

Si el bit TE permanece activo, después de la transmisión 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 lógico 1.

Cuando se borra el bit TE, el transmisor se desactiva después 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 después de haber borrado el bit TE, por

lo que para evitar la pérdida del dato del buffer, el bit TE no debe borrarse hasta recibir

la confirmación 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 continuación, terminar la transmisión

cuando se produce la interrupción asociada al TDRE.

2.3.4.6.6 Funcionamiento del receptor

El bit de activación 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

recepción 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 través 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 sincronización con la trama de datos serie entrante, el receptor dispone de una

unidad de proceso de bits que conforma una máquina de estados capaz de determinar el

nivel lógico de cada ciclo de bit. Esta máquina de estados controla el instante de

muestreo del terminal RXD y la sincronización con el registro de desplazamiento del

receptor y utiliza un reloj de recepción 16 veces más rápido que el reloj del sistema. Los

bits que entran por el terminal RXD se sincronizan antes de entrar en el registro de

desplazamiento y a partir de ese punto el flujo de datos va sincronizado con el reloj del

sistema.

76

Page 77: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

El número 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, poniéndose 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 señalización 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 más rápido 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 después con la

lectura del registro SCDR se obtiene el dato, acción é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 petición de

interrupción cada vez que el bit RDRF se activa.

2.3.4.6.7 Detección de línea desocupada

Durante una transmisión serie típica, las tramas se transmiten de forma consecutiva sin

intervalos de espera entre tramas. Incluso aunque todos los bits de una trama sean unos

lógicos, el bit de arranque proporciona un periodo con un cero lógico durante la trama.

Una línea desocupada es una secuencia de unos consecutivos de igual tamaño que la

trama. El tamaño de trama viene determinado por el bit M de SCCR1.

El receptor de la SCI es capaz de realizar tanto una detección corta como larga de la

línea desocupada. En la detección corta se inicia la cuenta de periodos a nivel lógico

uno en cualquier instante dentro de una trama incluyéndose 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 detección larga la cuenta se inicia después del bit de

77

Page 78: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

parada. La detección de línea desocupada está siempre activa. El bit ILT determina el

tipo de detección a aplicar. Si ILT=0 se aplica la detección corta y si ILT=1 se aplica la

detección larga. Cuando se detecta la condición de línea desocupada, se pone a uno la

bandera IDLE.

En algunas aplicaciones la sobrecarga de la CPU puede introducir un periodo de nivel

lógico uno entre tramas. Este periodo no afecta al contenido, pero si se produce después

de una trama de unos cuando está activada la detección corta, el receptor activa la

bandera de línea desocupada.

Cuando el bit de activación de interrupción por línea desocupada (ILIE) de SCCR1

está a uno, se genera una petición de interrupción cuando la bandera IDLE se activa. La

bandera se borra leyendo SCSR y SCDR consecutivamente. IDLE no vuelve a ponerse

a uno hasta después de haberse recibido al menos una trama (RDRF=1). Esto evita que

un intervalo desocupado largo genere más de una interrupción.

78

Page 79: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 3

Control de un display LCD de modo textoEl 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 características de una forma sencilla y, si lo desea, mejorar o perfeccionar el

ejemplo que se pone a su disposición.

El funcionamiento del display LCD a que hace referencia este documento va gobernado

por el controlador HD44780U de Hitachi. Hoy día existen varios dispositivos en el

mercado compatibles con este controlador por lo que la descripción que aquí se facilita

valdrá para un gran número de dispositivos. En cualquier caso se recomienda consultar

en cada caso la documentación facilitada por el fabricante.

3.1 Descripción 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 tamaño

similar al del “display”, sobre la que van soldados el LCD, el controlador y el resto de

componentes, formando todo un conjunto compacto.

Figura 1 - Aspecto general de un “display”.

79

Page 80: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 conexión. Numerados de izquierda

a derecha tienen la siguiente funcionalidad:

PIN Símbolo Descripción1 Vss Masa2 Vdd Alimentación3 Vo Voltaje de ajuste del contraste4 RS Selección de registro5 R/W Lectura / escritura6 E Validación de datos (Enable)7 D0 Bit de datos menos significativo8 D1 Bit de datos9 D2 Bit de datos10 D3 Bit de datos11 D4 Bit de datos12 D5 Bit de datos13 D6 Bit de datos14 D7 Bit de datos más significativo

Tabla 1 – Función de los puntos de conexión.

Los tres primeros puntos de conexión (pins) son para la alimentación 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 utilización correcta del dispositivo depende del conocimiento que se tenga

sobre su funcionamiento, señales de control, instrucciones, etc. Asimismo, la forma de

conexión 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 introducción 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

información sobre su estado interno. Para ello dispone de algunos registros que se

seleccionan mediante las líneas de control. Cada operación necesita de unos tiempos de

ejecución que se describirán posteriormente. Todo este proceso de comunicación se

controla con las tres líneas de control (RS, R/W y E) conforme al cronograma del

dispositivo.

80

Page 81: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.2.1 Alimentación y control de contraste

La alimentación de 5 V. la recibe a través de los dos primeros puntos de conexión, 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 tensión en el mismo entre 0 (contraste mínimo) y 5 voltios (contraste

máximo). A la hora de conectarlo, podremos optar entre dos soluciones:

8. Fijar el contraste a su valor máximo.

Ésta es la solución más sencilla, para lo cual se conectará este punto a

5 V.

9. Regular el contraste.

Para esta solución se conectará un potenciómetro en configuración de

divisor de tensión variable, conforme se detalla en la figura y con el

que se suministra la tensión deseada entre 0 y 5 V.

Figura 2 – Conexión de un potenciómetro de contraste.

Cabe recordar que cada fabricante puede optar por diferentes soluciones de polarización

para la regulación del contraste y por tanto será necesario consultar la documentación

del dispositivo.

3.2.2 La pantalla y los caracteres

El “display” está formado por un LCD (Liquid Crystal Display, pantalla de cristal

líquido) de dos líneas con 16 posiciones cada una. Cada posición está formada por una

matriz que puede ser de 5 x 8 ó de 5 x 10 puntos, para representar los diferentes

caracteres o símbolos. La pantalla está gobernada por el controlador HD44780U que

dispone de dos plantillas de caracteres predefinidas en la CGROM (Character

Generator ROM). La primera plantilla está formada por 160 caracteres de 5 x 8 puntos

81

Page 82: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

más 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 más importantes de la referida plantilla. Los

códigos de cada carácter vienen dados en hexadecimal y se puede comprobar que

coinciden con los códigos en ASCII.

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

Tabla 2 – Conjunto de caracteres de uso más común.

En el caso aquí referido, la matriz de cada posición de la pantalla LCD es de 5 x 8

puntos, por lo que sólo 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 continuación su funcionamiento:

3.2.3.1Display 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 línea,

en cuyo caso tendrá las 80 direcciones consecutivas, o en modo de dos líneas (se

entiende que sólo tiene sentido si la pantalla LCD es de dos líneas), quedando

fraccionada en dos bloques de 40 posiciones consecutivas por línea. Existe una tercera

variante implementada con un LCD de cuatro líneas en la que se fracciona en cuatro

bloques de 20 posiciones.

82

Page 83: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

DDRAM

Modo de 1 línea.

1 2 3 4 5 6 7 79 80

Dirección 00 01 02 03 04 05 06

4E 4F

Modo de 2 líneas.

1 2 3 4 5 6 7 39 40

Línea 1 00 01 02 03 04 05 06

26 27

Línea 2 40 41 42 43 44 45 46 66 67

Figura 3 – Configuración en los modos de una y dos líneas.

Como la pantalla LCD tiene únicamente 16 posiciones, se puede pensar en el “display”

como en un display virtual de una línea de 80 caracteres, o bien, dos de 40, donde la

pantalla real es una ventana en la que se visualizan una o dos líneas de 16 caracteres.

Mas adelante se verá cómo se puede desplazar la pantalla real sobre el display virtual.

Cualquier operación 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 posición relativa que en

un momento dado tenga la ventana de visualización.

Figura 4 – Display virtual y pantalla LCD.

3.2.3.2Character 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 están definidos mediante matrices tanto de 5 x 10 como de 5 x 8

puntos. Cada fila de cada matriz se corresponde con una dirección de memoria y cada

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.

83

Page 84: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 posición con una de las 10 filas de la matriz. Los primeros cuatro

bits de la dirección CGRAM servirán para determinar la fila de la matriz y los dos bits

restantes serán 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.

Dirección CGRAM

DatoCGRAM

0 0 0

0 0 0 1 0 0 0 10 0 1 0 1 0 1 00 1 0 1 1 1 1 10 1 1 0 0 1 0 01 0 0 1 1 1 1 11 0 1 0 0 1 0 01 1 0 0 0 1 0 01 1 1 0 0 0 0 0

0 0 1

0 0 0 0 1 1 1 00 0 1 0 1 1 1 00 1 0 0 1 1 1 00 1 1 0 0 1 0 01 0 0 1 1 1 1 11 0 1 0 0 1 0 01 1 0 0 1 0 1 01 1 1 1 0 0 0 1

1 1 1

0 0 0 0 0 1 0 00 0 1 0 1 0 1 00 1 0 1 0 0 0 10 1 1 1 0 0 0 11 0 0 1 0 1 0 11 0 1 1 0 1 0 11 1 0 1 1 1 1 11 1 1 0 0 0 0 0

Tabla 3 - Creación de caracteres de usuario.

3.2.4 Señales de control y registros internos

Para el control se dispone de cuatro señales: validación de datos (E), selección de

lectura/escritura (R/W), selección de registro (RS) e indicador de sistema ocupado

84

Page 85: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

(BF). Los registros internos son tres: el contador de direcciones (AC), el registro de

instrucciones (IR) y el de datos (DR).

3.2.4.1Señales de control

Validación de datos, “Enable” (E): Cuando no se utiliza el

“display” esta señal debe permanecer a 0. Cuando se desea realizar

una transferencia de información (lectura o escritura) se ponen los

datos y las señales de control deseadas y se valida la operación con

E=1, debiendo permanecer en ese estado lógico durante un tiempo

superior a 500 ns., para que se realice correctamente la captura de los

datos en el registro. Cuando se devuelve la señal de validación a su

estado de reposo, E=0, la ejecución de la instrucción se inicia con el

flanco de bajada de esta señal. El periodo completo de la señal de

validación, formado por el estado lógico 1 seguido del estado lógico

0, no podrá ser inferior a 1 s.

Selección de lectura/escritura, “Read/Write” (R/W): Se selecciona

R/W=0 para realizar una operación de escritura en el display y

R/W=1 para la lectura de datos del mismo.

Selección 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 señal

que proporciona el sistema y que, con valor 1 (BF=1), indica que el

“display” está ejecutando una operación interna y no podrá aceptar

una nueva instrucción hasta que termine, momento en el cual pasa a

valor 0 (BF=0). El BF podrá ser leído 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).

85

Page 86: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 5 – Ejemplo de cronograma de las señales de control. (Extraído del catálogo de Hitachi).

3.2.4.2Registros internos

Contador de direcciones, “Address Counter” (AC): Apunta la

dirección de memoria DDRAM o CGRAM sobre la que se escribe o

se lee un dato. Su valor se incrementa o decrementa automáticamente

en una unidad después de cada operación según se haya configurado

previamente. Para modificar o leer la dirección del AC se utilizan los

siete primeros bits del registro IR (IR0-IR6). El valor de este

contador es utilizado también por el circuito de control del cursor,

que lo colocará en la posición que éste indica.

Registro de instrucciones, “Instruction Register” (IR): En este

registro se escriben las instrucciones que se desea que el display

ejecute. También se puede leer el valor del contador de direcciones

(AC) en los primeros 7 bits (IR0 - IR6), teniendo disponible en el

octavo (IR7) la señal 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 señales de control asociadas a la selección de registro.

RS R/W Acción0 0 Operación de escritura en IR (instrucción u operación interna).0 1 Operación de lectura de IR (permite leer el AC (IR0-IR6) y el BF (IR7)).1 0 Operación de escritura en DR (escritura del dato en la DDRAM o CGRAM).1 1 Operación de lectura de DR (lectura del dato de la DDRAM o CGRAM).

Tabla 4 – Selección de registro.

86

Page 87: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.2.5 Conjunto de instrucciones

El LCD se controla mediante instrucciones que se resumen en la tabla 5. En las líneas

siguientes se ofrece una breve descripción de cada una.

INSTRUCCION RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 DuraciónBorrar display. 0 0 0 0 0 0 0 0 0 1 1.52 ms.Cursor a inicio. 0 0 0 0 0 0 0 0 1 --- 37 s.

Establecer modo de trabajo. 0 0 0 0 0 0 0 1 I/D S 37 s.Control ON/OFF del display. 0 0 0 0 0 0 1 D C B 37 s.

Desplazamiento del cursor / display. 0 0 0 0 0 1 S/C R/L --- --- 37 s.Establecer modo de interfaz. 0 0 0 0 1 DL N F --- --- 37 s.Fijar dirección de CGRAM. 0 0 0 1 ACG ACG ACG ACG ACG ACG 37 s.Fijar dirección de DDRAM. 0 0 1 ADD ADD ADD ADD ADD ADD ADD 37 s.

Lectura de BF y AC 0 1 BF AC AC AC AC AC AC AC 0 s.Escritura de datos en CGRAM/DDRAM 1 0 Datos a escribir 37 s.Lectura de datos en CGRAM/DDRAM 1 1 Lectura de datos 37 s.

I/D = 1S = 1

S/C = 1R/L = 1DL = 1N = 1F = 1

BF = 1

Incremento.Display acompaña al desplazamiento.

Desplazar el display.Desplazamiento a derecha.

Modo 8 bits.Dos líneas.

Fuentes de 5 x 10 puntos.Ocupado internamente.

I/D = 0S = 0

S/C = 0R/L = 0DL = 0N = 0F = 0

BF = 0

Decremento.Display quieto.

Desplazar el cursor.Desplazamiento a izquierda.

Modo 4 bits.Una línea.

Fuentes de 5 x 8 puntos.Listo para recibir comandos.

Tabla 5 – Resumen de instrucciones.

3.2.5.1Borrar display, “Clear Display”

CÓDIGO: $01

DESCRIPCIÓN: Esta instrucción escribe el carácter blanco ($20)

en todas las posiciones de la DDRAM, pone el contador de

direcciones (AC) a cero y devuelve el display a su posición de inicio

si se encuentra desplazado. También lo configura en el modo de

incremento (I/D=1).

TIEMPO DE EJECUCIÓN: 1.52 ms.

3.2.5.2Cursor a inicio, “Return Home”

CÓDIGO: $02

DESCRIPCIÓN: Envía el cursor a la posición 0, es decir, carga la

dirección 0 en el contador de direcciones (AC) y devuelve el display

a la posición de inicio.

TIEMPO DE EJECUCIÓN: 37 s.

87

Page 88: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.2.5.3Establecer modo de trabajo, “Entry Mode Set”

CÓDIGO: 0 0 0 0 0 1 I/D S [$0 (4-7)]

DESCRIPCIÓN: Cada vez que se realiza una lectura o escritura el

contador de direcciones (AC) se incrementa o decrementa en función

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 impresión de que es el display el que se

desplaza, ya que cursor y display real mantienen la misma posición

relativa. Si S=0 el display permanece quieto y podemos observar

cómo el cursor avanza con cada escritura.

TIEMPO DE EJECUCIÓN: 37 s.

3.2.5.4Control ON/OFF del display

CÓDIGO: 0 0 0 0 1 D C B [$0 (8-F)] (Valor típico $0E)

DESCRIPCIÓN: Con este comando se activan y desactivan el

display, el cursor y la función de parpadeo.

D: Cuando D=0, el display funciona normalmente pero la pantalla

LCD está apagada. Todos los caracteres que se escriban

permanecerán en la DDRAM y se harán 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 carácter que se halla en la posición del cursor parpadea.

Si B=0, no parpadea.

TIEMPO DE EJECUCIÓN: 37 s.

3.2.5.5Desplazamiento del cursor o display

CÓDIGO: 0 0 0 1 S/C R/L 0 0

88

Page 89: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

DESCRIPCIÓN: Esta instrucción desplaza el cursor o el display

una posición a derecha o izquierda, según 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 EJECUCIÓN: 37 s.

3.2.5.6Establecer modo de interfaz, “Function Set”

CÓDIGO: 0 0 1 DL N F 0 0

DESCRIPCIÓN: Con esta instrucción se configuran tres aspectos

del “display”: La longitud del bus de datos, el número de líneas y el

tipo de fuentes.

DL: Si DL=1, se configura un bus de datos de 4 bits, usando sólo 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 instrucción se

envía en dos bloques consecutivos.

N: Si N=1, el controlador trabaja en el modo de dos líneas (sólo tiene

sentido con un LCD de dos líneas) y si N=0 trabaja en el modo de

una línea.

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 EJECUCIÓN: 37 s.

3.2.5.7Fijar dirección de CGRAM

CÓDIGO: 0 1 A5 A4 A3 A2 A1 A0

CÓDIGO TÍPICO: 0 1 0 0 0 0 0 0 (Acceso a la posición cero de la

CGRAM)

DESCRIPCIÓN: La dirección especificada en A5–A0 se copia en el

contador de direcciones para el acceso a la CGRAM.

TIEMPO DE EJECUCIÓN: 37 s.

89

Page 90: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.2.5.8Fijar dirección de DDRAM

CÓDIGO: 1 A6 A5 A4 A3 A2 A1 A0

CÓDIGO TÍPICO: 1 0 0 0 0 0 0 0 (Acceso a la posición cero de la

DDRAM).

DESCRIPCIÓN: La dirección (A6-A0) se copia en el contador de

direcciones para el acceso a la DDRAM.

TIEMPO DE EJECUCIÓN: 37 s.

3.2.5.9Escritura de datos en la CGRAM o DDRAM

CÓDIGO: 1 0 D D D D D D D D

DESCRIPCIÓN: Escribe el dato especificado en la DDRAM o

CGRAM. La escritura en una u otra memoria viene determinada por

la operación previa. En el caso de iniciarse una escritura nueva,

mediante la operación de fijar una dirección 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

automáticamente.

TIEMPO DE EJECUCIÓN: 37 s.

3.2.5.10 Lectura de datos de la CGRAM o DDRAM

CÓDIGO: 1 1 D D D D D D D D

DESCRIPCIÓN: Esta instrucción funciona de forma idéntica a la

escritura y permite conocer los datos grabados en estas memorias.

TIEMPO DE EJECUCIÓN: 37 s.

3.2.6 Secuencia típica de inicialización del LCD

Cuando se va a comenzar a utilizar el display, es necesario configurar previamente el

dispositivo. Ello se hace a través de una secuencia de inicialización con la que se define,

el tamaño del bus de datos, el número de líneas, el juego de caracteres, etc., tras la cual

ya se puede enviar caracteres al display.

Hay que tener en cuenta que el controlador HS44780U dispone de un circuito de reset

interno que, al conectar la alimentación, realiza, durante 10 ms., la siguiente secuencia:

90

Page 91: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

1. Borra display ($01).

2. Establece interfaz de datos de 8 bits, una línea 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 configuración inicial parece necesario establecer una secuencia de

inicio para configurarlo conforme a la forma de conexión del hardware y a la aplicación

que se le vaya a dar. A continuación se describe una secuencia típica, válida para la

operación en 8 y 4 bits.

1. Interfaz de datos de 8 o 4 bits, una línea 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 conexión a un microcontrolador

A la hora de conectar el display a un microcontrolador existen dos factores que van a

determinar la forma de conexión 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

función de los recursos que tenga disponibles, como son la memoria, puertos de entrada,

salida o bidireccionales, etc.

3.2.7.1Longitud 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 conexión (pins) del puerto de entrada/salida de datos, pero tiene el

inconveniente de que el software de control es más complejo, ya que debe controlar

además el proceso de multiplexación.

91

Page 92: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.2.7.2Modos 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 ejecución de la instrucción en

curso. Esto se podrá hacer con diferentes técnicas. Por ejemplo

mediante un bucle de observación hasta que finalice la instrucción en

ejecución (BF=0), o bien, provocando un proceso de interrupción

cuando se cumple esa condición 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 envía un dato.

Control en bucle abierto: De este segundo modo no se realiza

comprobación 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 máximos de ejecución de las

instrucciones indicados por el fabricante. Después de enviar una

instrucción, se espera un tiempo tal que asegure que la instrucción ha

finalizado antes de enviar la siguiente.

Si se opta por este control, se puede realizar una segunda simplificación en el hardware

derivada de considerar que no va a ser necesario leer ningún registro del display, con lo

que se podría configurar de modo permanente en modo escritura. De este modo no es

necesario dedicar una línea de control para esta función (R/W=0) y por tanto sólo son

necesarias dos señales 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. También es cierto que la complejidad del software es mucho

mayor ya que hay que realizar muchas mas operaciones diferentes para cada instrucción

que se envía, pero se pueden evitar los tiempos de espera del control en bucle abierto y

dedicarlos a procesar otras tareas. En función de la aplicación que se quiera diseñar se

optará por la velocidad de la primera solución o la sencillez de la segunda.

92

Page 93: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Bus de 4 bits Bus de 8 bits

Bucle cerrado3 pins de salida para el control

4 pins E/S3 pins de salida para el control

8 pins de E/S para los datos

Bucle abierto2 pins de salida para el control4 pins de salida para los datos

2 pins de salida para el control8 pins de salida para los datos

Tabla 6 – Puntos de conexión necesarios según 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 elección de la forma de conexión y

del tipo de control no es una decisión que se deba tomar a priori, sino que debe ir

integrado en el diseño global de la aplicación que se quiera realizar y de la que forma

parte el display como un módulo de presentación. La mayor o menor complejidad de la

aplicación, el número de señales que es preciso manejar, la memoria disponible, la

necesidad de que funcione en tiempo real, etc., son las características que, de verdad,

van a determinar la conexión y el control. Es interesante tener siempre presente que,

ante varias soluciones alternativas que cumplen con los objetivos de diseño y fiabilidad,

siempre es deseable escoger la más sencilla.

El objetivo de este ejemplo es ofrecer un punto de partida a aquellos alumnos que

necesiten utilizar el display para la presentación de datos. Por ello se han implementado

sendos controles, en bucle abierto y en bucle cerrado, de una forma estructurada,

describiendo brevemente cómo 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.1Descripción de la aplicación de control

La aplicación va a consistir en la realización de una serie de acciones que se detallan en

la lista que se muestra a continuación:

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.

93

Page 94: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

4. Escribir en la DDRAM el siguiente párrafo: “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 después hacia detrás un total de tres veces seguidas en cada sentido.

3.3.1.2Descripción de la conexión y modo de control

En primer lugar se realizará la conexión de la alimentación y de la señal de contraste de

cualquiera de las formas descritas en 2.1. A continuación hay que conectar las señales

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 señales 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 sería

posible prescindir de la señal R/W conectándola a masa de forma permanente,

economizando así un bit del puerto.

3.3.1.3Implementación en código ensamblador del programa de control

A continuación se adjunta el código en lenguaje ensamblador que realiza las tareas

arriba descritas. El interés 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 más alto

nivel que permiten realizar acciones de utilidad general más complejas a partir de las

instrucciones de una forma trasparente para el usuario. Para ello los servicios son

invocados mediante una excepción TRAP #n sin la necesidad de conocer cómo

funcionan.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

94

Page 95: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente si Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

95

Page 96: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* TIPOS DE RETARDO *

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

CORTO EQU $03FF * Del orden de 100us.

LARGO EQU $BFFF * Del orden de 5ms.

RETARDO EQU $6FFF * Se usa para el avance de caracteres.

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

* CONSTANTES DE INTERÉS *

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

INI_DR EQU $00 * Inicio de línea única de caracteres.

FIN_DR EQU $4F * Fin línea única de caracteres.

L1_INI_DR EQU $00 * Inicio de la primera línea.

L1_FIN_DR EQU $27 * Fin de la primera línea.

L2_INI_DR EQU $40 * Inicio de la segunda línea.

L2_FIN_DR EQU $67 * Fin de la segunda línea.

LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

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

* PUERTOS DEL DISPLAY *

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

BYTE_DATA EQU PORTE * Puerto de datos.

BYTE_CONTROL EQU PORTC * Puerto de control.

BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicación.

* con el controlador del display.

BIT_RS EQU 5 * Selección 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.

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

96

Page 97: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR0 DC.L DRIVER_DISPLAY

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

* PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

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

* LISTA DE MENSAJES *

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

ORG $2000

MENSAJES DC.L MENS1,MENS2,MENS3

MENS1 DC.B 'PRIMERA PRUEBA. ESCRITURA NORMAL DE TEXTO.',$00

MENS2 DC.B 'ESPERE UNOS SEGUNDOS DESPUES DE APAGARSE EL DISPLAY.',$00

MENS3 DC.B 'En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho .......',$00

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

97

Page 98: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

************************** PORT_EC_CFG ****************************

* Con esta rutina se configuran los puertos E y C que son los que *

* se usan para controlar el display y el teclado. *

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

PORT_EC_CFG

MOVE.B #$FF,DDRE * PE0..PE7 salidas.

MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.

MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.

MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.

MOVE.B #$00,PORTE

MOVE.B #$0F,PORTC

RTS

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

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

* RUTINAS DE CONTROL *

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

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

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

***************************** TOGGLE ******************************

* Provoca la ejecución de la instrucción, generando un pulso de *

* duración determinada por el valor del registro D2 en la línea *

* Enable del LCD. *

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

TOGGLE

98

Page 99: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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. Básicamente se *

* reduce a tres aspectos: *

* 1 - Comunicación con el display con 8 o 4 bits. *

* 2 - 1 o 2 líneas en pantalla. *

* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *

* Suprimiendo el asterisco correspondiente se puede modificar la *

* opción seleccionada por defecto. *

* Retardo necesario CORTO *

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

CFG_DISPLAY

MOVE.B #$30,BYTE_DATA * Modo 8 bits, una línea, fuentes 5x8 puntos.

* BCLR.B #4,BYTE_DATA * Modo 4 bits.

* BSET.B #3,BYTE_DATA * Habilita 2 líneas.

* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.

BSR TOGGLE

RTS

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

*************************** MODO_AVC ******************************

* El cursor avanza cuando se escribe un carácter en el registro *

* DR. El display permanece estático. *

* Retardo necesario CORTO. *

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

MODO_AVC

99

Page 100: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaña.

BSR TOGGLE

RTS

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

*************************** MODO_AVT ******************************

* El cursor y el display avanzan solidariamente cuando se escribe *

* un carácter en el registro DR. *

* Retardo necesario CORTO. *

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

MODO_AVT

MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaña.

BSR TOGGLE

RTS

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

*************************** MODO_RTC ******************************

* El cursor retrocede cuando se escribe un carácter en el regis- *

* tro DR. El display permanece estático. *

* Retardo necesario CORTO. *

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

MODO_RTC

MOVE.B #$04,BYTE_DATA * Cursor atrás, display no acompa¤a.

BSR TOGGLE

RTS

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

*************************** MODO_RTT ******************************

* El cursor y el display retroceden solidariamente cuando se es- *

* cribe un carácter en el registro DR. *

* Retardo necesario CORTO. *

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

MODO_RTT

MOVE.B #$05,BYTE_DATA * Cursor atrás, display acompaña.

BSR TOGGLE

RTS

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

************************** MODO_NORMAL ****************************

100

Page 101: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* Se configura el modo del display. Por defecto estarán tanto el *

* display como el cursor encendidos y sin parpadear el carácter *

* donde se encuentra el cursor. *

* Retardo necesario CORTO *

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

MODO_NORMAL

MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF

* BCLR.B #2,BYTE_DATA * Display OFF

* BCLR.B #1,BYTE_DATA * Cursor OFF

* BSET.B #0,BYTE_DATA * Blinking ON

BSR TOGGLE

RTS

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

**************************** MODO_OFF *****************************

* Produce el apagado de la pantalla del LCD. Se puede seguir en- *

* viando ordenes al display que ser n ejecutadas. La única dife- *

* rencia es que no aparece reflejado hasta que no se enciende de *

* el LCD. *

* Retardo necesario CORTO *

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

MODO_OFF

MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF

BSR TOGGLE

RTS

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

***************************** CLEAR *******************************

* Borra el contenido del display y situa el cursor a la izquierda *

* Retardo necesario INDEFINIDO *

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

CLEAR

MOVE.B #$01,BYTE_DATA

BSR TOGGLE

RTS

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

************************** RETURN_HOME *****************************

101

Page 102: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* Devuelve el cursor a la primera posición 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

*************************** DISP_DCHA *****************************

102

Page 103: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* 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 dirección 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 instrucción 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 dirección indicada 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 *

* línea o repartidas en dos grupos de 40 cuando trabaje en el *

* modo de dos líneas. *

* V‚ase detalle a continuación: *

* - 80 posiciones x 1 línea - las direcciones van de $0 a $4F. *

* - 40 posiciones x 2 líneas - las direcciones se reparten: *

* Línea primera: de $00 a $27. *

* Línea segunda: de $40 a $67. *

* Retardo necesario CORTO *

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

DDRAM_ADDR

103

Page 104: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ADD.B #$80,BYTE_DATA

BSET.B #BIT_RS,BYTE_CONTROL

BSR TOGGLE

BCLR.B #BIT_RS,BYTE_CONTROL

RTS

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

*************************** ESCRIBIR ******************************

* Esta instrucción 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 selección. 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 INICIALIZACIÓN DE DISPOSITIVOS *

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

**************************** INI_LCD ******************************

* Esta rutina realiza toda la inicialización del display tras el *

* encendido del mismo. Después de su ejecución el display queda *

* preparado para recibir ordenes y caracteres. *

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

INI_LCD

MOVE.L #CORTO,D2 * Fijamos la duración de retardo.

BSR CFG_DISPLAY

BSR MODO_NORMAL

BSR CLEAR

RTS

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

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

104

Page 105: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* SERVICIOS DE DISPOSITIVOS *

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

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

* SERVICIOS DEL DISPLAY *

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

************************** ESCR_MENSAJE ***************************

* Esta rutina escribe un mensaje completo en el display en el *

* sentido natural de escritura cuya dirección de inicio se la pa- *

* samos a través del registro A0. El símbolo 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 línea *

* automáticamente se cambia del modo AVC al AVT en el que el dis- *

* play acompaña al cursor dando la sensación de que el texto se *

* desplaza. *

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

ESCR_MENSAJE

MOVEM.L D0-D2,-(A7)

MOVE.L #LARGO,D2

BSR RETURN_HOME

MOVE.L #CORTO,D2

BSR MODO_AVC

MOVE.B #LCD_LONG,D0 * Cuenta los caracteres escritos en el display.

BUCLE1

TST.B (A0)

BEQ FIN1

MOVE.B (A0)+,BYTE_DATOS

BSR ESCRIBIR

SUB.B #1,D0

BEQ FIN_LIN1

MOVE.L #RETARDO,D1

BSR DELAY

BRA BUCLE1

FIN_LIN1

BSR MODO_AVT * Cambia al modo AVT para que el display acompañe al cursor.

BRA BUCLE1

FIN1

MOVEM.L (A7)+,D0-D2

RTS

*************************** DSP_ADELANTE **************************

105

Page 106: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* Esta rutina desplaza hacia la derecha la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ADELANTE

MOVEM.L D0-D1,-(A7)

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE2

BSR DISP_DCHA

MOVE.L #RETARDO,D1

BSR DELAY

SUB.B #1,D0

BNE BUCLE2

MOVEM.L (A7)+,D0-D1

RTS

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

**************************** DSP_ATRAS ****************************

* Esta rutina desplaza hacia la izquierda la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ATRAS

MOVEM.L D0-D1,-(A7)

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE3

BSR DISP_IZQ

MOVE.L #RETARDO,D1

BSR DELAY

SUB.B #1,D0

BNE BUCLE3

MOVEM.L (A7)+,D0-D1

RTS

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

************************** DRIVER_DISPLAY *************************

* Esta rutina realiza el servicio indicado a través del registro *

* D7 con un número ordinal. Para llamar a la rutina de servicio *

* se coloca el número de servicio en el registro D7 y se ejecuta *

* un TRAP #0. *

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

DRIVER_DISPLAY

106

Page 107: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MOVEM.L D0-D1,-(A7)

CMP.B #1,D7

BEQ SERVICIO1

CMP.B #2,D7

BEQ SERVICIO2

CMP.B #3,D7

BEQ SERVICIO3

SERVICIO1

BSR ESCR_MENSAJE

BRA FIN

SERVICIO2

BSR DSP_ADELANTE

BRA FIN

SERVICIO3

BSR DSP_ATRAS

FIN

MOVEM.L (A7)+,D0-D1

RTE

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

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG

BSR PORT_EC_CFG

BSR INI_LCD

MOVEA.L #MENSAJES,A6

MOVEA.L (A6)+,A0

MOVE.L #1,D7

TRAP #0

MOVEA.L (A6)+,A0

MOVE.L #1,D7

TRAP #0

BSR MODO_OFF

MOVEA.L (A6),A0

MOVE.L #1,D7

TRAP #0

107

Page 108: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR MODO_NORMAL

MOVE.B #3,D3

LOOP1

MOVE.L #2,D7

TRAP #0

SUB.B #1,D3

BNE LOOP1

MOVE.B #3,D3

LOOP2

MOVE.L #3,D7

TRAP #0

SUB.B #1,D3

BNE LOOP2

FINAL

BRA FINAL

END

3.3.1.3.1 Observaciones sobre el ajuste de parámetros

Existen ciertos parámetros que ha sido necesario someterlos a un ajuste, como son los

retardos.

3.3.1.3.1.1 Ajuste de la señal de activación, “Enable”.

Esta señal es la que gobierna el proceso de comunicación con el display. La función

“toggle” tiene como objetivo conformar un pulso sobre la línea de activación (E). Esta

función utiliza una subrutina llamada “DELAY” que introduce el retardo necesario para

definir el periodo de esta señal. Cada vez que se llama a la función TOGGLE, ésta

genera un pulso de aspecto más o menos cuadrado en la señal ”Enable” cuyo periodo

dependerá del valor que se cargue en el contador de retardo DELAY. A continuación se

detallan las dos subrutinas:

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

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

108

Page 109: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

***************************** TOGGLE ******************************

* Provoca la ejecución de la instrucción, generando un pulso de *

* duración determinada en la línea 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 mayoría de las instrucciones. Por tanto si

se elige un periodo de señal de 100 s., 50 s. por ciclo, con toda seguridad siempre

habrá terminado la instrucción. 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 señal

resultante, que iremos ajustando variando el valor de la constante CORTO. También se

debe generar esta señal con un retardo superior a los 1.6 ms. que requiere la instrucción

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.1Descripción de la aplicación de control

La aplicación va a consistir en la repetición secuencial de un conjunto de mensajes, en

particular, los números del uno al nueve más el cero y la frase siguiente: ES UNA

PRUEBA DE MENSAJE LARGO PARA VER QUE PASA, esperándose que si el

servicio de escritura de mensajes es lo bastante rápido, sólo sean visibles en el display

los dieciséis caracteres últimos de la frase, esto es: “ARA VER QUE PASA”.

3.3.2.2Descripción de la conexión y modo de control

El modo de conexión no difiere con respecto al caso anterior, con la salvedad de que en

esta ocasión sí se utiliza la señal R/W y, por tanto, no se puede prescindir de ella.

109

Page 110: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.3.2.3Implementación en código ensamblador del programa de control

El interés de este programa reside en la rapidez de ejecución basada en la comunicación

entre los dos dispositivos.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente si Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

110

Page 111: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* TIPOS DE RETARDO *

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

CORTO EQU $03FF * Del orden de 100us.

LARGO EQU $BFFF * Del orden de 5ms.

RETARDO EQU $6FFF * Se usa para el avance de caracteres.

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

* CONSTANTES DE INTERÉS *

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

INI_DR EQU $00 * Inicio de línea única de caracteres.

FIN_DR EQU $4F * Fin línea única de caracteres.

L1_INI_DR EQU $00 * Inicio de la primera línea.

L1_FIN_DR EQU $27 * Fin de la primera línea.

L2_INI_DR EQU $40 * Inicio de la segunda línea.

L2_FIN_DR EQU $67 * Fin de la segunda línea.

111

Page 112: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

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

* PUERTOS DEL DISPLAY *

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

BYTE_DATA EQU PORTE * Puerto de datos.

BYTE_CONTROL EQU PORTC * Puerto de control.

BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicación.

* con el controlador del display.

BIT_RS EQU 5 * Selección del tipo de registro al que se escribe:

* 0 - Registro de Instrucciones (IR).

* 1 - Registro de Datos (DR).

BIT_RW EQU 6 * Cambio entre los modos de lectura y escritura.

FLAG EQU 7 * Posición del flag de datos en el puerto.

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR1 DC.L DRIVER_DISPLAY

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

* PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

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

* LISTA DE MENSAJES *

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

ORG $2000

MENSAJES DC.L MENS1,MENS2,MENS3,MENS4,MENS5,MENS6,MENS7,MENS8,MENS9,MENS0,MENSLARGO

112

Page 113: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MENS1 DC.B 'UNO',$00

MENS2 DC.B 'DOS',$00

MENS3 DC.B 'TRES',$00

MENS4 DC.B 'CUATRO',$00

MENS5 DC.B 'CINCO',$00

MENS6 DC.B 'SEIS',$00

MENS7 DC.B 'SIETE',$00

MENS8 DC.B 'OCHO',$00

MENS9 DC.B 'NUEVE',$00

MENS0 DC.B 'CERO',$00

MENSLARGO DC.B 'ES UNA PRUEBA DE MENSAJE LARGO PARA VER QUE PASA',$00

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

************************** PORT_EC_CFG ****************************

* Con esta rutina se configuran los puertos E y C que son los que *

* se usan para controlar el display y el teclado. *

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

PORT_EC_CFG

MOVE.B #$FF,DDRE * PE0..PE7 salidas.

MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.

MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.

MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.

MOVE.B #$00,PORTE

113

Page 114: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MOVE.B #$0F,PORTC

RTS

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

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

* RUTINAS DE CONTROL *

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

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

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

************************* FLAG_ESPERAR ****************************

* Espera a que se baje el flag de ocupado. *

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

FLAG_ESPERAR

MOVE.B #$7F,DDRE

BSET.B #BIT_RW,BYTE_CONTROL

BSET.B #BIT_ENABLE,BYTE_CONTROL

OCUPADO

BTST.B #FLAG,BYTE_DATA

BNE OCUPADO

BCLR.B #BIT_ENABLE,BYTE_CONTROL

BCLR.B #BIT_RW,BYTE_CONTROL

MOVE.B #$FF,DDRE

RTS

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

*************************** ENABLE_LCD ****************************

* Provoca la ejecución de la instrucción, generando un pulso en *

* la línea Enable del LCD. *

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

ENABLE_LCD

BSET.B #BIT_ENABLE,BYTE_CONTROL

114

Page 115: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BCLR.B #BIT_ENABLE,BYTE_CONTROL

RTS

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

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

* INSTRUCCIONES LCD *

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

************************** CFG_DISPLAY ****************************

* Configura el modo de funcionamiento del display. Básicamente se *

* reduce a tres aspectos: *

* 1 - Comunicación con el display con 8 o 4 bits. *

* 2 - 1 o 2 líneas en pantalla. *

* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *

* Suprimiendo el asterisco correspondiente se puede modificar la *

* opción seleccionada por defecto. *

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

CFG_DISPLAY

BSR FLAG_ESPERAR

MOVE.B #$30,BYTE_DATA * Modo 8 bits, una línea, fuentes 5x8 puntos.

* BCLR.B #4,BYTE_DATA * Modo 4 bits.

* BSET.B #3,BYTE_DATA * Habilita 2 líneas.

* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.

BSR ENABLE_LCD

RTS

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

*************************** MODO_AVC ******************************

* El cursor avanza cuando se escribe un carácter en el registro *

* DR. El display permanece estático. *

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

MODO_AVC

BSR FLAG_ESPERAR

MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaña.

BSR ENABLE_LCD

RTS

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

*************************** MODO_AVT ******************************

* El cursor y el display avanzan solidariamente cuando se escribe *

115

Page 116: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* un carácter en el registro DR. *

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

MODO_AVT

BSR FLAG_ESPERAR

MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaña.

BSR ENABLE_LCD

RTS

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

*************************** MODO_RTC ******************************

* El cursor retrocede cuando se escribe un carácter en el regis- *

* tro DR. El display permanece estático. *

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

MODO_RTC

BSR FLAG_ESPERAR

MOVE.B #$04,BYTE_DATA * Cursor atrás, display no acompaña.

BSR ENABLE_LCD

RTS

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

*************************** MODO_RTT ******************************

* El cursor y el display retroceden solidariamente cuando se es- *

* cribe un carácter en el registro DR. *

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

MODO_RTT

BSR FLAG_ESPERAR

MOVE.B #$05,BYTE_DATA * Cursor atrás, display acompaña.

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 carácter *

* donde se encuentra el cursor. *

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

MODO_NORMAL

116

Page 117: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR FLAG_ESPERAR

MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF

* BCLR.B #2,BYTE_DATA * Display OFF

* BCLR.B #1,BYTE_DATA * Cursor OFF

* BSET.B #0,BYTE_DATA * Blinking ON

BSR ENABLE_LCD

RTS

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

**************************** MODO_OFF *****************************

* Produce el apagado de la pantalla del LCD. Se puede seguir en- *

* viando ordenes al display que ser n ejecutadas. La única dife- *

* rencia es que no aparece reflejado hasta que no se enciende de *

* el LCD. *

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

MODO_OFF

BSR FLAG_ESPERAR

MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF

BSR ENABLE_LCD

RTS

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

***************************** CLEAR *******************************

* Borra el contenido del display y situa el cursor a la izquierda *

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

CLEAR

BSR FLAG_ESPERAR

MOVE.B #$01,BYTE_DATA

BSR ENABLE_LCD

RTS

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

************************** RETURN_HOME *****************************

* Devuelve el cursor a la primera posición conservando el conteni- *

* de la memoria del display. *

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

RETURN_HOME

BSR FLAG_ESPERAR

117

Page 118: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

BSR FLAG_ESPERAR

MOVE.B #$18,BYTE_DATA

118

Page 119: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR ENABLE_LCD

RTS

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

************************** CGRAM_ADDR *****************************

* Coloca la dirección 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 instrucción 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 dirección 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 *

* línea o repartidas en dos grupos de 40 cuando trabaje en el *

* modo de dos líneas. *

* V‚ase detalle a continuación: *

* - 80 posiciones x 1 línea - las direcciones van de $0 a $4F. *

* - 40 posiciones x 2 líneas - las direcciones se reparten: *

* Línea primera: de $00 a $27. *

* Línea 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

119

Page 120: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BCLR.B #BIT_RS,BYTE_CONTROL

RTS

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

*************************** ESCRIBIR ******************************

* Esta instrucción 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 *

* selección. 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 INICIALIZACIÓN DE DISPOSITIVOS *

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

**************************** INI_LCD ******************************

* Esta rutina realiza toda la inicialización del display tras el *

* encendido del mismo. Después de su ejecución el display queda *

* preparado para recibir instrucciones y caracteres. *

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

INI_LCD:

BSR CFG_DISPLAY

BSR MODO_NORMAL

BSR CLEAR

RTS

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

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

* SERVICIOS DE DISPOSITIVOS *

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

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

* SERVICIOS DEL DISPLAY *

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

120

Page 121: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

************************** ESCR_MENSAJE ***************************

* Esta rutina escribe un mensaje completo en el display cuya di- *

* rección de inicio se indica a través 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 línea automática- *

* mente se cambia del modo AVC al AVT en el que el display acom- *

* paña al cursor dando la sensación de que el texto se desplaza. *

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

ESCR_MENSAJE

MOVEM.L D0-D1,-(A7)

BSR RETURN_HOME

BSR MODO_AVC

MOVE.B #LCD_LONG,D1 * Cuenta los caracteres escritos en el display.

BUCLE1

TST.B (A0)

BEQ FIN1

MOVE.B (A0)+,D0

BSR ESCRIBIR

SUB.B #1,D1

BEQ FIN_LIN1

BRA BUCLE1

FIN_LIN1

BSR MODO_AVT * Cambia al modo AVT para que el display acompañe al cursor.

BRA BUCLE1

FIN1

MOVEM.L (A7)+,D0-D1

RTS

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

*************************** DSP_ADELANTE **************************

* Esta rutina desplaza hacia la derecha la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ADELANTE

MOVEM.L D0-D1,-(A7)

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE2

BSR DISP_DCHA

MOVE.L #RETARDO,D1

121

Page 122: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR DELAY

SUB.B #1,D0

BNE BUCLE2

MOVEM.L (A7)+,D0-D1

RTS

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

**************************** DSP_ATRAS ****************************

* Esta rutina desplaza hacia la izquierda la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ATRAS

MOVEM.L D0-D1,-(A7)

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE3

BSR DISP_IZQ

MOVE.L #RETARDO,D1

BSR DELAY

SUB.B #1,D0

BNE BUCLE3

MOVEM.L (A7)+,D0-D1

RTS

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

************************** DRIVER_DISPLAY *************************

* Esta rutina realiza el servicio indicado a través del registro *

* D7 con un número ordinal. Para llamar a la rutina de servicio *

* se coloca el número 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

BEQ SERVICIO3

BRA FIN

122

Page 123: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

SERVICIO1

BSR ESCR_MENSAJE

BRA FIN

SERVICIO2

BSR DSP_ADELANTE

BRA FIN

SERVICIO3

BSR DSP_ATRAS

FIN

MOVEM.L (A7)+,D0-D1

RTE

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

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

* El programa en cuestión 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 través de TRAP #0. *

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG

BSR PORT_EC_CFG

BSR INI_LCD

INIC_D0

MOVEA.W #MENSAJES,A6

MOVE.L #$B,D0

LOOP1

BSR CLEAR

MOVEA.L (A6)+,A0

MOVE.L #1,D7

TRAP #0

MOVE.L #LARGO,D1

BSR DELAY

SUBI.B #1,D0

BEQ INIC_D0

BRA LOOP1

END

123

Page 124: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3.4 Anexo I

A continuación se adjuntan copias de los juegos de caracteres predefinidos extraídos del

catalogo original del controlador HD44780U de Hitachi.

Esta primera tabla contiene patrones de caracteres de 5 x10 puntos.

Figura 6 – Correspondencia entre códigos y caracteres (Extraído del catálogo de HITACHI).

124

Page 125: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Esta otra contiene los patrones de caracteres de 5 x 8 puntos, que es además la que se

usará en el ejemplo de estas páginas.

Figura 7 – Correspondencia entre códigos y caracteres (Extraído del catálogo de HITACHI).

125

Page 126: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 4

Control de un teclado matricialEl teclado matricial proporciona una interfaz sencilla de entrada de datos. Sus usos

pueden ser tan variados como aplicaciones que precisen de la introducción manual de

datos puedan ocurrírsele al diseñador. Desde una calculadora, pasando por una

cerradura codificada, un termostato programable, etc.

4.1 Descripción

En el mercado es habitual encontrar teclados matriciales pasivos de 3 x 4 y de 4 x 4

teclas. Esencialmente están constituidos por filas y columnas conductoras en cuyo cruce

se encuentra un pulsador mecánico o de membrana que, al ser pulsado, establece el

contacto eléctrico entre la fila y la columna correspondiente.

Figura 1 – Esquema típico de un teclado matricial de 4 filas y 4 columnas (cedido por Elena Muñoz Salinero y Olga Cristina Santos Martín-Moreno)

Para su conexión 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 lógico) una columna

(fila) se obtendrá un cero en la fila (columna) correspondiente cuando se pulse una

tecla.

Al pulsar pueden producirse rebotes mecánicos e interpretarlos como varias repeticiones

de la misma tecla. Para evitarlo basta con esperar un tiempo superior a la duración de

los mismos antes de seguir leyendo datos del teclado.

126

Page 127: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 fenómeno de repetición o bien de modo

más preciso midiendo los transitorios con rebotes y su duración 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

continuación:

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 duración 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 propagación de la señal, debido a la lentitud de los mismos.

4.3 Conexión al microcontrolador MC68331

Para conectar al microcontrolador un teclado de 4 x 4 teclas se necesitan ocho puntos de

conexión (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 conexión, cuya elección

dependerá del diseño en cuestión.

En los ejemplos que se muestran a continuación 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 razón

que haga de ésta una elección mejor que otra.

127

Page 128: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

4.4 Rutina básica de atención al teclado

A continuación se muestra el código en ensamblador para el micro Motorola MC68331.

La rutina tiene por nombre TECLA_LEER y usa una subrutina llamada

TECLA_SOLTAR:

************************** TECLA_SOLTAR ***************************

* Permanece en un bucle mientras sigue pulsada la tecla indicada *

* en D5 y sale cuando se suelta. *

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

TECLA_SOLTAR

MOVE.L #REBOTES_MATAR,D1 * Duración del transitorio que aparece al

BSR DELAY * pulsar una tecla. (REBOTES_MATAR = 4)

SIGUE_PULSADA

BTST.B D3,PORTE * Se lee el puerto E

BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla

RTS

**************************** TECLA_LEER ***************************

* Esta rutina rastrea las filas y columnas del teclado en busca *

* de una tecla pulsada. Utiliza los registros D1 a D4 para su uso *

* interno y devuelve el número correspondiente a la tecla pulsada.*

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

TECLA_LEER

MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros a usar.

CLR.B D0 * D0 almacena el valor de la tecla pulsada.

MOVE.L #3,D1 * D1 es el contador de columnas.

MOVE.B #$0E,D4 * D4 es usado como registro auxiliar.

COLUMNA

MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110

MOVE.L #3,D2 * D2 es el contador de filas

MOVE.B #0,D3 * D3 guarda el número de bit a comprobar

FILA

BTST.B D3,PORTE * Comprueba el bit de la fila

BEQ TECLA * Salta si encontró la tecla pulsada

ADDQ.B #1,D0 * Siguiente tecla

ADDQ.B #1,D3 * Siguiente fila

DBF D2,FILA * Decrementa el contador de filas y salta a la

* siguiente

128

Page 129: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ORI.B #$10,CCR * Pone a 1 el bit de eXtensión del CCR

ROXL.B #1,D4 * Siguiente columna

ANDI.B #$0F,D4 * Elimina los cuatro bits más significativos

DBF D1,COLUMNA * Decrementa el contador de columnas y salta a la

* siguiente

MOVE.B #$FF,D0 * Devuelve $FF si no hay tecla pulsada

BRA FIN

TECLA

BSR TECLA_SOLTAR * Salta a subrutina TECLA_SOLTAR

FIN

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

RTE

4.5 Anexo – Ejemplos de uso del teclado

4.5.1 Ejemplo 1 – Programa básico de atención al teclado

El programa listado a continuación utiliza la rutina básica de atención al teclado para

dejar en el registro D2 del micro el código ASCII de la tecla pulsada.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente si Watchdog activado.

129

Page 130: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

130

Page 131: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

* TIPOS DE RETARDO *

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

CORTO EQU $0400 * Del orden de 100us.

MEDIO EQU $2800 * Del orden de 1ms.

LARGO EQU $C800 * Del orden de 5ms.

RETARDO EQU $FFFF * Se usa para el avance de caracteres.

REBOTES_MATAR EQU $0004 * Tiempo necesario para matar los transito-

* rios que se producen al pulsar una tecla.

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR0 DC.L TECLA_LEER

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

* PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

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

* LISTA DE TECLAS *

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

ORG $2000

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

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

* SUBRUTINAS *

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

131

Page 132: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitorización del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

************************** PORT_EC_CFG ****************************

* Con esta rutina se configuran los puertos E y C que son los que *

* se usan para controlar el teclado. *

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

PORT_EC_CFG

MOVE.B #$F0,DDRE * PE0..PE3 entradas, PE4..PE7 salidas.

MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.

MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.

MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.

MOVE.B #$00,PORTE

MOVE.B #$0F,PORTC

RTS

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

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

* SUBRUTINAS DE TECLADO *

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

************************** TECLA_SOLTAR ***************************

* Permanece en un bucle mientras sigue pulsada la tecla indicada *

* en D5 y sale cuando se suelta. *

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

TECLA_SOLTAR

MOVE.L D1,-(A7)

MOVE.L #REBOTES_MATAR,D1 * Duración del transitorio que aparece al

BSR DELAY * pulsar una tecla.

132

Page 133: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

SIGUE_PULSADA

BTST.B D3,PORTE * Se lee el puerto E

BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla

MOVE.L (A7)+,D1

RTS

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

* RUTINAS DE CONTROL *

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

***************************** DELAY *******************************

* Produce un retardo cuya duración 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 código ASCII de la tecla a través de D0. *

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

TECLA_LEER

MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros que se van a usar

CLR.B D0 * D0 almacena el valor de la tecla pulsada

MOVE.L #3,D1 * D1 es el contador de columnas

MOVE.B #$0E,D4 * D4 es usado como registro auxiliar

COLUMNA

MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110

MOVE.L #3,D2 * D2 es el contador de filas

MOVE.B #0,D3 * D3 guarda el número de bit a comprobar

FILA

133

Page 134: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BTST.B D3,PORTE * Comprueba el bit de la fila

BEQ TECLA * Salta si encontró la tecla pulsada

ADDQ.B #1,D0 * Siguiente tecla

ADDQ.B #1,D3 * Siguiente fila

DBF D2,FILA * Decrementa fila y salta a la siguiente

ORI.B #$10,CCR * Pone a 1 el bit eXtensión del CCR

ROXL.B #1,D4 * Siguiente columna

ANDI.B #$0F,D4 * Elimina los cuatro bits más significativos

DBF D1,COLUMNA * Decrementa columna y salta a la siguiente

MOVE.B #$FF,D0

BRA FIN

TECLA

BSR TECLA_SOLTAR

FIN

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

RTE

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG

BSR PORT_EC_CFG

BUCLE

MOVE #LARGO,D1

BSR DELAY

CLR.L D0

TRAP #0

MOVE.B D0,D6

BRA BUCLE

END

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 rótulo indicativo de la tecla pulsada. Para ello utiliza una serie de rutinas

134

Page 135: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

de control de un display LCD que podrán ser consultadas en las Notas sobre el control

de un display LCD.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

135

Page 136: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* TIPOS DE RETARDO *

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

CORTO EQU $0400 * Del orden de 100us.

MEDIO EQU $2800 * Del orden de 1ms.

LARGO EQU $C800 * Del orden de 5ms.

RETARDO EQU $FFFF * Se usa para el avance de caracteres.

REBOTES_MATAR EQU $0004 * Duración del transitorio de la tecla.

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

* CONSTANTES DE INTERÉS *

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

INI_DR EQU $00 * Inicio de línea única de caracteres.

FIN_DR EQU $4F * Fin línea única de caracteres.

L1_INI_DR EQU $00 * Inicio de la primera línea.

L1_FIN_DR EQU $27 * Fin de la primera línea.

L2_INI_DR EQU $40 * Inicio de la segunda línea.

136

Page 137: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

L2_FIN_DR EQU $67 * Fin de la segunda línea.

LCD_LONG EQU $0F * Longitud de la pantalla del LCD.

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

* PUERTOS DEL DISPLAY *

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

BYTE_DATA EQU PORTE * Puerto de datos.

BYTE_CONTROL EQU PORTC * Puerto de control.

BIT_ENABLE EQU 4 * Se usa para controlar el proceso de comunicación.

* con el controlador del display.

BIT_RS EQU 5 * Selección del tipo de registro al que se escribe:

* 0 - Registro de Instrucciones (IR).

* 1 - Registro de Datos (DR).

BIT_RW EQU 6 * Cambio entre los modos de lectura y escritura.

FLAG EQU 7 * Posición del flag de datos en el puerto.

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR0 DC.L DRIVER_SERVICIOS

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

* PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

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

* LISTA DE MENSAJES *

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

ORG $2000

137

Page 138: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MENSAJES DC.L MENS1,MENS2,MENS3,MENS4,MENS5,MENS6,MENS7,MENS8,MENS9,MENS10,MENS11,MENS12,MENS13,MENS14,MENS15,MENS16

MENS1 DC.B 'TECLA C', $00

MENS2 DC.B 'TECLA B', $00

MENS3 DC.B 'CERO', $00

MENS4 DC.B 'TECLA A', $00

MENS5 DC.B 'TECLA D', $00

MENS6 DC.B 'NUEVE', $00

MENS7 DC.B 'OCHO', $00

MENS8 DC.B 'SIETE', $00

MENS9 DC.B 'TECLA E', $00

MENS10 DC.B 'SEIS',$00

MENS11 DC.B 'CINCO',$00

MENS12 DC.B 'CUATRO',$00

MENS13 DC.B 'TECLA F',$00

MENS14 DC.B 'TRES',$00

MENS15 DC.B 'DOS',$00

MENS16 DC.B 'UNO',$00

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

************************** PORT_EC_CFG ****************************

* Con esta rutina se configuran los puertos E y C que son los que *

* se usan para controlar el display y el teclado. *

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

138

Page 139: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PORT_EC_CFG

MOVE.B #$FF,DDRE * PE0..PE7 salidas.

MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.

MOVE.B #$00,CSPAR0 * PC0-PC2 utilizables.

MOVE.W #$0000,CSPAR1 * PC3-PC6 utilizables.

MOVE.B #$00,PORTE

MOVE.B #$0F,PORTC

RTS

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

************************* CAMB_TECLADO ****************************

* Con esta rutina se cambia la configuración del puerto E para *

* que los cuatro primeros bits funcionen como entrada y poder *

* rastrear las columnas de la matriz del teclado. *

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

CAMB_TECLADO

MOVE.B #$F0,DDRE * PE0..PE3 entradas, PE4..PE7 salidas.

RTS

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

************************* CAMB_DISPLAY ****************************

* Con esta rutina se devuelve al puerto E a su estado inicial con *

* todos los bits de salida para poder enviar datos al display. *

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

CAMB_DISPLAY

MOVE.B #$FF,DDRE * PE0..PE7 salidas.

RTS

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

* RUTINAS DE CONTROL *

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

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

139

Page 140: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

************************* FLAG_ESPERAR ****************************

* Espera a que se baje el flag de ocupado. *

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

FLAG_ESPERAR

MOVE.B #$7F,DDRE

BSET.B #BIT_RW,BYTE_CONTROL

BSET.B #BIT_ENABLE,BYTE_CONTROL

OCUPADO

BTST.B #FLAG,BYTE_DATA

BNE OCUPADO

BCLR.B #BIT_ENABLE,BYTE_CONTROL

BCLR.B #BIT_RW,BYTE_CONTROL

MOVE.B #$FF,DDRE

RTS

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

*************************** ENABLE_LCD ****************************

* Provoca la ejecución de la instrucción, generando un pulso de *

* duración determinada en la línea 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. Básicamente se *

* reduce a tres aspectos: *

* 1 - Comunicación con el display con 8 o 4 bits. *

* 2 - 1 o 2 líneas en pantalla. *

* 3 - Dos tipos de fuentes 5x8 o bien 5x10 puntos. *

* Suprimiendo el asterisco correspondiente se puede modificar la *

* opción seleccionada por defecto. *

140

Page 141: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

CFG_DISPLAY

BSR FLAG_ESPERAR

MOVE.B #$30,BYTE_DATA * Modo 8 bits, una línea, fuentes 5x8 puntos.

* BCLR.B #4,BYTE_DATA * Modo 4 bits.

* BSET.B #3,BYTE_DATA * Habilita 2 líneas.

* BSET.B #2,BYTE_DATA * Fuentes de 5x10 puntos.

BSR ENABLE_LCD

RTS

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

*************************** MODO_AVC ******************************

* El cursor avanza cuando se escribe un carácter en el registro *

* DR. El display permanece estático. *

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

MODO_AVC

BSR FLAG_ESPERAR

MOVE.B #$06,BYTE_DATA * Cursor adelante, display no acompaña.

BSR ENABLE_LCD

RTS

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

*************************** MODO_AVT ******************************

* El cursor y el display avanzan solidariamente cuando se escribe *

* un carácter en el registro DR. *

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

MODO_AVT

BSR FLAG_ESPERAR

MOVE.B #$07,BYTE_DATA * Cursor adelante, display acompaña.

BSR ENABLE_LCD

RTS

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

*************************** MODO_RTC ******************************

* El cursor retrocede cuando se escribe un carácter en el regis- *

* tro DR. El display permanece estático. *

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

MODO_RTC

BSR FLAG_ESPERAR

MOVE.B #$04,BYTE_DATA * Cursor atrás, display no acompaña.

BSR ENABLE_LCD

141

Page 142: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RTS

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

*************************** MODO_RTT ******************************

* El cursor y el display retroceden solidariamente cuando se es- *

* cribe un carácter en el registro DR. *

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

MODO_RTT

BSR FLAG_ESPERAR

MOVE.B #$05,BYTE_DATA * Cursor atrás, display acompaña.

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 carácter *

* donde se encuentra el cursor. *

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

MODO_NORMAL

BSR FLAG_ESPERAR

MOVE.B #$0E,BYTE_DATA * Display y Cursor ON, blinkin OFF

* BCLR.B #2,BYTE_DATA * Display OFF

* BCLR.B #1,BYTE_DATA * Cursor OFF

* BSET.B #0,BYTE_DATA * Blinking ON

BSR ENABLE_LCD

RTS

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

**************************** MODO_OFF *****************************

* Produce el apagado de la pantalla del LCD. Se puede seguir en- *

* viando ordenes al display que serán ejecutadas. La única dife- *

* rencia es que no aparece reflejado hasta que no se enciende de *

* el LCD. *

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

MODO_OFF

BSR FLAG_ESPERAR

MOVE.B #$08,BYTE_DATA * Display y Cursor ON, blinkin OFF

BSR ENABLE_LCD

142

Page 143: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RTS

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

***************************** CLEAR *******************************

* Borra el contenido del display y sitúa 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 posición 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

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

*************************** CURS_DCHA *****************************

* Mueve el cursor a la derecha sin modificar el texto. *

143

Page 144: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

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 dirección 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 instrucción 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

144

Page 145: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSET.B #BIT_RS,BYTE_CONTROL

BSR ENABLE_LCD

BCLR.B #BIT_RS,BYTE_CONTROL

RTS

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

************************** DDRAM_ADDR *****************************

* Coloca la dirección 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 *

* línea o repartidas en dos grupos de 40 cuando trabaje en el *

* modo de dos líneas. *

* V‚ase detalle a continuación: *

* - 80 posiciones x 1 línea - las direcciones van de $0 a $4F. *

* - 40 posiciones x 2 líneas - las direcciones se reparten: *

* Línea primera: de $00 a $27. *

* Línea 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 instrucción 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 selección. 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

145

Page 146: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR ENABLE_LCD

BCLR.B #BIT_RS,BYTE_CONTROL

RTS

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

* SUBRUTINAS DE TECLADO *

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

************************** TECLA_SOLTAR ***************************

* Permanece en un bucle mientras sigue pulsada la tecla indicada *

* en D5 y sale cuando se suelta. *

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

TECLA_SOLTAR

MOVE.L #REBOTES_MATAR,D1 * Duración del transitorio que aparece al

BSR DELAY * pulsar una tecla.

SIGUE_PULSADA

BTST.B D3,PORTE * Se lee el puerto E

BEQ.S SIGUE_PULSADA * Si son iguales SIGUE PULSADA la tecla

RTS

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

* RUTINAS DE INICIALIZACIÓN DE DISPOSITIVOS *

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

**************************** INI_LCD ******************************

* Esta rutina realiza toda la inicialización del display tras el *

* encendido del mismo. Después de su ejecución el display queda *

* preparado para recibir ordenes y caracteres. *

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

INI_LCD:

BSR CFG_DISPLAY

BSR MODO_NORMAL

BSR CLEAR

RTS

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

* SERVICIOS DE DISPOSITIVOS *

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

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

* SERVICIOS DEL DISPLAY *

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

************************** ESCR_MENSAJE ***************************

146

Page 147: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

* Esta rutina escribe un mensaje completo en el display en el *

* sentido natural de escritura cuya dirección de inicio se la pa- *

* samos a través del registro A0. El símbolo 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 línea *

* automáticamente se cambia del modo AVC al AVT en el que el dis- *

* play acompaña al cursor dando la sensación de que el texto se *

* desplaza. *

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

ESCR_MENSAJE

BSR RETURN_HOME

BSR MODO_AVC

MOVE.B #LCD_LONG,D1 * Cuenta los caracteres escritos en el display.

BUCLE1

TST.B (A0)

BEQ FIN1

MOVE.B (A0)+,D0

BSR ESCRIBIR

SUB.B #1,D1

BEQ FIN_LIN1

BRA BUCLE1

FIN_LIN1

BSR MODO_AVT * Cambia al modo AVT para que el display acompañe al cursor.

BRA BUCLE1

FIN1

RTS

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

*************************** DSP_ADELANTE **************************

* Esta rutina desplaza hacia la derecha la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ADELANTE

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE2

BSR DISP_DCHA

MOVE.L #RETARDO,D1

BSR DELAY

SUB.B #1,D0

147

Page 148: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BNE BUCLE2

RTS

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

**************************** DSP_ATRAS ****************************

* Esta rutina desplaza hacia la izquierda la pantalla del display *

* recorriendo las 80 posiciones del registro DDRAM. *

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

DSP_ATRAS

MOVE.B #FIN_DR,D0 * Cuenta los caracteres escritos en el display.

BUCLE3

BSR DISP_IZQ

MOVE.L #RETARDO,D1

BSR DELAY

SUB.B #1,D0

BNE BUCLE3

RTE

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

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

* SERVICIOS DE TECLADO *

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

**************************** TECLA_LEER ***************************

* Esta rutina rastrea las filas y columnas del teclado en busca *

* de una tecla pulsada. Utiliza los registros D6 y D7 para su uso *

* interno y devuelve el código ASCII de la tecla a través de D0. *

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

TECLA_LEER

MOVEM.L D1-D4,-(A7) * Se salva en la pila los registros que se van a usar

CLR.B D0 * D0 almacena el valor de la tecla pulsada

MOVE.L #3,D1 * D1 es el contador de columnas

MOVE.B #$0E,D4 * D4 es usado como registro auxiliar

COLUMNA

MOVE.B D4,PORTC * Pone el Puerto C el valor 0000 1110

MOVE.L #3,D2 * D2 es el contador de filas

MOVE.B #0,D3 * D3 guarda el número de bit a comprobar

FILA

BTST.B D3,PORTE * Comprueba el bit de la fila

BEQ TECLA * Salta si encontró la tecla pulsada

148

Page 149: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ADDQ.B #1,D0 * Siguiente tecla

ADDQ.B #1,D3 * Siguiente fila

DBF D2,FILA * Decrementa el contador de filas y salta a la

* siguiente

ORI.B #$10,CCR * Pone a 1 el bit extensión del CCR

ROXL.B #1,D4 * Siguiente columna

ANDI.B #$0F,D4 * Elimina los cuatro bits más significativos

DBF D1,COLUMNA * Decrementa el contador de columnas y salta a la

* siguiente,

MOVE.B #$FF,D0

BRA FIN_T

TECLA

BSR TECLA_SOLTAR

FIN_T

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

RTS

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

************************* DRIVER_SERVICIOS ************************

* Esta rutina realiza el servicio indicado a través del registro *

* D7 con un número ordinal. Para llamar a la rutina de servicio *

* se coloca el número de servicio en el registro D7 y se ejecuta *

* un TRAP #0. *

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

DRIVER_SERVICIOS

CMP.B #1,D7

BEQ SERVICIO1

CMP.B #2,D7

BEQ SERVICIO2

CMP.B #3,D7

BEQ SERVICIO3

CMP.B #4,D7

BEQ SERVICIO4

BRA FIN

SERVICIO1

BSR ESCR_MENSAJE

BRA FIN

SERVICIO2

BSR DSP_ADELANTE

149

Page 150: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BRA FIN

SERVICIO3

BSR DSP_ATRAS

BRA FIN

SERVICIO4

BSR TECLA_LEER

FIN

RTE

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

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

MOVE.W #MENSAJES,A6

BSR INHAB_WDOG

BSR PORT_EC_CFG

BSR INI_LCD

BSR RETURN_HOME

BSR MODO_AVC

MOVE.B #LCD_LONG,D3 * Cuenta los caracteres escritos en el display.

BUCLE

CLR.L D0

BSR CAMB_TECLADO

MOVE.L #4,D7

TRAP #0

CMP.B #$FF,D0

BEQ BUCLE

MULU #4,D0

MOVE.L (A6,D0.L),A0

BSR CAMB_DISPLAY

BSR CLEAR

MOVE.L #1,D7

TRAP #0

SUB.B #1,D3

BEQ FIN_LIN

BRA BUCLE

FIN_LIN

150

Page 151: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR MODO_AVT * Cambia al modo AVT para que el display acompañe al cursor.

BRA BUCLE

END

151

Page 152: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 5

Reproductor de mensajes basado en el dispositivo ISD 25XXLa familia ISD 25XX proporciona servicios de grabación y reproducción de mensajes

vocales integrados en un solo circuito integrado. El dispositivo de clase CMOS integra

todos los elementos necesarios para la digitalización y posterior reproducción de las

señales, para lo cual incorpora el oscilador, preamplificador para micrófono, control

automático de ganancia (AGC), filtro “antialiasing“, filtro de reconstrucción,

amplificador de audio y una memoria no volátil con una estructura multi-nivel que

permite la grabación de varios mensajes.

5.1 Descripción general

Existen varias versiones que proporcionan diferentes niveles de calidad y duración

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 duración

respectivamente de 32, 40, 48 y 64 segundos, cubriendo así un amplio abanico de

necesidades en cuanto a calidad y duración. Una de las ventajas de la familia ISD 25XX

reside en la utilización de una memoria EEPROM capaz de conservar el mensaje

durante 100 años sin necesidad de alimentación y permitiendo que pueda ser regrabado

del orden de 100.000 veces.

Cabe reseñar que el dispositivo puede funcionar de dos formas, en Modo de Dirección y

en Modo de Función. En el primer modo la dirección proporcionada por las entradas de

dirección marcará el inicio de la grabación o reproducción de los mensajes, mientras

que en el segundo modo se han integrado 7 funciones (M0 - M6) que permiten la

utilización 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 analógico directamente, por lo que se

ahorra en el proceso dos conversiones, la A/D al grabar y la D/A al reproducir. El

método de grabación es denominado por ISD como “break through” (abrir paso) y

152

Page 153: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

permite almacenar cada muestra en una celda en formato analógico. La grabación 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 tensión de la muestra. El dato almacenado tiene una cuantificación

equivalente de 256 niveles (ocho bits). El proceso se basa en la tecnología EEPROM

floating gate.

Figura 1 – Diagrama de bloques (Tomado del catálogo de ISD).

5.2 Descripción de las señales y del patillaje

5.2.1 Alimentación (VCCA, VCCD, VSSA, VSSD)

La tensión de alimentación es de 5 voltios. Para reducir al mínimo el ruido, las partes

digital y analógica de los circuitos disponen de entradas de alimentación independientes.

5.2.2 Entrada de corte de corriente (PD - power down)

Cuando la señal PD se pone a nivel alto el circuito entra en el modo de muy bajo

consumo. Cuando se produce la condición de desbordamiento de la memoria, PD se

utiliza para llevar el puntero al inicio de la zona de grabación o reproducción. Además

tiene una funcionalidad adicional cuando se trabaja en el Modo de Función M6 (Push-

Button) que se describirá en la siguiente sección.

5.2.3 Entrada para habilitar circuito (CE – chip enable)

La entrada CE debe ponerse a nivel bajo para habilitar la operación del circuito. Las

direcciones de entrada y la señal de grabación/reproducción (P/R) son capturadas

153

Page 154: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

durante el flanco de bajada de la señal. Además tiene una funcionalidad adicional

cuando se trabaja en el Modo de Función M6 (Push-Button) que se describirá en la

siguiente sección.

5.2.4 Entrada de Reproducción/Grabación (P/R – playback/record)

La entrada P/R permite seleccionar entre el modo de reproducción (nivel alto) y el de

grabación (nivel bajo). Durante un ciclo de grabación la dirección de comienzo se

proporciona a través de las correspondientes entradas y se detiene cuando se pone a

nivel alto cualquiera de las señales PD o CE, o cuando se produce un desbordamiento.

Cada vez que se termina un ciclo de grabación mediante las señales PD o CE, se pone

una marca de fin de mensaje (EOM) en la dirección de memoria donde se finalizó.

Durante un ciclo de reproducción se proporciona la dirección de comienzo y la

grabación se reproduce de manera continua hasta que se encuentra una marca de fin de

mensaje (EOM). El dispositivo puede seguir reproduciendo a continuación de una

marca de fin de mensaje (EOM) cuando se encuentra en el Modo de Función.

5.2.5 Señal de fin de mensaje y de funcionamiento (EOM)

La salida EOM genera un pulso a nivel bajo de duración TEOM al final de cada mensaje.

Cuando el dispositivo se configura en el Modo de Función M6, esta salida se mantiene a

nivel alto mientras el dispositivo está grabando o reproduciendo.

5.2.6 Señal 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 señal PD. Esta

salida puede utilizarse para la conexión de varios dispositivos en cascada.

5.2.7 Entrada de micrófono (MIC)

La entrada va conectada a un preamplificador integrado junto con un control automático

de ganancia (AGC) que regula la ganancia de éste desde –15 hasta 24 dB. La conexión

de un micrófono externo deberá hacerse a través de un condensador serie de desacoplo

que, junto con la resistencia interna de 10 K de la entrada, determina la frecuencia de

corte inferior.

154

Page 155: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

5.2.8 Entrada de referencia de micrófono (MIC REF)

Es la entrada no inversora del preamplificador para la conexión del micrófono y

proporciona una cancelación de ruido gracias a su elevado grado de rechazo al modo

común.

5.2.9 Entrada del Control Automático de Ganancia (AGC)

El control automático de ganancia permite cubrir un amplio margen de niveles de

entrada procedentes del micrófono, que van desde un pequeño susurro hasta sonidos

muy altos. El tiempo de activación 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 desactivación 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 mayoría de los casos un resultado satisfactorio.

5.2.10 Salida analógica (ANA OUT)

La salida del conjunto preamplificador – control automático de ganancia se conduce a

través de este pin.

5.2.11 Entrada analógica (ANA IN)

A través de esta entrada se conduce la señal al chip para su grabación. La señal de

entrada debe desacoplarse con un condensador externo, incluso si procede de la salida

ANA OUT (caso de un micrófono), 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 señal.

5.2.12 Entrada de reloj externo (XCLK)

La tolerancia del reloj interno es de 5%. En caso de que se requiera una mayor

precisión, puede controlarse con una señal de reloj externa cuyo valor dependerá del

dispositivo de la familia que estemos utilizando. De este modo deberán usarse los

siguientes valores 1024 Khz., 819.2 Khz.,682.7 Khz. y 512 Khz. para las frecuencias de

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.

155

Page 156: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 señal

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 podría dañar 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 señal al amplificador de salida y el altavoz

cuando las señales CE y P/R están a nivel alto o cuando se produce un desbordamiento

durante la reproducción. Esto permite conectar la señal de reproducción al siguiente

dispositivo de una cascada.

5.2.15 Entradas de dirección y modo (AX/MX)

Las entradas de dirección y modo tienen dos funciones dependiendo de cómo se

conecten los dos bits más 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 dirección. Cuando ambos bits (A7 y A8) se conectan a nivel

alto, las entradas (M0..M6) se interpretan como bits indicativos de cada modo de

función.

De los siete modos posibles sólo seis están operativos. Es posible combinar varios

modos a la vez.

5.3 Modos de función

Hay dos consideraciones importantes que hacer sobre el uso de los modos de función.

En primer lugar, todas las acciones comienzan en la dirección cero y las posteriores

pueden hacerlo en cualquier posición, dependiendo del modo en cuestión. Además el

puntero de direcciones se pone a cero cada vez que se cambia del modo reproducción al

modo grabación o viceversa y cuando se ejecuta un ciclo de corte de corriente (Power-

Down).

156

Page 157: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

En segundo lugar, los Modos de Función se ejecutan cuando la señal CE pasa a nivel

bajo y los dos bits de dirección más significativos (A7-A8) están a nivel alto,

manteniéndose en el modo en cuestión hasta que se produce una nueva transición de

nivel alto a bajo en la señal CE.

5.4 Descripción de los modos de función

5.4.1 M0 – Búsqueda de mensaje

Esta función permite al usuario pasar de mensaje en mensaje sin conocer la dirección de

inicio de cada uno. Cada transición a nivel bajo de la señal 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 rápido 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 Función.

5.4.4 M3 – Repetición de mensaje

La función M3 permite la repetición continua del mensaje situado en la primera

posición 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.

5.4.6 M5 – Activación por nivel de la entrada CE

Por defecto la activación del chip se realiza con el flanco de bajada de la señal CE

durante la reproducción y por el nivel detectado de la señal CE durante la grabación. El

modo de función M5 provoca que la activación mediante la señal CE se realice siempre

por la detección del nivel.

157

Page 158: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

5.4.7 M6 – Pulsar Botón

El modo Pulsar Botón se usa, ante todo, en aplicaciones de muy bajo coste y ha sido

diseñado para reducir al máximo los circuitos y componentes externos. En este modo el

dispositivo siempre entra en desconexión (power-down) al final de cada reproducción.

En este modo varios de los terminales de entrada-salida tienen otra función diferente

que se describe a continuación.

5.4.7.1Entrada CE (START/PAUSE)

En el modo Pulsar Botón, CE actúa como una señal START/PAUSE cuando se lleva a

nivel bajo. Un pulso a nivel bajo iniciará la grabación o reproducción y el siguiente

pulso aplicado generará una pausa. El contador de direcciones no es puesto a cero y otro

pulso más provocará que la operación continúe en el punto donde se quedó.

5.4.7.2Entrada PD (STOP/RESET)

En el modo Pulsar Botón, 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.3Salida EOM (RUN)

En este modo, EOM se convierte en una señal 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 Botón (Grabación y reproducción)

El modo Pulsar Botón es ideal para multitud de aplicaciones. Para el control del

dispositivo sólo se requieren dos pulsadores y un conmutador para atacar las tres líneas

de control necesarias. Con el conmutador se selecciona el modo de grabación o el de

reproducción y con los pulsadores se activan las líneas CE (START/PAUSE) y PD

(STOP/RESET). Los pulsos generados para el control de las líneas CE y PD han de

tener, al menos, un ancho de 300 ns.

5.5.1 Proceso de grabación en el modo Pulsar Botón

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.

158

Page 159: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3. Se genera un pulso a nivel bajo en la entrada CE y la grabación

comienza. La salida EOM se activa a nivel alto indicando la

operación en progreso.

4. Generando otro pulso a nivel bajo, la grabación 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 podría llevarse a nivel alto para iniciar la reproducción.

5. Un nuevo pulso en CE ocasiona que la grabación se inicie de nuevo

en la siguiente dirección y la salida EOM se activa a nivel alto.

5.5.2 Proceso de reproducción en el modo Pulsar Botón

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 reproducción

comienza. La salida EOM se activa a nivel alto indicando la

operación en progreso.

4. Cuando se genera un pulso a nivel bajo en la entrada CE o bien

cuando se encuentra una marca EOM, la reproducción se detiene y

EOM retorna a nivel bajo. La entrada P/R podría llevarse a nivel

bajo para iniciar una grabación.

5. Un nuevo pulso en CE ocasiona que la reproducción se reanude

donde se dejó y la salida EOM se activa a nivel alto.

6. La reproducción continúa según los pasos 4 y 5 hasta que se genera

un pulso a nivel alto en la entrada PD o se produce un

desbordamiento.

159

Page 160: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

5.5.3 Esquema de conexión.

Figura 2 – Esquema de conexión en modo Pulsar Botón (Tomado del catálogo de ISD).

160

Page 161: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 3 – Esquema de conexión al microcontrolador MC68331 (Adaptado del catálogo de ISD).

5.6 Conexión al microcontrolador MC68331

Se desea utilizar el dispositivo para grabar mensajes y luego reproducirlos en el orden

adecuado en función de la opción seleccionada en un menú interactivo. El proceso de

grabación se va a realizar de forma secuencial, por lo que lo más sencillo es utilizar el

modo Pulsar Botón (M6). Se ha determinado que la mejor forma de hacerlo es

instalando un pulsador en el propio circuito que permita iniciar y finalizar la grabación

de cada mensaje de forma manual por el usuario. Durante la reproducción 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 irán reproduciendo

los mensajes previos al deseado en el modo M0, cuidando de seleccionar también el

modo M4 para que el puntero no vuelva al inicio del mensaje una vez reproducido. La

señal EOM va a ser muy útil para conocer cuándo empieza y finaliza la reproducción de

un mensaje.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

161

Page 162: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

162

Page 163: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

* TIPOS DE RETARDO *

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

CORTO EQU $03FF * Del orden de 100us.

MEDIO EQU $03FF * Del orden de 1ms.

LARGO EQU $BFFF * Del orden de 5ms.

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

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

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

* PUERTO Y BITS DE CONTROL DEL DISPOSITIVO *

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

BYTE_CONTROL EQU PORTE * Puerto de control.

GRAB_M6 EQU $0C * Activa la grabación en modo M6.

REPR_M6 EQU $2C * Activa la reproducción en modo M6.

REPR_M04 EQU $2B * Activa la reproducción en los modos M0 y M4

BIT_M0 EQU 0 * Con valor 1 selecciona el modo M0.

BIT_M4 EQU 1 * Con valor 1 selecciona el modo M4.

BIT_M6 EQU 2 * Con valor 1 selecciona el modo M6.

BIT_CE EQU 3 * Con valor 0 activa el chip.

BIT_PD EQU 4 * Con valor 1 provoca un POWER-DOWN.

BIT_PR EQU 5 * Con valor 1 reproduce y con 0 graba.

BIT_EOM EQU 6 * Bit de funcionamiento. (RUN)

BIT_PUSH EQU 7 * Bit de lectura de la tecla START/STOP.

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR0 DC.L MENSAJE_N

163

Page 164: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

* 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 función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

************************** PORT_E_CFG *****************************

* Con esta rutina se configura el puerto E que es el que se usa *

* para controlar el display y el teclado. *

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

PORT_E_CFG

MOVE.B #$3F,DDRE * PE0..PE5 salidas y PE6..PE7 entradas.

MOVE.B #$00,PEPAR * Configura el registro de control del puerto E.

MOVE.B #8,PORTE * Pone la señal CE a nivel alto, el resto a cero.

RTS

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

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

* RUTINAS DE CONTROL *

164

Page 165: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

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

************************** PULSAR_BOTON ***************************

* Espera hasta que se accione el pulsador instalado. *

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

PULSAR_BOTON

BTST.B #BIT_PUSH,BYTE_CONTROL

BNE PULSAR_BOTON

RTS

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

**************************** PULSO_CE *****************************

* Genera un pulso a nivel bajo en la línea CE. *

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

PULSO_CE

MOVE.L D1,-(A7)

MOVE.L #CORTO,D1

BCLR.B #BIT_CE,BYTE_CONTROL

BSR DELAY

BSET.B #BIT_CE,BYTE_CONTROL

MOVE.L (A7)+,D1

RTS

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

****************************** RESET ******************************

* Genera un reset en el puntero de direcciones mediante un pulso *

* a nivel alto en la línea PD. *

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

RESET

165

Page 166: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MOVE.L D1,-(A7)

MOVE.L #LARGO,D1

BSET.B #BIT_PD,BYTE_CONTROL

BSR DELAY

BCLR.B #BIT_PD,BYTE_CONTROL

MOVE.L (A7)+,D1

RTS

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

*************************** INI_DSP_VOZ ***************************

* Inicializa el dispositivo de voz para reproducción, con los mo- *

* dos M0 y M4 habilitados. Se coloca también el puntero de direc- *

* ciones al inicio mediante un reset. *

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

INI_DSP_VOZ

BSR PORT_E_CFG

BSR RESET

RTS

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

************************* GRABAR_MENSAJE **************************

* Se configura el chip en modo grabación y se espera la orden de *

* arranque para iniciarla. La grabación 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 grabación

BSR PULSAR_BOTON * Espera la orden de arranque

BSR PULSO_CE * Inicia la grabación

PARADA

BTST.B #BIT_EOM,BYTE_CONTROL * Se comprueba desbordamiento. Quizá  no

* funcione y se requiera la señal OVF.

BEQ FIN * Si hay desbordamiento termina

BTST.B #BIT_PUSH,BYTE_CONTROL

BNE PARADA * Espera la orden de parada

BSR PULSO_CE * Finaliza la grabación

FIN

166

Page 167: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RTS

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

**************************** BUSCAR_N *****************************

* Se configura el chip en modo M0 y se van reproduciendo los men- *

* sajes previos al deseado cuyo número de orden se encuentra en *

* en el registro D0. (Sólo tiene sentido a partir del segundo) *

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

BUSCAR_N

MOVE.B #REPR_M04,BYTE_CONTROL * Se configuran los modos M0 y M4

SUBI.B #1,D0 * Se ajusta la salida del bucle DBF

BSR RESET * Se ejecuta un reset del chip

SIGUIENTE

BCLR.B #BIT_CE,BYTE_CONTROL * Se inicia reproducción rápida

BSET.B #BIT_CE,BYTE_CONTROL

EOM_ESPERAR

BTST.B #BIT_EOM,BYTE_CONTROL

BNE EOM_ESPERAR * Se espera a que finalice el mensaje

SUBI.B #1,D0

BNE SIGUIENTE

RTS

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

************************** REPRODUCIR *****************************

* Se configura el chip en modo M6 y se reproduce el mensaje que *

* señala el puntero de direcciones. *

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

REPRODUCIR

MOVE.B #REPR_M6,BYTE_CONTROL * Activa el modo reproducción M6

BSR PULSO_CE * Inicia la reproducción del mensaje

RTS

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

*************************** MENSAJE_N *****************************

* Reproduce el mensaje cuyo número de orden N está contenido en *

* el registro D0. *

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

MENSAJE_N

BSR BUSCAR_N * Busca el mensaje N.

167

Page 168: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BCLR.B #BIT_M0,BYTE_CONTROL

BCLR.B #BIT_CE,BYTE_CONTROL * Reproduce el mensaje.

BSET.B #BIT_CE,BYTE_CONTROL

RTE

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

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG

MOVE.L #5,D0

TRAP #0 * Reproduce el mensaje número 5

FINAL

BRA FINAL

END

Capítulo 6

Transceptor digital de datos por radio

6.1 Introducción

Para cualquier aplicación de telecontrol es necesaria la existencia de un canal sobre el

que transmitir las órdenes. Estos canales pueden ser alámbricos o inalámbricos. Los

primeros suelen ser más fiables pero también mucho más 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 realización de un cableado específico.

Una solución para estos casos es la utilización de canales de comunicación

inalámbricos. Las dos opciones disponibles son la utilización de transceptores por luz

infrarroja o bien por radiofrecuencia. Ambas son bien conocidas por todos. La primera

es utilizada en la práctica totalidad de los mandos a distancia con que vienen equipados

la mayoría de los aparatos domésticos y comerciales, y la segunda es más frecuente

verla en aparatos de aeromodelismo, juguetes, mandos a distancia de garajes, etc.

168

Page 169: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 visión 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 AURºEL. Se trata de sendos circuitos híbridos con unas

dimensiones de 38 x 12 mm que trabajan con una frecuencia portadora de 433,92 Mhz y

utilizan una modulación ON-OFF en banda base típica de 2 Khz.

6.1.1 Transmisor

El transmisor, modelo AURºEL TX-SAW/433 s-Z, dispone de siete terminales

numerados según se indica en la figura 1. Para la generación de la señal cuenta con un

oscilador SAW.

6.1.1.1Oscilador SAW

Un oscilador SAW (Surface Acoustic Wave) es aquél que utiliza un resonador basado en

ondas acústicas de superficie u ondas de Rayleigh. Este fenómeno que se produce

primordialmente en materiales con características piezoeléctricas, se compone de dos

ondas, una de compresión y otra de cizallamiento, que confinan en la superficie del

cristal la energía de las ondas acústicas de superficie. Esta onda de compresión y

cizallamiento produce en el substrato piezo-eléctrico una onda electrostática asociada a

las anteriores.

La velocidad de propagación de estas ondas de superficie es cuatro órdenes de magnitud

inferior a la velocidad de propagación de las ondas electromagnéticas. Esto permite que

las magnitudes de diseño derivadas sean manejables a nivel de integración. Se trata de

una solución de más bajo coste que los osciladores de cuarzo y de peores prestaciones,

pero suficiente para muchas aplicaciones.

Figura 1 – Transmisor digital.

La función de cada terminal se describe en la tabla siguiente:

169

Page 170: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Pin 1-4-13Masa Conexiones a masa (GND). Deben conectarse externamente a un único

plano de tierra.

Pin 2Entrada

ModulaciónEntrada de datos TTL con una impedancia de entrada de 5 K. Sólo se

utiliza si se utiliza alimentación a 12 V.

Pin 3Entrada

ModulaciónEntrada de datos TTL con una impedancia de entrada de 5 K. Sólo se

utiliza si se utiliza alimentación a 5 V.Pin 11 Salida RF Salida RF con una impedancia de 50 .Pin 15 +V Alimentación a + 5 V. También puede ser 12 V.

Tabla 1 – Terminales de conexión del transmisor.

El funcionamiento del transmisor es extremadamente sencillo. Con el fin de obtener el

rendimiento descrito en las especificaciones técnicas 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 sería utilizar una placa de doble cara con interconexiones cada 15 mm. entre las

dos caras a fin de garantizar la equipotencialidad. La masa debería rodear tanto a las

soldaduras como a los conductores serigrafiados.

La línea de 50 para la señal de radiofrecuencia deberá ser lo más 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 más habitual. La distancia de

separación 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 pequeño mástil de cobre o bronce con una longitud de 16,5

mm. y 1 mm. de diámetro. No debe existir ningún otro componente o pieza metálica en

un radio de 5 cm. y debe disponer de un buen plano de masa.

La alimentación es recomendable desacoplarla con un condensador cerámico de 100 nF

colocado lo más próximo posible al terminal.

170

Page 171: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 2 – Circuito impreso auxiliar.

Se deberá tener en cuenta que para respetar las recomendaciones anteriormente

expuestas es necesaria la fabricación de un PCB a doble cara. Lo más normal es que

dicha solución esté fuera de nuestro alcance por lo que se deberá tener en cuenta que

cuanto más nos alejemos de las recomendaciones peor será el funcionamiento y mayor

el ruido presente.

Una vez conectada la alimentación y la antena sólo queda proporcionar la señal TTL

moduladora a través 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.

6.1.2 Receptor

El receptor modelo AURºREL RX-BC-NBK dispone de ocho terminales numerados

según la figura 3.

Figura 3 – Receptor digital.

La tabla siguiente describe la función de cada terminal:

Pin 2-7-11 MasaConexiones a masa (GND). Deben conectarse externamente a un único

plano de tierra.Pin 3 Antena Conexión de una antena con una impedancia de 50 .

Pin 1-15 +V Alimentación a + 5 V.

Pin 13Terminal de

chequeoSalida analógica de la señal demodulada que permite la conexión de un

osciloscopio para su visualización.Pin 14 Salida digital Salida TTL de datos recibidos. Admite cargas de hasta 1 K.

Tabla 2 – Terminales de conexión del receptor.

171

Page 172: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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.

Probablemente no será factible la fabricación de una placa conforme con las

especificaciones dadas y por tanto deberemos adaptar los medios disponibles de la

forma más 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 Conexión al microcontrolador

Existen diferentes posibilidades de conexión al MC68331.

El transmisor necesita enviar los datos con una tasa constante de unos 2400 baudios, por

lo que será necesario generar una interrupción periódica que marque el ritmo de

transmisión. La conexión física puede realizarse a través de cualquier terminal de un

puerto de salida.

El proceso de recepción es un tanto más complejo. El receptor puede conectarse a través

de cualquier puerto de entrada. Como la transmisión entre dos módulos es asíncrona, es

necesario muestrear la señal procedente del receptor y realizar la sincronización de bits

para al final obtener una secuencia digital. La programación de un receptor puede llegar

a ser laboriosa y compleja.

172

Page 173: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Afortunadamente, el MC68331 tiene este problema resuelto si se utiliza el módulo de

comunicación serie QSM. La interfaz de comunicación serie SCI sirve para la

transmisión y recepción asíncrona 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 conexión, 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 básico de atención de comunicaciones.

Con este programa se pretende resolver el caso general de comunicación en un entorno

domótico. Son básicamente dos las funciones de comunicación que se necesitan

resolver. Por un lado la difusión desde el microcontrolador de órdenes a diferentes

actuadores periféricos y por el otro la recepción de medidas o informaciones desde

sensores remotos.

El protocolo de comunicación 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 más significativos el código de instrucción. Luego

se configura el puerto serie SCI para que le añada un bit de paridad y los pertinentes

bits de arranque y parada.

De esta forma, con el envío de una única trama de datos es suficiente.

La trama de datos que se transmite vía radio tiene la estructura siguiente:

Bit 10 Bit 9 7 4 3 0 Bit 1Parada Paridad Código de instrucción Identificador Arranque

Tabla 3 – Estructura de la trama de datos.

La aplicación 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 válido o no.

3. Si es valido, lo guarda en un buffer de memoria y envía por el

transmisor una trama de confirmación de dato recibido.

173

Page 174: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

4. Si no es valido, envía por el transmisor una trama de confirmación de

dato erróneo.

5. Vuelve al paso 1.

Obsérvese que no se hace comprobación del desbordamiento del buffer , ya que se

entiende que para una prueba de recepción de órdenes es suficiente con un tamaño de

500 tramas almacenadas en memoria.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

174

Page 175: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* REGISTROS QSM-QSI *

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

QSMCR EQU $FFFC00 * Configuración del QSM.

QILR EQU $FFFC04 * Configuración del nivel de interrupción.

QIVR EQU $FFFC05 * Configuración del vector de interrupción.

SCCR0 EQU $FFFC08 * Control 0 del SCI determina velocidad de transmisión.

SCCR1 EQU $FFFC0A * Control 1 del SCI para configuraciones varias.

SCSR EQU $FFFC0C * Registro de estado del SCI.

SCDR EQU $FFFC0E * Registro de datos del SCI (RDR y TDR).

175

Page 176: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PORTQS EQU $FFFC15 * Registro de lectura y escritura del Puerto QS.

PQSPAR EQU $FFFC16 * Asignación de pins como Puerto QS o como QPSI.

DDRQS EQU $FFFC17 * Dirección E/S de los pins del Puerto QS.

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

* CONTROL DEL QSM - SCI *

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

BIT_FE EQU 16 * Bit indicador de error de trama (Frame Error).

BIT_PE EQU 17 * Bit de error de paridad (Parity Error).

BIT_TDRE EQU 24 * Bit indicador de registro TDR vacío.

BIT_TC EQU 23 * Bit indicador de transmisión finalizada.

TRAMA_NULA EQU $FF * Valor de inicialización antes de recibir trama

ERR_TRAMA EQU $AA * Valor devuelto cuando hay error de trama

ERR_PARIDAD EQU $80 * Valor devuelto cuando hay error de paridad

TRAMA_OK EQU $55 * Valor de confirmación de trama correcta

TRAMA_KO EQU $00 * Valor de confirmación de trama errónea

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $80

VECTOR_ESC DC.L ESCRIBIR_SCI * Vector de la excepción TRAP #0

ORG $110

VECTOR_QSM DC.L LEER_SCI * Vector de interrupción $44

****************************************************************************** * PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

****************************************************************************** * BUFFER DE RECEPCIÓN *

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

176

Page 177: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ORG $2000

BUFFER DS.B 500

INI_BUFFER:

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

**************************** QSM_CFG *****************************

* Configuración del QSM_SCI *

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

QSM_SCI_CFG

MOVE.W #$008F,QSMCR * Supervisor de arbitrio 15.

MOVE.B #$44,QIVR * Vector de interrupción $44.

MOVE.B #$06,QILR * Nivel de interrupción 6 para el SCI.

MOVE.W #$00DC,SCCR0 * velocidad de TX/RX de 2400 baudios.

RTS

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

************************** RECEPTOR_CFG **************************

* Configura y habilita el módulo receptor del QSM-SCI. Inhabi- *

* lita al tiempo el transmisor al tratarse de una comunicación *

* semi-duplex. *

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

RECEPTOR_CFG

MOVE.W #$0424,SCCR1 * Interrupciones habilitadas para la recepción (RIE)

177

Page 178: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RTS * tramas de 7 bits + bit de paridad impar RTS

************************* TRANSMISOR_CFG *************************

* Configura y habilita el módulo transmisor del QSM-SCI. Inhabi- *

* lita al tiempo el receptor al tratarse de una comunicación *

* semi-duplex. *

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

TRANSMISOR_CFG

MOVE.W #$0408,SCCR1 * tramas de 7 bits + bit de paridad impar RTS

RTS

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

* RUTINAS DE CONTROL *

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

************************** LEER_SCI *****************************

* Rutina LEER_SCI de atención a la interrupción del modulo serie*

* El dato recibido se deja disponible en el registro D0 *

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

LEER_SCI

MOVE.L D1,-(A7)

MOVE.L SCSR,D1 * Lectura de los registros de estado y de datos.

* a la vez; se resetean los flags de estado.

* automáticamente.

BTST.L #BIT_FE,D1 * Se comprueba el error de trama.

BNE TRAMA_ERROR

BTST.L #BIT_PE,D1 * Se comprueba el error de paridad.

BNE PARIDAD_ERROR

ANDI.W #$007F,D1 * Nos quedamos con los bits 0 a 6 en D3.

MOVE.W D1,D0 * Copia en D0 el dato bueno.

BRA FIN_LECTURA

TRAMA_ERROR

MOVE.W #ERR_TRAMA,D0

BRA FIN_LECTURA

PARIDAD_ERROR

MOVE.W #ERR_PARIDAD,D0

FIN_LECTURA

MOVE.L (A7)+,D1

178

Page 179: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RTE

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

************************ ESCRIBIR_SCI ***************************

* Rutina ESCRIBIR_SCI de atención a la excepción TRAP #0, de *

* modo que el dato depositado en el registro D0 se transmite *

* por la línea serie. *

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

ESCRIBIR_SCI

MOVE.L D1,-(A7)

ESPERAR

MOVE.L SCSR,D1

BTST.L #BIT_TDRE,D1 * Se espera hasta que el transmisor esté libre.

BEQ ESPERAR

ANDI.W #$FE7F,D1 * Se borran las banderas TDRE y TC.

MOVE.W D1,SCSR * Se actualiza el registro de estado del SCI.

MOVE.W D0,SCDR * Se copian los datos al registro TDR.

MOVE.L (A7)+,D1

RTE

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

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG * Se inhabilita watchdog

BSR QSM_SCI_CFG * Se configura el QSM

MOVEA.L #INI_BUFFER,A0 * Carga dirección inicio del buffer de datos.

NUEVA_TRAMA

MOVE.W #TRAMA_NULA,D0 * Valor de cuando no se recibe trama.

BSR RECEPTOR_CFG * Se activan las interrupciones del receptor

BUCLE

CMP.W #TRAMA_NULA,D0 * Espera a la recepción de una trama

BEQ BUCLE

CMP.W #ERR_TRAMA,D0 * Comprueba si hay error en la trama

BEQ TRAMA_MAL

CMP.W #ERR_PARIDAD,D0 * Comprueba si hay error en la paridad

BEQ TRAMA_MAL

179

Page 180: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

TRAMA_BIEN

MOVE.B D0,(A0)+ * Copia la trama recibida en el buffer.

MOVE.W #TRAMA_OK,D0 * Carga la confirmación de trama correcta.

BRA CONFIRMACION_ENVIAR

TRAMA_MAL

MOVE.W #TRAMA_KO,D0 * Carga la confirmación de error de trama.

CONFIRMACION_ENVIAR

BSR TRANSMISOR_CFG * Configura el transmisor.

TRAP #0 * Envía la confirmación de recepción de trama.

BRA NUEVA_TRAMA

END

180

Page 181: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 7

Telemando por infrarrojosDebido a la popularidad de este tipo de mandos, raro va a ser no encontrarlos en

cualquier hogar u oficina. Algunos de los aparatos más comunes que cuentan con ellos

son los televisores, vídeos, cadenas de música, 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 instalación adicional.

Existen además otras aplicaciones, como pueden ser la regulación de la iluminación 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 aparición de esta tecnología, se utilizaban la radiofrecuencia y los

ultrasonidos. La primera tiene las desventajas de provocar interferencias

electromagnéticas, necesitar autorización administrativa y que su alcance no está

limitado, por lo que podría 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 caída de una moneda, el sonido de una

campanilla, un timbre, un reloj, sonidos generados por aparatos eléctricos como los

televisores, etc. En aquellas aplicaciones en las que sólo se requiere un alcance de unos

pocos metros y que la transmisión quede confinada en una sala, la transmisión por

infrarrojos es la solución ideal. De ahí el éxito que han tenido este tipo de mandos en los

últimos años.

7.1 Introducción

En el mercado existen una multitud de soluciones para este tipo de dispositivos. Existen

diferentes circuitos integrados que implementan todas las funciones de comunicación y

decodificación de las señales y que permiten realizar sin apenas esfuerzo todas las

funciones del telemando.

Nuestro objetivo es más ambicioso desde un punto de vista didáctico, por lo que se van

a desarrollar tanto el transmisor como el receptor con componentes de propósito

181

Page 182: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 transmisión 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 lámparas de bajo consumo presentan

también una componente de luz infrarroja oscilante a la frecuencia de

100 Hz.

Los motivos anteriormente expuestos desaconsejan la transmisión en banda base. La

mayoría de los sistemas comerciales utilizan una modulación ASK con una frecuencia

de portadora que oscila entre los 36 y los 40 Khz. aunque hay algunos que utilizan una

modulación FSK con una frecuencia de la portadora de hasta 50 Khz.

7.1.1 Estándares de codificación de comandos

Para la codificación de los comandos existen dos estándares 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 más popular es la RC-5.

7.1.1.1Codificación RC-5

Para la codificación de bits utiliza un código bifase, de modo que un “0” se codifica por

una transición 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 estándar RC-5.

Cada bloque de bits tiene la siguiente función:

S1-S2 – Son los bits de arranque y sirven para el ajuste del CAG y la

sincronización del receptor.

T – Es el bit de toggle, que va alternándose entre una trama y otra

cuando se repite varias veces la transmisión del mismo comando.

182

Page 183: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

D0-D4 – Contienen el número de dispositivo a controlar.

C0-C5 – Contienen el comando a ejecutar.

7.1.1.2Codificación RECS 80

La codificación de bits empleada es una modulación del ancho de pulso de modo que

cada bit se transmite como un pulso a nivel alto de duración T seguido por otro a nivel

bajo de duración 2T si se transmite un “0” y de duración 3T si se transmite “1”. En

cuanto a la longitud de la trama, depende de cada implementación y del número de

comandos que es capaz de transmitir. En general, la estructura consiste en una secuencia

de referencia de duración 3T, un bit de toggle para indicar si se trata de una repetición

del comando o de uno nuevo y, por último, la secuencia de bits de información que

puede contener un código de identificación de dispositivo y otro de comando, seguido

de un tiempo de inactividad antes de repetir o iniciar una nueva secuencia.

7.1.2 Codificación de los comandos

Para no complicar en exceso el diseño del telemando, se va a utilizar un formato de

trama muy sencillo. Va a consistir en una secuencia formada por un bit de activación,

seguido de un bit de arranque, ocho bits de información (comenzando por el menos

significativo) y uno de parada. Esta elección no es casual, sino que coincide con la

estructura de trama del módulo de comunicación serie SCI del microcontrolador y, por

tanto, se podrá utilizar este módulo para la recepción.

Activación Arranque Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Parada1 0 X X X X X X X X 1

Tabla 2 – Estructura de la trama de comando.

Los ocho bits de información pueden dividirse en una parte para la identificación de

dispositivo y otra para la señalización de comando. De este modo, se pueden estructurar

de ocho formas diferentes. La elección de una u otra dependerá en cada caso de la

aplicación, esta decisión se deja abierta al ser irrelevante de cara al diseño.

Estructura de la información Nº de dispositivos Nº de comandos0 Id. Disp. y 8 Comando 1 2561 Id. Disp. y 7 Comando 2 1282 Id. Disp. y 6 Comando 4 643 Id. Disp. y 5 Comando 8 324 Id. Disp. y 4 Comando 16 165 Id. Disp. y 3 Comando 32 86 Id. Disp. y 2 Comando 64 47 Id. Disp. y 1 Comando 128 2

183

Page 184: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Tabla 3 – Estructuras posibles de codificación de la información.

Para la transmisión de bits se va a utilizar un código NRZ unipolar con una frecuencia

de 100 Hz que va a determinar la velocidad de transmisión de la trama.

7.1.3 Tipo de modulación

Se va a utilizar una modulación ASK con una frecuencia de 38 Khz. La razón que

motiva esta decisión es la existencia de un buen número de dispositivos comerciales que

utilizan esta modulación y el hecho de estar lo suficientemente alejada de la

interferencia de 100 Hz. provocada por los tubos fluorescentes y de la velocidad de

transmisión.

7.2 Transmisor de infrarrojos

Disponiendo de un microcontrolador, el diseño de un transmisor de infrarrojos podría

limitarse al modulador y al driver que gobierna al diodo fototransmisor, que suele

demandar bastante corriente, ya que todo el conformado y transmisión de la trama se

puede hacer por software a través de un puerto.

También se puede realizar una transmisión serie convencional utilizando el módulo de

comunicación serie SCI del MC68331, lo que simplifica enormemente las tareas para

algunas aplicaciones concretas como podrían ser las de comunicación con un PC o con

otro microcontrolador.

El objetivo que en esta sección se pretende es el diseño 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 módulos que pueden ser

diseñados con independencia según se detalla en la figura 1.

184

Page 185: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 1 – Diagrama de bloques del transmisor.

7.2.2 Generador de reloj

Como la velocidad de transmisión se ha determinado que sea de 100 baudios, será

necesario generar una señal de reloj de esa frecuencia para marcar el ritmo de la

transmisión. Para ello se usará un temporizador 555 en configuración aestable y con un

ciclo de trabajo próximo al 50 %.

Figura 2 – Esquema de conexión del 555.

La frecuencia de la señal generada viene dada por la fórmula:

f= 1. 44

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

R2

R1+2⋅R2

La elección del condensador más adecuado puede realizarse a partir de las curvas

proporcionadas por el fabricante.

185

Page 186: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 3 – Frecuencia de oscilación libre (Gráfica obtenida del catálogo del fabricante National).

A partir de la frecuencia de diseño de 100 Hz, podemos observar que el par formado por

la recta de carga y el valor del condensador que adopta los valores más 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

100⋅100⋅10−9=144

K

Por otro lado se quiere un ciclo de trabajo próximo al 50 %, para ello es necesario que

R1<< R2 . Si se toma un valor de R1=0 .1⋅R2 y eligiendo aquellos valores comerciales

más próximos se obtiene R2=68 K y R1=8 . 2K. Debido a las tolerancias de los

componentes la frecuencia resultante no se ajustará al valor de diseño. Para resolverlo se

colocará en lugar de la resistencia de 68 K la combinación serie de una resistencia de

56 K y un potenciómetro 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 alimentación, será necesario ajustar con el potenciómetro la

frecuencia de trabajo que se medirá con el osciloscopio.

7.2.3 Generador del intervalo de trama

Cada trama consiste en la transmisión 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

sacarán en serie. La función que va a realizar el generador del intervalo de trama es la

de mantener activo al registro de desplazamiento sólo mientras se transmite ésta y al

finalizar inhibe el funcionamiento.

186

Page 187: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Para realizar esta función se va a utilizar un contador para implementar un autómata que

al recibir la señal de arranque mediante un pulsador mantiene activa la señal LOAD

durante ocho ciclos de reloj. El esquema se muestra en la figura 4.

Figura 4 – Generador del intervalo de trama.

La descripción 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 señal RCO (fin de

cuenta) aplicada a través de un inversor a la entrada ENP carga el

valor 4 (0100) existente en los terminales D, C, B y A.

La señal RCO cambia a nivel bajo y desinhibe el contador que

prosigue la cuenta hasta el valor 15 (1111).

Cuando alcanza este valor, la señal RCO pasa a nivel alto e inhibe de

nuevo el contador.

La misma señal RCO negada utilizada para activar e inhibir el contador es la que activa

e inhibe el registro de desplazamiento. Como se puede observar, la señal 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.

187

Page 188: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

A continuación se representa el diagrama de estados que gobierna el autómata:

Figura 5 – Diagrama de estados del autómata 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

través de sus entradas en paralelo y la saca en serie al ritmo que le marca el reloj.

El valor de los bits de activación, arranque y parada vienen van cableados de forma

permanente y los ocho bits de selección de dispositivo y comando se configuran a través

de ocho microinterruptores.

El registro permanece con el código de la trama precargado y en estado de inhibición.

Cuando el generador de intervalo de trama activa el registro comienza la transmisión

hasta el último bit de la trama, tras el cual pasa de nuevo a estado de inhibición.

188

Page 189: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 6 – Registro de desplazamiento.

Para evitar que se produzca una transmisión espúrea durante la conexión inicial del

circuito, se ha introducido una red de inicialización, conectada al terminal de inhibición,

que garantiza un tiempo de 400 ms. Suficiente para que se estabilice el autómata.

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 activación del circuito, el primer impulso de reloj llevará a la salida serie el

valor contenido en la entrada G y, por tanto, sólo 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 función de bit de parada.

Como se puede observar, con la conexión realizada la línea permanece en reposo o nivel

lógico cero hasta que el generador de intervalo saca al circuito de su estado de

inhibición. A partir de ese instante se transmite un 1 para la sincronización de trama, el

bit de arranque, los cinco bits de información y por último el de parada.

7.2.5 Modulador ASK

Como ya se ha comentado se va a utilizar una modulación digital ASK con una

frecuencia de 38 Khz. de modo que se transmitirá la señal modulada para denotar un “1”

lógico y no se emitirá para denotar el “0” lógico.

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 transmisión.

189

Page 190: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Sin entrar en detalles justificativos, diremos que la utilización de una onda cuadrada

para modular la señal 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 conectarán dos inversores Schmitt Trigger en serie para

regenerar la señal sin negar la lógica.

Figura 7 – Modulador ASK

Para el cálculo de los componentes de ajuste se consulta la gráfica 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

38000⋅220⋅10−12=172

K

Por otro lado se quiere un ciclo de trabajo próximo al 50 % para ello es necesario que

R1 << R2 . Si se toma un valor pequeño de R1=2K el ciclo de trabajo será de 49.4 %

y el valor de R2=85 K. Para resolver la desviación de frecuencia debida a la

tolerancia de los componentes se colocará en lugar de la resistencia de 85 K la

combinación serie de una resistencia de 75 K y un potenciómetro multivuelta de 20

K para permitir el ajuste de la frecuencia exacta.

Una vez conectado a la alimentación será necesario ajustar con el potenciómetro la

frecuencia de trabajo que se medirá con el osciloscopio.

7.2.6 Emisor de luz infrarroja

La señal procedente del modulador debe ser aplicada al fotodiodo de luz infrarroja que

se encarga de la emisión.

190

Page 191: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Se ha utilizado el diodo CQY89 que habitualmente se encuentra disponible en las

tiendas de electrónica. Tiene una longitud de onda de emisión es de 930 nm. con un

ángulo de emisión de 40º. Admite una intensidad media de corriente de 100 mA con la

que alcanza una potencia de emisión de 15 mW.

Para la excitación del LED IR se ha utilizado el circuito de la figura 8. Podemos

observar que para la polarización de la base se han utilizado dos diodos 1N4148. Con

ello se consigue la tensión adecuada en la base del transistor y se evitan los efectos de

carga que introduciría 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 tensión de 1.7 V. y la tensión mínima colector-emisor, fuera

de la saturación, es V CE=0. 2V., la resistencia de emisor necesaria para limitar la

corriente del diodo a 200 mA es:

R=5−1. 7−0 .20. 2

=15 .5

El valor comercial más próximo disponible es 18 .

La tensión en la base del transistor ha de ser menor que:

V B≤V E+0. 7=5−1 .7−0 .2+0 .7=3 . 8V.

Utilizando los dos diodos en serie, la tensión en la base es: V B=5−1 . 4=3 .6≤3 .8V.

La tensión en el emisor del transistor será: V E=5−1. 4−0 .7=2.9V. y la potencia

disipada en la resistencia de 233 mW, por lo que es recomendable utilizar una

191

Page 192: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 Alimentación

El módulo transmisor ha de ser un elemento móvil para que realice la función de

telemando para la que fue diseñado. Para ello se alimentará con una pila de 9 V. Será

necesario el empleo de un regulador de tensión 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 conexión del mismo.

Una cuestión que debe tenerse en cuenta es la demanda de corriente del circuito.

Durante la transmisión la corriente media que va a consumir el circuito es de unos 100

mA durante los 80 ms que dura la transmisión, 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 tensión 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 señal ASK de 38 Khz. y

entregar los pulsos de la trama.

Para la recepción existen dispositivos comerciales que integran todos los circuitos

necesarios para la correcta demodulación de la señal. Estos dispositivos de pequeño

tamaño integran en el mismo encapsulado, el receptor de luz infrarroja, una lente y toda

la lógica necesaria para distinguir señales 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.

192

Page 193: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Para el transmisor del título 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 (extraído del catálogo de Sharp).

Continuando con los objetivos didácticos de esta práctica, 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 diseñados

independientemente.

Figura 10 – Diagrama de bloques del receptor.

7.3.2 Foto-receptor

La función de recepción la va a realizar el fotodiodo BPW41. Este dispositivo presenta

su máxima sensibilidad con señales cuya longitud de onda es de 950 nm. y tiene un

ángulo de recepción de 65º respecto de la normal.

193

Page 194: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 función 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

solución muy sencilla con un comportamiento plano con la

frecuencia. Como no elimina las bajas frecuencias puede suceder que

el receptor se sature con la iluminación ambiente.

Carga reactiva (LC o RLC): Es la que promete un mejor

comportamiento, ya que sólo 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 sintonía 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 saturación de los

transistores por efecto de la iluminación 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 amplificación.

194

Page 195: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 12 – Circuito foto-receptor con carga resistiva.

Para el caso en que las condiciones de iluminación de una aplicación concreta

provoquen problemas de saturación 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.1Red de desacoplo

Antes de entregar la señal 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 década por encima de la interferencia de 100 Hz que provocan

los tubos fluorescentes y, al menos, una década por debajo de la señal 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 tensión, según se puede observar en el esquema

general de la figura 14.

Figura 14 – Esquema completo de la etapa de foto-recepción.

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

195

Page 196: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

amplificador operacional utilizado para el seguidor de tensión tiene que ser capaz de

seguir la señal de 38 Khz. y, por tanto, deberá tener un Slew-Rate de:

SR≥2 π⋅f osc⋅Amax=2 π⋅38000⋅5=1. 2V/s.

Se ha escogido el TL082 que tiene un SR de 13 V/s y un producto GxBW de 4 Mhz.,

suficiente para la solución adoptada.

7.3.3 Filtro paso banda

Para reducir el ruido antes de la demodulación se debe realizar un filtrado paso banda

que sólo permita pasar la señal de interés cuya frecuencia es de 38 Khz.

El espectro de la señal tiene el aspecto de una sinc por el efecto de la modulación 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 eliminaríamos una parte importante del espectro

de la señal. 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 conexión en cascada de dos filtros de

Sallen-Key, uno paso bajo y el otro paso alto. El resultado corresponde con el cuadrado

de la función de transferencia de un filtro paso banda.

H BP (ω)= As2

s2+sQ+1

⋅ A

s2+sQ+1

=( As

s2+sQ+1 )

2

El módulo de la función de transferencia vale:

|H BP (ω)|= ( Aω )2

(1−ω2)2+(ωQ )

2

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 precisión 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 normalización fp de ambos filtros son coincidentes y están bastante

196

Page 197: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

alejadas de la frecuencia objetivo, ya que ésta queda en banda atenuada y encima se está

amplificando otra frecuencia próxima diferente.

Figura 15 – Filtro paso banda.

La estrategia que se propone es la de comprar un lote de resistencias y condensadores de

los valores que se necesitan y con la ayuda de un polímetro (los hay que miden

capacidades) elegir aquéllos que presentan el menor error y se aproximan más a los

valores de diseño.

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 estén 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− 1Q=2 . 475

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 máxima que se puede obtener con el conjunto a la frecuencia de interés es

(AQ)2 =(2.5 2)2 =25.

En cuanto al amplificador, se seguirá usando el TL082 cuyas características son

sobradas para el uso requerido.

197

Page 198: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

7.3.4 Demodulador

El demodulador se va a encargar de reconstruir la señal en banda. La parte clave del

mismo es el detector de envolvente. La modulación ASK es un caso particular de la

demodulación AM con la ventaja de que la saturación que se pueda presentar en los

amplificadores no tiene ningún efecto negativo en la señal y, por tanto, la ganancia de

los mismos no es un factor crítico. Esto es así porque la información 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.1Amplificador de entrada

Se trata de un amplificador no inversor cuya función es la de adaptar el nivel de la señal

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 tensión, la medida obtenida es de 340 mV., valor que se puede

asumir como aceptable.

Figura 16 – Demodulador.

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

produciéndose una caída de tensión de 0.7 V. Una vez que la tensión alcanza este valor

el condensador comienza a cargarse y la tensión sube hasta el máximo 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 tensión vuelve a superar el umbral de los 0.7 voltios

198

Page 199: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

en el ciclo siguiente. Se pretende que la tensión caiga sólo un 10 % durante el tiempo de

descarga, para lo cual:

exp (−T /2τ )=0 .9

; τ=− 1/2 f

ln 0 .9=125

s

Como = RC, se han escogido los siguientes valores: R =120 K y C = 1nF, con lo que

= 120 s.

El tiempo que tarda la señal en alcanzar el 10 % de su valor una vez finalizado el pulso

es:

t=−τ⋅ln 0 .1=287s que es el 2.8 % de la duración de un bit.

7.3.4.3Regenerador

A la salida del detector de envolvente se aplican dos inversores Trigger-Schmitt en

cascada para regenerar la señal sin invertir la lógica.

A la salida de esta etapa ya tenemos la señal demodulada y disponible.

7.4 Conexión al microcontrolador

De las diferentes posibilidades de conexión al MC68331 sólo vamos a plantear la

conexión del receptor a través del módulo de recepción serie SCI del QSM, para

aprovechar las facilidades que este módulo proporciona, ya que la programación de un

receptor puede llegar a ser laboriosa y compleja, aunque bastante interesante.

La conexión es sencilla. La salida de datos del receptor se conecta a la entrada de datos

serie RXD del microcontrolador.

7.4.1 Programa básico de atención de comunicaciones

Si recordamos el protocolo de comunicación del telemando, se trata de palabras de ocho

bits de los cuales una parte puede reservarse como identificación de dispositivo y la otra

como código de instrucción. La velocidad de transmisión es de 100 baudios y la trama

no contiene bit de paridad.

199

Page 200: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

La trama de datos a recibir tiene la estructura siguiente:

Bit 10 7 0 Bit 1Parada Código de instrucción Identificador Arranque

Tabla 3 – Estructura de la trama de datos.

La aplicación 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 válido 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 comprobación del desbordamiento del buffer, ya que se

entiende que es un programa de prueba y con un tamaño de 500 tramas es suficiente

para comprobar la recepción de ordenes.

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

200

Page 201: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* REGISTROS QSM-QSI *

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

QSMCR EQU $FFFC00 * Configuración del QSM.

201

Page 202: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

QILR EQU $FFFC04 * Configuración del nivel de interrupción.

QIVR EQU $FFFC05 * Configuración del vector de interrupción.

SCCR0 EQU $FFFC08 * Control 0 del SCI determina velocidad de transmisión.

SCCR1 EQU $FFFC0A * Control 1 del SCI para configuraciones varias.

SCSR EQU $FFFC0C * Registro de estado del SCI.

SCDR EQU $FFFC0E * Registro de datos del SCI (RDR y TDR).

PORTQS EQU $FFFC15 * Registro de lectura y escritura del Puerto QS.

PQSPAR EQU $FFFC16 * Asignación de pins como Puerto QS o como QPSI.

DDRQS EQU $FFFC17 * Dirección E/S de los pins del Puerto QS.

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

* CONTROL DEL QSM - SCI *

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

BIT_FE EQU 16 * Bit indicador de error de trama (Frame Error).

BIT_PE EQU 17 * Bit de error de paridad (Parity Error).

TRAMA_NULA EQU $FF * Valor de inicialización antes de recibir trama

ERR_TRAMA EQU $AA * Valor devuelto cuando hay error de trama

ERR_PARIDAD EQU $80 * Valor devuelto cuando hay error de paridad

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

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

* VECTORES DE INTERRUPCIÓN *

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

ORG $110

VECTOR_QSM DC.L LEER_SCI * Vector de interrupción $44

****************************************************************************** * PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

202

Page 203: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

****************************************************************************** * BUFFER DE RECEPCIÓN *

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

ORG $2000

BUFFER DS.B 500

INI_BUFFER:

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

**************************** QSM_CFG *****************************

* Configuración del QSM_SCI *

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

QSM_SCI_CFG

MOVE.W #$008F,QSMCR * Supervisor de arbitrio 15.

MOVE.B #$44,QIVR * Vector de interrupción $44.

MOVE.B #$06,QILR * Nivel de interrupción 6 para el SCI.

MOVE.W #$0A3D,SCCR0 * velocidad de TX/RX de 100 baudios.

RTS

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

************************** RECEPTOR_CFG **************************

* Configura y habilita el módulo receptor del QSM-SCI. Inhabi- *

* lita al tiempo el transmisor al tratarse de una comunicación *

* semi-duplex. *

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

203

Page 204: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

RECEPTOR_CFG

MOVE.W #$0424,SCCR1 * Interrupciones habilitadas para la recepción (RIE)

RTS * tramas de 7 bits + bit de paridad impar RTS

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

* RUTINAS DE CONTROL *

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

************************** LEER_SCI *****************************

* Rutina LEER_SCI de atención a la interrupción del modulo serie*

* El dato recibido se deja disponible en el registro D0 *

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

LEER_SCI

MOVE.L D1,-(A7)

MOVE.L SCSR,D1 * Lectura de los registros de estado y de datos.

* a la vez; se resetean los flags de estado.

* automáticamente.

BTST.L #BIT_FE,D1 * Se comprueba el error de trama.

BNE TRAMA_ERROR

BTST.L #BIT_PE,D1 * Se comprueba el error de paridad.

BNE PARIDAD_ERROR

ANDI.W #$007F,D1 * Nos quedamos con los bits 0 a 6 en D3.

MOVE.W D1,D0 * Copia en D0 el dato bueno.

BRA FIN_LECTURA

TRAMA_ERROR

MOVE.W #ERR_TRAMA,D0

BRA FIN_LECTURA

PARIDAD_ERROR

MOVE.W #ERR_PARIDAD,D0

FIN_LECTURA

MOVE.L (A7)+,D1

RTE

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

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

* PRINCIPAL *

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

ORG $400

PRINCIPAL

204

Page 205: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

BSR INHAB_WDOG * Se inhabilita watchdog

BSR QSM_SCI_CFG * Se configura el QSM

MOVEA.L #INI_BUFFER,A0 * Carga dirección inicio del buffer de datos.

BSR RECEPTOR_CFG * Se activan las interrupciones del receptor

NUEVA_TRAMA

MOVE.W #TRAMA_NULA,D0 * Valor de cuando no se recibe trama.

BUCLE

CMP.W #TRAMA_NULA,D0 * Espera a la recepción de una trama

BEQ BUCLE

CMP.W #ERR_TRAMA,D0 * Comprueba si hay error en la trama

BEQ NUEVA_TRAMA

CMP.W #ERR_PARIDAD,D0 * Comprueba si hay error en la paridad

BEQ NUEVA_TRAMA

MOVE.B D0,(A0)+ * Copia la trama recibida en el buffer.

BRA NUEVA_TRAMA

END

205

Page 206: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Capítulo 8

Interfaz para línea telefónicaEl objetivo de esta interfaz es la utilización del servicio telefónico para transmitir

comandos mediante códigos numéricos a un sistema. De esta forma, gracias al carácter

universal del servicio, se pueden consultar desde cualquier punto las informaciones que

éste proporciona y transmitirle asimismo instrucciones.

8.1 Introducción

El sistema se compone de un circuito de conversación telefónico al que se conecta en un

extremo la línea y en el otro la entrada y la salida de audio. Además se ha incorporado

un circuito decodificador de tonos, que permite reconocer cualquier número que se

pulse. Algo tan sencillo abre un importante abanico de posibilidades, ya que permite

reproducir locuciones, reconocer secuencias de números pulsados e incluso utilizar una

aplicación 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 telefónica.

Haciendo una breve descripción 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 número de

timbres. El gancho no es otra cosa que un conmutador que permite colgar y descolgar

atendiendo a una señal de encendido o apagado. El duplexor se encarga de la conversión

206

Page 207: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

de dos a cuatro hilos, aislando además la línea telefónica del resto de la electrónica. Los

amplificadores son los responsables de la adaptación de niveles entre el duplexor y las

señales de entrada y salida de audio. El detector DTMF o de tonos tiene como fin

decodificarlos dando como resultado un número binario. Por último, mencionar el

circuito de alimentación encargado de filtrar y regular la tensión de alimentación.

Para comprender el funcionamiento de algunos módulos es necesario conocer algunas

especificaciones de la interfaz de línea analógica.

8.2 La línea telefónica

A continuación se describen los parámetros de mayor interés aplicables en el Punto de

Terminación de Red de la línea básica de usuario. Para mayor detalle se recomienda

consultar el documento de Telefónica de España, S.A.U.:

http://www.telefonica. e s /interfaces/do c _pdf/iteca001_v2.pdf

8.2.1 Alimentación en corriente continua

La alimentación consiste en un generador de tensión o de corriente que, a través de una

determinada resistencia o impedancia y de un par simétrico de hilos de cobre, se aplican

transversalmente entre los dos terminales del Punto de Terminación de Red (PTR, en

adelante).

La alimentación puede ofrecerse mediante dos sistemas:

Alimentación con puente convencional de baja resistencia.

Alimentación con limitación de corriente.

8.2.1.1Alimentación con puente convencional de baja resistencia

8.2.1.1.1 Tensión de alimentación en reposo

La tensión en los terminales del PTR, en condiciones de circuito abierto (tensión 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 más usual para las resistencias del puente de alimentación es de 2 x 250

10%. Esta resistencia corresponde con la parte real de la impedancia del circuito de

línea. La resistencia máxima del bucle local de usuario, salvo casos excepcionales, no

supera el valor de 1200 ohmios.

207

Page 208: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

8.2.1.1.2 Máximo consumo de corriente en situación de reposo

La corriente máxima 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 línea en estado de línea tomada

La corriente de bucle viene dada por la Ley de Ohm, I=V/R, siendo R la resistencia

formada por el puente de alimentación, resistencia del bucle local de usuario y

resistencia equivalente del equipo terminal junto con la red interior del usuario.

8.2.1.2Alimentación con limitación de corriente

Es idéntico a lo establecido en el caso de puente convencional de baja resistencia, con la

diferencia de que la corriente a través del PTR durante el estado de línea tomada está

limitada. La limitación de corriente se realiza en un valor comprendido entre 36 y 49,5

mA.

Cuando el equipo terminal demande una corriente inferior al límite, ésta vendrá

determinada por la ley de Ohm.

8.2.1.3Polaridad

La polaridad que se proporciona entre los terminales del PTR no está predeterminada.

Además, es habitual que se produzcan cambios de polaridad durante el establecimiento

y final de la comunicación, ya que es normal que las centrales utilicen el cambio de

polaridad como forma de señalización.

8.2.2 Criterios de estado de la línea

Las corrientes de bucle determinantes de la toma y liberación de la línea en el PTR, se

fijan de acuerdo con los siguientes criterios:

1. En situación 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 situación de bucle abierto, la red interpreta que se ha producido

cierre de bucle cuando la corriente supera los 15 mA.

208

Page 209: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

3. En situación 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 situación 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 máximo a la entrada del PTR

8.2.3.1Nivel medio máximo de transmisión

El nivel medio máximo 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.2Nivel de pico máximo

El nivel de pico máximo 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

línea.

8.2.4 Señal (corriente) de llamada

Es la señal alterna sinusoidal que la red presenta en el PTR de la línea llamada para

indicar la existencia de una llamada entrante.

La corriente de llamada se presenta en el PTR superpuesta a la tensión de alimentación

de corriente continua de la red.

Las características de la señal de llamada medidas en circuito abierto en el PTR se

detallan en la tabla siguiente:

CARACTERÍSTICA REQUISITOS

Frecuencia 25 Hz 3 Hz

Forma de onda Sinusoidal

Tensión alterna (valor eficaz) 75 V 10 %

Resistencia interna del generador de señal de llamada.

200

Tiempo máximo de aplicación 60 s.

209

Page 210: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Cadencia de la señal de llamada

1500 ms 10 % (on) / 3000 ms 10% (off)

Distorsión 5 %

Método de aplicación Superpuesta a la corriente continua

Tabla 1 – Características de la señal de llamada.

8.3 Descripción modular y montaje del sistema

El conjunto del sistema ofrece un punto de conexión al PTR, una entrada y una salida

de audio que permiten conectar un reproductor cualquiera (radiocasete portátil, por

ejemplo) en la entrada y unos auriculares o una grabadora, etc. en la salida. También

lleva acoplado un conector para el control del dispositivo. A través del mismo se

ofrecen y reciben las siguientes señales:

FUNCIÓN SENTIDO

Aviso de llamada Salida

Cierre / apertura del bucle Entrada

Aviso de recepción de tono Salida

Bit 0 - Tono recibido (Bit menos significativo)

Salida

Bit 1 - Tono recibido Salida

Bit 2 - Tono recibido Salida

Bit 3 - Tono recibido (Bit más significativo)

Salida

Tabla 2 – Señales de control.

Los diferentes módulos que componen el sistema se describen a continuación:

8.3.1 Detector de llamada

Este módulo tiene como misión detectar la corriente de llamada en la línea y generar

una señal 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

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

210

Page 211: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

objeto de discriminar la señal de llamada de otras de menor amplitud, como podría ser

la propia conversación. 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 duración 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 señal de 25 Hz.

f c=1

2π RC= 1

2 π⋅104⋅10−6=15 , 92 Hz

Figura 2 – Circuito detector de llamada.

El zener sólo permite el paso de corriente cuando se supera su tensión umbral. Esto

sucede cuando la amplitud de la sinusoide de llamada es superior a la tensión del zener

más las de polarización 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 señal de llamada) generando un tren de pulsos de frecuencia 50

Hz., con aspecto similar al que se muestra en la figura 3.

211

Page 212: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 3 – Impulsos de corriente en el diodo LED.

En el colector del fototransistor se obtiene una señal cuadrada e invertida respecto de la

anterior, como la que podemos observar en la figura 4.

Figura 4 – Tensión 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 tensión en el colector viene dada

por la expresión:

V C=V CC⋅(1−e− t

RC )=5⋅(1−e−t )

De la ecuación se desprende que para la duración de los pulsos (5 ms.) la tensión que

alcanza el colector es de 25 mV.

“El resultado final es una tensión de 5 V. (1 lógico) en estado de reposo y que cambiará a 0 V. (0

lógico) mientras esté presente la corriente de llamada, lo que va a permitir, incluso, contar el

número de timbrazos.”

Para montar este módulo se deberá poner especial cuidado en la polaridad de los

múltiples diodos. Para la prueba basta con alimentarlo y conectarlo a la línea telefónica.

Como su funcionamiento es independiente del resto de módulos, por razones de

comodidad al conectarlo, se recomienda probarlo una vez montados el gancho y el

212

Page 213: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

regulador de tensión. La prueba consistirá en llamar y comprobar el cambio de tensión

en el colector del optotransistor.

AVISO IMPORTANTE: No utilizar nunca el osciloscopio para medir

directamente sobre la línea telefónica, ya que se podría provocar una avería. En caso

de ser necesaria la realización de alguna medida, puede utilizarse un polímetro. El

objetivo principal que se persigue con el uso del optoacoplador es el aislamiento de la

línea telefónica del resto de la electrónica, tanto por razones de seguridad, como para

evitar que un fallo en un lado afecte al otro. También hay que mencionar que no existe

conexión entre la masa a un lado y a otro del optoacoplador.

8.3.2 Alimentación

Todos los módulos 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 máxima que puede proporcionar es de 1,5 amperios y la tensión a la entrada

ha de ser superior a 7 voltios para que funcione correctamente. La elección de 9 V. es

por la existencia de pilas de ese voltaje en el mercado, pero podría 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 conexión.

Figura 5 – Regulador de tensión.

Los tres condensadores de la entrada son: uno cerámico, otro de plástico y el tercero

electrolítico, 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 espúreos a través 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.

213

Page 214: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

8.3.3 Gancho automático

Merece la pena comenzar aclarando el porqué de la denominación “gancho”. El origen

data de los primeros tiempos de la telefonía y hace referencia al gancho donde se

colgaba el auricular finalizada la conversación. Este gancho por el propio peso del

auricular accionaba un conmutador que cortaba la comunicación. En nuestro caso

apenas se reduce a un pequeño relé de tan sólo un par de centímetros cúbicos.

En reposo conecta la línea con el circuito de timbre y al alimentar el relé conmuta al

circuito de conversación. Debido al elevado consumo del relé se utiliza un transistor

para la conmutación. 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 automático.

8.3.4 Duplexor

Este módulo es el responsable de la conversión de dos a cuatro hilos y del aislamiento de la línea telefónica. Véase en detalle el funcionamiento:

Figura 7 – Duplexor

214

Page 215: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Lo primero que se observa es una resistencia y un puente rectificador de diodos. Este

último puede ocasionar algún quebradero de cabeza si no se cae en la cuenta de que su

función no es la de rectificar, sino la de ofrecer una polaridad fija independientemente

de la que presente la línea en todo momento, recuérdese que la polaridad de la línea no

está predeterminada y además puede cambiar durante la conversación.

El diodo zener tiene como fin proteger el resto de la circuitería contra sobretensiones.

La resistencia de 820 junto con la que presenta la línea cuando se encuentra tomada,

limitan, a su vez, la corriente máxima por el zener. El condensador cerámico de 10 nF

eliminará los picos de alta frecuencia no deseados.

El optoacoplador que se observa guarda la clave del funcionamiento de este módulo.

Utiliza un par fotodiodo-fototransistor para cada sentido de la conversación. Es el

responsable de la conversión de dos a cuatro hilos y del aislamiento de la línea

telefónica. Para un correcto funcionamiento del circuito de conversación, debe

polarizarse adecuadamente y presentar una impedancia que garantice el correcto cierre

del bucle.

8.3.4.1Cálculo de la polarización

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

conmutación, la parte real de la impedancia que presenta la línea puede variar desde un

mínimo de 500 cuando la distancia es muy corta (centralitas privadas, por ejemplo) y

un máximo de 1200 como caso peor para distancias muy largas. La resistencia de

carga (RIT) ofrecida por la interfaz telefónica (equipo terminal) ha de ser tal que

funcione correctamente con independencia de la línea a que se conecte.

Se ha partido de las dos condiciones de diseño siguientes:

Un mínimo de corriente de 20 mA para garantizar siempre la apertura

del bucle.

Un máximo de corriente de 30 mA para evitar que la central limite la

corriente.

En los casos límite se tendrá:

La resistencia máxima para garantizar una corriente de bucle superior

a la mínima es:

215

Page 216: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

I L=

V L

RLmax+R IT

≥20 mA

R IT≤V L

20 mA−RLmax=

4820⋅10−3

−1200=1200

La resistencia mínima para garantizar una corriente de bucle inferior

a la máxima es:

I L=

V L

RLmin+R IT

≤30 mA

R IT≥V L

30 mA−R Lmin=

4830⋅10−3

−500=1100

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 parámetros de diseño, que son las resistencias R1 y

R2, y la corriente que circula por el optotransistor y de otros dos de la línea, que son la

parte real de la impedancia de línea, RL y la tensión en circuito abierto VL (generador

equivalente de Thevenin).

R IT=R1+R2(V L

I TRT

−(R1+RL )

V L

I TRT

+R2 )Como una primera aproximación, que por lo general será suficiente para el objetivo que

se pretende, se tomará la siguiente expresión:

R IT=R1+0,4⋅R2

El valor obtenido no va a diferir mucho del real, habida cuenta que tanto los parámetros

de la línea como los de diseño han de tomar unos valores razonables comprendidos

dentro de las cotas de diseño. Por ejemplo, la tensión nominal de línea de 48 V, la

corriente en el TRT de 15 mA, la resistencia de línea de 850 , etc.

Para los valores de R1 = R2 = 820 la resistencia RIT podrá tomar, en función de la

resistencia de la línea, RL, valores comprendidos entre 1060 y 1200 , por lo que la

216

Page 217: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

línea la señal de audio. Se ha fijado una corriente de polarización de unos 15 mA.,

mediante la resistencia de 180 que limita la corriente por su respectivo fotodiodo.

Debe tenerse en consideración 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 tensión en el diodo zener oscilará entre:

4 .2≤V Z≤10 . 6

8.3.4.2Transmisión de la señal

8.3.4.2.1 Recepción de la señal vocal

La señal telefónica se recibe como una corriente eficaz superpuesta a la continua que

recorre el bucle. En la figura 8 se describe el circuito equivalente de señal.

Figura 8 – Circuito equivalente de recepción de señal.

Si se considera que la señal está producida por un generador de corriente, is1, y llega al

PTR con una potencia P1 (100 W aproximadamente), el valor de esta corriente será:

is 1=√ P1

R1+R2

≃√10−4

1640=247

A.

La corriente por el fototransistor es de un 60% aproximadamente y, por tanto, la tensión

en colector es de:

vs1=0 .6⋅RC⋅i s1=0 .6⋅220⋅247⋅10−6=32 mV

Los valores referidos son corrientes y tensiones eficaces. La tensión pico-pico que se

puede medir con un osciloscopio es 110 mVpp.

217

Page 218: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

8.3.4.2.2 Transmisión de la señal vocal

El circuito equivalente de señal para la transmisión se muestra en la figura 9.

Figura 9 – Circuito equivalente de transmisión de señal.

La corriente en la línea iL se modula con la corriente is2 del fototransistor y dependerá de

la parte real de la impedancia de la línea, RL que como modelo se considerará de 600 .

iL=R2

RL+R1+R2

⋅is 2

Para la potencia media máxima de 100 W que se puede inyectar en el PTR con una

impedancia de carga en línea de 600 , la corriente eficaz media en el fototransistor es:

is 2=RL+R1+R2

R2

⋅iLiL=√ P

RL

is 2=600+820+820820

⋅√10−4

600=1 .1

mA

La corriente eficaz máxima en el fotodiodo ha de ser de 1,82 mA. Esta corriente se le

suma a la de polarización del diodo mediante una resistencia de 1K y por tanto la

tensión eficaz máxima a aplicar en este punto será de 1,82V.

8.3.4.3Montaje y prueba del circuito

Este módulo es el más complejo en cuanto al montaje y prueba. Debe cuidarse muy bien

la polaridad de los componentes, ya que puede ser bastante fácil equivocarse.

Supóngase que una vez montado y comprobado el correcto cableado, la conexión y

polaridad de todos los componentes el duplexor sigue sin funcionar. Pues bien, a

continuación 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 señal.

Conectar la línea telefónica y cerrar el bucle con el gancho. Se debe observar en el

218

Page 219: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

osciloscopio una sinusoide de 425 Hz. y unos 100 mV de amplitud. Esta señal es la de

invitación a marcar, por lo que la recepción es presumiblemente correcta (nótese que

sólo está presente durante 20 segundos de una forma continua y durante otro minuto

más 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 tensión 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 pequeña es posible que el circuito esté abierto o que

algún componente se haya quemado o esté defectuoso. Obsérvese

que las resistencias R1 y R2 son de 1W y ½ W respectivamente y si

no se ha respetado han podido quemarse.

Medir la tensión 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 tensión. 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.

Si vale menos de 1 V puede deberse a:

Un cortocircuito en la rama del optoacoplador o en el condensador

cerámico.

El diodo zener está cortocircuitado o se ha montado al revés y

conduce en directa.

El puente de diodos se ha montado mal o está averiado.

219

Page 220: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Para comprobar la rama del optoacoplador pueden seguirse los

siguientes pasos:

Con la línea desconectada, sacar la resistencia R2 y comprobar que

no se ha quemado midiendo su valor de 820 . Sustituir si es

necesario.

Con la línea conectada medir la tensión en R2.

Si vale 0 V el circuito está cortado, probablemente en el fotodiodo.

Compruébense 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 diseño. Abrir la rama y medir la corriente con un amperímetro.

Como se conoce la corriente en la línea (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 relación de transferencia, para ello

medir la tensión en resistencia de 180 que limita la corriente en

el fotodiodo. Calcular la resistencia adecuada.

Medir la tensión en el fotodiodo. Debe ser de 1.2 V

aproximadamente.

Medir con el polímetro la tensión en bornes de la resistencia de

colector del fototransistor de entrada y comprobar que no está

saturado.

Para comprobar la correcta transmisión inyectar una señal de 1 Khz

(o menos) y 2.8 Vpp (1 Vrms) en la entrada. Llamar desde otro

220

Page 221: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

teléfono, cerrar el bucle con la señal CONEC del gancho y se deberá

escuchar el pitido al otro lado. También aparecerá en el colector del

optotransistor de recepción debido a la realimentación que se

produce.

Importante: Pasados 80 segundos la central pasa al estado de línea aparcada,

manteniendo sólo una corriente de supervisión de tan sólo 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 adaptación de las señales. 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. Después se valoraron

otras ventajas como son:

Montaje extremadamente sencillo que no precisa apenas de

componentes externos para funcionar en condiciones normales.

Funciona con alimentación asimétrica a 5 V.

Éstas motivaron que se utilizase también para la etapa de entrada, sobre todo por la

alimentación, ya que el sobrecoste que implica frente a un operacional convencional se

ve ampliamente compensado al no tener que montar una fuente de alimentación

simétrica.

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.

221

Page 222: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 10 – Amplificadores de entrada y salida.

8.3.6 Detector de tonos (DTMF)

La señalización de usuario a la red se puede realizar de dos formas:

Mediante señalización a impulsos consistentes en aperturas y cierres

del bucle local con una duración 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 señalización a multifrecuencia por aplicación de pares de

tonos (DTMF, Dual Tone MultiFrecuency) de características

especificadas por ETSI en el documento ETR 206 [5].

La señalización a multifrecuencia consiste en transmitir a través 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 señalizar

un total de 16 dígitos, que son “1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *, #, A, B, C, D”, según la

especificación ETSI ETR 206 [5]. Por el momento, en la red de Telefónica de España

S.A.U., no se utilizan los caracteres A, B, C y D.

222

Page 223: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 11 – Croquis de un teclado DTMF con las frecuencias asociadas.

Aprovechando la capacidad de los aparatos de teléfono actuales de generar la

señalización a multifrecuencia se ha incorporado en la interfaz de línea telefónica un

receptor de tonos del fabricante MITEL modelo MT8870. El esquema de conexión

propuesto por el fabricante se muestra en la figura 12.

Figura 12 – Receptor y decodificador de tonos.

La señal procedente del módulo de amplificación 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 código del número recibido está disponible en la salidas Q1-Q4. En la tabla 3 puede

consultarse la correspondencia entre los dígitos marcados, los tonos y el código binario.

Esta facilidad agregada a la interfaz abre un importante abanico de posibilidades. Se

pueden implementar aplicaciones de control remoto, que tras la identificación del

usuario mediante un código, permitan activar o desactivar dispositivos, o bien un

sistema de telepago con tarjeta, etc.

223

Page 224: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

fbaja falta Nº Q4 Q3 Q2 Q1

697 1209 1 0 0 0 1

697 1336 2 0 0 1 0

697 1477 3 0 0 1 1

770 1209 4 0 1 0 0

770 1336 5 0 1 0 1

770 1477 6 0 1 1 0

852 1209 7 0 1 1 1

852 1336 8 1 0 0 0

852 1477 9 1 0 0 1

941 1209 0 1 0 1 0

941 1336 * 1 0 1 1

941 1477 # 1 1 0 0

697 1633 A 1 1 0 1

770 1633 B 1 1 1 0

852 1633 C 1 1 1 1

941 1633 D 0 0 0 0

Tabla 3 – Codificación de las señales DTMF.

8.4 Ejemplos de aplicaciones

8.4.1 Rutinas básicas de gestión del interfaz

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

* REGISTROS SIM *

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

SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF).

SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08).

RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware).

PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E.

PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior.

DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin.

PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS).

PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F.

PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior.

DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin.

PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS).

PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F).

PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000).

224

Page 225: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema

* como es el caso del Watchdog. ($40 anula watchdog).

SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado.

CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de

CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.).

PORTC EQU $FFFA41 * Registro de escritura en el puerto C.

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

* REGISTROS GPT-PWM *

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

GPTMCR EQU $FFF900 * Configuración del GPT.

ICR EQU $FFF904 * Configuración de interrupciones del GPT.

DDRGP EQU $FFF906 * Determina el sentido del puerto GP.

PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP.

OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC.

OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC.

TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI.

PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI.

PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI.

TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1.

TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2.

TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3.

TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC.

TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2.

TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3.

TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4.

TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC).

TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida.

TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC.

TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC.

TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER.

TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC.

TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER

CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM.

PWMC EQU $FFF925 * Configuración del PWM.

PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo)

PWMCNT EQU $FFF928 * Registro del contador del PWM.

PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA.

225

Page 226: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB.

PRESCL EQU $FFF92C * Guarda el valor del multiplicador del GPT.

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

* TIPOS DE RETARDO *

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

CORTO EQU $03FF * Del orden de 100us.

MEDIO EQU $03FF * Del orden de 1ms.

LARGO EQU $BFFF * Del orden de 5ms.

RETARDO EQU $6FFF * Se usa para el avance de caracteres.

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

* CONSTANTES DE INTERÉS *

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

NUM_TIMBRES EQU 4

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

* CONTROL DEL INTERFAZ TELEFÓNICO *

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

PUERTO EQU PORTF * Puerto de comunicación con el interfaz.

BIT_TONO EQU 4 * Se pone a 1 durante un tiempo al recibirse un tono.

BIT_TIMBRE EQU 5 * Se pone a 1 cuando aparece el timbre de llamada.

BIT_GANCHO EQU 6 * 0 colgado y 1 para descolgar.

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

* VECTORES DEL RESET *

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

ORG $0

PILA_RESET DC.L FIN_PILA

PC_RESET DC.L PRINCIPAL

****************************************************************************** * PUNTERO DE PILA *

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

ORG $4000

PILA DS.L 200

FIN_PILA:

226

Page 227: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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

* SUBRUTINAS *

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

ORG $1000

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

* CONFIGURACION DEL HARDWARE DEL MICRO *

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

*************************** INHAB_WDOG ****************************

* Inhabilita el Watchdog que es una función de monitoriración del *

* sistema para detectar la entrada en un bucle infinito. *

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

INHAB_WDOG:

MOVE.B #$40,SYPCR * Inhabilitamos WatchDog

RTS

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

*************************** PORT_F_CFG ****************************

* Con esta rutina se configura el puerto F con el que se comunica *

* con el interfaz telefónico. *

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

PORT_F_CFG

MOVE.B #$40,DDRF * PF0..PF3 entradas, PF4..PF7 salidas.

MOVE.B #$00,PFPAR * Configura el registro de control del puerto F.

MOVE.B #$00,PORTF

RTS

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

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

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

***************************** DELAY *******************************

* Produce un retardo cuya duración viene determinada por el valor *

* almacenado en el registro D1. *

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

DELAY

SUB.L #1,D1

BNE DELAY

RTS

227

Page 228: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

************************* LLAMADA_ESPERAR *************************

* Esta rutina se queda esperando hasta que se activa el bit de *

* llamada y descuelga tras un número de timbrazos definido por la *

* constante NUM_TIMBRES. *

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

LLAMADA_ESPERAR

MOVE.L D0,-(A7)

MOVE.L #NUM_TIMBRES,D0

NO_HAY_TIMBRE

BTST.B #BIT_TIMBRE,PUERTO

BNE NO_HAY_TIMBRE

HAY_TIMBRE

BTST.B #BIT_TIMBRE,PUERTO

BEQ HAY_TIMBRE

SUBQ #1,D0

BNE NO_HAY_TIMBRE

BSET.B #BIT_GANCHO,PUERTO

MOVE.L (A7)+,D0

RTS

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

***************************** COLGAR ******************************

* Esta rutina cuelga desactivando el relé del gancho automático. *

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

COLGAR

BCLR.B #BIT_GANCHO,PUERTO

RTS

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

************************** TONO_RECIBIR ***************************

* Esta rutina lee el decodificador de tonos y devuelve a través *

* del registro D0 el tono recibido. *

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

TONO_ESPERAR

CLR.L D0

ESPERAR_TONO

BTST.B #BIT_TONO,PUERTO

BNE ESPERAR_TONO

MOVE.B PUERTO,D0

228

Page 229: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ANDI.B #$0F,D0

RTS

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

************************* DRIVER_INTER_TEL ************************

* Esta rutina realiza el servicio indicado a través del registro *

* D7 con un número ordinal. Para llamar a la rutina de servicio *

* se coloca el número 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 SERVICIO3

BRA FIN

SERVICIO1

BSR LLAMADA_ATENDER

BRA FIN

SERVICIO2

BSR COLGAR

BRA FIN

SERVICIO3

BSR TONO_RECIBIR

FIN

RTE

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

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

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

ORG $400

PRINCIPAL

BSR INHAB_WDOG

BSR PORT_F_CFG

MOVE.B #00,PUERTO

NUEVA_LLAMADA

229

Page 230: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

MOVE.B #2,D7 * Llamada al servicio colgar

TRAP #0

MOVE.B #1,D7

TRAP #0 * Descuelga cuando entra una llamada

BUCLE

MOVE.B #3,D7

TRAP #0 * Recibe un tono y lo guarda en D0

CMP.B #C,D0 * Comprueba si es la tecla “#”

BEQ NUEVA_LLAMADA * Si lo es cuelga y espera una nueva llamada

BRA BUCLE * Si no lo es espera recibir otro tono

END

230

Page 231: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ConclusionesAl consistir el proyecto en el diseño de prácticas guiadas para el montaje de interfaces y

dispositivos, las conclusiones están determinadas por cada una de éstas.

El montaje de los circuitos electrónicos de cada práctica supone una dedicación y

esfuerzo razonable por parte de los alumnos, además de ser de bastante utilidad y recibir

muy buena aceptación. Los diferentes circuitos varían desde un mínimo de complejidad,

como son el teclado, el display y los módulos de transmisión por radio, hasta un

máximo en el caso del transmisor y receptor de infrarrojos y el interfaz telefónico.

Cuestión 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 crítico por ser

insustituible, de modo que cualquier daño 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 realización de las prácticas de la asignatura de LSED (Laboratorio de

Sistemas Electrónicos digitales). Los resultados de los montajes fueron:

Tres placas no llegaron a funcionar después de montadas por causas

desconocidas.

Dos placas se quemaron durante la fase de montaje.

Tres más se quemaron durante el desarrollo de la prácticas.

En la mayoría de los casos los alumnos necesitaron un apoyo muy

importante por parte del coordinador de la asignatura D. Juan Manuel

Montero Martínez.

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 realización de montajes tan complejos, más aún

cuando existen elementos críticos insustituibles.

231

Page 232: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Apéndice I

Técnicas de ConexionadoPara la interconexión de las componentes que van a constituir nuestros diseños,

utilizaremos dos técnicas:

I.1 Soldadura de estaño

Si describimos brevemente los pasos a seguir:

1. Retirar la longitud adecuada de aislante del hilo de cobre.

2. Estañar la punta del hilo desnudo (no si se dispone de hilo estañado).

3. Soldar, calentando con el soldador unos instantes y después

aplicando el hilo de estaño con decapante hasta fundir.

4. Dejar enfriar.

Debe tenerse especial cuidado en no calentar en exceso los componentes para evitar su

deterioro. También es importante cuidar la colocación 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 precisión en la soldadura del

cableado para evitar cortocircuitos indeseados. Ello hace que la técnica 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 específica, tomando al final la

conexión un aspecto similar a un muelle.

I.2.1 Descripción de la herramienta

El “wrappinador” podría asemejarse a un bolígrafo acabado en ambos extremos en

sendas puntas cilíndricas. La más larga se usa para enrollar y la corta para desenrollar.

Ambas puntas presentan un agujero central donde se inserta el terminal sobre el que se

232

Page 233: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

enrolla o desenrolla. El extremo largo presenta además otro orificio descentrado más

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, además, en su parte central una

cuchilla peladora de cable.

I.2.1.1 Procedimiento de conexión:

1. Pelar de 20 a 25 mm., ayudándonos 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 presión excesiva para que no se

monten las espiras.

Las principales ventajas son la facilidad, flexibilidad y fiabilidad del cableado, pudiendo

corregirse fácilmente errores de conexionado. Como inconvenientes cabe destacar la

necesidad de usar zócalos y terminales específicos, y el elevado precio de la

herramienta.

Hay componentes a los que no se puede aplicar esta técnica y que necesariamente hay

que soldarlos; por ello, emplearemos ambas técnicas, dejando la soldadura sólo para

aquellos casos en que su uso sea más adecuado.

233

Page 234: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Apéndice II

Estudio de viabilidad de la obtención de alimentación para un sistema de telemando telefónico de la propia líneaEn primera instancia precisamos conocer las características que, a nivel eléctrico,

presenta la línea de abonado. En este momento disponemos de las especificaciones de la

antigua CTNE para la línea 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 conmutación sigan respetando las mismas por razones de

compatibilidad tecnológica, hipótesis bastante razonable puesto que el servicio y los

terminales telefónicos no han sufrido variación sustancial.

II.1 Especificaciones del bucle de abonado

De la especificación 620.006 de la CTNE sobre los requisitos que deben cumplir las

centrales en cuanto a la línea de abonado ordinaria (LAO), extraemos aquellas

características que son de nuestro interés.

II.1.1 Características en corriente continua

Alimentación de 48V. nominales a través de un puente de 2 x 250

10% o con circuito limitador de corriente fijado a 45mA. 10%

para corrientes inferiores al límite y con tensión dependiente de la

resistencia de carga de la línea.

Resistencia del bucle completo con aparato descolgado de 1800

máximo.

Resistencia del par de hilos comprendida entre 0 y 1200.

Características del par de hilos como las de un cable subterráneo de

0.405mm:

Impedancia característica a 800Hz de 150 (1-j) con 286/Km y

50nF/Km.

Dos posibles estados del bucle:

234

Page 235: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 especificación Nº 315.022 de la CTNE sobre estos aparatos, nos interesa sólo:

II.2.1 Características en corriente continua

En estado colgado la impedancia ha de ser superior a 100K, en

conversación no será superior a 600.

II.3 Hipótesis de partida

A partir de las especificaciones efectuamos algunas suposiciones que nos permiten

obtener una primera aproximación:

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 máxima que

podremos extraer es de 7.25mA.

Como el sistema de telemando está pensado para utilizarse en entornos domésticos o

pequeñas oficinas, lo normal será que la línea 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á

inferior a 500A. Respetando el caso común de tener dos aparatos conectados a la línea,

la máxima 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=280 mW

235

Page 236: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

II.3.2 Estado de bucle cerrado

En este estado consideraremos:

La única carga en continua sobre la línea es la que origina el circuito

de extracción de corriente, lo que significa que el muestreo e

inserción de señal se hace con una impedancia en continua infinita

(muy alta).

El circuito deberá ser inmune a la polaridad de la línea, y

comportarse como una carga resistiva de 600.

Bajo estas hipótesis, la potencia disponible en bucle cerrado será:

PC=V C⋅IC=R⋅IC2 =600⋅(48

600+2⋅500 )=1 .14 W

II.3.3 Eficiencia de la fuente

Partimos de la hipótesis de una fuente de alto rendimiento. Según la documentación

consultada, tomamos como referencia el regulador conmutado MC34129, cuyo diseño

es específico 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 aplicación será:

Bucle abierto:

PBA=η⋅PA=0 .75⋅280=210 mW

Bucle cerrado:

PBC=η⋅PC=0 .75⋅1140=855mW

II.4.1 Planteamiento general de la solución

Disponemos de un equipo electrónico (Interfaz + Microcontrolador), con dos modos de

funcionamiento: espera (standby) y activo (run). En el primer modo, el equipo tiene un

consumo mínimo de potencia, Pmin, con la única función de escuchar la línea en espera

de una llamada. Cuando ésta se recibe, el detector de llamada envía una señal de

236

Page 237: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

activación y el sistema pasa al modo activo, en el que tiene plena capacidad de

operación y un consumo de potencia Pmax.

Para que el sistema pueda funcionar de forma autónoma alimentándose a través de la

línea, su consumo medio deberá ser inferior a la energía 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 módulo que almacene toda la energía disponible para que nuestro equipo

vaya extrayéndola según precise. El primer requisito que debe cumplir el sistema para

que haya almacenamiento neto es que Pmin < PBA. Además deberá verificarse el

siguiente balance energético:

Energía consumida Energía suministrada

Si partimos de la suposición inicial de que el único tráfico que soporta la línea es el

asociado a la aplicación de telemando y que su valor medio en un periodo (T) de un día

(24 horas) es ‘a’, las energías puestas en juego son:

1. Energía consumida = [(1-a)Pmin + aPmax]T

2. Energía suministrada = [(1-a)PBA + aPBC]T

El balance energético es una función del tráfico soportado y habrá un valor umbral por

encima del cual no se cumple.

El tráfico máximo soportado es:

[(1-a)Pmin + aPmax]T [(1-a)PBA + aPBC]T

a(Pmax - Pmin + PBA - PBC) PBA - Pmin

a≤PBA -Pmin

(Pmax+PBA )−(PBC+Pmin )

Como no disponemos de datos reales de consumo del equipo estableceremos unos márgenes razonables para el funcionamiento del mismo:

50mW Pmin 100mW

5W Pmax 10W

En el caso peor, en que Pmin = 100mW y Pmax =10W, el tráfico máximo soportado es:

amax = 0.012 Erlang,

237

Page 238: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

En el otro extremo, Pmin = 50mW y Pmax =5W, obtendremos un tráfico máximo aceptable

de:

amax = 0.037 Erlang.

Por tanto, dependiendo de las medidas reales de consumo que efectuemos, tendremos un

balance energético favorable dentro de los siguientes márgenes de tráfico ofrecido:

a amax

0.012 amax 0.037

Los valores entre los que se mueve amax se corresponden con el tráfico típico de un

usuario doméstico que no accede a la red Internet.

Las funciones de telemando en un entorno doméstico generan un tráfico muy pequeño,

ya que estaríamos hablando de acciones como conectar o desconectar la calefacción,

aire acondicionado, alarmas, electrodomésticos, y, por tanto, verificarían los requisitos

de tráfico.

También se podría pensar en nuevas funciones como la telemetría, proporcionando el

conjunto de mediciones para las que se haya diseñado cada vez que se llama al equipo.

Una aplicación podría ser la de pequeñas estaciones meteorológicas.

En cuanto al tráfico permitido y, siempre que la complejidad no elevase el consumo del

equipo por encima de los márgenes especificados, podría llegar a utilizarse para

funciones de mensajería doméstica (contestador automático).

II.4.2 Dimensionado de la batería

A la hora de escoger el tamaño de la batería debemos considerar el modo en el que se va

a usar el dispositivo. El caso peor sería aquél en que todo el consumo se realiza en una

única vez de forma continuada y el resto del día se recarga la batería; por el contrario, el

caso mejor sería aquél en que el consumo se hace de forma equiespaciada con una

pequeña duración del mismo.

Veamos dos ejemplos para ilustrar lo dicho: queremos comparar la capacidad que

requerirían sendas baterías para alimentar un equipo de 6W que soporta un tráfico

medio diario de a = 0,005 < amax , en los casos:

a) Un único consumo

238

Page 239: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

En este caso la operación del telemando dura 24 60 0.005 = 7.2 minutos y

la energía consumida es 67.2 / 60= 720 mWh.

b) Consumos equiespaciados de duración 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 operación de telemando cada 100 minutos. Como el tráfico

está por debajo del umbral, la batería se recarga completamente entre cada

par de operaciones. La energía consumida en cada operación es 630 / 3600

= 50 mWh.

Como podemos observar, en el primer caso precisamos una batería con una capacidad

del orden de 15 veces superior. Otro parámetro fundamental para elegir la batería

adecuada es la corriente máxima 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 solución en cuanto a complejidad.

Dependiendo de la aplicación 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 alimentación. Por

ejemplo, si estamos diseñando un teléfono puede ser importante obtener la alimentación

de la propia línea y no condicionar su uso a la disponibilidad de un enchufe adicional.

En el caso de un equipo de telemetría aislado también puede merecer la pena el aumento

de complejidad, frente al coste de llevar una línea de alimentación al punto de medición.

Otro ejemplo podría ser el de un programador para calefacción o aire acondicionado que

permita la conexión/desconexión a través del teléfono. Si éste va incorporado en el

aparato, es mejor alimentarlo convencionalmente ya que disponemos de otra

alimentación alternativa, pero si se comercializa como accesorio aislado habría 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

entorno doméstico la operación de cambiar las pilas una o dos veces al año es más

fácilmente aceptada que la de colocar un enchufe cerca.

239

Page 240: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Apéndice III

Estudios previos para el desarrollo de un módem de red eléctricaTal y como se adelantó en la introducción, ésta es una solución muy interesante y por

ello ha sido objeto de algunos estudios. Cualquier dispositivo sensor o actuador remoto

necesita de una alimentación eléctrica. Salvo aquellos diseños cuyo consumo sea muy

pequeño y puedan ser alimentados con pilas, lo normal será tomar la alimentación de la

red. Pues bien, si existe la necesidad de una conexión física a la red eléctrica, parece

razonable utilizarla como medio de transmisión. El prototipo no se ha llevado a cabo

debido a que no se han resuelto los problemas de seguridad eléctrica de una forma

satisfactoria.

III.1 Introducción

En el mercado existen algunos circuitos integrados que implementan la función de

modem para red eléctrica y que se pueden utilizar para la construcción de algún

prototipo.

En la tabla 1 se detallan los mismos:

REFERENCIA FABRICANTE DENOMINACIÓN PRECIOPL513/TW523 X-10 Inc. Interfaz de línea eléctrica -----------------

LM1893 National Transceptor para línea de alimentación 18,30 €TDA5051A Philips Modem para automatización doméstica 13,40 €

Tabla 1 – Dispositivos para la comunicación a través de la red eléctrica.

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 documentación técnica necesaria.

El circuito TDA5051 de Philips es una buena solución que permite la

comunicación full-duplex con un precio bastante asequible. Utiliza

una modulación ASK a 132 Khz y soporta una velocidad de

transmisión de hasta 1200 baudios. La tensión de alimentación es de

5V. El inconveniente que presenta es que sólo se fabrica con

240

Page 241: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

encapsulado SMD y sería necesario encargar placas con el chip

montado, encareciendo así el conjunto.

El circuito LM1893 de National permite la comunicación full-duplex.

Utiliza una modulación FSK, por lo que presenta una buena

inmunidad al ruido y permite velocidades de transmisión 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 tensión de alimentación se admite en un margen entre 15 y 30 V.

Se fabrica con el encapsulado estándar 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 Módem para red eléctrica

Debido a la dificultad de conseguir estos circuitos, se pensó en la posibilidad de diseñar

un modem utilizando componentes discretos.

Entre los diferentes aspectos que dificultan el desarrollo de un sistema de

comunicaciones a través de la red eléctrica, el ruido presente en el canal es el más

importante. Los diferentes elementos conectados la red, como motores, lámparas

fluorescentes, reguladores a base de tiristores, apagados y encendidos de interruptores

etc., generan ruido de diferentes características, como son el ruido impulsivo y el ruido

tonal.

Para comunicar a través de la red eléctrica lo haremos modulando una señal a una

frecuencia lo suficientemente alejada de la propia de la red y de los ruidos típicos de

ésta. Para determinar la frecuencia de transmisión más adecuada sería necesario

caracterizar tanto el ruido de la red como la propia línea eléctrica. 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 modulación en

frecuencias que oscilan entre los 50 Khz y los 150 Khz, siendo usual el uso de una

frecuencia de entre 125 y 135 Khz. Se ha optado, a partir de estos datos, por utilizar una

241

Page 242: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

frecuencia de 130 Khz considerando que los fabricantes han realizado los estudios

suficientes para determinar su adecuación, sin perjuicio de que, de una caracterización

completa del medio de transmisión, resultase más conveniente la utilización 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 más sencillo de implementar y

presenta la ventaja de que la información 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 señal no van a afectar a la información,

siempre y cuando se mantengan dentro de unos límites. La amplitud de la señal que se

aplicará a la red eléctrica es de 1 Vrms., que es la que aplica el fabricante Philips en la

modulación ASK que implementa el circuito TDA5051.

Al no existir una caracterización del medio de transmisión es difícil 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 según los resultados.

La conexión de un circuito a la red eléctrica conlleva un importante problema de

seguridad eléctrica. Trabajar con un prototipo de laboratorio en el que los terminales

están al aire con tensiones de red supone un peligro y un riesgo que es necesario

eliminar. El circuito de acoplo a la red eléctrica debe aislar la parte de transmisión 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 tensión de red

podría pasar a nuestro circuito con el consiguiente peligro de manipulación. Para poder

disponer de una adecuada seguridad es necesario intercalar un transformador de

aislamiento y separar físicamente la parte de red colocándola en un circuito aparte

debidamente aislado, de modo que el circuito que se manipula recibe la salida del

transformador de aislamiento.

242

Page 243: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 modulación que genera una onda cuadrada. La forma de modular la

señal en banda base es mediante la conmutación ON/OFF del oscilador. A continuación

un amplificador ajustable para la adaptación de nivel de la señal y por último se filtra la

señal para que se parezca bastante a un tono puro y se inyecta en la red a través del

separador de red.

III.2.2 Estructura de bloques del receptor

Figura 2 – Diagrama de bloques del receptor.

En recepción, la señal que llega del separador de red se filtra para dejar sólo la banda de

interés. Antes de entrar en el demodulador se procede a una adaptación de nivel. La

demodulación se realiza mediante un detector de envolvente y, por último, se hace pasar

la señal por dos inversores con histéresis (Schmitt-Trigger) para conformar la señal.

III.2.3 Estructura de bloques de un conjunto transceptor

La necesidad de disponer en un mismo punto de un transmisor y un receptor para

transmitir comandos y recibir confirmaciones o viceversa es algo bastante común.

Cuando se envía un comando a un actuador remoto es necesario que éste confirme la

recepción del mismo, ya que, de no ser así, el sistema tendría siempre una incertidumbre

sobre la ejecución o no del mismo. Tan sólo en algunos dispositivos, como pueden ser

los de telemetría con envío periódico de medidas, no se precisa de confirmación ya que

es el propio sistema el que detecta el problema cuando transcurren varios periodos sin

haber recibido la medida correspondiente.

243

Page 244: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Como el medio es compartido por los dos sentidos de transmisión, si se quiere

implementar una comunicación full duplex será necesario multiplexar las señales.

Afortunadamente para la mayoría de las aplicaciones domóticas con una comunicación

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 común el separador de red y el filtro paso banda. Por ello, se propone

compartir estos dos módulos utilizando un conmutador electrónico que conecte

alternativamente el filtro y el separador de red a cada semicircuito.

Figura 3 – Diagrama de bloques del transceptor semi-duplex.

III.3 Descripción del transceptor

Figura 4 – Transceptor semi duplex para red eléctrica.

244

Page 245: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

La solución propuesta está contenida en el esquema general de la figura 3. Cada uno de

los módulos que lo forman se describen en su correspondiente apartado.

III.3.1 Módulos comunes

Los módulos compartidos por el transmisor y el receptor son el separador de red, el

filtro paso banda y el conmutador.

III.3.1.1 Separador de red

Durante el montaje y manipulación de este módulo debe ponerse especial cuidado ya

que recibe directamente la tensión de la red. Este módulo es necesario montarlo en un

circuito aparte y proceder a su aislamiento introduciéndolo en una caja de plástico o

similar.

Figura 5 - Circuito separador de red.

El transformador es el elemento que aporta el adecuado aislamiento eléctrico al separar

físicamente 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 señal modulada a 130 Khz.

También cuenta con otros elementos de protección, 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 tensión de red. La

frecuencia de corte de la red LC es:

Un filtro paso alto formado por un circuito LC paralelo a la salida del

transformador con una frecuencia de corte de 107.3 Khz.

245

f c=1

2π √LC=33 . 85 Khz

Page 246: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Un diodo zener de 5 V. para proteger de cualquier sobretensión de la

red que no haya sido eliminada por los anteriores filtros.

Con todo esto el circuito es capaz de garantizar la transmisión de las señales de interés

garantizando unos niveles de aislamiento y seguridad adecuados.

III.3.1.2 Filtro paso banda

Para el filtrado paso banda se ha optado por un filtro de segundo orden (estructura de

Rausch).

Figura 6 – Filtro paso banda.

Las características vienen dadas por las expresiones siguientes:

III.3.1.3 Conmutador

Para poder compartir el filtro y el separador de red es necesario conmutar la posición

del filtro para que, en el caso del receptor, reciba la señal de la red y entregue la señal

filtrada al adaptador de nivel del receptor para su demodulación, y en el caso del

transmisor reciba la señal del modulador y la entregue al separador para su inserción en

la red. Se va a utilizar el circuito integrado CD4053 que es un switch bidireccional que

por su configuración puede usarse como conmutador de tres terminales, uno de ellos

común.

246

R1=100⋅R2Q=R3

2√R2 R3

=5f c=1

2π⋅C√R2 R3

=132. 6 Khz

Page 247: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 7 – Diagrama de bloques del CD4053 (extraído del catálogo de National).

Este circuito va a permitir controlar el modo de funcionamiento con una única señal

TX/RX aplicada a los switches.

III.3.2 Módulos del transmisor

Los módulos de la parte de transmisión 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 configuración aestable. Como la señal

generada es una onda cuadrada, es necesario su posterior filtrado para conseguir algo

parecido a un tono senoidal.

247

Page 248: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Figura 8 – Modulador.

III.3.2.2 Adaptador de nivel

Como el 555 genera una señal con amplitud suficiente es necesario incorporar un

atenuador formado por un simple divisor de tensión variable conectado a un seguidor de

tensión.

III.3.3 Módulos del receptor

Figura 9 – Modulador.

III.3.3.1 Adaptador de nivel

El adaptador de tensión es un amplificador no inversor con una ganancia de 30dB con

un divisor variable de tensión a la entrada. Tiene por objeto ajustar el nivel óptimo para

el detector de envolvente usado para la demodulación de la señal.

III.3.3.2 Demodulador

La demodulación se hace con un detector de envolvente basado en un rectificador de

media onda con carga RC. Para que la tensión caiga sólo un 10 % durante el tiempo de

descarga debe tener una constante de tiempo de:

248

Page 249: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

τ=− 1/2 fln 0 .9

=36 .5 μs

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 señal en alcanzar el 10 % de su valor una vez finalizado el pulso

es:

t=−τ⋅ln 0 .1=91s que es el 4.5 % de la duración de un bit.

III.3.3.3 Conformador de señal

Para la conformación de la señal se aplican dos inversores con histéresis 74LS14 para

no invertir la lógica de la señal.

III.4 Observación finales

No ha sido posible encontrar en tiendas de componentes transformadores adecuados

para el aislamiento de la línea. El Newport 76250 se podía adquirir bajo pedido mínimo

de 50 unidades. Se pensó en la posibilidad de realizar el aislamiento por filtrado pero no

parecía adecuado para unas prácticas de laboratorio debido al peligro que entrañaba.

249

Page 250: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

Bibliografía

Los siguientes libros, manuales de usuario, artículos y catálogos, ordenados por orden

alfabético, han sido utilizados como documentación de consulta y/o referencia en la

realización de este PFC:

[Córdoba, 1999]: R. de Córdoba, “Temporizador de Propósito 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 Rábanos, “Transmisión por Línea y Redes”. Madrid:

E.T.S.I. Telecomunicación, 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

programación en ensamblador”. Madrid: Anaya Multimedia, 1989.

[Mata, 1999]: N.G. Mata, Filtros de Onda Acústica Superficial “Saw”. Universidad

Tecnológica Nacional – F.R. Bahía Blanca - Departamento Electrónica – Cátedra de

Electrónica Aplicada III.

[Montero, 1999]: J.M. Montero Martínez, “Módulo de Integración de Sistemas: SIM”,

1999.

[Motorola #1, 1996]: “MC68331 User´s 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

[Sánchez, 1994]: D. Sánchez Maqueda, “Domótica: Tecnología y Calidad de Vida”.

Apfelsine, S.L. Montajes e Instalaciones, 1994. http://www.energuia.es

250

Page 251: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

[Telefónica, 2001]: “Red Telefónica Pública con Conmutación. Interfaz de Línea

Analógica”. Características Técnicas de las Interfaces de Telefónica de España, S.A.U.

http://www.telefonica.es/interfaces/doc_pdf/iteca001_v2.pdf

251

Page 252: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

ÍNDICE DE CONTENIDO

1. TELECONTROL Y MICROCONTROLADORES................................................1

1.1 INTRODUCCIÓN..............................................................................................................................1

1.1.1 SERVICIOS DOMÓTICOS...............................................................................................................4

1.1.1.1 Gestión del sistema de calefacción y refrigeración...............................................................4

1.1.1.2 Estadísticas de consumo........................................................................................................4

1.1.1.3 Control de las tomas eléctricas.............................................................................................4

1.1.1.4 Control de las persianas y toldos..........................................................................................5

1.1.1.5 Control de la iluminación exterior........................................................................................5

1.1.1.6 Control del riego en jardín y jardineras................................................................................5

1.1.1.7 Gestión de la piscina..............................................................................................................5

1.1.1.8 Gestión de la alarma antiintrusión........................................................................................5

1.1.1.9 Control de accesos.................................................................................................................5

1.1.1.10 Gestión de la alarma médica/pánico................................................................................6

1.1.1.11 Gestión de la alarma de incendio.....................................................................................6

1.1.1.12 Gestión de la alarma de inundación.................................................................................6

1.1.1.13 Gestión de la alarma de monóxido de carbono................................................................6

1.1.1.14 Supervisión de la temperatura del congelador.................................................................6

1.1.1.15 Transmisor telefónico.......................................................................................................6

1.1.1.16 Distribución de audio.......................................................................................................7

1.1.2 LAS REDES DE COMUNICACIONES...............................................................................................7

1.1.2.1 Comunicación alámbrica.......................................................................................................8

1.1.2.1.1 Cableado específico.....................................................................................................................8

1.1.2.1.2 Utilización de la red eléctrica......................................................................................................8

1.1.2.2 Comunicación inalámbrica....................................................................................................9

1.1.2.2.1 Transmisión por radio.................................................................................................................9

1.1.2.2.2 Transmisión óptica por infrarrojos..............................................................................................9

1.1.3 SISTEMAS BASADOS EN UN MICROCONTROLADOR......................................................................9

1.1.3.1 El microcontrolador Motorola MC68331.............................................................................9

1.1.4 OBJETIVOS.................................................................................................................................11

2. MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN

EL MICROCONTROLADOR MOTOROLA 68331............................................12

2.1 ANTECEDENTES...........................................................................................................................12

2.2 INSTRUCCIONES DE MONTAJE...............................................................................................13

2.2.1 MICROCONTROLADOR...............................................................................................................14

2.2.2 REGULADOR DE TENSIÓN..........................................................................................................15

2.2.3 REPLANTEO GENERAL DEL CIRCUITO........................................................................................16

V

Page 253: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.2.4 CIRCUITO DE RELOJ...................................................................................................................16

2.2.5 FILTROS DE RELOJ DEL SISTEMA...............................................................................................17

2.2.6 CIRCUITO DE CONFIGURACIÓN DEL MICRO...............................................................................18

2.2.7 RESET DEL SISTEMA...................................................................................................................19

2.2.8 RESISTENCIAS DE PULL-UP........................................................................................................21

2.2.9 ALIMENTACIÓN DEL MICROCONTROLADOR..............................................................................22

2.2.10 PRUEBA DE FUNCIONAMIENTO..................................................................................................22

2.2.11 COMUNICACIÓN BDM (BACKGROUND DEBUG MODE).............................................................23

2.2.12 MEMORIA..................................................................................................................................26

2.2.13 COMUNICACIÓN SERIE...............................................................................................................27

2.3 DESCRIPCIÓN DE FUNCIONAMIENTO..................................................................................30

2.3.1 MÓDULO DE INTEGRACIÓN DE SISTEMAS (SIM).......................................................................30

2.3.1.1 Terminales del SIM..............................................................................................................31

2.3.1.2 Subsistema de configuración y protección..........................................................................32

2.3.1.2.1 Ubicación de los registros en memoria.....................................................................................32

2.3.1.2.2 Configuración tras el Reset........................................................................................................32

2.3.1.2.3 Arbitraje de interrupciones........................................................................................................33

2.3.1.2.4 Supervisión del bus externo durante trasferencias internas.......................................................33

2.3.1.2.5 Modo Verificación en fábrica....................................................................................................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 Supervisión del Bus Interno......................................................................................................35

2.3.1.2.9 Supervisión de Parada (Halt)....................................................................................................35

2.3.1.2.10 Supervisión de interrupciones espúreas....................................................................................35

2.3.1.2.11 Supervisión SW.........................................................................................................................36

2.3.1.2.12 Interrupciones periódicas: el PIT..............................................................................................36

2.3.1.2.13 Funcionamiento en bajo consumo.............................................................................................38

2.3.1.2.14 Funcionamiento durante la depuración.....................................................................................38

2.3.1.3 Reloj del sistema..................................................................................................................39

2.3.1.3.1 Reloj del sistema externo..........................................................................................................39

2.3.1.3.2 Reloj de referencia externo........................................................................................................39

2.3.1.3.3 Generación de reloj para un bus externo síncrono....................................................................40

2.3.1.3.4 Generación de reloj en bajo consumo.......................................................................................40

2.3.1.3.5 Supervisión del reloj de referencia............................................................................................40

2.3.1.4 Interfaz del bus externo asíncrono: EBI..............................................................................40

2.3.1.4.1 Temporización del bus externo.................................................................................................41

2.3.1.4.2 Tamaño dinámico del bus de datos...........................................................................................41

2.3.1.4.3 Los códigos de función.............................................................................................................42

2.3.1.4.4 Puntos de ruptura.......................................................................................................................43

2.3.1.4.5 Cesión del bus...........................................................................................................................43

2.3.1.5 Interrupciones......................................................................................................................44

2.3.1.5.1 Fuentes de interrupción externas...............................................................................................44

VI

Page 254: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.1.5.2 Arbitraje de interrupciones simultáneas....................................................................................44

2.3.1.5.3 Ciclo de reconocimiento y confirmación de una interrupción externa.....................................44

2.3.1.6 Lógica de direcciones..........................................................................................................45

2.3.1.6.1 Registros de configuración de la lógica de direcciones: CSBORBT y CSOR0..CSOR10.......45

2.3.1.6.2 Registros de configuración de la dirección base: CSBARBT y CSBAR0..CSBAR10.............46

2.3.1.7 Inicialización del SIM..........................................................................................................47

2.3.2 TEMPORIZADOR DE PROPÓSITO GENERAL (GPT)......................................................................49

2.3.2.1 Registros del GPT y mapa de direcciones...........................................................................50

2.3.2.2 Funcionamiento por “polling” o por interrupciones..........................................................50

2.3.2.2.1 Funcionamiento por “polling”...................................................................................................51

2.3.2.2.2 Interrupciones del GPT.............................................................................................................52

2.3.2.3 Descripción 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 / comparación de salida (IC4/OC5)........................................53

2.3.2.3.3 Terminales de comparación 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 modulación 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 propósito general......................................................................................................54

2.3.2.5 Preescalador........................................................................................................................55

2.3.2.6 Unidad de captura/comparación.........................................................................................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 comparación de salidas.......................................................................................59

2.3.2.6.3.1 Comparación de salida 1......................................................................................................60

2.3.2.6.3.2 Comparación de salida forzada............................................................................................60

2.3.2.6.4 Captura de entrada 4 / Comparación de salida 5.......................................................................60

2.3.2.7 Acumulador de pulsos..........................................................................................................61

2.3.2.8 Unidad de modulación de ancho de pulso...........................................................................62

2.3.2.8.1 Contador PWM.........................................................................................................................62

2.3.2.8.2 Función 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 Depuración en segundo plano (BDM).................................................................................69

2.3.4 MÓDULO DE COMUNICACIONES SERIE (QSM)..........................................................................70

2.3.4.1 Registros generales del QSM...............................................................................................70

2.3.4.1.1 Atención a las interrupciones....................................................................................................71

2.3.4.2 Registros de control de los terminales del QSM..................................................................71

2.3.4.3 Interfaz de Comunicación Serie (SCI).................................................................................72

VII

Page 255: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

2.3.4.4 Registros de SCI...................................................................................................................72

2.3.4.4.1 Registros de control...................................................................................................................72

2.3.4.4.2 Registro de estado.....................................................................................................................72

2.3.4.4.3 Registro de datos.......................................................................................................................73

2.3.4.5 Terminales de la SCI............................................................................................................73

2.3.4.6 Funcionamiento de la SCI...................................................................................................73

2.3.4.6.1 Definiciones..............................................................................................................................73

2.3.4.6.2 Formatos de transmisión serie...................................................................................................74

2.3.4.6.3 Reloj de transmisión..................................................................................................................74

2.3.4.6.4 Comprobación 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 Detección de línea desocupada..................................................................................................78

3. CONTROL DE UN DISPLAY LCD DE MODO TEXTO....................................80

3.1 DESCRIPCIÓN GENERAL...........................................................................................................80

3.2 FUNCIONAMIENTO DEL DISPLAY...........................................................................................81

3.2.1 ALIMENTACIÓN 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 SEÑALES DE CONTROL Y REGISTROS INTERNOS........................................................................86

3.2.4.1 Señales de control................................................................................................................86

3.2.4.2 Registros internos................................................................................................................87

3.2.5 CONJUNTO DE INSTRUCCIONES.................................................................................................88

3.2.5.1 Borrar display, “Clear Display”.........................................................................................88

3.2.5.2 Cursor a inicio, “Return Home”.........................................................................................88

3.2.5.3 Establecer modo de trabajo, “Entry Mode Set”..................................................................89

3.2.5.4 Control ON/OFF del display...............................................................................................89

3.2.5.5 Desplazamiento del cursor o display...................................................................................89

3.2.5.6 Establecer modo de interfaz, “Function Set”......................................................................90

3.2.5.7 Fijar dirección de CGRAM..................................................................................................90

3.2.5.8 Fijar dirección 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 TÍPICA DE INICIALIZACIÓN DEL LCD.....................................................................91

3.2.7 FORMAS DE CONEXIÓN A UN MICROCONTROLADOR.................................................................92

3.2.7.1 Longitud del bus de datos....................................................................................................92

3.2.7.2 Modos de control del LCD...................................................................................................93

VIII

Page 256: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

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 Descripción de la aplicación de control..............................................................................94

3.3.1.2 Descripción de la conexión y modo de control....................................................................95

3.3.1.3 Implementación en código ensamblador del programa de control.....................................95

3.3.1.3.1 Observaciones sobre el ajuste de parámetros..........................................................................109

3.3.1.3.1.1 Ajuste de la señal de activación, “Enable”........................................................................109

3.3.2 EJEMPLO DE CONTROL EN BUCLE CERRADO...........................................................................110

3.3.2.1 Descripción de la aplicación de control............................................................................110

3.3.2.2 Descripción de la conexión y modo de control..................................................................110

3.3.2.3 Implementación en código ensamblador del programa de control...................................111

3.4 ANEXO I.........................................................................................................................................125

4. CONTROL DE UN TECLADO MATRICIAL....................................................127

4.1 DESCRIPCIÓN..............................................................................................................................127

4.2 ALGORITMO DE RECONOCIMIENTO DE TECLAS..........................................................128

4.3 CONEXIÓN AL MICROCONTROLADOR MC68331............................................................128

4.4 RUTINA BÁSICA DE ATENCIÓN AL TECLADO.................................................................129

4.5 ANEXO – EJEMPLOS DE USO DEL TECLADO....................................................................130

4.5.1 EJEMPLO 1 – PROGRAMA BÁSICO DE ATENCIÓN AL TECLADO................................................130

4.5.2 EJEMPLO 2 – USO COMBINADO CON UN DISPLAY LCD...........................................................136

5. REPRODUCTOR DE MENSAJES BASADO EN ELDISPOSITIVO ISD25XX........................153

5. REPRODUCTOR DE MENSAJES BASADO EN EL DISPOSITIVO

ISD25XX...................................................................................................................153

5.1 DESCRIPCIÓN GENERAL.........................................................................................................153

5.1.1 LA MEMORIA EEPROM DE ISD25XX...................................................................................153

5.2 DESCRIPCIÓN DE LAS SEÑALES Y DEL PATILLAJE.......................................................154

5.2.1 ALIMENTACIÓN (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 REPRODUCCIÓN/GRABACIÓN (P/R – PLAYBACK/RECORD).................................155

5.2.5 SEÑAL DE FIN DE MENSAJE Y DE FUNCIONAMIENTO (EOM)..................................................155

5.2.6 SEÑAL DE DESBORDAMIENTO (OVF)......................................................................................155

5.2.7 ENTRADA DE MICRÓFONO (MIC)............................................................................................155

5.2.8 ENTRADA DE REFERENCIA DE MICRÓFONO (MIC REF).........................................................156

5.2.9 ENTRADA DEL CONTROL AUTOMÁTICO DE GANANCIA (AGC).............................................156

IX

Page 257: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

5.2.10 SALIDA ANALÓGICA (ANA OUT)..........................................................................................156

5.2.11 ENTRADA ANALÓGICA (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 DIRECCIÓN Y MODO (AX/MX)........................................................................157

5.3 MODOS DE FUNCIÓN................................................................................................................157

5.4 DESCRIPCIÓN DE LOS MODOS DE FUNCIÓN....................................................................158

5.4.1 M0 – BÚSQUEDA 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 – REPETICIÓN DE MENSAJE...............................................................................................158

5.4.5 M4 – DIRECCIONAMIENTO CONSECUTIVO..............................................................................158

5.4.6 M5 – ACTIVACIÓN POR NIVEL DE LA ENTRADA CE...............................................................159

5.4.7 M6 – PULSAR BOTÓN.............................................................................................................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 BOTÓN (GRABACIÓN Y REPRODUCCIÓN)....................................159

5.5.1 PROCESO DE GRABACIÓN EN EL MODO PULSAR BOTÓN.........................................................160

5.5.2 PROCESO DE REPRODUCCIÓN EN EL MODO PULSAR BOTÓN...................................................160

5.5.3 ESQUEMA DE CONEXIÓN..........................................................................................................161

5.6 CONEXIÓN AL MICROCONTROLADOR MC68331.............................................................162

6. TRANSCEPTOR DIGITAL DE DATOS POR RADIO.....................................170

6.1 INTRODUCCIÓN..........................................................................................................................170

6.1.1 TRANSMISOR...........................................................................................................................170

6.1.1.1 Oscilador SAW...................................................................................................................171

6.1.2 RECEPTOR...............................................................................................................................173

6.2 CONEXIÓN AL MICROCONTROLADOR..............................................................................174

6.2.1 PROGRAMA BÁSICO DE ATENCIÓN DE COMUNICACIONES.......................................................174

7. TELEMANDO POR INFRARROJOS..................................................................182

7.1 INTRODUCCIÓN..........................................................................................................................182

7.1.1 ESTÁNDARES DE CODIFICACIÓN DE COMANDOS.....................................................................183

7.1.1.1 Codificación RC-5.............................................................................................................183

X

Page 258: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

7.1.1.2 Codificación RECS 80.......................................................................................................184

7.1.2 CODIFICACIÓN DE LOS COMANDOS.........................................................................................184

7.1.3 TIPO DE MODULACIÓN............................................................................................................185

7.2 TRANSMISOR DE INFRARROJOS..........................................................................................185

7.2.1 DIAGRAMA DE BLOQUES DEL TRANSMISOR............................................................................185

GENERADOR DE RELOJ..........................................................................................................................186

7.2.3 GENERADOR DEL INTERVALO DE TRAMA................................................................................187

7.2.4 REGISTRO DE DESPLAZAMIENTO.............................................................................................189

7.2.5 MODULADOR ASK..................................................................................................................190

7.2.6 EMISOR DE LUZ INFRARROJA..................................................................................................191

7.2.7 ALIMENTACIÓN.......................................................................................................................193

7.3 RECEPTOR DE INFRARROJOS...............................................................................................193

7.3.1 DIAGRAMA DE BLOQUES DEL RECEPTOR................................................................................194

7.3.2 FOTO-RECEPTOR......................................................................................................................194

Red de desacoplo..............................................................................................................................196

7.3.3 FILTRO PASO BANDA...............................................................................................................197

7.3.4 DEMODULADOR.......................................................................................................................199

7.3.4.1 Amplificador de entrada....................................................................................................199

7.3.4.2 Detector de envolvente.......................................................................................................199

7.3.4.3 Regenerador.......................................................................................................................200

7.4 CONEXIÓN AL MICROCONTROLADOR..............................................................................200

7.4.1 PROGRAMA BÁSICO DE ATENCIÓN DE COMUNICACIONES.......................................................200

8. INTERFAZ PARA LÍNEA TELEFÓNICA.........................................................207

8.1 INTRODUCCIÓN..........................................................................................................................207

8.2 LA LÍNEA TELEFÓNICA...........................................................................................................208

8.2.1 ALIMENTACIÓN EN CORRIENTE CONTINUA.............................................................................208

8.2.1.1 Alimentación con puente convencional de baja resistencia..............................................208

8.2.1.1.1 Tensión de alimentación en reposo.........................................................................................208

8.2.1.1.2 Máximo consumo de corriente en situación de reposo...........................................................209

8.2.1.1.3 Corriente de línea en estado de línea tomada..........................................................................209

8.2.1.2 Alimentación con limitación de corriente..........................................................................209

8.2.1.3 Polaridad...........................................................................................................................209

8.2.2 CRITERIOS DE ESTADO DE LA LÍNEA.......................................................................................209

8.2.3 NIVEL MÁXIMO A LA ENTRADA DEL PTR...............................................................................210

8.2.3.1 Nivel medio máximo de transmisión..................................................................................210

8.2.3.2 Nivel de pico máximo.........................................................................................................210

8.2.4 SEÑAL (CORRIENTE) DE LLAMADA..........................................................................................210

XI

Page 259: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

8.3 DESCRIPCIÓN MODULAR Y MONTAJE DEL SISTEMA...................................................211

8.3.1 DETECTOR DE LLAMADA.........................................................................................................211

8.3.2 ALIMENTACIÓN.......................................................................................................................214

8.3.3 GANCHO AUTOMÁTICO...........................................................................................................215

8.3.4 DUPLEXOR...............................................................................................................................215

8.3.4.1 Cálculo de la polarización.................................................................................................216

Transmisión de la señal...................................................................................................................218

8.3.4.2.1 Recepción de la señal vocal.....................................................................................................218

8.3.4.2.2 Transmisión de la señal 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

8.4 EJEMPLOS DE APLICACIONES..............................................................................................225

8.4.1 RUTINAS BÁSICAS DE GESTIÓN DEL INTERFAZ........................................................................225

CONCLUSIONES.......................................................................................................232

APÉNDICES

I. TÉCNICAS DE CONEXIONADO........................................................................233

I.1 SOLDADURA DE ESTAÑO........................................................................................................233

I.2 “WRAPPING” O ENROLLADO..................................................................................................233

I.2.1 DESCRIPCIÓN DE LA HERRAMIENTA........................................................................................234

I.2.1.1 Procedimiento de conexión:..............................................................................................234

II. ESTUDIO DE VIABILIDAD DE LA OBTENCIÓN DE ALIMENTACIÓN

PARA UN SISTEMA DE TELEMANDO TELEFÓNICO DE LA PROPIA

LÍNEA..................................................................................................................235

II.1 ESPECIFICACIONES DEL BUCLE DE ABONADO..............................................................235

II.1.1 CARACTERÍSTICAS EN CORRIENTE CONTINUA.........................................................................235

II.2 ESPECIFICACIONES DEL APARATO DE ABONADO........................................................236

II.2.1 CARACTERÍSTICAS EN CORRIENTE CONTINUA.........................................................................236

II.3 HIPÓTESIS 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

XII

Page 260: MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN EL MICROCONTROLADOR MOTOROLA 68331 otro

II.4.1 PLANTEAMIENTO GENERAL DE LA SOLUCIÓN.........................................................................238

II.4.2 DIMENSIONADO DE LA BATERÍA.............................................................................................239

II.4.3 OTROS ASPECTOS A CONSIDERAR...........................................................................................240

III. ESTUDIOS PREVIOS PARA EL DESARROLLO DE UN MODEM PARA

RED ELECTRICA..............................................................................................242

III.1 INTRODUCCIÓN..........................................................................................................................242

III.2 MÓDEM PARA RED ELÉCTRICA...........................................................................................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 DESCRIPCIÓN DEL TRANSCEPTOR.....................................................................................246

III.3.1 MÓDULOS COMUNES...............................................................................................................247

III.3.1.1 Separador de red...........................................................................................................247

III.3.1.2 Filtro paso banda..........................................................................................................248

III.3.1.3 Conmutador..................................................................................................................248

III.3.2 MÓDULOS DEL TRANSMISOR...................................................................................................249

III.3.2.1 Modulador.....................................................................................................................249

III.3.2.2 Adaptador de nivel........................................................................................................250

III.3.3 MÓDULOS DEL RECEPTOR.......................................................................................................250

III.3.3.1 Adaptador de nivel........................................................................................................250

III.3.3.2 Demodulador................................................................................................................250

III.3.3.3 Conformador de señal...................................................................................................251

III.4 OBSERVACIÓN FINALES..........................................................................................................251

BIBLIOGRAFÍA.........................................................................................................252

XIII