37
TEMA 3 ENTRADAS/SALIDAS 1

TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

TEMA 3

ENTRADAS/SALIDAS

1

Page 2: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesadorMC68000, tanto a nivel de organización de los dispositivos en el espacio de direccionamiento,como de la gestión y procesamiento de interrupciones, y, por otro lado, se estudiarán algunosdispositivos básicos como la VIA6255, que incorpora puertos paralelos y temporizador, y laDUART 68681 que implementa dos puertos serie asíncronos. Para la comprensión de este tema esrecomendable repasar los conceptos generales de entradas/salidas que se establecieron en el capítuloprimero de la asignatura, así como repasar los mecanismos que se explicaron en el capítulo anteriorreferentes a los ciclos de reconocimiento de interrupciones y ciclos de lectura/escritura para losbuses asíncrono y síncrono.

1. DECODIFICACIÓN DE ENTRADA/SALIDA

El 68000 utiliza E/S mapeada en memoria, por lo que, tanto los chips de memoria, como los chipsde E/S, comparten el mismo espacio de direccionamiento. Esto implica que, cualquier instrucciónque use un modo de direccionamiento que se apoye en el uso de una dirección, podrá acceder a unaposición de entrada/salida, o a una de memoria. El sistema de decodificación debe identificar, segúnla dirección que lance el microprocesador por su bus de direcciones, hacia que elemento concreto vadestinado la operación de lectura o escritura.

Motorola puede utilizar dos tipos de periféricos. Aquellos que proceden de versiones anteriores,como son los periféricos síncronos del MC6800 u otros específicos del 68000 que están adaptadosa su forma de trabajo a través del bus asíncrono. El 68000 inicia, siempre, una operación deentrada/salida como si se tratase de un ciclo normal de lectura/escritura. Los periféricos específicosintercambian información con el microprocesador a través del bus de datos bajo el control del busasíncrono (líneas \AS, \DTACK, R\W,\LDS,\UDS). Destacar que los periféricos especificosincorporan la electrónica necesaria para la activación de la entrada \DTACK del microprocesadorcuando el ciclo de E/S ha finalizado. Los periféricos síncronos necesitan de una señal de reloj dehasta 1Mhz que síncroniza el momento en que estos transfieren o reciben datos del microprocesadory no generan la activación de la entrada \DTACK. Desde un punto de vista básico, las transferenciasentre el microprocesador y el periférico se realizan a través del bus de datos bajo la gestión del bussíncrono. Cuando el microprocesador inicia un ciclo de lectura/escritura en una dirección que, elsistema de decodificación reconoce ser perteneciente a un periférico síncrono, éste activa la entrada\VPA del primero con objeto de informarle que debe proceder a un ciclo especial delectura/escritura en el cual las transferencias deben estar sincronizadas por la señal E. Por su parte,el 68000 activa la señal \VMA para informar a los periféricos que él ya está sincronizado con E yque, cuando esta señal pase a nivel alto, se debe realizar la transferencia. Una vez completada ésta,se finaliza el ciclo de entrada/salida.

En la siguiente figura se ha representado el proceso de decodificación y acceso a dos periféricoscomo la DUART 68681 (específico) y la VIA 6255 (síncrono). Pasaremos a comentar cada uno delos aspectos de dicha figura:

– Decodificación: A partir de la dirección que lanza el microprocesador, el sistema dedecodificación permite la activación de las señales \DUART y \SELVIA que permiten identificarqué dispositivo está siendo seleccionado. En concreto, si asumimos que las salidas de losdecodificadores están numeradas de 0 a 7 desde arriba hacia abajo, se tiene que la VIA seselecciona para aquellas direcciones en las que A18-5 = {110xxxxxxxx001} y la DUART seselecciona para las direcciones A18-5={110xxxxxxxx010}. Los bits A4-1 de la dirección seutilizan para seleccionar posiciones internas de la DUART o la VIA y los bits A23-19 nointervienen en la decodificación. El primer decodificador de los dos (el que recibe A18-A16)

2

Page 3: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

permite identificar si la dirección corresponde con memoria o con la zona reservada para la E/S(salida 6). El segundo decodificador, una vez identificado que el acceso va dirigido a la E/S,selecciona un dispositivo concreto de ésta.

3

Page 4: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

– La DUART es un periférico específico del 68000 y, por consiguiente, se adapta al bus asíncrono.Dispone de salida \DTACK, que se conectará a la entrada del mismo nombre delmicroprocesador, entrada de R/W y habilitación de chip, \CS. Esta última debe activarse cuandoel microprocesador quiera acceder a la DUART (señal \DUART), la dirección que, decoficada,activa DUART sea válida (señal \AS) y la transferencia se limita a la mitad baja del bus de datos(señal \LDS). Como se verá más adelante, este periférico es de 8 bits, por lo que, tanto susregistros internos, como el bus que los interconecta, tienen ese tamaño. (Utilizar \LDS implicaque sólo se accederá a la DUART en accesos a direcciones impares dentro del rango de estas queactivan \DUART, si se hubiese usado \UDS, entonces el bus de datos de la DUART hubieratenido que conectarse a las líneas D15-D8 del bus de datos y se accedería a través de lasdirecciones pares).

– La VIA 6255 es un periférico síncrono de 8 bits con una frecuencia de reloj de hasta 1Mhz.(Serecuerda que la señal E de salida del 68000, que se conecta con la entrada de reloj de la VIA,tiene una frecuencia 10 veces menor que la de su oscilador interno, por lo que ésta última puedeser de hasta 10Mhz). La VIA dispone de dos habilitadores (/CE1 y /CE2) que son activados, elsegundo, por la señal \LDS, y el primero, por la combinación de \VMA, \SELVIA, y \LDS, yR/W. Para aquellos ciclos de lectura/escritura cuya direcciones estén asociadas a la VIA, elsistema de decodificación activa \SELVIA y, seguidamente, la entrada \VPA. Cuando elmicroprocesador se sincronice con E, activa \VMA que, junto con \SELVIA y \LDS, habilitan laVIA. Las transferencias de datos ocurren sincronizadas con E, por lo que este periférico nonecesita generar la señal \DTACK, el microprocesador termina automáticamente el ciclo. Porúltimo destacar, nuevamente, que el bus de de datos del periférico se ha conectado a la parte bajadel bus de datos del microprocesador, por lo que \LDS controla la transferencia (o sea,direcciones impares).

2. GESTIÓN DE INTERRUPCIONES EXTERNAS

Los dispositivos periféricos pueden solicitar una interrupción de programa activando, de algunaforma, las entradas \IPL2-0. Si el nivel de petición de interrupción es superior al indicado por lamáscara de interrupción del registro del estado, el microprocesador inicia la secuencia dereconocimiento de interrupción, generando un ciclo especial de lectura (FC2-FC0=111 y A3-1=nivel de interrupción solicitante, los restantes bits del bus de direcciones no tienen efecto) por elque se espera recibir el número de vector de interrupción. Motorola 68000 tiene dos formas deobtener dicho vector de interrupción en el ciclo de reconocimiento: automáticamente o a través deun ciclo de lectura normal.

El modo automático (autovectorización) ocurre cuando el microprocesador detecta la activación desu entrada \VPA en el ciclo de reconocimiento de interrupciones. Se escogerá uno de los 7autovectores reservados en la tabla de vectores dependiendo del nivel de la interrupción solicitante.El modo automático será utilizado por todos aquellos periféricos que no tengan capacidad deadaptarse al bus asíncrono ni electrónica interna como para almacenar el número de vector deinterrupción. Este es el caso de los periféricos síncronos de los que la VIA 6255 es un ejemplo.

En el modo no automático, se realiza un ciclo de lectura mediante el cual el periférico sitúa elnúmero de vector en el bus de datos. Este debe contener la electrónica necesaria como paraalmacenar el vector de interrupción y la activación de la señal \DTACK que finaliza con el ciclo delectura. Adicionalmente existe una entrada (\IACK) cuya activación informa al dispositivo que elmicroprocesador está en un ciclo de reconocimiento de interrupciones y que éste desea leer el vectorde interrupción. La DUART 68681 utiliza este esquema de gestión de interrupciones.

4

Page 5: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

La siguiente figura muestra un esquema simplificado de conexión a interrupciones de un periféricosíncrono y otro específico. Se ha destacado que la DUART necesita del bus de datos para emitir elnúmero del vector de interrupción, mientras que la VIA, que usa autovectorización, no lo necesita.

– Las señales de petición de interrupciones (\IRQs) procedentes de ambos dispositivos activan lasentradas \IPLx gracias a un codificador de prioridad que establece un cierto orden en laspeticiones simultáneas. Asumiendo que las entradas están numeradas de arriba hacia abajo desdeel 0 al 7, entonces, para el esquema de la figura, la DUART tiene mayor prioridad que la VIA6255.

5

Page 6: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

– Una vez que las entradas \IPLx se han activado y su nivel asociado es mayor que el almacenadoen la máscara de interrupción del registro de estado. El microprocesador inicia la secuencia dereconocimiento de interrupciones mediante un ciclo de lectura en el que usa A3-1 para indicar elnivel de interrupción que procederá a atender y las salidas FCx para distinguir este ciclo especialde lectura de cualquier otro. El sistema de decodificación, en función de estas variables, activarála señal \IACK del dispositivo correspondiente o la señal VPA (esta última indica que el ciclodebe ser autovectorizado).

3. DISPOSITIVOS DE ENTRADA/SALIDA

3.1VIA 6522

La VIA es un periférico de la familia de procesadores 65Cxx cuyas capacidades son:

– 2 puertos de Entrada / Salida (PortA, PortB) de 8 bits cada uno configurables pin a pin conposibilidad de generar interrupciones cuando cambien sus entradas.

