Placa68331 - Grupo de Tecnología del Habla

Anuncio
Capítulo 2
Montaje y descripción de la
entrenadora
basada
en
microcontrolador Motorola 68331
placa
el
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
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.
1
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.
13) Comunicación
serie.
2
 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
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.
3
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 - 33F.) 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.
 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.
4
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.
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.
5
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.
 Figura 4 – Red de filtrado del reloj del sistema.
6
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
2
DATA1
3
DATA2
4
5
6
7
8
1’
DATA3
DATA4
DATA5
DATA6
DATA7
DATA8
El microcontrolador
funciona con un bus de
memoria de 8 bits.
#BR
#BG
#BGACK
FC0
FC1
FC2
ADDR19
ADDR[20:19]
ADDR[21:19]
ADDR[22:19]
ADDR[23:19]
PORTE como puerto de
entrada/salida
2’
DATA9
El microcontrolador
funciona con un bus de
memoria de 16 bits.
#CS0
#CS1
#CS2
#CS3
#CS4
#CS5
#CS6
#CS[7:6]
#CS[8:6]
#CS[9:6]
#CS[10:6]
#DSACK0, #DSACK1,
#AVEC, #DS, #AS,
#SIZE
#IRQ[7:1], MODCLK
4’
6’
8’
PORTF como puerto de
entrada/salida
DATA11 Modo esclavo desactivado
Modo esclavo activado
MODCLK VCO = Reloj del sistema EXTAL = Reloj del sistema
#BKPT
Modo de depuración
Modo de depuración
desactivado
activado
Tabla 1 – Modos de configuración del micro.
7
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:
 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
8
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
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.
9
 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.
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
1
56
2
68
Denominación
#BKPT/DSCLK
#RESET
3
4
Nº terminal
78
79
Denominación
PF0/#MODCLK
R/#W
Tabla 2 – Terminales que ya tienen conectadas las resistencias de pull-up.
10
Por lo tanto sólo quedan por conectar los siguientes terminales:
1
2
3
4
5
6
7
Nº terminal
57
69
70
71
72
73
74
Denominación
TSC
#HALT
#BERR
PF7/#IRQ7
PF6/#IRQ6
PF5/#IRQ5
PF4/#IRQ4
8
9
10
11
12
13
14
Nº terminal
75
76
77
87
88
89
113
Denominación
PF3/#IRQ3
PF2/#IRQ2
PF1/#IRQ1
PE2/#AVEC
PE1/#DSACK1
PE0/#DSACK0
#BR/#CS0
Tabla 3 – Terminales pendientes de conectar las resistencias de pull-up.
2.2.9
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
VDD 11
12
19
20
25
26
37
35
47
48
61
54
72
62
84
74
86
82
89
91 107 120 128 134
109 121 135 144
Tabla 4 – Terminales de 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.
11
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.
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.
12
 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.
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.
13
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
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.
14
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.
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
15
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:
 Figura 8 – Circuito interfaz para la comunicación serie.
16
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.
 Figura 9 – Vista general de placa entrenadora.
17
 Figura 10 – Detalle del conexionado con wire-wrapping.
 Figura 11 – Detalle del montaje de la placa.
18
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:
2.3.1

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).
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
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).
19
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
empleamos todas las señales externas de chip-select, podremos emplear las no asignadas
como parte de un puerto denominado C.
2.3.1.1 Terminales 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.
20
2.3.1.2 Subsistema 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
0
1
Zona ocupada del mapa de memoria
$7FF000-$7FFFFF
$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.
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 chipselect 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
21
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
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
22
alta impedancia para impedir que este flujo interno afecte a dispositivos externos como,
por ejemplo, la memoria).
SHEN
00
01
10
Ciclos Internos
Invisibles desde el exterior
Visibles
Visibles
11
Invisibles
Arbitraje externo
Habilitado
Deshabilitado
Habilitado
Habilitado, 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
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.
23

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
00
01
10
11
Tiempo máximo de espera
64 ciclos de reloj
32 ciclos de reloj
16 ciclos de reloj
8 ciclos de reloj
Tabla 7 – Tiempo de espera de las 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.
24
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
0
0
0
0
1
1
1
1
SWT
00
01
10
11
00
01
10
11
Ciclos de reloj
2 elevado a 9
2 elevado a 11
2 elevado a 13
2 elevado a 15
2 elevado a 18
2 elevado a 20
2 elevado a 22
2 elevado a 24
Tabla 8 – Tiempo de 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
25
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:
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).
26
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.
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.
27
2.3.1.3 Reloj 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
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.
28
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.