– 1 Registro de desplazamiento (SHR) para realizar conversiones paralelo / serie o viceversa– 2 temporizadores / contadores de 16 bits cada uno con distintos modos de funcionamiento.– 1 registro de interrupciones capaz de activar la línea de petición de interrupción del chip.

La arquitectura interna de la VIA se refleja en la siguiente figura.

6

Page 7: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Descripción Funcional

Nº deRegistro

Código pines RSX Nombre delRegistro

Descripción

RS3 RS2 RS1 RS0 Al Escribir Al Leer

0 0 0 0 0 ORB / IRB Registro de Salida del PORTB Registro de Entrada del PORTB

1 0 0 0 1 ORA / IRA Registro de Salida del PORTA Registro de Entrada del PORTA

2 0 0 1 0 DDRB Configuración de pines del PORTB como Entrada o Salida

3 0 0 1 1 DDRA Configuración de pines del PORTA como Entrada o Salida

4 0 1 0 0 T1C-L Byte bajo del Latch del T1 Byte bajo del Contador del T1

5 0 1 0 1 T1C-H Byte alto del Contador del T1

6 0 1 1 0 T1L-L Byte bajo del Latch del T1

7 0 1 1 1 T1L-H Byte bajo del Latch del T1

8 1 0 0 0 T2L-L / T2C-L Byte bajo del Latch del T2 Byte bajo del Contador del T2

9 1 0 0 1 T2C-H Byte alto del Contador del T2

A 1 0 1 0 SR Registro de Desplazamiento

B 1 0 1 1 ACR Registro de Control Auxiliar

C 1 1 0 0 PCR Registro de Control de Periféricos (Configuración de Protocolos)

D 1 1 0 1 IFR Registro de Flags de Interrupción

E 1 1 1 0 IER Registro de Habilitación de Interrupciones

F 1 1 1 1 ORA / IRA Igual que el Registro 1 pero sin Handshake

Puertos de Datos (PORTA y PORTB)

Los registros DDRA y DDRB especifican cuales líneas de cada puerto se comportarán comoentradas y cuales como salidas.

Un 0 en el bit de posición correspondiente fija la línea como entrada mientras que un 1 en el bitcorrespondiente la fija como salida.

Registros DDRB, y DDRA (Data Direction Register) Dirección $02, $03

7 6 5 4 3 2 1 0

DDRB / DDRA

PB7/PA7 PB6/PA6 PB5/PA5 PB4/PA4 PB3/PA3 PB2/PA2 PB1/PA1 PB0/PA0

Configuración del puerto:Poner un bit a 0 configura la línea correspondiente del puerto como una entrada de alta impedancia.

Poner un bit a 1 configura la línea correspondiente como salida. El nivel físico que toma esa salida

7

Page 8: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

se fija escribiendo en el registro del puerto (ORA, ORB).

Lectura y escritura en los puertos:

Cuando una línea es configurada como salida, se controla con el correspondiente bit del registro desalida (ORA ó ORB) de manera que al escribir un 1 en un bit, la línea correspondiente toma valoralto de tensión y al escribir un 0 la línea toma su valor bajo.

Si se escribe en bits del puerto configurados como entradas la línea no altera su valor físico.

Cuando se lee el puerto, se transfiere el valor del registro IRA ó IRB al bus de datos.

Existen dos posibles modos de configurar la operación de los puertos: Modo transparente y modoLatch. Dichos modos se especifican en el registro de configuración ACR.

Bit 1 de ACR Bit 0 de ACR Operación

0 0 Modo Transparente

1 1 Habilita el Latch

En el modo transparente, el contenido de los bits correspondientes a las líneas configuradas comoentradas refleja el valor físico de la tensión de la línea en el momento de la lectura (0 si la línea estábaja y 1 si está a nivel alto). Los dos puertos se comportan igual.

No obstante, las líneas configuradas como salidas también se pueden leer y en este caso los puertosA y B no se comportan de igual manera. Al leer el puerto B obtendremos el valor lógicoalmacenado en el registro ORB, pero al leer el puerto A obtendremos el valor lógico asociado alvalor físico de la tensión presente en la línea pudiendo ocurrir que una línea de salida activada anivel alto (un 1 en el bit del ORA) esté muy cargada ocasionando que su tensión caiga y se lea como0 en vez de como 1.

En el modo Latch, el contenido de IRA e IRB es el correspondiente al que tenían cuando se activóla orden de captura (líneas CA1y CB1 respectivamente).

Registro ORB, / IRB (Output / Imput Register) Dirección $00

7 6 5 4 3 2 1 0

ORB, IRB

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

8

Page 9: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Configuración de los pines Operación de ESCRITURA en elregistro

Operación de LECTURA delregistro

DDRB = 1 (Salida) MPU escribe el nivel lógicocorrespondiente al nivel físicodeseado para la salida

MPU lee el bit del registro ORB.El valor físico real de la línea noafecta.

DDRB = 0 (Entrada)Modo Transparente

MPU escribe en el registro pero laslíneas físicas no cambian (hasta quese modifique el DDRB)

MPU lee el nivel de entrada del pindel puerto en ese momento

DDRB = 0 (Entrada)Modo Latch

MPU lee el valor del bit quecorresponde al valor físico de laentrada en el momento de captura(la última vez que se activo la líneaCB1)

Registro ORA / IRA (Output / Imput Register) Dirección $01

7 6 5 4 3 2 1 0

ORA / IRA

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

Configuración de los pines Operación de ESCRITURA en elregistro

Operación de LECTURA delregistro

DDRA = 1 (Salida)Modo Transparente

MPU escribe el nivel lógicocorrespondiente al nivel físicodeseado para la salida en ORA

MPU lee el valor lógicocorrespondiente al nivel físicode entrada del pin del puertoen ese momento

DDRA = 1 (Salida)Modo Latch

MPU lee el valor del bit quecorresponde al valor físico dela entrada en el momento decaptura (la última vez que seactivo la línea CA1)

DDRA = 0 (Entrada)Modo Transparente

MPU escribe en el registro pero laslíneas físicas no cambian (hasta que semodifique el DDRA)

MPU lee el valor lógicocorrespondiente al nivel físicode entrada del pin del puertoen ese momento

DDRA = 0 (Entrada)Modo Latch

MPU lee el valor del bit quecorresponde al valor físico dela entrada en el momento decaptura (la última vez que seactivo la línea CA1)

Temporizadores/Contadores

La VIA dispone de dos dispositivos T1 y T2 que pueden funcionar como temporizadores ocontadores de 16 bits.

Cuando se programan como temporizadores contarán un número predeterminado de ciclos de reloj afin de generar un retardo de duración prefijada.

Cuando se configuran para contar eventos externos se denominan contadores o detectores de pulsosy avisarán de que la cuenta ha llegado a un valor prefijado.

Ambos temporizadores tienen modos de funcionamiento diferentes pudiendo utilizarse para:

9

Page 10: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

.- Generar un único intervalo de tiempo (T1 y T2). En este caso el contador se carga con elnúmero de impulsos de reloj a contar.

.- Contar impulsos en el Pin 6 del PORTB (sólo T2). En este caso el contador debe cargarsecon el número de impulsos a contar menos 1.

.- Generar un intervalo de tiempo de forma continua (sólo T1). El contador debe cargarsecon el número de impulsos de reloj por intervalo.

.- Producir un único o una serie continua de pulsos en el pin 7 del PORTB (sólo T1). Elcontador debe cargarse con el número de impulsos de reloj por intervalo.

Configuración de los modos de funcionamiento de T1 y T2

La configuración de los modos de funcionamiento del T1 y del T2 se realiza en el registro ACRsegún se indica:

Registro ACR (Auxiliary Control Register) Dirección $0B

7 6 5 4 3 2 1 0 ACR

Control T1 ControlT2

Control del Registro deDesplazamiento

PORTB PORTA

Temporizador T1 Consiste en 2 latches de 8 bits y un contador de 16 bits. Los latches almacenanel dato a cargar en el contador. Una vez que el contador es cargado se va decrementando su valorcada ciclo de reloj. Cuando llega a cero, se activa el bit 6 del registro IFR (Interrupt Flag Register)causando una petición de interrupción y activando la línea IRQB# si el bit 6 del registro IER(Interrupt Enable Register) está activo (a 1).

Una vez que la cuenta del temporizador llega a 0 podrá, o bien transferir el contenido de los latchesal contador y comenzar de nuevo la cuenta atrás (modo aestable), o bien desactivar futurasinterrupciones (modo monoestable) una vez ha llegado a 0. El T1 puede ser programado también demanera que a cada paso por cero invierta la señal del pin 7 del PORTB.

Cofiguración del Temporizador T1:ACR7 a 1 habilita la salida PB7, a 0 la inhabilita.ACR6 a 1 Genera una serie contínua de pulsos, a 0 genera un sólo intervalo.

10

Page 11: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Bit 7 de ACR Bit 6 de ACR Operación Pin 7 de PORTB

0 0 Modo Monoestable.Interrupción cada vezque se carga T1

Inhabilitado

0 1 Modo Aestable, Generainterrupciones de formacontinua

1 0 Modo MonoestableInterrupción cada vezque se carga T1

Cuando se producela interrupción se daun impulso en lasalida

1 1 Modo Aestable, Generainterrupciones de formacontinua

Genera una ondacuadrada

Formato del contador y funcionamientoRegistro T1C-L (Byte bajo del Contador T1) Dirección $04

7 6 5 4 3 2 1 0

T1C-L

128 64 32 16 8 4 2 1

Escribir en T1C-L => Se cargan los 8 bits en el Latch del Byte bajo T1L-L. EL contenido de T1L-Lse transfiere al T1C-L cuando el Byte alto del contador T1C-H se carga.

Leer T1C-L => Se transfiere el Byte bajo del contador T1C-L al MPU y se resetea el bit 6 delregistro IFR.

Registro T1C-H (Byte alto del Contador T1) Dirección $05

7 6 5 4 3 2 1 0

T1C-H

32768 16384 8192 4096 2048 1024 512 256

Escribir en T1C-H => Se cargan los 8 bits en el Latch del Byte alto T1L-H. Además provoca que elcontenido de ambos latches sea transferido al contador (a T1C-H y T1C-L) y se inicia la cuentaatrás. El flag 6 del registro IFR se pone a 0.

Leer T1C-H => Se transfiere el Byte alto del contador T1C-H al MPU.

11

Page 12: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Registro T1L-L (Byte bajo del Latch T1) Dirección $06

7 6 5 4 3 2 1 0

T1L-L

128 64 32 16 8 4 2 1

Escribir en T1L-L => Se cargan los 8 bits en el Latch del Byte bajo T1L-L. Esta operación no sediferencia de escribir en T1C-L

Leer T1L-L => Se transfiere el Byte bajo del contador T1C-L al MPU. Se diferencia de leer el T1C-L en que no se resetea el bit 6 del registro IFR.

Registro T1L-H (Byte alto del Latch de T1) Dirección $07

7 6 5 4 3 2 1 0

T1L-H

32768 16384 8192 4096 2048 1024 512 256

Escribir en T1L-H => Se cargan los 8 bits en el Latch del Byte alto T1L-H. Se diferencia de escribiren T1C-H en que no provoca que el contenido de ambos latches sea transferido al contador (a T1C-H y T1C-L). El flag 6 del registro IFR se pone a 0.Leer T1L-H => Se transfiere el Byte alto del contador T1C-H al MPU.

Temporizador T2 opera sólo en modo monoestable (genera un intervalo de tiempo una vez y separa) cuando se configura como temporizador; o cuenta los pulsos negativos que se produzcan en elpin 6 del PORTB cuando se configura como contador.

Configuración del Temporizador T2:El modo de funcionamiento se selecciona en el registro ACR actuando sobre el bit 5 de manera quesi ACR5 = 0 => funciona como temporizador mientras que si ACR5 = 1 => funciona comocontador.

Bit 5 de ACR Operación

0 Modo Monoestable

1 Cuenta los pulsos en el pin 6 del PORTB

Está implementado con un latch de sólo escritura correspondiente al Byte bajo, un contador de 8 bitspara el Byte bajo el cual sólo puede ser leído, y un contador de 8 bits para el Byte alto que puede serescrito y leído.

12

Page 13: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Registro T2L (Byte bajo del Latch de T2 si escritura y del Contador T2 si lectura) Dirección $08

7 6 5 4 3 2 1 0

T2L-L / T2C-L

128 64 32 16 8 4 2 1

Escribir en T2L => Se cargan los 8 bits en el Latch del Byte bajo de T2.Leer T2L => Se transfiere el Byte bajo del contador al MPU y se resetea el bit 5 del registro IFR.

Registro T2H (Byte alto del Contador T2) Dirección $09

7 6 5 4 3 2 1 0

T2C-H

32768 16384 8192 4096 2048 1024 512 256

Escribir en T2H => Se cargan los 8 bits en el Byte alto de T2. Además provoca que el contenido delLatch del Byte bajo pase al Byte bajo del contador y el bit 5 del IFR se resetea.Leer T2H => Se transfiere el Byte alto del contador al MPU.

Funcionamiento como temporizador monoestable:En su funcionamiento como temporizador monoestable se comporta de forma similar al T1. Cadavez que se cargue el Byte alto del temporizador (T2H) se carga el T2L con el contenido del latch delByte bajo del T2, se inicia la cuenta atrás y cuando el contador llega a 0 el bit 5 del IFR se pone a 1.

No obstante, el contador sigue contando, del $0000 pasa a $FFFF y continúa decrementando. Deesta forma, examinando el valor del contador (su Ca2) se puede conocer cuanto tiempo (cuántospulsos de reloj) hace que la cuenta pasó por 0.

Si se produjeran nuevos pasos por 0 antes de leer el contador no habría forma de saber cuándo seprodujo el primero ya que el IFR1 seguiría estando a 0.

Para que el valor lógico del flag tenga sentido, el microprocesador debe volver a cargar el Byte altodel contador.El flag de interrupción es borrado tanto al leer el Byte bajo del contador como al escribir en el Bytealto.

Funcionamiento como contador:En su funcionamiento como contador de pulsos T2 cuenta un número predeterminado de pulsosnegativos (flancos de bajada) en el pin 6 del PORTB6.

Para realizar esto, la cuenta debe ser cargada en el Byte alto del contador (T2H) el cuál pone a 0IRF5 y dispara la cuenta atrás del T2.

Cuando T2 alcanza el 0, IFR5 se activa (se pone a 1) y el contador sigue decrementando con cadapulso en PB6.

13

Page 14: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Para rehabilitar el flag IFR5 para las siguientes cuentas es necesario recargar el T2H del contador.

Interrupciones en la VIA

Hay tres operaciones básicas que realizar para producir una interrupción: poner a 1 el flag deinterrupción del IFR correspondiente, habilitar la interrupción por medio del bit correspondiente delregistro IER, y notificárselo al microprocesador a través de la línea IRQB#.

Un flag de interrupción puede ser activado por condiciones internas del chip o por entradas defuentes externas. Normalmente el flag permanecerá activado hasta que se atienda la interrupción.

Para determinar la fuente de la interrupción, el microprocesador tiene que examinar cada flag enorden, de la máxima a la mínima prioridad. Esto se hace leyendo el contenido del registro IFR.