El bit SLIMP del SYNCR refleja si el sistema está operando en modo
limp (SLIMP =1) o no (SLIMP =0).
2.3.1.4 Interfaz del bus externo 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
29
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
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:
30
Tipos de transferencia.
SIZ[0:1] ADDR DSACK[1:
De <origen> a <puerto o memoria de
0
0]
destino>
De 8 bits a 8 bits en dirección par
01
0
10
De 8 bits a 8 bits en dirección impar
01
1
10
De 8 bits a 16 bits en dirección par
01
0
01
De 8 bits a 16 bits en dirección impar
10
1
01
De 16 bits a 8 bits en dirección par
10
0
10
De 16 bits a 16 bits en direcc. Par
10
0
01
De 32 bits a 8 bits en dirección par
00
0
10
De 32 bits a 16 bits en direcc. Par
00
0
01
De 24 bits a 8
11
1
10
Datos
efectivos
transferidos
DATA[8..15]
DATA[8..15]
DATA[ 0..7 ]
DATA[8..15]
DATA[8..15]
DATA[0..15]
DATA[8..15]
DATA[0..15]
DATA[8..15]
Tabla 9 – Tipos de transferencias.
Las transferencias de 24 bits a puertos o memorias de 8 son subciclos dentro de una
transferencia de 32 bits a 8. La CPU32 exige que las transferencias de 16 o 32 bits a 16
bits 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
0
0
0
0
1
1
1
1
FC1
0
0
1
1
0
0
1
1
FC0
0
1
0
1
0
1
0
1
Estado interno
Valor no usado
Acceso a datos en modo usuario
Lectura de instrucciones en modo usuario
Valor no usado
Valor no usado
Acceso a datos en modo supervisor
Lectura de instrucciones en modo supervisor
3 subestados posibles:
(1) reconocimiento y 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:
31
Subestado
A23..A2 A19 A18 A17 A16 A15..A5 A
0
4
(1) pto. Ruptura
0
0
0
0
0
0
X
(2) bajo
0
0
0
1
1
1
1
consumo
(3) Interr.
1
1
1
1
1
1
1
A
3
X
1
A
2
X
1
A
1
Y
1
A
0
0
0
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
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.
32
2.3.1.5 Interrupciones
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].

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).
33

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.6 Ló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.

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).
34

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.