Cada flag de interrupción tiene su correspondiente bit de habilitación de la petición de interrupción(para activar la línea IRQB#) en el registro IER. Éstos bits de habilitación son controlados por elmicroprocesador (el microprocesador es el que los pone a 1 ó a 0). Si un flag de interrupción está a1, y su correspondiente bit de habilitación de interrupción también está a 1, la línea IRQB# se activa(se pone a nivel bajo).

Todos los flags de interrupción están contenidos en el registro IFR. El bit 7 de este registro estará a1 en el caso de que algún flag de interrupción se haya activado permitiendo de este modo realizarcómodamente un polling a los diversos periféricos del sistema para determinar la fuente de lapetición de interrupción.El registro IFR puede ser leído directamente por el microprocesador y cada flag puede ser puesto a 0de forma individual escribiendo un 1 sobre él según se especifica más adelante.

El bit 7 del IFR indica el estado que la salida IRQB#, y toma el valor de la siguiente función lógica:

IRQ = IFR6 & IER6 | IFR5 & IER5 | IFR4 & IER4 | IFR3 & IER3 | IFR2 & IER2 | IFR1 & IER1 |IFR0 & IER0 |

Donde “&” es una operación lógica AND y “|” es una operación lógica OR.

El bit 7 del registro IRF no es un flag y por lo tanto no puede ser limpiado directamente escribiendoun 1 sobre su posición. Puede ser limpiado limpiando todos los flags del registro IFR oinhabilitando todas las interrupciones activas, como se describe más adelante.

A cada flag de interrupción del IFR le corresponde un bit de habilitación en el IER. Elmicroprocesador puede poner a 1 ó a 0 los bits del IER de forma individual permitiendo controlarlas interrupciones que se desee sin alterar las otras. Para activar (set) o desactivar (clear) un bit dehabilitación de interrupción particular, el microprocesador tiene que escribir en el IER.

Si el bit 7 de IER está a 0, cuando se escribe un 0 sobre un bit del IER, lo deja como estaba,mientras que si se escribe un 1 lo pone a 0 (p.ej. IER = 00101101; si escribimos 01001011 elregistro quedará IER = 00100100).

Si el bit 7 del IER está a 1, cuando se escribe un 0 sobre un bit del IER, lo deja como estaba,mientras que si se escribe un 1 lo pone a 1 (p.ej. IER = 00101101; si escribimos 01001011 elregistro quedará IER = 01101111).

14

Page 15: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Registro IFR (Interrupt Flag Register) Dirección $0D

7 6 5 4 3 2 1 0

IFR

IRQ T1 T2 CB1 CB2 Registrode

Despalzamiento

CA1 CA2

Activado por: Limpiado por:

Flanco activo en CA2 Leer o Escribir en ORA*

Flanco activo en CA1 Leer o Escribir en ORA*

8 bits desplazados en el SR Leer o Escribir en SR

Flanco activo en CB2 Leer o Escribir en ORB*

Flanco activo en CB1 Leer o Escribir en ORB*

Final de cuenta de T2 Leer T2C-L o Escribir T2C-H

Final de cuenta de T1 Leer T1C-L o Escribir T1C-H

Cualquier interrupciónhabilitada

Limpiar todas las interrupciones

* Si el control de CA2/CB2 en el PCR está configurado como independiente de la entrada deinterrupción entonces leer o escribir el registro de salida ORA/ORB no limpiará el flag. En ese caso,el bit debe ser limpiado escribiendo en el IFR como se describió previamente.

Registro IER (Interrupt Enable Register) Dirección $0E

7 6 5 4 3 2 1 0

IER

IRQ T1 T2 CB1 CB2 Registrode

Despalzamiento

CA1 CA2

Bit = 0 significa que la interrupción está inhabilitadaBit = 1 significa que la interrupción está habilitada

Nota: Si bit 7 =0, escribir un 1 en los bits 0 a 6 inhabilitará la correspondiente interrupción.Si bit 7 =1, escribir un 1 en los bits 0 a 6 habilitará la correspondiente interrupción.Si se lee este registro, el bit 7 se pondrá a 1 y los otros bits reflejarán su estadocorrespondiente.

15

Page 16: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

3.2DUART

Descripción interna

La DUART 68681 está organizada en 8 secciones principales: buffer del bus de datos, control deoperación, control de interrupciones, temporización, canales de comunicación A y B, puerto deentrada y puerto de salida.

Data bus buffer

Actúa de interfaz entre el bus de datos externo y el interno. Está gestionado por el bloque de controlde operación y permite las operaciones de lectura y escritura entre la CPU y los elementos internosde la DUART.

Control de operación

16

Page 17: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Recibe los diferentes comandos de la CPU y genera las señales internas que controlan la operacióndel dispositivo. Dichos comandos se reciben a través de las líneas o pines de la DUART: R/WN,indica si el tipo de operación a realizar sobre el dispositivo es de lectura o de escritura; CSN,habilita o inhabilita las transferencias de datos a través del bus D0-D7 entre la CPU y la DUART;A1-A4, selecciona el puerto interno de la DUART sobre el que la CPU realizará una operación delectura o escritura; RESETN, provoca que los registros internos (SRA, SRB, IMR, ISR,OPR,OPCR) se borren, inicializa el registro IVR a $0F, pone las salidas OP0-OP7 en estado alto,para el contador/temporizador, pone los canales A y B inactivos, borra los modo test y pone elpuntero MR apuntando a MR1; DTACKN, control de flujo para lectura y escritura en estructurasbasadas en 68000.

Control de interrupciones

La DUART activa la señal INTRN cuando ocurre alguno de los ocho eventos internos que puedengenerar interrupciones. Dispone de un registro IMR, o máscara de interrupciones, que habilita quécausas internas pueden generar la activación de la señal INTRN; un registro ISR que identifica lacausa o evento que, en un momento determinado, está provocando la interrupción; un registro IVRque contiene el vector de interrupción que la DUART coloca en el bus de datos cuando se recibe laseñal IACKN en un ciclo de reconocimiento de interrupciones; y el registro ACR, cuyos bits ACR[3:0] habilitan la interrupción de cambio de estado de las entradas IP3:0.

Temporización

Consiste en un oscilador de cristal, un generador de baudios, un contador/temporizador programablede 16 bits y cuatro selectores de reloj. El oscilador de cristal opera directamente con un cristalsituado entre los pines X1/CLK y X1 y genera una señal de reloj que sirve como temporización basepara el generador de baudios (BRG), el contador/temporizador y otros circuitos internos.

El BRG (generador de baudios) opera desde el oscilador o por una entrada de reloj externa, y escapaz de generar las velocidades más standard entre 50 y 38,4k baudios. La salida de reloj del BRGtienen una frecuencia 16x de la velocidad en baudios elegida. Para generar velocidades noestándares se puede utilizar el contador/temporizador, que puede generar un reloj de frecuencia 16xde cualquier velocidad en baudios que se desee. Los cuatro selectores de reloj permiten escoger, deforma independiente a cada sección transmisora o receptora de los dos canales, entre señales detemporización externas o cualquier buad rate generado internamente.

Contador/temporizador (C/T)

Consta de un registro de 16 bits que opera como contador, temporizador o en modo “timeout”. Encualquiera de los tres modos usa el valor de 16 bits cargado en los registros CTUR y CTLR. Enmodo contador, éste sirve para generar tiempos de retardo; en modo temporizador, para generarseñales cuadradas y en modo “timeout” monitoriza el flujo de datos del receptor y señaliza quedicho flujo se ha parado. En el último modo, el receptor controla el inicio de cuenta y la parada delcontador.

El contador opera como un contador descendente y activa el bit ISR[3] cada vez que éste pasa porcero. La salida del contador se puede mostrar en el pin OP3 o utilizarse como fuente reloj para lasección de recepción o la de transmisión.

El C/T se controla con 6 comandos: “start C/T, stop C/T, write C/T, preset registers, read C/T, set oreset timeout mode.

17

Page 18: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Canales de comunicación A y B

Cada canal de comunicación contiene un receptor transmisor asíncrono full-duplex. La frecuenciade trabajo del receptor y el transmisor puede ser seleccionada de forma independiente entre elgenerador de baudios, el contador/temporizador o una entrada externa.

El transmisor acepta datos en paralelo de la CPU, los convierte en una hilera de bits a los que lesañade el bit de start, el bit de stop y un bit opcional de paridad y, todos juntos, los envía por el pinTxD uno tras otro. El receptor acepta los datos serie que llegan por el pin RxD, chequea el bit destart, el bit de stop, el bit de paridad y la condición de break y envía el caracter ensamblado a laCPU.

Puerto de entrada

Mediante una lectura en la dirección interna $D de la DUART la CPU puede conocer el estadológico de los 6 pines IP0-IP5. Cualquier entrada que esté a nivel alto será leída como un 1, y la queesté en nivel bajo, como un 0. El bit 7 del caracter leído siempre es 1, mientras que el bit 6 refleja elvalor lógico de la señal IACKN. Los pines de este puerto puede servir también como entradasauxiliares para ciertas partes de la lógica de la DUART.

Funciones alternativas de las entradasIP0 CTSAN, clear to send del canal A. IP1 CTSBN, clear to send del canal B. IP2 Entrada de reloj del receptor del canal B (RxCB) o entrada de reloj del

contador/temporizador. Cuando el receptor usa esta entrada como reloj, los bits queentran por el pin RxDB se muestrean el flanco de subida de la señal de reloj.

IP3 Entrada de reloj del transmisor del canal A. Cuando el transmisor usa esta entradacomo reloj, la salida de los bits por el pin TxDA se sincronizan en el flanco de bajadade la señal de reloj.

IP4 Entrada de reloj del receptor del canal B (RxCA) o entrada de reloj delcontador/temporizador. Cuando el receptor usa esta entrada como reloj, los bits queentran por el pin RxDA se muestrean el flanco de subida de la señal de reloj.

IP5 Entrada de reloj del transmisor del canal B. Cuando el transmisor usa esta entradacomo reloj, la salida de los bits por el pin TxDB se sincronizan en el flanco de bajadade la señal de reloj.

El 68681 dispone de cuatro circuitos detectores de cambio asociados a las entradas IP3, IP2, IP1 eIP0. Cualquier transición alto-bajo o bajo-alto que se produzcan en esas entradas activan loscorrespondientes bits del registro IPCR (input change port register). Estos bits se borran cuando laCPU lee el registro IPCR, por lo que estos reflejan el cambio de estado en cualquiera de las entradasIP3:0 desde la última vez que se leyó el registro IPCR. Los bits de cambio del registro IPCR puedenutilizarse para generar una interrupción.

Puerto de salida

La DUART dispone de un puerto de salida de propósito general de 8 bits con funciones alternativasconfigurables. Cuando no se utilizan las funciones alternativas del puerto, la CPU puede activar o

18

Page 19: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

desactivar los pines OP0-OP7 escribiendo en los bits de este registro. Téngase en cuenta que lasvalores lógicos de las salidas son los complementos de los valores escritos en el registro de salida.Esto es, si se escribe OPR[n]=1, el pin OP[n]=0 y viceversa, si OPR[n]=0, el pin toma el valor OP[n]=1. Cada uno de los bits del registro OPR puede ser modificado individualmente. Para poner unbit a 1 se debe realizar una operación de escritura, en la dirección interna $E de la DUART, de unbyte que contenga 1's en aquellas posiciones en las que queramos poner el registro OPR a 1. Porejemplo, para poner a 1 el bit 2 del registro OPR realizaremos la escritura del carácter '00000010'ben la dirección $E. Para poner a 0 un bit del registro OPR, realizamos el mismo proceso pero en ladirección $F. Por ejemplo, para poner a 0 el bti 7 del registro OPR escribiremos '1000 000'b en ladirección $F.Las salidas OP7-0 tienen funciones alternativas que pueden activarse programando los registrosMR1A, MR1B, MR2A, MR2B y OPCR.

Funciones alternativas de las salidasOP0 RTSAN, request to send del canal A. Se puede desactivar automáticamente en

recepción o en transmisión. OP1 RTSBN, request to send del canal B. Se puede desactivar automáticamente en

recepción o en transmisión.. OP2 Salida de reloj 1x o 16x del transmisor del canal A o salida de reloj 1x del receptor

del canal A.OP3 Salida activa en bajo del contador /temporizador o salida de reloj 1x del transmisor o

receptor del canal B.OP4 Salida activa en bajo de RxRDYA/FFULLA OP5 Salida activa en bajo de RxRDYB/FFULLB OP6 Salida activa en bajo de TxRDYAOP7 Salida activa en bajo de TxRDYB

TRANSMISIÓN

Para realizar el envío de datos desde la DUART al exterior es necesario que el transmisor estéhabilitado. La habilitación o inhabilitación se consigue enviando el correspondiente comando alregistro CR. Cuando el transmisor está habilitado, éste indica a la CPU que está listo para aceptar uncarácter poniendo a 1 el bit TxRDY del registro de estado (SR). Esta condición puede utilizarse paragenerar una petición de interrupción a través del pin INTRN, y/o en los pines OP6 u OP7(dependiendo de si se trata del transmisor del canal A o el del canal B, respectivamente). Los pinesOP6 u OP7 reflejan la condición negada de TxRDY. Esto es, si la CPU carga un dato en el registroTHR, el bit TxRDY se pone a cero y, en consecuencia, las salidas OP6 y OP7, si están habilitadaspara ello, se ponen a 1, y al contrario, cuando el registro THR se queda vacío, el bit TxRDY se ponea 1, y las salidas OP6 u OP7, si están habilitadas para ello, a 0.

El dato que la CPU escribe en el THR se transfiere, automáticamente, al registro de desplazamientode transmisión cuando éste está inactivo o ha completado la transmisión del carácter previo. Cadatransferencia del registro THR al registro de desplazamiento reactiva el bit TxRDY. Si el transmisoresté inhabilitado no se pueden cargar caracteres en el registro THR.

El transmisor convierte los datos que recibe en modo paralelo de la CPU en un flujo de bits serie

19

Page 20: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

que salen a través del pin TxD. El transmisor automáticamente envía el bit de start seguido por elnúmero de bits de datos programados, un bit de paridad opcional y el número de bits de stopseleccionados. Primero se envía el bit bit menos significativo del dato. Al final de la transmisión delbit de stop, si no existe un nuevo carácter en el registro THR, la salida TxD se mantiene a 1 y el bitTxEMT del registro de estado (SR) se pone a 1. Este bit se pone a cero cuando el registro dedesplazamiento está ocupado, esto es, siempre que el THR le transfiere un nuevo carácter. Si eltransmisor se inhabilita cuando el registro de desplazamiento está enviando un carácter, éstecontinúa su operación hasta que el último bit ha sido enviado. Se puede forzar al transmisor paraque éste envíe un 0 continuo por su pin TxD ( condición de break).

El transmisor puede recibir un comando de Reset que provocará el cese inmediato de cualquieroperación.

Si se habilita el modo de operación CTS, la entrada CTSN (IP0 o IP1) debe estar a 0 lógico para quepueda transmitirse el carácter depositado en el registro de desplazamiento. Si CTSN se pone a 1lógico en medio de una transmisión, el carácter que está siendo transmitido por el registro dedesplazamiento se transmite, después, la salida TxDA se mantiene a 1 hasta que CTSN vuelva aponerse a 0 lógico.

El transmisor puede también controlar la activación de la salida RTSN (OP0 u OP1). Si esta funciónestá activada, la salida RTSN se pone a 1 un tiempo de bit después de la transmisión del carácter porel registro de desplazamiento si el registro THR está vacío y el transmisor ha sido inhabilitado.

RECEPCIÓN

Para que el 68681 pueda recibir datos se debe habilitar el bloque de recepción en el registro decomando (CR). Una vez habilitado, el receptor rastrea continuamente el pin RxD en busca de unatransición de alto-a-bajo (1-a-0) que marque el inicio del bit de start asociado a un carácter.Detectada dicha transición, el receptor muestrea la entrada RxD cada 16x ticks (o pulsos) de relojhasta el 7-1/2 tick(en el modo 16x) o hasta el próximo flanco de subida del reloj (en modo 1x). Si,para entonces, la muestra del pin RxD es 1 lógico, el receptor invalida la existencia de un verdadero

20

Page 21: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

bit de start y comienza la búsqueda de una nueva transición de alto-a-bajo o inicio de un nuevo bitde start. Si RxD hubiese sido 0, en lugar de 1, se tomaría como válida la recepción de un verdaderobit de start. A partir de este momento el receptor continuará muestreando la entrada RxD enintervalos de duración igual al tiempo de un bit hasta que se detecten todos los bits de datos, paridad(si hay) y al menos un bit de stop. De los bits de datos, primero se recibe el menos significativo.

El dato recibido en el registro de desplazamiento del receptor se transfiere, automáticamente, alregistro RHR. Esta transferencia se registra en el bit RxRDY del registro de estado SR. Si el bitRxRDY está 1, entonces el registro RHR contiene un dato no leído por la CPU. Se puede utilizar laactivación del bit RxRDY para generar la petición de interrupción a través del pin INTRN o lassalidas OP4 u OP5 si estas se han programado a tal efecto. Del registro de desplazamiento derecepción siempre se transfieren al registro RHR 8bits, por lo que si el carácter recibido tiene unalongitud menor a 8 bits, los bits más significativos se rellenan con ceros.

Después de la detección del bit de stop de un carácter, el receptor inicia, inmediatamente, labúsqueda de un nuevo bit de start. No obstante, si se recibiese un carácter distinto de cero sin bit destop (lo cual se registraría como error de trama o framing error) y RxD permaneciera a 0 lógicodespués del punto de muestreo del bit de stop durante la mitad del tiempo de bit, entonces, elreceptor, trabajaría como si se hubiese detectado un nueva transición de bit de start en ese instante.

Los errores de paridad, trama y overrun (si existen) son registrados en el registro SR Si se detectauna condición de break (RxD a 0 durante el tiempo correspondiente a la recepción del caráctercompleto), en el registro RHR se carga un carácter (y solo uno) consistente en todo ceros y se ponea 1 lógico el bit de break del registro de estado SR.

El registro RHR es, en realidad, una cola circular (FIFO) con capacidad para tres caracteres. Losdatos que se cargan en RHR se van situando en las posiciones libres más altas de la cola. El bitRxRDY del registro SR se pone a 1 siempre que la cola disponga de uno o más caracteres listospara ser leídos, mientras que el bit FFULL del SR se pone a 1 si todas las posiciones de la FIFOestán ocupadas. Tanto el bit RxRDY como FFULL pueden utilizarse para generar una interrupción.Una lectura del registro RHR saca el dato que se encuentra en la posición más alta de la FIFO.Después de cada ciclo de lectura, los datos de la FIFO y sus bits de estado asociados son'empujados' hacia arriba liberando una posición de la FIFO sobre la que se puede recibir un nuevodato.

Si la FIFO está llena en el momento en que se recibe un nuevo carácter, este se mantiene en elregistro de desplazamiento hasta que alguna de las posiciones de la FIFO se quede vacía. Si serecibe un nuevo carácter cuando esta situación persiste, el contenido de la FIFO no se altera, pero elcarácter retenido en el registro de desplazamiento es sobreescrito. Esto provoca que el bit Overrundel registro SR, se ponga a 1 lógico.

Cada dato almacenado en la FIFO tiene asociado tres bits de estado (error de paridad, error de tramay condición de break) que se muestran en el registro SR de dos modos distintos según se programeen el registro MR. En el modo carácter, el registro de estado SR muestra los bits de estado asociadosal carácter que está en lo alto de la FIFO. En el modo bloque, dichos bits muestran el resultado de laoperación OR de los tres bits de estado de los caracteres que han estado en la cima de la FIFO desdeel momento en que se aplicó el comando de “Reset error”. En ambos modos, la lectura del registroSR no afecta a la FIFO. En cambio, cada vez que se lee el registro RHR, os datos de la FIFO (juntocon sus bits de estado asociados) son empujados hacia arriba, por lo que si necesitamos saber lainformación de estado de un carácter, primero tenemos que leer el registro SR y después el RHR.Hacerlo en orden contrario implicaría la pérdida de la información de estado del carácter leído.

21

Page 22: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Se puede programar el receptor para que este controle la activación de la señal RTS. En ese modo,la salida RTSN se pone a 1 lógico en el momento en que se recibe el bit de start de un carácter y laFIFO está llena. En el momento en que alguna posición de la FIFO está disponible la salida RTSNvuelve a 0 automáticamente. Esta funcionalidad permite prevenir errores de overrun en el receptor sila salida RTSN se conecta con la entrada CTSN de un transmisor.

La inhabilitación del receptor lo para inmediatamente, de forma que el dato que se estuvieserecibiendo en el registro de desplazamiento se perdería. No obstante los datos almacenados en laFIFO, junto con sus bits de estado no se ven afectados y podrían ser leídos. Desde el momento enque nuevamente se habilite el receptor, este comenzará a ensamblar los caracteres que se reciban apartir del próximo bit de start que se detecte. Aplicar un reset al receptor provoca que este descarteel dato presente en el registro de desplazamiento, borre el bit RxRDY del registro SR, limpie elestado del byte situado en la cima de la FIFO y reinicie los punteros lectura y escritura de la FIFO,de modo que el efecto producido sería similar al borrado de su contenido. No obstante, realmente laFIFO no se borra por lo que si aplicaramos lecturas de la FIFO después de un RESET, leeríamos elúltimo carácter recibido. Esta situación se mantiene, al menos, hasta la recepción de un nuevocarácter.

PROGRAMACIÓN

La operación de la DUART se programa escribiendo palabras de control en los registros internosadecuados y, por otro lado, se puede obtener información interna leyendo el registro de estado. Eldireccionamiento de cada uno de los registros se muestra en la siguiente tabla.

22

Page 23: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Tras un RESET, el contenido de algunos registros son inicializados a cero. Hay que gastar cuidadocuando se cambia el contenido de ciertos registros cuando la DUART está en funcionamiento yaque podría causar problemas de operación. Por ejemplo, si se cambian la longitud de los bits dedatos mientras que el transmisor está activo se podría provocar la transmisión errónea del carácter.En general, se recomienda modificar el contenido del MR, el CSR, y el OPCR sólo cuando losreceptores o transmisores están inhabilitados, y ciertos cambios en el registro ACR sólo podránrealizarse cuando el Contador/Temporizador esté parado.

Los registros de modo MR1 y MR2 de cada canal comparten las mismas direcciones internas y seacceden gracias a un puntero auxiliar. El puntero está apuntando a MR1 después de un RESET odespués de enviar un comando de 'Reset pointer' al registro CR. Cualquier lectura o escritura alregistro de modo mientras que el puntero apunta a MR1x conmuta el puntero a MR2x. Entonces elpuntero permanece apuntando a MR2x, por lo que los siguientes accesos siempre apuntarán a MR2xhasta que se genere un RESET o comando 'Reset pointer' como se ha descrito anteriormente.

Los registros de estado, selección de reloj, comando y modo están duplicados para cada canal parasuministrar un modo de operación y control totalmente independiente. Los registros en lasdirecciones $2 y $10 nunca deben usarse durante un modo normal de operación ya que se reservanpara diagnóstico interno.

Registro de modo 1 del canal A MR1A (Lectura/Escritura en dirección interna $0)

Se accede a este registro en la dirección interna $0 cuando el puntero del registro MR del canal Aapunta a MR1A. Este puntero apunta a MR1A después de un RESET o un comando 'reset pointer'suministrado al registro CRA. Después del acceso al registro MR1A, el puntero apunta al registro

23

Page 24: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

MR2A, por lo que cualquier acceso, ahora, a la dirección $0 se realiza sobre el registro MR2A.

MR1A[7] – Channel A Receiver Request-to-Send Control

Este bit controla la desactivación de la salida RTSAN (OP0) por el receptor. Esta salida estánormalmente a 0 poniendo OPR[0] a 1 y se pone a 1 lógico cuando OPR[0] es 0. MR1A[7] = 1causa que RTSAN se ponga a 1 cuando se recibe el bit de start de un nuevo carácter y la FIFO estállena. RTSAN se vuelve a poner a 0 cuando existe alguna posición disponible en la FIFO. Estacapacidad permite el control de flujo.

MR1A[6] – Channel A receiver Interrupt Select

Este bit escoge la causa que permite la activación de interrupción entre la recepción de un nuevodato ( bit RxRDY activo) o si la cola está completa ( bit FFULL activo ). También causa que el bitseleccionado se muestre en la salida OP4 si la DUART está programada para generar interrupcionesvía registro OPCR.

MR1A[5] – Channel A Error Mode Select

Este bit selecciona el modo de operación (carácter o bloque) de los tres bits de estado encolados(FE,PE, break). En el modo carácter, el registro de estado SR muestra los bits de estado del carácterque está en lo alto de la FIFO. En el modo bloque, los bits del registro SR muestran el resultado dela operación OR de los tres bits de estado de los carácteres que han estado en la cima de la FIFOdesde el momento en que se aplicó el comando “Reset error”.

MR1A[4:3] – Channel A Parity Mode Select

Si se selecciona 'with parity' o 'force parity' entonces, en transmisión, se añade el bit de paridad alcarácter y, en recepción, se realiza el chequeo del bit de paridad del carácter recibido.

MR1A[2] - Channel A Parity type Select

Este bit selecciona el tipo de paridad (par o impar) si está programado el modo 'with parity' o lapolaridad del bit de paridad ( 0 o 1 ) si está seleccionado el modo 'force parity'. Este bit no tieneefecto si se ha escogido el modo 'no parity'.

MR1A[1:0] – Channel A Bits per Character Select

Este campo selecciona el número de bits de datos por carácter que se transmitirán y se esperarecibir.

Registro de modo 2 del canal A MR2A (Lectura/Escritura en dirección interna $0)

Se accede a este registro en la dirección interna $0 siempre que el puntero le apunte. Cualquier

24

Page 25: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

acceso a este registro no cambia el contenido del puntero.

MR2A[7:6] – Channel A Mode Select

Cada canal de la DUART puede operar en uno de los cuatro modos siguientes: Normal, Auto-Eco,Bucle local y bucle remoto.

Si MR2A[7:6]=00 se configura el modo normal, en el que el transmisor y el recptor trabajan deforma independiente.

Si MR2A[7:6]=01 se configura el modo eco, los datos recibidos son retransmitidosautomáticamente. El receptor debe estar habilitado y una vez habilitado, la CPU puede tener accesoa los datos recibidos y sus bits de estado. El transmisor no tiene que estar habilitado.

Si MR2A[7:6]=10 se selecciona el modo bucle local. En este modo el transmisor se conectainternamente con el receptor dejando los pines TxD y RxD inactivos. El transmisor tiene que estarhabilitado para que funcione este modo, y la CPU puede acceder al transmisor y receptor connormalidad.

Si MR21[7:6]=11 se selecciona el modo bucle remoto cuya funcionalidad es similar a la del modoeco salvo que la CPU no puede acceder a los bytes recibidos. El receptor debe estar habilitado.

25

Page 26: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

MR2A[5] – Channel A Transmiter Request-to-Send Control

Este bit permite la activación de la salida RTSN por el transmisor. Si MR2[5] está a 1 , la salidaRTSN se pondrá a 1 automáticamente un tiempo de bit posterior a que los caracteres en el registrode desplazamiento hayan sido transmitidos, el registro THR esté vacío y el transmisor inhabilitado.

MR2A[4] – Channel A Clear-to-Send Control

Si este bit está a 0, CTSAN no tiene efecto en el transmisor. Si está a 1, el transmisor chequea elestado de CTSAN( IP0) cada vez que está listo para enviar un carácter. Si IP0 vale 0, el carácter estransmitido. Si está a 1, la salida TxDA se mantiene a 1 lógico y la transmisión se demora hasta queCTSAN se pone a 0. Cualquier cambio en CTSAN mientras se está transmitiendo un carácter notiene ningún efecto.

MR2A[3:0] – Channel A Stop Bit Length Select

Este campo programa la longitud del bit de stop anexado al carácter transmitido. Se puedenprograma longitudes de 9/16 a 1 y 1-9/16 a 2 bits, en incrementos de 1/16 bit para longitudes dedatos de 6, 7 y 8 bits. Para caracteres de 5 bits, se pueden programar bit de stop de longitudescomprendidas entre 1-1/16 a 2 en incrementos de 1/16.

Si se utiliza un reloj externo a 1x para el transmisor, MR2[3]=0 selecciona 1 bit de stop y MR2[3]=1, 2 bits de stop.

Registro de estado del canal A SRA (Lectura en dirección $1)

SRA[7] – Channel A Received Break

Cuando el receptor detecta una condición de ruptura este bit se pone a 1. La recepción de un 'break'ocupa una única posición de la FIFO con un carácter cuyos bits son todos ceros. La puesta a 1 deeste bit provoca la activación, también, del bit de 'change in break' del canal A, ISR[2], el cualtambién puede ponerse a 1 cuando se detecta el final de la condición de break.

SRA[6] – Channel A Framing Error

26

Page 27: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Si el bit de stop del carácter recibido ha sido testeado como un 0 en lugar de un 1, este bit se pone a1. El bit de stop es muestreado en la mitad de la posición del primer bit de stop.

SRA[5] - Channel A Parity Error

Este bit se pone a 1 lógico si la DUART tiene programado el modo 'force parity' o 'with parity' y elcorrespondiente carácter en la FIFO se recibió con paridad incorrecta.

SRA[4] – Channel A Overrun Error

La activación de este bit muestra que uno o más caracteres del conjunto recibido por la entrada RxDno se han podido almacenar en la cola de entrada y, por tanto, se han perdido. Exactamente, este bitse pone a 1 cuando la FIFO está llena, el registro de desplazamiento está ocupado y se recibe unnuevo carácter. Cuando esto ocurre, el contenido del registro de desplazamiento se pierde. Este bitse pone a cero depositando el comando de 'reset error status' en el registro CRA.

SRA[3] – Channel A Transmitter Empty (TxEMTA)

Cada vez que el registro del desplazamiento se queda vacío, este bit se pone a 1. Este bit, junto conTxRDY se ponen a 1 cuando se habilita el transmisor o cada vez que este rehabilita después de a)un reset o b) o que el transmisor pase a estar inhabilitado. Este bit se pone a cero cuando la CPUcarga un dato en el registro THR ya que, este se transfiere inmediatamente al registro dedesplazamiento, si este está vacío..

SRA[2] – Channel A Transmitter Ready (TxRDYA)

Si el registro THR se queda vacío este bit se pone a 1 lógico. Se borra siempre que se deposite unnuevo carácter en el THR y se activa nuevamente cuando el carácter depositado se transfiere alregistro de desplazamiento. Si el transmisor está inhabilitado este bit se pone a 0 y vuelve a valer 1una vez que el transmisor se haya habilitado de nuevo.

SRA[1] – Channel A FIFO Full (FFULLA) Su activación indica que las tres posiciones de la FIFO están ocupadas. Se borra si se lee el registroRHR. Cuando existe un carácter en el registro de desplazamiento de recepción y la cola está llena, lalectura del RHR no pone a cero el bit FFULLA.

SRA[0] – Channel A Receiver Ready (RxRDYA)

Su puesta a uno indica la existencia de algún carácter listo para ser leído en la FIFO. Se pone a cerocuando la CPU lee el registro RHR y no existen más datos almacenados en la FIFO.

Registro de selección de reloj del canal A CSRA (Escritura en dirección $1)

27

Page 28: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

CSRA[7:4] – Channel A Receiver Clock Select

Este campo selecciona el baud rate para el receptor del canal A según la tabla siguiente.

Baud rate clock 3.6864 MhzCSRA[7:4] ACR[7]=0 ACR[7]=1