Bit
Campo
AVEC#: habilita las interrupciones autovectorizadas (AVEC#=1).
15
14 13 12 11
10
9 8 7 6
MODE BYTE R/W# STRB DSACK#
5
4
SPACE
3 2 1
0
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]
000
001
010
011
100
101
110
111
Tamaño del bloque
2 KB
8 KB
16 KB
64 KB
128 KB
256 KB
512 KB
1 MB
Bits de direcciones fijos
ADDR[23..11]
ADDR[23..13]
ADDR[23..14]
ADDR[23..16]
ADDR[23..17]
ADDR[23..18]
ADDR[23..19]
ADDR[23..20]
Tabla 12 – Determinación del tamaño de bloque de memoria.
35
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.7 Inicializació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).
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).
36

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.
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):
37

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
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.
38
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.1 Registros del GPT y mapa de direcciones
Los registros del GPT con su respectivo mapa de direcciones se detallan en la tabla
siguiente:
Dirección
$FFF900
$FFF902
$FFF904
$FFF906
$FFF908
$FFF90A
$FFF90C
$FFF90E
$FFF910
$FFF912
$FFF914
$FFF916
$FFF918
$FFF91A
$FFF91C
$FFF91E
$FFF920
$FFF922
$FFF924
$FFF926
$FFF928
$FFF92A
$FFF92C
15
8 7
0
MÓDULO DE CONFIGURACIÓN DEL GPT (GPTMCR)
(RESERVADA PARA TEST)
CONFIGURACIÓN DE INTERRUPCIÓN (ICR)
DIRECC. DATOS PGP (DDRGP)
DATOS PGP (PORTGP)
MÁSCARA DE ACCIÓN OC1 (OC1M)
DATOS DE ACCIÓN OC1 (OC1D)
CONTADOR DEL TEMPORIZADOR (TCNT)
CONTROL DE PA (PACTL)
CONTADOR DE PA (PACNT)
ENTRADA DE CAPTURA 1 (TIC1)
ENTRADA DE CAPTURA 2 (TIC2)
ENTRADA DE CAPTURA 3 (TIC3)
SALIDA DE COMPARACIÓN 1 (TOC1)
SALIDA DE COMPARACIÓN 2 (TOC2)
SALIDA DE COMPARACIÓN 3 (TOC3)
SALIDA DE COMPARACIÓN 4 (TOC4)
ENTRADA DE CAPTURA 4/SALIDA DE COMPARACIÓN 5 (TI4/O5)
CONTROL DE TEMP. 1 (TCTL1)
CONTROL DE TEMP. 2 (TCTL2)
MÁSCARA DE TEMP. 1 (TSMK1)
MÁSCARA DE TEMP. 2 (TSMK2)
FLAG DE TEMP. 1 (TFLG1)
FLAG DE TEMP. 2 (TFLG2)
COMPRAR. FORZADA (CFORC)
CONTROL C DE PWM (PWMC)
CONTROL A DE PWM (PWMA)
CONTROL B DE PWM (PWMB)
CONTADOR DE PWM (PWMCNT)
BUFFER DE PWMA (PWMBUFA)
BUFFER DE PWMB (PWMBUFB)
PREESCALADOR DEL GPT (PRESCL)
Tabla 13 – Mapa de direcciones de los registros del GPT.
Se puede acceder a todos los registros utilizando accesos a byte o a palabra. A los
registros de captura/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.
2.3.2.2 Funcionamiento 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
39
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
IC1F
TFLG1
IC2F
TFLG1
IC3F
TFLG1
OC1F
TFLG1
OC2F
TFLG1
OC3F
TFLG1
Fuente
Entrada de Captura 1
Entrada de Captura 2
Entrada de Captura 3
Salida de Comparación 1
Salida de Comparación 2
Salida de Comparación 3
40
OC4F
I4/O5F
TOF
PAOVF
PAIF
TFLG1
TFLG1
TFLG2
TFLG2
TFLG2
Salida de Comparación 4
Entrada de Captura 4 / Salida de Comparación 5
Desbordamiento del temporizador
Desbordamiento del acumulador de pulsos
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
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
41
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:
Nombre
--IC1
IC2
IC3
OC1
OC2
OC3
OC4
IC4/OC
5
TO
Número de
Fuente
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
PAOV
1010
PAI
1011
Fuente
Canal de Ajuste
Entrada de Captura 1
Entrada de Captura 2
Entrada de Captura 3
Salida de Comparación 1
Salida de Comparación 2
Salida de Comparación 3
Salida de Comparación 4
Entrada de Captura 4 / Salida de
Comparación 5
Desbordamiento del Temporizador
Desbordamiento del Acumulador de
Pulsos
Entrada del Acumulador de Pulsos
Número de
Vector
IVBA : 0000
IVBA : 0001
IVBA : 0010
IVBA : 0011
IVBA : 0100
IVBA : 0101
IVBA : 0110
IVBA : 0111
IVBA : 1000
IVBA : 1001
IVBA : 1010
IVBA : 1011
Tabla 15 – Fuentes de interrupción del GPT.
2.3.2.3 Descripció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.
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
42
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.
2.3.2.4 E/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).
43
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.5 Preescalador
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.
44
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
45
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.6 Unidad 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.
46
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
47
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.
48
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).
49
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.7 Acumulador de pulsos
El contador del acumulador de pulsos (PACNT) es un contador ascendente de
lectura/escritura de 8 bits. El PACNT puede actuar como contador de sucesos externos
o como acumulador de tiempo contando los ciclos de reloj durante los que el terminal
del PAI está activo.
En el modo contador de sucesos, se incrementa cada vez que se detecta la 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.
50
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.8 Unidad 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
51
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]
000
001
010
011
100
101
110
111
Salida del Preescalador
8.39 Mhz
16.78 Mhz
Div 2 = 4.19 Mhz
Div 2 = 8.39 Mhz
Div 4 = 2.10 Mhz
Div 4 = 4.19 Mhz
Div 8 = 1.05 Mhz
Div 8 = 2.10 Mhz
Div 16 = 524 Khz
Div 16 = 1.05 Mhz
Div 32 = 262 Khz
Div 32 = 524 Khz
Div 64 = 131 Khz
Div 64 = 262 Khz
Div 128 = 66 Khz
Div 128 = 131 Khz
PCLK
PCLK
SFA/B=0
8.39 Mhz 16.78 Mhz
16.4 Khz
32.8 Khz
8.19 Khz
16.4 Khz
4.09 Khz
8.19 Khz
2.05 Khz
4.09 Khz
1.02 Khz
2.05 Khz
512 Hz
1.02 Khz
256 Hz
512 Hz
PCLK/256
PCLK/256
SFA/B=1
8.39 Mhz 16.78 Mhz
128 Hz
256 Hz
64 Hz
128 Hz
32 Hz
64 Hz
16 Hz
32 Hz
8 Hz
16 Hz
4 Hz
8 Hz
2 Hz
4 Hz
PCLK/32768
PCLK/32768
Tabla 16 – Margen de frecuencias del PWM para 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,
52
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.
53
2.3.3.1 Registros 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
0
D0
D1
D2
D3
D4
D5
D6
D7
31
31
31
16
16
15
15
REGISTROS DE DATOS
0
A0
A1
A2
A3
A4
A5
A6
REGISTROS DE DIRECCIONES
A7 (USP)
PUNTERO DE PILA DE USUARIO
PC
CONTADOR DE PROGRAMA
CCR
REGISTRO DE CÓDIGOS DE CONDICIÓN
0
0
7
0
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.
54
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.
55
31
16
15 8
31
7 0
(CCR)
A7’ (SSP)
PUNTERO DE PILA DE SUPERVISOR
SR
REGISTRO DE ESTADO
VBR
REGISTRO DEL VECTOR BASE
SFC
DFC
CODIGO DE FUNCIÓN DE ORIGEN
CODIGO DE FUNCIÓN DE DESTINO
0
7
0
Tabla 18 – Registros adicionales del modo supervisor.
2.3.3.2 Modos de direccionamiento
La abundancia en modos de direccionamiento es la clave del éxito de la familia
MC68000 ya que esa aparente complejidad es lo que realmente simplifica la
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.3 Instrucciones 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.
56
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.
57

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.4 Depuració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.
58
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.1 Registros 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
59
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.2 Registros 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.
60
2.3.4.3 Interfaz 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.4 Registros 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.
61
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.5 Terminales 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.6 Funcionamiento 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.
62
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:
Velocidad _ de _ Transmisió n 
Re loj _ del _ sistema
32 * SCBR
63
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
0
0
1
1
PE
Resultado
0
8 bits de datos
1 7 bits de datos y 1 de paridad
0
9 bits de datos
1 8 bits de datos y 1 de paridad
Tabla 19 – Efecto del control de paridad en el 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.
64
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
65
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.
66
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
67
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.
68
69
ÍNDICE DE CONTENIDO
2. MONTAJE Y DESCRIPCIÓN DE LA PLACA ENTRENADORA BASADA EN
EL MICROCONTROLADOR MOTOROLA 68331 ............................................. 1
2.1
ANTECEDENTES ............................................................................................................................ 1
2.2
INSTRUCCIONES DE MONTAJE ................................................................................................ 2
2.2.1
MICROCONTROLADOR ................................................................................................................ 3
2.2.2
REGULADOR DE TENSIÓN ........................................................................................................... 4
2.2.3
REPLANTEO GENERAL DEL CIRCUITO ......................................................................................... 5
2.2.4
CIRCUITO DE RELOJ .................................................................................................................... 5
2.2.5
FILTROS DE RELOJ DEL SISTEMA ................................................................................................. 6
2.2.6
CIRCUITO DE CONFIGURACIÓN DEL MICRO ................................................................................. 7
2.2.7
RESET DEL SISTEMA .................................................................................................................... 8
2.2.8
RESISTENCIAS DE PULL-UP ....................................................................................................... 10
2.2.9
ALIMENTACIÓN DEL MICROCONTROLADOR .............................................................................. 11
2.2.10
PRUEBA DE FUNCIONAMIENTO ................................................................................................. 11
2.2.11
COMUNICACIÓN BDM (BACKGROUND DEBUG MODE) ............................................................. 12
2.2.12
MEMORIA ................................................................................................................................. 15
2.2.13
COMUNICACIÓN SERIE.............................................................................................................. 16
2.3
DESCRIPCIÓN DE FUNCIONAMIENTO ................................................................................. 19
2.3.1
MÓDULO DE INTEGRACIÓN DE SISTEMAS (SIM) ....................................................................... 19
2.3.1.1 Terminales del SIM ............................................................................................................. 20
2.3.1.2 Subsistema de configuración y protección ......................................................................... 21
2.3.1.2.1
Ubicación de los registros en memoria.................................................................................... 21
2.3.1.2.2
Configuración tras el Reset...................................................................................................... 21
2.3.1.2.3
Arbitraje de interrupciones ...................................................................................................... 22
2.3.1.2.4
Supervisión del bus externo durante trasferencias internas ..................................................... 22
2.3.1.2.5
Modo Verificación en fábrica. ................................................................................................. 23
2.3.1.2.6
Accesibilidad de los registros del SIM .................................................................................... 23
2.3.1.2.7
Causa del último Reset ............................................................................................................ 23
2.3.1.2.8
Supervisión del Bus Interno .................................................................................................... 24
2.3.1.2.9
Supervisión de Parada (Halt) .................................................................................................. 24
2.3.1.2.10
Supervisión de interrupciones espúreas ................................................................................... 24
2.3.1.2.11
Supervisión SW ....................................................................................................................... 25
2.3.1.2.12
Interrupciones periódicas: el PIT............................................................................................. 25
2.3.1.2.13
Funcionamiento en bajo consumo ........................................................................................... 27
2.3.1.2.14
Funcionamiento durante la depuración.................................................................................... 27
2.3.1.3 Reloj del sistema ................................................................................................................. 28
I
2.3.1.3.1
Reloj del sistema externo ........................................................................................................ 28
2.3.1.3.2
Reloj de referencia externo...................................................................................................... 28
2.3.1.3.3
Generación de reloj para un bus externo síncrono ................................................................... 29
2.3.1.3.4
Generación de reloj en bajo consumo ..................................................................................... 29
2.3.1.3.5
Supervisión del reloj de referencia .......................................................................................... 29
2.3.1.4 Interfaz del bus externo asíncrono: EBI ............................................................................. 29
2.3.1.4.1
Temporización del bus externo ............................................................................................... 30
2.3.1.4.2
Tamaño dinámico del bus de datos ......................................................................................... 30
2.3.1.4.3
Los códigos de función ........................................................................................................... 31
2.3.1.4.4
Puntos de ruptura..................................................................................................................... 32
2.3.1.4.5
Cesión del bus ......................................................................................................................... 32
2.3.1.5 Interrupciones..................................................................................................................... 33
2.3.1.5.1
Fuentes de interrupción externas ............................................................................................. 33
2.3.1.5.2
Arbitraje de interrupciones simultáneas .................................................................................. 33
2.3.1.5.3
Ciclo de reconocimiento y confirmación de una interrupción externa .................................... 33
2.3.1.6 Lógica de direcciones ......................................................................................................... 34
2.3.1.6.1
Registros de configuración de la lógica de direcciones: CSBORBT y CSOR0..CSOR10 ...... 34
2.3.1.6.2
Registros de configuración de la dirección base: CSBARBT y CSBAR0..CSBAR10 ............ 35
2.3.1.7 Inicialización del SIM ......................................................................................................... 36
2.3.2
TEMPORIZADOR DE PROPÓSITO GENERAL (GPT) ...................................................................... 38
2.3.2.1 Registros del GPT y mapa de direcciones .......................................................................... 39
2.3.2.2 Funcionamiento por “polling” o por interrupciones ......................................................... 39
2.3.2.2.1
Funcionamiento por “polling” ................................................................................................. 40
2.3.2.2.2
Interrupciones del GPT ........................................................................................................... 41
2.3.2.3 Descripción de los terminales ............................................................................................ 42
2.3.2.3.1
Terminales de captura de entradas (IC[1:3]) ........................................................................... 42
2.3.2.3.2
Terminal de captura de entrada / comparación de salida (IC4/OC5) ....................................... 42
2.3.2.3.3
Terminales de comparación de salidas (OC[1:4]) ................................................................... 43
2.3.2.3.4
Terminal de entrada del acumulador de pulsos (PAI) ............................................................. 43
2.3.2.3.5
Terminales de modulación de ancho de pulso (PWMA, PWMB) ........................................... 43
2.3.2.3.6
Entrada auxiliar de reloj del temporizador (PCLK) ................................................................. 43
2.3.2.4 E/S de propósito general .................................................................................................... 43
2.3.2.5 Preescalador....................................................................................................................... 44
2.3.2.6 Unidad de captura/comparación ........................................................................................ 46
2.3.2.6.1
Contador del Temporizador..................................................................................................... 46
2.3.2.6.2
Funciones de captura de entradas ............................................................................................ 47
2.3.2.6.3
Funciones de comparación de salidas...................................................................................... 48
2.3.2.6.3.1
Comparación de salida 1 .................................................................................................... 49
2.3.2.6.3.2
Comparación de salida forzada .......................................................................................... 49
2.3.2.6.4
Captura de entrada 4 / Comparación de salida 5 ..................................................................... 49
2.3.2.7 Acumulador de pulsos ........................................................................................................ 50
2.3.2.8 Unidad de modulación de ancho de pulso .......................................................................... 51
2.3.2.8.1
Contador PWM ....................................................................................................................... 51
II
2.3.2.8.2
2.3.3
Función PWM ......................................................................................................................... 52
UNIDAD CENTRAL DE PROCESO (CPU32) ................................................................................. 53
2.3.3.1 Registros de la CPU32 ....................................................................................................... 54
2.3.3.2 Modos de direccionamiento ................................................................................................ 56
2.3.3.2.1
Nuevos modos de direccionamiento ........................................................................................ 56
2.3.3.3 Instrucciones de la CPU32 ................................................................................................. 56
2.3.3.3.1
Nuevas instrucciones ............................................................................................................... 57
2.3.3.4 Depuración en segundo plano (BDM) ................................................................................ 58
2.3.4
MÓDULO DE COMUNICACIONES SERIE (QSM) .......................................................................... 59
2.3.4.1 Registros generales del QSM.............................................................................................. 59
2.3.4.1.1
Atención a las interrupciones .................................................................................................. 60
2.3.4.2 Registros de control de los terminales del QSM ................................................................. 60
2.3.4.3 Interfaz de Comunicación Serie (SCI) ................................................................................ 61
2.3.4.4 Registros de SCI ................................................................................................................. 61
2.3.4.4.1
Registros de control................................................................................................................. 61
2.3.4.4.2
Registro de estado ................................................................................................................... 61
2.3.4.4.3
Registro de datos ..................................................................................................................... 62
2.3.4.5 Terminales de la SCI .......................................................................................................... 62
2.3.4.6 Funcionamiento de la SCI .................................................................................................. 62
2.3.4.6.1
Definiciones ............................................................................................................................ 62
2.3.4.6.2
Formatos de transmisión serie ................................................................................................. 63
2.3.4.6.3
Reloj de transmisión ................................................................................................................ 63
2.3.4.6.4
Comprobación de paridad ....................................................................................................... 64
2.3.4.6.5
Funcionamiento del transmisor ............................................................................................... 64
2.3.4.6.6
Funcionamiento del receptor ................................................................................................... 66
2.3.4.6.7
Detección de línea desocupada................................................................................................ 67
III
Descargar