'0000' 50 75

'0001' 110 110

'0010' 134,5 134,5

'0011' 200 150

'0100' 300 300

'0101' 600 600

'0110' 1200 1200

'0111' 1050 2000

'1000' 2400 2400

'1001' 4800 4800

'1010' 7200 1800

'1011' 9600 9600

'1100' 38.4k 19.2K

'1101' Timer Timer

'1110' IP4-16X IP4-16X

'1111' IP4-1X IP4-1X

CSRA[3:0] – Channel A Transmitter Clock Select

Este campo selecciona el baud rate para el transmisor del canal A. Los valores son idénticos que enla tabla anterior salvo para los dos últimos casos

'1110' IP3-16X IP3-16X

'1111' IP3-1X IP3-1X

BRG TEST (BRGT) (Lectura en dirección interna $2)

Existen velocidades en baudios no estándares disponibles en la DUART a través de la funciónBRG Test. Estas velocidades no estándares se activan aplicando una lectura en la dirección interna$2. Una nueva lectura en esta dirección restablece las velocidades estándares. Debe tenerse encuenta, para no activar de forma errónea el modo BRG TEST, que una lectura del registro CRA(que sólo es de escritura), generaría la utilización de velocidades de transmisión y recepcióndiferentes a la deseada inicialmente.

Registro de Comando del canal A (Escritura en dirección interna $2)

28

Page 29: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Este registro acepta comandos para el canal A. Se pueden especificar múltiples comandos en unamisma escritura en el CRA siempre que los comandos no sean excluyentes entre sí.

CRA[6:4] Miscellaneous commands

'000' Sin comando

'001' Reset MR pointer. Provoca que el puntero del registro MR del canal A apunte a MR1A

'010' Reset receiver. Resetea el receptor del canal A como si de un reset hardware se tratara. El receptor seinhabilita y la FIFO es vaciada.

'011' Reset transmitter. Resetea el transmisor del canal A como si de un reset hardware se tratara.

'100' Reset error status. Borra los bits de estado del registro SRA

'101' Reset channel A break change interrupt. Pone a cero el bit ISR[2] o bit de cambio de estado debreak.

'110' Start break. Pone la salida TxDA a cero. El transmisor debe estar habilitado para que se puedaejecutar este comando

'111' Stop break. Pone a 1 la salida TxDA.

CRA[3] – Inhabilitación del transmisor del canal A

Este bit inhabilita la operación del transmisor y borra los bits TxRDYA y TxEMTA. Si en elmomento de la inhabilitación existe un carácter en el registro THR o en el registro dedesplazamiento, éste se transmite antes de que el transmisor pase a estado inhabilitado.

CRA[2] - Habilitación del transmisor del canal A

Habilta la operación del transmisor del canal A. El bit TxRDYA se pone a 1.

CRA[1] – Inhabilitación del receptor del canal A

Este bit termina la operación del receptor inmediatamente. Cualquier carácter que se esté recibiendoen el momento de la inhabilitación se perderá. Este comando no tiene efecto en los bits de estadodel receptor o cualquier otro registro de control.

CRA[0] – Habilitación del receptor del canal A

Habilita la operación del receptor del canal A.

Registro RHRA (Lectura en dirección interna $3)

Una lectura en este registro permite obtener el dato recibido que está almacenado en la FIFO.

Registro THRA (Escritura en dirección interna $3)

29

Page 30: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

La escritura en este registro permite transmitir el carácter.

Registro IPCR -Input port change registro- (Lectura en dirección interna $4)

IPCR[7:4] – Cambio de estado de las entradas IP3,IP2,IP1,IP0

Cada uno de este grupo de cuatro bits está asociado a un bit de las entradas IP3-IP0, de forma que elcambio del valor lógico de la entrada IP[n] (0..3) activa el bit DELTAIP[n]. Los bits se borrancuando la CPU lee este registro. Una lectura del IPCR también borra el bit ISR[7] del registro deestado que, en realidad, se obtiene como el resultado de la OR de todos los bits DELTAIP[n] que noestán enmascarados por los bits ACR[n]. Se puede usar el hecho de que cualquiera de estos bits sepongan a 1 lógico para que se genere la activación de una interrupción.

IPCR[3:0] – Valor de las entradas IP3,IP2,IP1,IP0

Estos bits muestran el valor lógico de las respectivas entradas.

Registro de control auxiliar ACR (Escritura en dirección interna $4)

ACR[7] – Selector de velocidad.

Permite escoger entre dos conjuntos de velocidades.

ACR[6:4] – Selector de fuente de reloj y modo del contador/temporizador

Este campo selecciona el modo de operación del contador/temporizador y su fuente de reloj.

ACR[6:4] MODO FUENTE DE RELOJ'000' Contador Externa (IP2)'001' Contador TxCA – 1x reloj del transmisor del canal A.'010' Contador TxCB – 1x reloj del transmisor del canal B.'011' Contador Cristal o reloj externo dividido por 16'100' Temporizador (onda cuadrada) Externa (IP2)'101' Temporizador (onda cuadrada) Externa (IP2) dividida por 16'110' Temporizador (onda cuadrada) Cristal o reloj externo '111' Temporizador (onda cuadrada) Cristal o reloj externo dividido por 16

30

Page 31: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

ACR[3:0] – Habilitación de interrupción de cambio de estado de las entradas IP3,IP2,IP1,IP0

Este campo selecciona qué bits del registro IPCR causan que se ponga a 1 el bit ISR[7]. Si uno deestos bits está a 1, la activación del correspondiente bit en el registro IPCR provocará la activacióndel bit ISR[7] que provocará la generación de una interrupción si el bit IMR[7] está a 1. Si el bitestá a cero, la activación del bit correspondiente en el IPCR no tiene efecto en el ISR[7].

Registro de estado de interrupción ISR (Lectura dirección interna $5)

Este registro registra el estado de todas las fuentes potenciales de interrupción. Su contenido seenmascara por el registro IMR, de forma que si el bit IMR[i] está a 1 lógico, cuando se active elcorrespondiente bit ISR[i], se provocará la activación del terminal INTRN. Si el bit IMR[i] está acero, cualquier cambio en ISR[i] no afectará la activación de INTRN. El contenido de este registrose inicializa a cero en un RESET.

ISR[7] – Cambio de estado en el puerto de entrada.

Cuando se ha producido un cambio de valor en las entradas IP0,IP1,IP2,IP3 y alguno de los bitsACR[3:0] están a 1, entonces, este bit se pone a 1. Este bit se borra cuando la CPU lee el IPCR.

ISR[6] – Cambio de condición de break en el canal B

Si esté bit está a 1 lógico indica que se ha detectado el comienzo o el final de una condición debreak. Se pone a cero cuando la CPU manda un comando de 'reset break change interrupt' en elcanal B.

ISR[5] – FIFO del canal B llena o receptor del canal B listo

La función de este bit depende de lo programado en el bit MR1B[6]. Si se programó la función dereceptor listo, este bit se activa cada vez que exista algún dato en la FIFO y se borra cuando la CPUlee el registro RHR y este se queda vacío (no hay mas caracteres en la FIFO). Si se programó lafunción de FIFO llena, entonces este bit se activa cuando las tres posiciones de la FIFO estánocupadas y se borra cuando la CPU lee el registro RHR y al menos se queda libre alguna posición.

ISR[4] – Transmisor del canal B listo.

Este bit es el mismo que TxRDYB

ISR[3] – Contador listo

En modo contador, este bit se activa cuando el contador alcanza su valor final y se borra cuando elcontador es parado por el comando 'stop counter'

31

Page 32: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

En modo temporizador, este bit se activa una vez cada ciclo de la onda cuadrada generada ( cadavez que el contador pasa por cero). El bit es puesto a cero por el comando 'stop counter' aunque estecomando no para el timer.

ISR[2] – Cambio de condición de break en el canal A

Este bit, cuando se activa, indica que el receptor del canal A ha detectado el comienzo o el final deuna condición de ruptura. Este bit se borra mediante el comando 'reset break change interrupt'.

ISR[1] - FIFO del canal A llena o receptor del canal A listo

La función de este bit depende de lo programado en el bit MR1A[6]. Si se programó la función dereceptor listo, este bit se activa cada vez que exista algún dato en la FIFO y se borra cuando la CPUlee el registro RHR y este se queda vacío (no hay mas caracteres en la FIFO). Si se programó lafunción de FIFO llena, entonces este bit se activa cuando las tres posiciones de la FIFO estánocupadas y se borra cuando la CPU lee el registro RHR y al menos se queda libre alguna posición.

ISR[0] – Transmisor del canal A listo.

Este bit es el mismo que TxRDYA

Registro de máscara de interrupción IMR (Escritura dirección interna $5)

La programación de este registro selecciona qué bits del registro ISR provocarán la activación de lasalida de interrupción. Si el bit IMR[i] está a 1 lógico, entonces, cuando se active el bit ISR[i], elterminal INTRN se activará. Si el bit IMR[i] está a cero, cualquier cambio en ISR[i] no afectará laactivación de INTRN. El registro IMR no enmascara las salidas de interrupción OP3-OP7 o lalectura del ISR.

Registro alto del contador temporizador y registro bajo del contador temporizador (CTU yCTL) (Lectura dirección interna $6 y dirección interna $7 respectivamente)

La lectura de estos registros permiten conocer el contenido del contador.

Registro alto del contador temporizador y registro bajo del contador temporizador (CTUR yCTLR) (Escritura dirección interna $6 y dirección interna $7 respectivamente)

32

Page 33: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

El registro CTUR y CTLR contienen los 8 bits MSB y los 8 bits LSB, respectivamente, del valorque será usado por el contador/temporizador tanto en el modo contador como en el modotemporizador. El menor valor que puede cargarse en estos registros es $0002. Estos registros son deescritura y su contenido no puede ser leído por la CPU.

En modo temporizador (divisor programable), el C/T genera una onda cuadrada con un periodoigual a dos veces el valor, expresado en ciclos de reloj, del contenido de los registros CTUR yCTLR. Si se cambia el contenido de estos registros, el semiperiodo actual no se ve afectado, perolos siguientes, sí. En este modo el C/T opera continuamente. La recepción del comando 'startcounter' (lectura en la dirección $E), hace que el contador finalice el ciclo actual y comience unnuevo ciclo con los valores cargados en CTUR y CTLR. La onda generada se puede usar como relojpara la temporización de los datos. La fórmula para el cálculo del divisor n a cargar en CTUR yCTLR para un reloj de datos 1x particular es:

El bit contador listo del registro de estado de interrupción (ISR[3]) se activa una vez cada ciclo de laseñal cuadrada. Este bit se borra por medio del comando 'stop command' (lectura en la dirección$F). Este comando no para el C/T. La señal cuadrada generada se puede mostrar en la salida OP3 siésta se ha programado a tal efecto.

Después del reset inicial, el C/T corre en modo temporizador y sólo puede ser reiniciado. Debido aque este no puede ser parado o apagado, se recomienda que, en la inicialización, el bit OP3 seaenmascarado por los bits OPCR[3:2]=00 hasta que el C/T sea programado del modo adecuado.

En modo contador, el C/T se decrementa el número de pulsos cargados en CTUR y CTLR. Elcontaje comienza cuando se recibe el comando 'start counter'. Cuando el contador llega a cero, el bitISR[3] se pone a 1. Una vez alcanzada la cuenta final, el contador sigue decrementándose hasta quese reciba el comando 'stop counter'. Si el pin OP3 se progrma como salida del C/T, ésta se mantienea 1 hasta que el contador alcance la cuenta final, entonces, la salida se pone a 0. La salida recuperasu valor inicial y el bit ISR[3] se pone a cero cuando el contador es parado por el comando 'stopcounter'. La CPU puede cambiar los valores de CTUR y CTLR en cualquier instante, pero la nuevacuenta sólo tendrá efecto a partir del siguiente comando de 'start counter'.

En el modo contador, el valor actual del contador puede leerse en los registros CTU y CTL. Serecomienda para el contador antes de leer su contenido, con el objeto de evitar falsas lecturas, peroesto tiene, a su vez, el inconveniente de que un nuevo comando de 'start counter' hace que elcontador no siga por el valor que tenía cuando se paró, sino el existente en los registros CTUR yCTLR.

Registro de modo 1 del canal B MR1B (Lectura dirección interna $8)

Este registro es accedido en la dirección $8 cuando el puntero del registro MR del canal B apunta aMR1B. Este puntero apunta a MR1B después de un RESET o un comando 'reset pointer'suministrado al registro CRB. Después del acceso al registro MR1B, el puntero apunta al registroMR2B, por lo que cualquier acceso, ahora, a la dirección $8 se realiza sobre el registro MR2B.

La funcionalidad de los bits del registro MR1B es la misma que para los bits del MR1A excepto quetodas controlan acciones del receptor o transmisor del canal B y las correspondientes entradas ysalidas.

33

n=C /T clock frecquency2∗16∗Baud rate

Page 34: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Registro de modo 1 del canal B MR2B (Escritura dirección interna $8)

Se accede a este registro en la dirección $B siempre que el puntero del canal B le apunte. Cualquieracceso a este registro no cambia el contenido del puntero.

La funcionalidad de los bits del registro MR2B es la misma que para los bits del MR2A excepto quetodas controlan acciones del receptor o transmisor del canal B y las correspondientes entradas ysalidas.

Registro de estado del canal B SRB (Lectura dirección interna $9)

La descripción funcional de los bits de este registro es la misma que la descrita para los bits delregistro SRA excepto que todos los estados se refieren al receptor y transmisor del canal B y suscorrespondientes entradas y salidas.

Registro de selección de reloj del canal B (Escritura dirección interna $9)

CSRB[7:4] – Channel B Receiver Clock Select

Este campo selecciona el baud rate para el receptor del canal B según la tabla siguiente.

Baud rate clock 3.6864 MhzCSRA[7:4] ACR[7]=0 ACR[7]=1

'0000' 50 75

'0001' 110 110

'0010' 134,5 134,5

'0011' 200 150

'0100' 300 300

'0101' 600 600

'0110' 1200 1200

'0111' 1050 2000

'1000' 2400 2400

'1001' 4800 4800

'1010' 7200 1800

'1011' 9600 9600

'1100' 38.4k 19.2K

'1101' Timer Timer

'1110' IP2-16X IP2-16X

'1111' IP2-1X IP2-1X

CSRB[3:0] – Channel B Transmitter Clock Select

Este campo selecciona el baud rate para el transmisor del canal B. Los valores son idénticos que enla tabla anterior salvo para los dos últimos casos

34

Page 35: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

'1110' IP5-16X IP5-16X

'1111' IP5-1X IP5-1X

1x/16x TEST (Lectura dirección interna $A)

Una lectura en esta dirección provoca que todos los transmisores y receptores cambien al modo 1x yque los puertos de salida se conecten a ciertos nodos internos para su test. Debe tenerse en cuentaque, una lectura errónea en el registro CRB (que sólo es de escritura) provocaría la activación delmodo test y, por consiguiente, un funcionamiento no esperado del conjunto.

Registro de comando del canal B (CRB) (Escritura dirección interna $A)

La descripción funcional de este registro es la misma que la descrita para el registro CRA exceptoque todos las acciones se refieren al receptor y transmisor del canal B y sus correspondientesentradas y salidas.

Registro RHRB (Lectura en dirección interna $B)

Una lectura en este registro permite obtener el dato recibido que está almacenado en la FIFO.

Registro THRB (Escritura en dirección interna $B)

La escritura en este registro permite transmitir el carácter.

Registro de vector de interrupción IVR (Lectura y escritura en dirección interna $C)

Este registro contiene el vector de interrupción. Tras aplicar un RESET a la DUART, el registro seinicializa con 0xF. Su contenido se sitúa en el bus de datos de forma automática en un ciclo dereconocimiento de interrupción.

Registro del puerto de entrada IPR (Lectura dirección interna $D)

Mediante una lectura en la dirección interna $D de la DUART la CPU puede conocer el estadológico de los 6 pines IP0-IP5. Cualquier entrada que esté a nivel alto será leída como un 1, y la queesté en nivel bajo, como un 0. El bit 7 del carácter leído siempre es 1, mientras que el bit 6 refleja elvalor lógico de la señal IACKN.

Registro de control del puerto de salida OPCR (Escritura dirección interna $D)

OPCR[7] – Selección salida OP7

35

Page 36: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

Este bit programa la función de la salida OP7. Si OPCR[7]=0, la salida OP7 es el complemento delbit OPR[7]. Si OPCR[7]=1, la salida se comporta como el complemento del bit TxRDYB. En estemodo la salida trabaja en colector abierto y no está enmascarada por el correspondiente bit del IMR.

OPCR[6] – Selección salida OP6

Este bit programa la función de la salida OP6. Si OPCR[6]=0, la salida OP6 es el complemento delbit OPR[6]. Si OPCR[6]=1, la salida se comporta como el complemento del bit TxRDYA. En estemodo la salida trabaja en colector abierto y no está enmascarada por el correspondiente bit del IMR.

OPCR[5] – Selección salida OP5

Este bit programa la función de la salida OP5. Si OPCR[5]=0, la salida OP5 es el complemento delbit OPR[5]. Si OPCR[5]=1, la salida se comporta como el complemento del bit RxRDYB oFFULLB (según lo programado en MR1B). En este modo la salida trabaja en colector abierto y noestá enmascarada por el correspondiente bit del IMR.

OPCR[4] – Selección salida OP4

Este bit programa la función de la salida OP4. Si OPCR[4]=0, la salida OP4 es el complemento delbit OPR[4]. Si OPCR[4]=1, la salida se comporta como el complemento del bit RxRDYA oFFULLA (según lo programado en MR1A). En este modo la salida trabaja en colector abierto y noestá enmascarada por el correspondiente bit del IMR.

OPCR[3:2] – Selección salida OP3

Este bit programa la función de la salida OP3.

00: El complemento de OPR[3]01: Salida a colector abierto del contador/temporizador. En modo temporizador, OP3 genera unaseñal cuadrada. En modo contador, la salida se mantiene a 1 hasta que se alcance la cuenta final, encuyo caso se pone a 0 lógico. La salida vuelve a valer 1 cuando paramos el contador mediante uncomando de 'stop counter'. Esta salida no se enmascara por el contenido del registro IMR.10: Reloj 1x del transmisor del canal B. Este es el reloj que marca el ritmo de desplazamiento de losdatos transmitidos. Si no se transmiten datos, esta salida se comporta como una señal de reloj defrecuencia 1x.11: Reloj 1x del receptor del canal B. Este es el reloj que marca el ritmo de muestreo de los datosrecibidos. Si no se reciben datos, esta salida se comporta como una señal de reloj de frecuencia 1x.

OPCR[1:0] – Selección salida OP2

Este bit programa la función de la salida OP2.

00: El complemento de OPR[2]01: Reloj 16x del transmisor del canal A. Este es el reloj seleccionado por CSRA[3:0] y será unreloj 1x si CSRA[3:0]=1111.10: Reloj 1x del transmisor del canal A. Este es el reloj que marca el ritmo de desplazamiento de losdatos transmitidos. Si no se transmiten datos, esta salida se comporta como una señal de reloj defrecuencia 1x.11: Reloj 1x del receptor del canal A. Este es el reloj que marca el ritmo de muestreo de los datosrecibidos. Si no se reciben datos, esta salida se comporta como una señal de reloj de frecuencia 1x.

36

Page 37: TEMA 3 ENTRADAS/SALIDAS · En este tema se analizará, por un lado, la gestión de entrada/salida para el microprocesador MC68000, tanto a nivel de organización de los dispositivos

El comportamiento de los pines OP0 y OP1 se regula en los registros de modo del canal A o B.

Comando 'start counter' (Lectura dirección interna $E)

Véase el contenido del apartado referente a los registros de contador.

Comando 'set outport port bits' (Escritura dirección interna $E)

Véase el contenido del apartado que describe el puerto de salida.

Comando 'stop counter' (Lectura dirección interna $F)

Véase el contenido del apartado referente a los registros de contador.

Comando 'reset outport port bits' (Escritura dirección interna $F)

Véase el contenido del apartado que describe el puerto de salida.

37