TEMA 3 ENTRADAS/SALIDAS
|
|
|
- Claudia Arroyo Montes
- hace 9 años
- Vistas:
Transcripción
1 TEMA 3 ENTRADAS/SALIDAS 1
2 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 el espacio de direccionamiento, como de la gestión y procesamiento de interrupciones, y, por otro lado, se estudiarán algunos dispositivos básicos como la VIA6255, que incorpora puertos paralelos y temporizador, y la DUART que implementa dos puertos serie asíncronos. Para la comprensión de este tema es recomendable repasar los conceptos generales de entradas/salidas que se establecieron en el capítulo primero de la asignatura, así como repasar los mecanismos que se explicaron en el capítulo anterior referentes a los ciclos de reconocimiento de interrupciones y ciclos de lectura/escritura para los buses asíncrono y síncrono. 1. DECODIFICACIÓN DE ENTRADA/SALIDA El utiliza E/S mapeada en memoria, por lo que, tanto los chips de memoria, como los chips de E/S, comparten el mismo espacio de direccionamiento. Esto implica que, cualquier instrucción que use un modo de direccionamiento que se apoye en el uso de una dirección, podrá acceder a una posición de entrada/salida, o a una de memoria. El sistema de decodificación debe identificar, según la dirección que lance el microprocesador por su bus de direcciones, hacia que elemento concreto va destinado 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 que están adaptados a su forma de trabajo a través del bus asíncrono. El inicia, siempre, una operación de entrada/salida como si se tratase de un ciclo normal de lectura/escritura. Los periféricos específicos intercambian información con el microprocesador a través del bus de datos bajo el control del bus asíncrono (líneas \AS, \DTACK, R\W,\LDS,\UDS). Destacar que los periféricos especificos incorporan la electrónica necesaria para la activación de la entrada \DTACK del microprocesador cuando el ciclo de E/S ha finalizado. Los periféricos síncronos necesitan de una señal de reloj de hasta 1Mhz que síncroniza el momento en que estos transfieren o reciben datos del microprocesador y no generan la activación de la entrada \DTACK. Desde un punto de vista básico, las transferencias entre el microprocesador y el periférico se realizan a través del bus de datos bajo la gestión del bus síncrono. Cuando el microprocesador inicia un ciclo de lectura/escritura en una dirección que, el sistema 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 de lectura/escritura en el cual las transferencias deben estar sincronizadas por la señal E. Por su parte, el activa la señal \VMA para informar a los periféricos que él ya está sincronizado con E y que, 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éricos como la DUART (específico) y la VIA 6255 (síncrono). Pasaremos a comentar cada uno de los aspectos de dicha figura: Decodificación: A partir de la dirección que lanza el microprocesador, el sistema de decodificación permite la activación de las señales \DUART y \SELVIA que permiten identificar qué dispositivo está siendo seleccionado. En concreto, si asumimos que las salidas de los decodificadores están numeradas de 0 a 7 desde arriba hacia abajo, se tiene que la VIA se selecciona para aquellas direcciones en las que A18-5 = {110xxxxxxxx001} y la DUART se selecciona para las direcciones A18-5={110xxxxxxxx010}. Los bits A4-1 de la dirección se utilizan para seleccionar posiciones internas de la DUART o la VIA y los bits A23-19 no intervienen en la decodificación. El primer decodificador de los dos (el que recibe A18-A16) 2
3 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
4 La DUART es un periférico específico del y, por consiguiente, se adapta al bus asíncrono. Dispone de salida \DTACK, que se conectará a la entrada del mismo nombre del microprocesador, entrada de R/W y habilitación de chip, \CS. Esta última debe activarse cuando el 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 sus registros internos, como el bus que los interconecta, tienen ese tamaño. (Utilizar \LDS implica que sólo se accederá a la DUART en accesos a direcciones impares dentro del rango de estas que activan \DUART, si se hubiese usado \UDS, entonces el bus de datos de la DUART hubiera tenido que conectarse a las líneas D15-D8 del bus de datos y se accedería a través de las direcciones pares). La VIA 6255 es un periférico síncrono de 8 bits con una frecuencia de reloj de hasta 1Mhz.(Se recuerda 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 puede ser de hasta 10Mhz). La VIA dispone de dos habilitadores (/CE1 y /CE2) que son activados, el segundo, por la señal \LDS, y el primero, por la combinación de \VMA, \SELVIA, y \LDS, y R/W. Para aquellos ciclos de lectura/escritura cuya direcciones estén asociadas a la VIA, el sistema de decodificación activa \SELVIA y, seguidamente, la entrada \VPA. Cuando el microprocesador se sincronice con E, activa \VMA que, junto con \SELVIA y \LDS, habilitan la VIA. Las transferencias de datos ocurren sincronizadas con E, por lo que este periférico no necesita 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 baja del 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 alguna forma, las entradas \IPL2-0. Si el nivel de petición de interrupción es superior al indicado por la máscara de interrupción del registro del estado, el microprocesador inicia la secuencia de reconocimiento 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 el que se espera recibir el número de vector de interrupción. Motorola tiene dos formas de obtener dicho vector de interrupción en el ciclo de reconocimiento: automáticamente o a través de un ciclo de lectura normal. El modo automático (autovectorización) ocurre cuando el microprocesador detecta la activación de su entrada \VPA en el ciclo de reconocimiento de interrupciones. Se escogerá uno de los 7 autovectores 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 de adaptarse al bus asíncrono ni electrónica interna como para almacenar el número de vector de interrupció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 el número de vector en el bus de datos. Este debe contener la electrónica necesaria como para almacenar el vector de interrupción y la activación de la señal \DTACK que finaliza con el ciclo de lectura. Adicionalmente existe una entrada (\IACK) cuya activación informa al dispositivo que el microprocesador está en un ciclo de reconocimiento de interrupciones y que éste desea leer el vector de interrupción. La DUART utiliza este esquema de gestión de interrupciones. 4
5 La siguiente figura muestra un esquema simplificado de conexión a interrupciones de un periférico síncrono y otro específico. Se ha destacado que la DUART necesita del bus de datos para emitir el nú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 las entradas \IPLx gracias a un codificador de prioridad que establece un cierto orden en las peticiones simultáneas. Asumiendo que las entradas están numeradas de arriba hacia abajo desde el 0 al 7, entonces, para el esquema de la figura, la DUART tiene mayor prioridad que la VIA
6 Una vez que las entradas \IPLx se han activado y su nivel asociado es mayor que el almacenado en la máscara de interrupción del registro de estado. El microprocesador inicia la secuencia de reconocimiento de interrupciones mediante un ciclo de lectura en el que usa A3-1 para indicar el nivel de interrupción que procederá a atender y las salidas FCx para distinguir este ciclo especial de 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 ciclo debe 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 con posibilidad 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
7 Descripción Funcional Nº de Registro Código pines RSX Nombre del Registro Descripción RS3 RS2 RS1 RS0 Al Escribir Al Leer ORB / IRB Registro de Salida del PORTB Registro de Entrada del PORTB ORA / IRA Registro de Salida del PORTA Registro de Entrada del PORTA DDRB Configuración de pines del PORTB como Entrada o Salida DDRA Configuración de pines del PORTA como Entrada o Salida T1C-L Byte bajo del Latch del T1 Byte bajo del Contador del T T1C-H Byte alto del Contador del T T1L-L Byte bajo del Latch del T T1L-H Byte bajo del Latch del T T2L-L / T2C-L Byte bajo del Latch del T2 Byte bajo del Contador del T T2C-H Byte alto del Contador del T2 A SR Registro de Desplazamiento B ACR Registro de Control Auxiliar C PCR Registro de Control de Periféricos (Configuración de Protocolos) D IFR Registro de Flags de Interrupción E IER Registro de Habilitación de Interrupciones F 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 como entradas 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 bit correspondiente la fija como salida. Registros DDRB, y DDRA (Data Direction Register) Dirección $02, $ PB7/PA7 PB6/PA6 PB5/PA5 PB4/PA4 PB3/PA3 PB2/PA2 PB1/PA1 PB0/PA0 DDRB / DDRA 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
8 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 de salida (ORA ó ORB) de manera que al escribir un 1 en un bit, la línea correspondiente toma valor alto 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 modo Latch. 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 como entradas 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 puertos A y B no se comportan de igual manera. Al leer el puerto B obtendremos el valor lógico almacenado en el registro ORB, pero al leer el puerto A obtendremos el valor lógico asociado al valor físico de la tensión presente en la línea pudiendo ocurrir que una línea de salida activada a nivel alto (un 1 en el bit del ORA) esté muy cargada ocasionando que su tensión caiga y se lea como 0 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 $ PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 ORB, IRB 8
9 Configuración de los pines DDRB = 1 (Salida) DDRB = 0 (Entrada) Modo Transparente DDRB = 0 (Entrada) Modo Latch Operación de ESCRITURA en el registro MPU escribe el nivel lógico correspondiente al nivel físico deseado para la salida MPU escribe en el registro pero las líneas físicas no cambian (hasta que se modifique el DDRB) Operación de LECTURA del registro MPU lee el bit del registro ORB. El valor físico real de la línea no afecta. MPU lee el nivel de entrada del pin del puerto en ese momento MPU lee el valor del bit que corresponde al valor físico de la entrada en el momento de captura (la última vez que se activo la línea CB1) Registro ORA / IRA (Output / Imput Register) Dirección $ ORA / IRA PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 Configuración de los pines DDRA = 1 (Salida) Modo Transparente DDRA = 1 (Salida) Modo Latch DDRA = 0 (Entrada) Modo Transparente DDRA = 0 (Entrada) Modo Latch Operación de ESCRITURA en el registro MPU escribe el nivel lógico correspondiente al nivel físico deseado para la salida en ORA MPU escribe en el registro pero las líneas físicas no cambian (hasta que se modifique el DDRA) Operación de LECTURA del registro MPU lee el valor lógico correspondiente al nivel físico de entrada del pin del puerto en ese momento MPU lee el valor del bit que corresponde al valor físico de la entrada en el momento de captura (la última vez que se activo la línea CA1) MPU lee el valor lógico correspondiente al nivel físico de entrada del pin del puerto en ese momento MPU lee el valor del bit que corresponde al valor físico de la entrada en el momento de captura (la última vez que se activo la línea CA1) Temporizadores/Contadores La VIA dispone de dos dispositivos T1 y T2 que pueden funcionar como temporizadores o contadores de 16 bits. Cuando se programan como temporizadores contarán un número predeterminado de ciclos de reloj a fin de generar un retardo de duración prefijada. Cuando se configuran para contar eventos externos se denominan contadores o detectores de pulsos y avisarán de que la cuenta ha llegado a un valor prefijado. Ambos temporizadores tienen modos de funcionamiento diferentes pudiendo utilizarse para: 9
10 .- Generar un único intervalo de tiempo (T1 y T2). En este caso el contador se carga con el número de impulsos de reloj a contar..- Contar impulsos en el Pin 6 del PORTB (sólo T2). En este caso el contador debe cargarse con el número de impulsos a contar menos 1..- Generar un intervalo de tiempo de forma continua (sólo T1). El contador debe cargarse con 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). El contador 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 ACR según se indica: Registro ACR (Auxiliary Control Register) Dirección $0B ACR Control T1 Control T2 Control del Registro de Desplazamiento PORTB PORTA Temporizador T1 Consiste en 2 latches de 8 bits y un contador de 16 bits. Los latches almacenan el dato a cargar en el contador. Una vez que el contador es cargado se va decrementando su valor cada 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 latches al contador y comenzar de nuevo la cuenta atrás (modo aestable), o bien desactivar futuras interrupciones (modo monoestable) una vez ha llegado a 0. El T1 puede ser programado también de manera 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
11 Bit 7 de ACR Bit 6 de ACR Operación Pin 7 de PORTB 0 0 Modo Monoestable. Interrupción cada vez que se carga T1 0 1 Modo Aestable, Genera interrupciones de forma continua 1 0 Modo Monoestable Interrupción cada vez que se carga T1 1 1 Modo Aestable, Genera interrupciones de forma continua Inhabilitado Cuando se produce la interrupción se da un impulso en la salida Genera una onda cuadrada Formato del contador y funcionamiento Registro T1C-L (Byte bajo del Contador T1) Dirección $ T1C-L Escribir en T1C-L => Se cargan los 8 bits en el Latch del Byte bajo T1L-L. EL contenido de T1L-L se 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 del registro IFR. Registro T1C-H (Byte alto del Contador T1) Dirección $ T1C-H Escribir en T1C-H => Se cargan los 8 bits en el Latch del Byte alto T1L-H. Además provoca que el contenido de ambos latches sea transferido al contador (a T1C-H y T1C-L) y se inicia la cuenta atrá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
12 Registro T1L-L (Byte bajo del Latch T1) Dirección $ T1L-L Escribir en T1L-L => Se cargan los 8 bits en el Latch del Byte bajo T1L-L. Esta operación no se diferencia 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 $ T1L-H Escribir en T1L-H => Se cargan los 8 bits en el Latch del Byte alto T1L-H. Se diferencia de escribir en 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 se para) cuando se configura como temporizador; o cuenta los pulsos negativos que se produzcan en el pin 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 que si ACR5 = 0 => funciona como temporizador mientras que si ACR5 = 1 => funciona como contador. 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 bits para el Byte bajo el cual sólo puede ser leído, y un contador de 8 bits para el Byte alto que puede ser escrito y leído. 12
13 Registro T2L (Byte bajo del Latch de T2 si escritura y del Contador T2 si lectura) Dirección $ T2L-L / T2C-L 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 $ T2C-H Escribir en T2H => Se cargan los 8 bits en el Byte alto de T2. Además provoca que el contenido del Latch 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. Cada vez que se cargue el Byte alto del temporizador (T2H) se carga el T2L con el contenido del latch del Byte 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. De esta forma, examinando el valor del contador (su Ca2) se puede conocer cuanto tiempo (cuántos pulsos 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 se produjo 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 alto del contador. El flag de interrupción es borrado tanto al leer el Byte bajo del contador como al escribir en el Byte alto. Funcionamiento como contador: En su funcionamiento como contador de pulsos T2 cuenta un número predeterminado de pulsos negativos (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 0 IRF5 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 cada pulso en PB6. 13
14 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 de interrupción del IFR correspondiente, habilitar la interrupción por medio del bit correspondiente del registro 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 de fuentes 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 en orden, 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 el microprocesador (el microprocesador es el que los pone a 1 ó a 0). Si un flag de interrupción está a 1, 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á a 1 en el caso de que algún flag de interrupción se haya activado permitiendo de este modo realizar cómodamente un polling a los diversos periféricos del sistema para determinar la fuente de la petición de interrupción. El registro IFR puede ser leído directamente por el microprocesador y cada flag puede ser puesto a 0 de 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 escribiendo un 1 sobre su posición. Puede ser limpiado limpiando todos los flags del registro IFR o inhabilitando 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. El microprocesador puede poner a 1 ó a 0 los bits del IER de forma individual permitiendo controlar las interrupciones que se desee sin alterar las otras. Para activar (set) o desactivar (clear) un bit de habilitació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 = ; si escribimos el registro quedará IER = ). 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 = ; si escribimos el registro quedará IER = ). 14
15 Registro IFR (Interrupt Flag Register) Dirección $0D IFR IRQ T1 T2 CB1 CB2 Registro de Despalza miento CA1 CA2 Activado por: Flanco activo en CA2 Flanco activo en CA1 Limpiado por: Leer o Escribir en ORA* Leer o Escribir en ORA* 8 bits desplazados en el SR Leer o Escribir en SR Flanco activo en CB2 Flanco activo en CB1 Final de cuenta de T2 Final de cuenta de T1 Cualquier interrupción habilitada Leer o Escribir en ORB* Leer o Escribir en ORB* Leer T2C-L o Escribir T2C-H Leer T1C-L o Escribir T1C-H Limpiar todas las interrupciones * Si el control de CA2/CB2 en el PCR está configurado como independiente de la entrada de interrupció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 IER IRQ T1 T2 CB1 CB2 Registro de Despalza miento Bit = 0 significa que la interrupción está inhabilitada Bit = 1 significa que la interrupción está habilitada CA1 CA2 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 estado correspondiente. 15
16 3.2DUART Descripción interna La DUART está organizada en 8 secciones principales: buffer del bus de datos, control de operación, control de interrupciones, temporización, canales de comunicación A y B, puerto de entrada 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 control de operación y permite las operaciones de lectura y escritura entre la CPU y los elementos internos de la DUART. Control de operación 16
17 Recibe los diferentes comandos de la CPU y genera las señales internas que controlan la operación del 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 de lectura 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 el puntero MR apuntando a MR1; DTACKN, control de flujo para lectura y escritura en estructuras basadas en Control de interrupciones La DUART activa la señal INTRN cuando ocurre alguno de los ocho eventos internos que pueden generar 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 la causa o evento que, en un momento determinado, está provocando la interrupción; un registro IVR que contiene el vector de interrupción que la DUART coloca en el bus de datos cuando se recibe la señ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 programable de 16 bits y cuatro selectores de reloj. El oscilador de cristal opera directamente con un cristal situado entre los pines X1/CLK y X1 y genera una señal de reloj que sirve como temporización base para 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 es capaz de generar las velocidades más standard entre 50 y 38,4k baudios. La salida de reloj del BRG tienen una frecuencia 16x de la velocidad en baudios elegida. Para generar velocidades no estándares se puede utilizar el contador/temporizador, que puede generar un reloj de frecuencia 16x de cualquier velocidad en baudios que se desee. Los cuatro selectores de reloj permiten escoger, de forma independiente a cada sección transmisora o receptora de los dos canales, entre señales de temporizació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. En cualquiera de los tres modos usa el valor de 16 bits cargado en los registros CTUR y CTLR. En modo contador, éste sirve para generar tiempos de retardo; en modo temporizador, para generar señales cuadradas y en modo timeout monitoriza el flujo de datos del receptor y señaliza que dicho flujo se ha parado. En el último modo, el receptor controla el inicio de cuenta y la parada del contador. El contador opera como un contador descendente y activa el bit ISR[3] cada vez que éste pasa por cero. La salida del contador se puede mostrar en el pin OP3 o utilizarse como fuente reloj para la secció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 o reset timeout mode. 17
18 Canales de comunicación A y B Cada canal de comunicación contiene un receptor transmisor asíncrono full-duplex. La frecuencia de trabajo del receptor y el transmisor puede ser seleccionada de forma independiente entre el generador 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 les añade el bit de start, el bit de stop y un bit opcional de paridad y, todos juntos, los envía por el pin TxD uno tras otro. El receptor acepta los datos serie que llegan por el pin RxD, chequea el bit de start, el bit de stop, el bit de paridad y la condición de break y envía el caracter ensamblado a la CPU. Puerto de entrada Mediante una lectura en la dirección interna $D de la DUART la CPU puede conocer el estado lógico de los 6 pines IP0-IP5. Cualquier entrada que esté a nivel alto será leída como un 1, y la que esté en nivel bajo, como un 0. El bit 7 del caracter leído siempre es 1, mientras que el bit 6 refleja el valor lógico de la señal IACKN. Los pines de este puerto puede servir también como entradas auxiliares para ciertas partes de la lógica de la DUART. Funciones alternativas de las entradas IP0 CTSAN, clear to send del canal A. IP1 CTSBN, clear to send del canal B. IP2 IP3 IP4 IP5 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 que entran por el pin RxDB se muestrean el flanco de subida de la señal de reloj. Entrada de reloj del transmisor del canal A. Cuando el transmisor usa esta entrada como reloj, la salida de los bits por el pin TxDA se sincronizan en el flanco de bajada de la señal de reloj. Entrada de reloj del receptor del canal B (RxCA) o entrada de reloj del contador/temporizador. Cuando el receptor usa esta entrada como reloj, los bits que entran por el pin RxDA se muestrean el flanco de subida de la señal de reloj. Entrada de reloj del transmisor del canal B. Cuando el transmisor usa esta entrada como reloj, la salida de los bits por el pin TxDB se sincronizan en el flanco de bajada de la señal de reloj. El dispone de cuatro circuitos detectores de cambio asociados a las entradas IP3, IP2, IP1 e IP0. Cualquier transición alto-bajo o bajo-alto que se produzcan en esas entradas activan los correspondientes bits del registro IPCR (input change port register). Estos bits se borran cuando la CPU lee el registro IPCR, por lo que estos reflejan el cambio de estado en cualquiera de las entradas IP3:0 desde la última vez que se leyó el registro IPCR. Los bits de cambio del registro IPCR pueden utilizarse 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 alternativas configurables. Cuando no se utilizan las funciones alternativas del puerto, la CPU puede activar o 18
19 desactivar los pines OP0-OP7 escribiendo en los bits de este registro. Téngase en cuenta que las valores 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 un bit a 1 se debe realizar una operación de escritura, en la dirección interna $E de la DUART, de un byte que contenga 1's en aquellas posiciones en las que queramos poner el registro OPR a 1. Por ejemplo, para poner a 1 el bit 2 del registro OPR realizaremos la escritura del carácter ' 'b en la dirección $E. Para poner a 0 un bit del registro OPR, realizamos el mismo proceso pero en la dirección $F. Por ejemplo, para poner a 0 el bti 7 del registro OPR escribiremos ' 'b en la dirección $F. Las salidas OP7-0 tienen funciones alternativas que pueden activarse programando los registros MR1A, MR1B, MR2A, MR2B y OPCR. Funciones alternativas de las salidas OP0 RTSAN, request to send del canal A. Se puede desactivar automáticamente en recepción o en transmisión. OP1 OP2 OP3 OP4 OP5 OP6 OP7 RTSBN, request to send del canal B. Se puede desactivar automáticamente en recepción o en transmisión.. Salida de reloj 1x o 16x del transmisor del canal A o salida de reloj 1x del receptor del canal A. Salida activa en bajo del contador /temporizador o salida de reloj 1x del transmisor o receptor del canal B. Salida activa en bajo de RxRDYA/FFULLA Salida activa en bajo de RxRDYB/FFULLB Salida activa en bajo de TxRDYA 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 al registro CR. Cuando el transmisor está habilitado, éste indica a la CPU que está listo para aceptar un carácter poniendo a 1 el bit TxRDY del registro de estado (SR). Esta condición puede utilizarse para generar 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 pines OP6 u OP7 reflejan la condición negada de TxRDY. Esto es, si la CPU carga un dato en el registro THR, el bit TxRDY se pone a cero y, en consecuencia, las salidas OP6 y OP7, si están habilitadas para ello, se ponen a 1, y al contrario, cuando el registro THR se queda vacío, el bit TxRDY se pone a 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 desplazamiento de transmisión cuando éste está inactivo o ha completado la transmisión del carácter previo. Cada transferencia del registro THR al registro de desplazamiento reactiva el bit TxRDY. Si el transmisor esté 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
20 que salen a través del pin TxD. El transmisor automáticamente envía el bit de start seguido por el número de bits de datos programados, un bit de paridad opcional y el número de bits de stop seleccionados. Primero se envía el bit bit menos significativo del dato. Al final de la transmisión del bit de stop, si no existe un nuevo carácter en el registro THR, la salida TxD se mantiene a 1 y el bit TxEMT del registro de estado (SR) se pone a 1. Este bit se pone a cero cuando el registro de desplazamiento está ocupado, esto es, siempre que el THR le transfiere un nuevo carácter. Si el transmisor se inhabilita cuando el registro de desplazamiento está enviando un carácter, éste continúa su operación hasta que el último bit ha sido enviado. Se puede forzar al transmisor para que é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 cualquier operación. Si se habilita el modo de operación CTS, la entrada CTSN (IP0 o IP1) debe estar a 0 lógico para que pueda transmitirse el carácter depositado en el registro de desplazamiento. Si CTSN se pone a 1 lógico en medio de una transmisión, el carácter que está siendo transmitido por el registro de desplazamiento se transmite, después, la salida TxDA se mantiene a 1 hasta que CTSN vuelva a ponerse a 0 lógico. El transmisor puede también controlar la activación de la salida RTSN (OP0 u OP1). Si esta función está activada, la salida RTSN se pone a 1 un tiempo de bit después de la transmisión del carácter por el registro de desplazamiento si el registro THR está vacío y el transmisor ha sido inhabilitado. RECEPCIÓN Para que el pueda recibir datos se debe habilitar el bloque de recepción en el registro de comando (CR). Una vez habilitado, el receptor rastrea continuamente el pin RxD en busca de una transició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 reloj hasta 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
21 bit de start y comienza la búsqueda de una nueva transición de alto-a-bajo o inicio de un nuevo bit de start. Si RxD hubiese sido 0, en lugar de 1, se tomaría como válida la recepción de un verdadero bit de start. A partir de este momento el receptor continuará muestreando la entrada RxD en intervalos 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, al registro RHR. Esta transferencia se registra en el bit RxRDY del registro de estado SR. Si el bit RxRDY está 1, entonces el registro RHR contiene un dato no leído por la CPU. Se puede utilizar la activación del bit RxRDY para generar la petición de interrupción a través del pin INTRN o las salidas OP4 u OP5 si estas se han programado a tal efecto. Del registro de desplazamiento de recepción siempre se transfieren al registro RHR 8bits, por lo que si el carácter recibido tiene una longitud 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, la búsqueda de un nuevo bit de start. No obstante, si se recibiese un carácter distinto de cero sin bit de stop (lo cual se registraría como error de trama o framing error) y RxD permaneciera a 0 lógico después del punto de muestreo del bit de stop durante la mitad del tiempo de bit, entonces, el receptor, 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 detecta una condición de break (RxD a 0 durante el tiempo correspondiente a la recepción del carácter completo), en el registro RHR se carga un carácter (y solo uno) consistente en todo ceros y se pone a 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. Los datos que se cargan en RHR se van situando en las posiciones libres más altas de la cola. El bit RxRDY del registro SR se pone a 1 siempre que la cola disponga de uno o más caracteres listos para ser leídos, mientras que el bit FFULL del SR se pone a 1 si todas las posiciones de la FIFO está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 nuevo dato. Si la FIFO está llena en el momento en que se recibe un nuevo carácter, este se mantiene en el registro de desplazamiento hasta que alguna de las posiciones de la FIFO se quede vacía. Si se recibe un nuevo carácter cuando esta situación persiste, el contenido de la FIFO no se altera, pero el carácter retenido en el registro de desplazamiento es sobreescrito. Esto provoca que el bit Overrun del 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 trama y condición de break) que se muestran en el registro SR de dos modos distintos según se programe en el registro MR. En el modo carácter, el registro de estado SR muestra los bits de estado asociados al carácter que está en lo alto de la FIFO. En el modo bloque, dichos bits muestran el resultado de la operación OR de los tres bits de estado de los caracteres que han estado en la cima de la FIFO desde el momento en que se aplicó el comando de Reset error. En ambos modos, la lectura del registro SR no afecta a la FIFO. En cambio, cada vez que se lee el registro RHR, os datos de la FIFO (junto con sus bits de estado asociados) son empujados hacia arriba, por lo que si necesitamos saber la informació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
22 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 la FIFO está llena. En el momento en que alguna posición de la FIFO está disponible la salida RTSN vuelve a 0 automáticamente. Esta funcionalidad permite prevenir errores de overrun en el receptor si la 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 estuviese recibiendo en el registro de desplazamiento se perdería. No obstante los datos almacenados en la FIFO, junto con sus bits de estado no se ven afectados y podrían ser leídos. Desde el momento en que nuevamente se habilite el receptor, este comenzará a ensamblar los caracteres que se reciban a partir del próximo bit de start que se detecte. Aplicar un reset al receptor provoca que este descarte el dato presente en el registro de desplazamiento, borre el bit RxRDY del registro SR, limpie el estado 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 la FIFO 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 nuevo carácter. PROGRAMACIÓN La operación de la DUART se programa escribiendo palabras de control en los registros internos adecuados y, por otro lado, se puede obtener información interna leyendo el registro de estado. El direccionamiento de cada uno de los registros se muestra en la siguiente tabla. 22
23 Tras un RESET, el contenido de algunos registros son inicializados a cero. Hay que gastar cuidado cuando se cambia el contenido de ciertos registros cuando la DUART está en funcionamiento ya que podría causar problemas de operación. Por ejemplo, si se cambian la longitud de los bits de datos 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 los receptores o transmisores están inhabilitados, y ciertos cambios en el registro ACR sólo podrán realizarse cuando el Contador/Temporizador esté parado. Los registros de modo MR1 y MR2 de cada canal comparten las mismas direcciones internas y se acceden gracias a un puntero auxiliar. El puntero está apuntando a MR1 después de un RESET o después de enviar un comando de 'Reset pointer' al registro CR. Cualquier lectura o escritura al registro de modo mientras que el puntero apunta a MR1x conmuta el puntero a MR2x. Entonces el puntero permanece apuntando a MR2x, por lo que los siguientes accesos siempre apuntarán a MR2x hasta 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 para suministrar un modo de operación y control totalmente independiente. Los registros en las direcciones $2 y $10 nunca deben usarse durante un modo normal de operación ya que se reservan para 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 A apunta 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
24 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] = 1 causa 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. Esta capacidad 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 nuevo dato ( bit RxRDY activo) o si la cola está completa ( bit FFULL activo ). También causa que el bit seleccionado se muestre en la salida OP4 si la DUART está programada para generar interrupciones ví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ácter que está en lo alto de la FIFO. En el modo bloque, los bits del registro SR muestran el resultado de la operación OR de los tres bits de estado de los carácteres que han estado en la cima de la FIFO desde 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 al cará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 la polaridad del bit de paridad ( 0 o 1 ) si está seleccionado el modo 'force parity'. Este bit no tiene efecto 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 espera recibir. 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
25 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 de forma independiente. Si MR2A[7:6]=01 se configura el modo eco, los datos recibidos son retransmitidos automáticamente. El receptor debe estar habilitado y una vez habilitado, la CPU puede tener acceso a 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 conecta internamente con el receptor dejando los pines TxD y RxD inactivos. El transmisor tiene que estar habilitado para que funcione este modo, y la CPU puede acceder al transmisor y receptor con normalidad. Si MR21[7:6]=11 se selecciona el modo bucle remoto cuya funcionalidad es similar a la del modo eco salvo que la CPU no puede acceder a los bytes recibidos. El receptor debe estar habilitado. 25
26 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 salida RTSN se pondrá a 1 automáticamente un tiempo de bit posterior a que los caracteres en el registro de 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 el estado de CTSAN( IP0) cada vez que está listo para enviar un carácter. Si IP0 vale 0, el carácter es transmitido. Si está a 1, la salida TxDA se mantiene a 1 lógico y la transmisión se demora hasta que CTSAN se pone a 0. Cualquier cambio en CTSAN mientras se está transmitiendo un carácter no tiene 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 pueden programa longitudes de 9/16 a 1 y 1-9/16 a 2 bits, en incrementos de 1/16 bit para longitudes de datos de 6, 7 y 8 bits. Para caracteres de 5 bits, se pueden programar bit de stop de longitudes comprendidas 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 de este bit provoca la activación, también, del bit de 'change in break' del canal A, ISR[2], el cual también puede ponerse a 1 cuando se detecta el final de la condición de break. SRA[6] Channel A Framing Error 26
27 Si el bit de stop del carácter recibido ha sido testeado como un 0 en lugar de un 1, este bit se pone a 1. 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 el correspondiente 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 RxD no se han podido almacenar en la cola de entrada y, por tanto, se han perdido. Exactamente, este bit se pone a 1 cuando la FIFO está llena, el registro de desplazamiento está ocupado y se recibe un nuevo carácter. Cuando esto ocurre, el contenido del registro de desplazamiento se pierde. Este bit se 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 con TxRDY 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 CPU carga un dato en el registro THR ya que, este se transfiere inmediatamente al registro de desplazamiento, 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 un nuevo carácter en el THR y se activa nuevamente cuando el carácter depositado se transfiere al registro de desplazamiento. Si el transmisor está inhabilitado este bit se pone a 0 y vuelve a valer 1 una 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 registro RHR. Cuando existe un carácter en el registro de desplazamiento de recepción y la cola está llena, la lectura 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 cero cuando 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
28 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 Mhz CSRA[7:4] ACR[7]=0 ACR[7]=1 '0000' '0001' '0010' 134,5 134,5 '0011' '0100' '0101' '0110' '0111' '1000' '1001' '1010' '1011' '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 en la 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ón BRG 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 en cuenta, 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ón diferentes a la deseada inicialmente. Registro de Comando del canal A (Escritura en dirección interna $2) 28
29 Este registro acepta comandos para el canal A. Se pueden especificar múltiples comandos en una misma escritura en el CRA siempre que los comandos no sean excluyentes entre sí. CRA[6:4] Miscellaneous commands '000' '001' '010' '011' '100' '101' '110' '111' Sin comando Reset MR pointer. Provoca que el puntero del registro MR del canal A apunte a MR1A Reset receiver. Resetea el receptor del canal A como si de un reset hardware se tratara. El receptor se inhabilita y la FIFO es vaciada. Reset transmitter. Resetea el transmisor del canal A como si de un reset hardware se tratara. Reset error status. Borra los bits de estado del registro SRA Reset channel A break change interrupt. Pone a cero el bit ISR[2] o bit de cambio de estado de break. Start break. Pone la salida TxDA a cero. El transmisor debe estar habilitado para que se pueda ejecutar este comando 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 el momento de la inhabilitación existe un carácter en el registro THR o en el registro de desplazamiento, é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é recibiendo en el momento de la inhabilitación se perderá. Este comando no tiene efecto en los bits de estado del 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
30 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 el cambio del valor lógico de la entrada IP[n] (0..3) activa el bit DELTAIP[n]. Los bits se borran cuando la CPU lee este registro. Una lectura del IPCR también borra el bit ISR[7] del registro de estado que, en realidad, se obtiene como el resultado de la OR de todos los bits DELTAIP[n] que no están enmascarados por los bits ACR[n]. Se puede usar el hecho de que cualquiera de estos bits se pongan 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
31 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 de estos bits está a 1, la activación del correspondiente bit en el registro IPCR provocará la activación del bit ISR[7] que provocará la generación de una interrupción si el bit IMR[7] está a 1. Si el bit está 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 se enmascara por el registro IMR, de forma que si el bit IMR[i] está a 1 lógico, cuando se active el correspondiente bit ISR[i], se provocará la activación del terminal INTRN. Si el bit IMR[i] está a cero, cualquier cambio en ISR[i] no afectará la activación de INTRN. El contenido de este registro se 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 bits ACR[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 de break. Se pone a cero cuando la CPU manda un comando de 'reset break change interrupt' en el canal 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 de receptor listo, este bit se activa cada vez que exista algún dato en la FIFO y se borra cuando la CPU lee el registro RHR y este se queda vacío (no hay mas caracteres en la FIFO). Si se programó la función de FIFO llena, entonces este bit se activa cuando las tres posiciones de la FIFO están ocupadas 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 el contador es parado por el comando 'stop counter' 31
32 En modo temporizador, este bit se activa una vez cada ciclo de la onda cuadrada generada ( cada vez que el contador pasa por cero). El bit es puesto a cero por el comando 'stop counter' aunque este comando 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 de una 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 de receptor listo, este bit se activa cada vez que exista algún dato en la FIFO y se borra cuando la CPU lee el registro RHR y este se queda vacío (no hay mas caracteres en la FIFO). Si se programó la función de FIFO llena, entonces este bit se activa cuando las tres posiciones de la FIFO están ocupadas 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 la salida de interrupción. Si el bit IMR[i] está a 1 lógico, entonces, cuando se active el bit ISR[i], el terminal INTRN se activará. Si el bit IMR[i] está a cero, cualquier cambio en ISR[i] no afectará la activación de INTRN. El registro IMR no enmascara las salidas de interrupción OP3-OP7 o la lectura del ISR. Registro alto del contador temporizador y registro bajo del contador temporizador (CTU y CTL) (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 y CTLR) (Escritura dirección interna $6 y dirección interna $7 respectivamente) 32
33 El registro CTUR y CTLR contienen los 8 bits MSB y los 8 bits LSB, respectivamente, del valor que será usado por el contador/temporizador tanto en el modo contador como en el modo temporizador. El menor valor que puede cargarse en estos registros es $0002. Estos registros son de escritura 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 periodo igual a dos veces el valor, expresado en ciclos de reloj, del contenido de los registros CTUR y CTLR. Si se cambia el contenido de estos registros, el semiperiodo actual no se ve afectado, pero los siguientes, sí. En este modo el C/T opera continuamente. La recepción del comando 'start counter' (lectura en la dirección $E), hace que el contador finalice el ciclo actual y comience un nuevo ciclo con los valores cargados en CTUR y CTLR. La onda generada se puede usar como reloj para la temporización de los datos. La fórmula para el cálculo del divisor n a cargar en CTUR y CTLR para un reloj de datos 1x particular es: n= C /T clock frecquency 2 16 Baud rate El bit contador listo del registro de estado de interrupción (ISR[3]) se activa una vez cada ciclo de la señ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 a que este no puede ser parado o apagado, se recomienda que, en la inicialización, el bit OP3 sea enmascarado 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. El contaje comienza cuando se recibe el comando 'start counter'. Cuando el contador llega a cero, el bit ISR[3] se pone a 1. Una vez alcanzada la cuenta final, el contador sigue decrementándose hasta que se reciba el comando 'stop counter'. Si el pin OP3 se progrma como salida del C/T, ésta se mantiene a 1 hasta que el contador alcance la cuenta final, entonces, la salida se pone a 0. La salida recupera su valor inicial y el bit ISR[3] se pone a cero cuando el contador es parado por el comando 'stop counter'. La CPU puede cambiar los valores de CTUR y CTLR en cualquier instante, pero la nueva cuenta 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. Se recomienda para el contador antes de leer su contenido, con el objeto de evitar falsas lecturas, pero esto tiene, a su vez, el inconveniente de que un nuevo comando de 'start counter' hace que el contador no siga por el valor que tenía cuando se paró, sino el existente en los registros CTUR y CTLR. 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 a MR1B. 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 registro MR2B, 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 que todas controlan acciones del receptor o transmisor del canal B y las correspondientes entradas y salidas. 33
34 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. Cualquier acceso 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 que todas controlan acciones del receptor o transmisor del canal B y las correspondientes entradas y salidas. 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 del registro SRA excepto que todos los estados se refieren al receptor y transmisor del canal B y sus correspondientes 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 Mhz CSRA[7:4] ACR[7]=0 ACR[7]=1 '0000' '0001' '0010' 134,5 134,5 '0011' '0100' '0101' '0110' '0111' '1000' '1001' '1010' '1011' '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 en la tabla anterior salvo para los dos últimos casos 34
35 '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 y que los puertos de salida se conecten a ciertos nodos internos para su test. Debe tenerse en cuenta que, una lectura errónea en el registro CRB (que sólo es de escritura) provocaría la activación del modo 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 excepto que todos las acciones se refieren al receptor y transmisor del canal B y sus correspondientes entradas 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 se inicializa con 0xF. Su contenido se sitúa en el bus de datos de forma automática en un ciclo de reconocimiento 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 estado lógico de los 6 pines IP0-IP5. Cualquier entrada que esté a nivel alto será leída como un 1, y la que esté en nivel bajo, como un 0. El bit 7 del carácter leído siempre es 1, mientras que el bit 6 refleja el valor 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
36 Este bit programa la función de la salida OP7. Si OPCR[7]=0, la salida OP7 es el complemento del bit OPR[7]. Si OPCR[7]=1, la salida se comporta como el complemento del bit TxRDYB. En este modo 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 del bit OPR[6]. Si OPCR[6]=1, la salida se comporta como el complemento del bit TxRDYA. En este modo 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 del bit OPR[5]. Si OPCR[5]=1, la salida se comporta como el complemento del bit RxRDYB o FFULLB (según lo programado en MR1B). En este modo la salida trabaja en colector abierto y no está 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 del bit OPR[4]. Si OPCR[4]=1, la salida se comporta como el complemento del bit RxRDYA o FFULLA (según lo programado en MR1A). En este modo la salida trabaja en colector abierto y no está 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 una señal cuadrada. En modo contador, la salida se mantiene a 1 hasta que se alcance la cuenta final, en cuyo caso se pone a 0 lógico. La salida vuelve a valer 1 cuando paramos el contador mediante un comando 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 los datos transmitidos. Si no se transmiten datos, esta salida se comporta como una señal de reloj de frecuencia 1x. 11: Reloj 1x del receptor del canal B. Este es el reloj que marca el ritmo de muestreo de los datos recibidos. 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á un reloj 1x si CSRA[3:0]= : Reloj 1x del transmisor del canal A. Este es el reloj que marca el ritmo de desplazamiento de los datos transmitidos. Si no se transmiten datos, esta salida se comporta como una señal de reloj de frecuencia 1x. 11: Reloj 1x del receptor del canal A. Este es el reloj que marca el ritmo de muestreo de los datos recibidos. Si no se reciben datos, esta salida se comporta como una señal de reloj de frecuencia 1x. 36
37 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
INTRODUCCIÓN. Comunicación Serial.
INTRODUCCIÓN La función principal de este tipo de comunicación es la de convertir datos de salida de forma paralela a serial y la de convertir datos de entrada de forma serial a paralela. El acceso al
Curso sobre Microcontroladores Familia HC9S08 de Freescale
Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: [email protected] Capítulo 6.- Módulo Serial Asincrónico de Comunicación
MICROPROCESADORES. Ejercicio de evaluación continua: E/S del MC68000
MICROPROCESADORES Ejercicio de evaluación continua: E/S del MC68000 Un determinado sistema central dispone de un enlace vía radio con diferentes estaciones remotas con los que intercambia cierta información.
MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255
MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255 INTRODUCCIÓN Este integrado de la firma INTEL, conocido como PPI 8255 (Programmable Peripherical Interfase) realizado
MICROCONTROLADORES PIC USART
USART Universal Synchronous Asynchronous Receiver Transmitter Síncrona o asíncrona Recibe y transmite Operación full duplex asíncrona Aplicación típica: comunicación con un PC mediante el protocolo RS232,
APUNTE DEL 8155 ELECTRÓNICA DIGITAL III
APUNTE DEL 8155 ELECTRÓNICA DIGITAL III Revisión 1.1 Marzo, 2011 Interfaz a periférico 8155 Descripción general El chip 8155 es un dispositivo introducido por Intel en 1977. Contiene memoria RAM (SRAM)
2.5-1 USART Introducción.
2.5-1 USART Introducción. El USART (universal synchronous asynchronous receiver transmitter) es uno de los dos puertos series de los que dispone los PIC16F87X. Puede funcionar de forma síncrona (half duplex)
3 Interfaz PC DSP. 3.1 Introducción a las comunicaciones serie. 3 Interfaz PC DSP
3 Interfaz PC DSP 3.1 Introducción a las comunicaciones serie Las comunicaciones serie se utilizan para enviar datos a través de largas distancias, ya que las comunicaciones en paralelo exigen demasiado
Mapas de Memoria y E/S
Mapas de Memoria y E/S Sistemas con Microprocesadores http://www.herrera.unt.edu.ar/procesadores Conexiones internas del CPU08 Dentro del mc el CPU08 se vincula con memoria y con los dispositivos de E/S
ITT-327-T Microprocesadores
ITT-327-T Microprocesadores Temporizador Programable (PIT) 8254. Temporizador/Contador Programable (PIT) 8254. Es un contador/temporizador programable diseñado para trabajar con los sistemas de microcomputadores.
MICROCONTROLADORES PIC
MICROCONTROLADORES PIC LOS TIMER DE LOS 16F87x TEMA EL TIMER 1 CCFF D.P.E. MÓDULO DE PROYECTOS 1 Diagrama de Bloques del TIMER1 CCFF D.P.E. MÓDULO DE PROYECTOS 2 INTRODUCCIÓN El módulo TIMER1 es un temporizador/contador
EL BUS I2C CARACTERISTICAS. Fernando Remiro
CARACTERISTICAS Fernando Remiro 1 CARACTERÍSTICAS Utiliza 2 líneas para transportar la información entre los distintos periféricos conectados al bus SDA (datos) SCL (reloj) Cada dispositivo se identifica
TEMA 8. REGISTROS Y CONTADORES.
TEMA 8. REGISTROS Y CONTADORES. TECNOLOGÍA DE COMPUTADORES. CURSO 2007/08 8.1. Registros. Tipos de registros. Registros de desplazamiento. Los registros son circuitos secuenciales capaces de almacenar
GUÍA RÁPIDA SRM1 ESTE MANUAL CONTIENE: 1 CARACTERÍSTICAS Y FUNCIONES 2 ÁREAS DE MEMORIA 3 MAPEADO DE E/S 4 SETUP DEL PLC
GUÍA RÁPIDA SRM1 ESTE MANUAL CONTIENE: 1 CARACTERÍSTICAS Y FUNCIONES 2 ÁREAS DE MEMORIA 3 MAPEADO DE E/S 4 SETUP DEL PLC OMRON ELECTRONICS, S.A. GRSRM1.DOC Pag. 1 1 Características y Funciones GUÍA RÁPIDA
TEMA 2. Interrupciones y periféricos básicos
TEMA 2 Interrupciones y periféricos básicos INDICE 1. Interrupciones 1. Fuentes y habilitación de interrupciones 2. Vectores de interrupción 3. Prioridad y anidamiento 4. Registros de configuración 5.
Tema 7. Entrada / Salida
Tema 7 Entrada / Salida Problemática Entrada/Salida Elementos claves en un computador: Procesador, memoria y módulos de E/S Cada módulo de E/S se conecta al bus del sistema y controla a uno o a más periféricos
Prof: Zulay Franco Puerto Ordaz, Agosto
Contadores 2.1. Introducción Los contadores son aplicaciones clásicas de los flip-flop, es un dispositivo electrónico capaz de contar, en binario, el número de pulsos que llegan a su entrada de reloj.
Bus de datos Bus de direcciones Pocos bits, los suficientes para direccionar registros internos (ej: A0 y A1)
16-1 Muchas veces los fabricantes de µps también ofrecen periféricos con aplicaciones establecidas que facilitan el hardware del sistema. En general son programables, lo que les permite diferentes modos
Características de algunos Registros de Funciones Especiales (SFR):
E.T.S.I. Telecomunicación Sistemas Digitales Programables I Características de algunos Registros de Funciones Especiales (SFR): Palabra de control (PSW) CY AC FO RS1 RS0 OV - P CY: Bandera de acarreo.
Organización de Computadoras Apunte 5: Circuitos Lógicos Secuenciales
Organización de Computadoras 2003 Apunte 5: Circuitos Lógicos Secuenciales Introducción: En el desarrollo de los sistemas digitales es fundamental el almacenamiento de la información, esta característica
Introducción a la Computación. Capítulo 7 Entrada/Salida
Introducción a la Computación Capítulo 7 Entrada/Salida Problemas Entrada/Salida Existe una amplia variedad periféricos Se les entrega distintas cantidades de datos Funcionan a distintas velocidades Tienen
Instrucciones de alta velocidad y el tiempo de SCAN. Facultad de Ciencias
Operaciones Rápidas R en los S7-200 Instrucciones de alta velocidad y el tiempo de SCAN La duración del SCAN depende del tamaño del programa, el número de E/S y la cantidad de comunicación requerida. Pueden
Señales de interfase del Z80
Señales de interfase del Z80 El microprocesador Z80 está integrado en una pastilla de 40 pines. Estos terminales pueden agruparse funcionalmente como muestra la figura: Bus de direcciones El bus de direcciones
2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U)
2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U) Este controlador de la casa Hitachi se usa para mostrar caracteres alfanuméricos en paneles LCD de matriz pasiva (los típicos que se pueden encontrar
Registros de desplazamiento
Registros de desplazamiento Definición de registro de desplazamiento básico Tipos de registro de desplazamiento Configuraciones específicas Aplicaciones más típicas VHDL Ejercicio propuestos Definición
Memoria y Entrada/Salida Tecnología Organización - Expansión
Universidad Simón Bolívar Departamento de Electrónica y Circuitos EC2721 Arquitectura del Computador I Prof. Osberth De Castro Clase 05 Memoria y Entrada/Salida Tecnología Organización - Expansión La memoria
Redes de Transmisión de Datos Controladora UART 8250
Redes de Transmisión de Datos Controladora UART 8250 Autor: Juan Manuel Orduña 16 de noviembre de 2010 1. Acceso a la 8250 y direccionamiento de sus registros Como se comentó en la introducción, una UART
Timer Interface Module
Timer Interface Module M.C. Jorge Eduardo Ibarra Esquer Timer Interface (TIM) El TIM es un timer de 2 canales que proporciona una referencia de temporización con captura de entrada, comparador de salida
ARQUITECTURA DE LOS SISTEMAS BASADOS EN MICROPROCESADOR
ARQUITECTURA DE LOS SISTEMAS BASADOS EN MICROPROCESADOR Historia Bloques funcionales Dimensionamiento Estructura CPU Concepto de programa Interrupciones Buses Entrada / Salida Ejemplo de arquitectura:
Controlador de Interrupciones (Versión programable) Manual de Usuario
Controlador de Interrupciones (Versión programable) Manual de Usuario Índice de contenido 1. Características...2 2.Descripción general...3 3.Descripción funcional...3 4.Estructura Interna...4 4.1 Bloque
CURSO: Electrónica digital UNIDAD III: CIRCUITOS SECUENCIALES - TEORÍA
www.ceduvirt.com CURSO: Electrónica digital UNIDAD III: CIRCUITOS SECUENCIALES - TEORÍA INTRODUCCIÓN SISTEMA SECUENCIAL Un sistema combinatorio se identifica por: 1. La salida del sistema debe ser estrictamente
Figura 2. Formato de un dato serie síncrono.
ELECTRÓNICA DIGITAL II 1 COMUNICACIÓN SERIE EN EL 8051 En la comunicación serie los datos se transfieren bit por bit. Una interfaz en el microcontrolador los transfiere el dato en paralelo del CPU a serie
Interface paralelo programable 8255.
Interface paralelo programable 8255. 1 Comunicaciones paralelo. CARACTERÍSTICAS Transferencia simultánea de bits por líneas separadas Ventaja: frecuencias de transmisión mayores Desventaja: el coste de
Introducción a las Computadoras. Capítulo 3 Buses del Sistema
Introducción a las Computadoras Capítulo 3 Buses del Sistema Concepto de Programa Los sistemas de propósito específico no son flexibles El Hardware de propósito general puede realizar diferentes tareas,
ARQUITECTURA DE COMPUTADORES DESCRIPCIÓN BUS PCI (Tema 1: Conexión Externa de Procesadores. Buses)
ARQUITECTURA DE COMPUTADORES DESCRIPCIÓN BUS PCI (Tema 1: Conexión Externa de Procesadores. Buses) http:// www.atc.us.es Índice 1. Características bus PCI 2. Señales PCI 3. Transferencias PCI 4. Comandos
6-3-5 PC Link (sólo CPUs CJ1M)
Monitorización tiempo de espera de respuesta (modo de Gateway serie) Durante el modo de Gateway serie, el tiempo es monitorizado desde el momento en que se envía el mensaje convertido al protocolo especificado
Las Interrupciones en el S7-200
Las Interrupciones en el S7-200 Facultad Ciencias / UASLP Ejecución rutina rápida en respuesta a una interrupción Comprobaciones Comprobaciones y y chequeos chequeos Lectura Lectura l l entradas entradas
Módulo 2 n. Figura 2.1. Simbología de un contador
Contadores 2.1. Introducción Los contadores son aplicaciones clásicas de los flip-flop, es un dispositivo electrónico capaz de contar el número de pulsos que llegan a su entrada de reloj. En muchas ocasiones
ARQUITECTURA DE COMPUTADORES. 2º INGENIERIA INFORMATICA. Soluciones del BOLETIN 2: Tecnología de los sistemas de memoria. Curso 06/07.
ARQUITECTURA DE COMPUTADORES. 2º INGENIERIA INFORMATICA. Soluciones del BOLETIN 2: Tecnología de los sistemas de memoria. Curso 06/07. 1) Como ya se ha visto en la teoría, hay operaciones relativas al
CONTADORES CARACTERISTICAS IMPORTANTES UTILIDAD CONTADORES DE RIZADO. CONTADOR DE RIZADO MODULO- 16.
CONTADORES Son circuitos digitales lógicos secuenciales de salida binaria o cuenta binaria, caracteristica de temporizacion y de memoria, por lo cual están constituidos a base de flip-flops. CARACTERISTICAS
Tutoría 2. Banco de memoria de 8 y 16 bits (8086)
Tutoría 2. Banco de memoria de 8 y 16 bits (8086) RESUMEN Cuando el procesador opera en modo mínimo, éste genera las señales de control para la memoria y los dispositivos de E/S. [1, pág. 292]. Para utilizar
Controlador Programable de Interrupciones i8259
Controlador Programable de Interrupciones i8259 () Funciones Estructura externa (esquema de conexión) Estructura interna Secuencia de reconocimiento de una interrupción Conexión en cascada entre varios
9. Lenguaje ensamblador
9. Lenguaje ensamblador Lenguaje máquina: un programa o secuencia de instrucciones viene dado por una secuencia de códigos binarios. Lenguaje ensamblador: secuencia lógica de sentencias pertenecientes
Registros. Registro de Corrimiento Básico
Registros. Son dispositivos digitales donde se obtiene almacenamiento temporal. Dado que la memoria y el desplazamiento de información son sus características básicas, los registros son circuitos secuenciales
Notas de Teórico. Flip-Flops
Departamento de Arquitectura Instituto de Computación Universidad de la República Montevideo - Uruguay Flip-Flops Arquitectura de Computadoras (Versión 4.3-2016) 7 FLIP-FLOPS 7.1 Introducción En este capítulo
UART. Diseño de Sistemas con FPGA 1er cuatrimestre 2013 Patricia Borensztejn
UART Diseño de Sistemas con FPGA 1er cuatrimestre 2013 Patricia Borensztejn UART Universal Asynchronous receiver and transmitter: dispositivo (controlador ) que envía datos paralelos sobre una línea serie.
Arquitectura de Computadores
Arquitectura de Computadores 1. Introducción 2. La CPU 3. Lenguaje Máquina 4. La Memoria 5. Sistemas de Entrada/Salida 6. Segmentación (Pipeline) 7. Memoria Caché 8. Arquitecturas RISC Arquitectura de
Reset e interrupciones
Reset e interrupciones M.C. Jorge Eduardo Ibarra Esquer Resets e interrupciones Son respuestas a eventos que se presentan durante la ejecución normal de un programa Un reset regresa el microcontrolador
INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata
Muestreo de señales analógicas Principal requerimiento que surge al muestrear una señal continua: Definir el periodo de muestreo con suficiente exactitud. Ajustar el mismo a un valor adecuado de acuerdo
2. Biestables asíncronos. Biestables R-S. Tecnología Industrial II. Tema 4.- Elementos básicos de un circuito secuencial.
. Clases de circuitos secuenciales. Los circuitos secuenciales pueden ser asíncronos o síncronos. Un circuito secuencial es asíncrono cuando los cambios de estado tienen lugar cuando están presentes las
Práctica 3 de Microprocesadores
Práctica 3 de Microprocesadores Objetivos - Familiarización con el microinstructor TM-683 de PROMAX y del entorno IT68KW. - Realización de programas básicos que permitan manejar los puertos de entrada/salida
SISTEMAS ELECTRÓNICOS DIGITALES
SISTEMAS ELECTRÓNICOS DIGITALES PRÁCTICA 6 SISTEMA DE ENCRIPTACIÓN 1. Objetivos - Estudio del funcionamiento de memorias RAM y CAM. - Estudio de métodos de encriptación y compresión de datos. 2. Enunciado
PIC16F882/883/884/886/887
12.0 Transmisor Receptor Síncrono Asíncrono Universal Mejorado. EUSART. El módulo Transmisor Receptor Síncrono Asíncrono Mejorado, en adelante, EUSART, es un periférico de comunicación serie de entrada/salida.
BOLETIN 7: Subsistemas secuenciales
BOLETIN 7: Subsistemas secuenciales Problemas básicos P. Realice el diagrama de estados de un C.S.S. que funcione como un contador módulo 4 ascendente/descendente en función de una entrada de control.
Microprocesadores, Tema 8:
Microprocesadores, Tema 8: Comunicaciones asíncronas con USART del PIC Guillermo Carpintero del Barrio Marta Ruiz Llata Alejandro Quesada Pareja Universidad Carlos III de Madrid Standard de Comunicación
28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O
Interfaz con Dispositivos I/O Interfaz con Dispositivos de Salida y Salida Unidad 4, Segunda Parte Port Mapped Memory mapped 1 2 Ejecución de la Instrucción OUT Ejecución de la instrucción OUT Dirección
LECCIÓN Nº 08 DISEÑO DE SISTEMAS SECUENCIALES CON REGISTROS
LECCIÓN Nº 08 DISEÑO DE SISTEMAS SECUENCIALES CON REGISTROS 1. REGISTROS Los registros son circuitos secuenciales capaces de almacenar una cantidad limitada de información binaria durante un determinado
Relación de Problemas de Circuitos Secuenciales
Escuela Técnica de Ingenieros en Informática de Sistemas Sistemas Electrónicos Digitales Relación de Problemas de Circuitos Secuenciales 1.- Dado el circuito secuencial síncrono de la figura: a.- Trace
Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez
Estructura de Microprocesadores PIC 18F4550 Módulos de Comunicación Serie Profesor Ing. Johan Carvajal Godínez Contenido Módulos de comunicación serie sincrónica I2C SPI Módulo de comunicación serie Asincrónico
Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017
Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017 Antonio Pérez Ambite Santiago Rodríguez de la Fuente Departamento de Arquitectura y Tecnología
Interfaces de Entrada / Salida
4-1 Interfaces de Entrada / Salida Familia de Circuitos que permiten adaptar, leer y/o gobernar señales externas desde y hacia un sistema microprocesador 4-2 1 Tipos de Entradas / Salidas A) Formato de
Ciclo de funcionamiento del autómata
Ciclo de funcionamiento del autómata Modos de operación Un autómata que este bajo tensión puede mantenerse en alguno de los tres modos siguientes: - RUN: El autómata ejecuta el programa de usuario que
TEMA 8 GESTION DE LAS INTERRUPCIONES
TEMA 8 GESTION DE LAS INTERRUPCIONES CURSO 2010/2011 GESTION DE LAS INTERRUPCIONES 1. Introducción 2. Latencias de las Interrupciones 3. Tabla de Vectores de Interrupción 4. Latch de Interrupciones (IRPTL)
CÓMO FUNCIONA UN PLC Control Combinacional Programación del PLC
CÓMO FUNCIONA UN PLC Control Combinacional Programación del PLC PROGRAMACIÓN DE PLC Procedimiento para programar y cargar: Determinar los requisitos del sistema al cual se aplica el PLC. Identificar los
TEMA 5.3 SISTEMAS DIGITALES
TEMA 5.3 SISTEMAS DIGITALES TEMA 5 SISTEMAS DIGITALES FUNDAMENTOS DE ELECTRÓNICA 08 de enero de 2015 TEMA 5.3 SISTEMAS DIGITALES Introducción Sistemas combinacionales Sistemas secuenciales TEMA 5.3 SISTEMAS
Arquitectura de computadores I
Arquitectura de computadores I Perspectiva de alto nivel de los computadores Septiembre de 2017 Contenido Componentes del computador Funcionamiento del computador Estructuras de interconexión Interconexión
TEMA III. Unidad de entrada salida
TEMA III Unidad de entrada salida 3.1 Dispositivos externos 3.2 Controlador de E/S 3.2.1 Funciones del controlador de E/S 3.2.2 Estructura del controlador de E/S 3.2.3 Estructura del sistema de E/S 3.3
COMUNICACIÓN SERIE (RS232)
COMUNICACIÓN SERIE (RS232) Introducción Una manera de conectara dos dipositivos es mediante comunicaciones serie asíncronas. En ellas los bits de datos se transmiten "en serie" (uno de trás de otro) y
Electrónica Digital II
Electrónica Digital II TIPOS DE MEMORIAS MEMORIA DDR MEMORIA DDR2 MEMORIA DDR3 COMPARACIÓN TIEMPOS DE ACCESO TIPOS DE LATENCIAS RAS CAS ACTIVIDAD PRECARGA TIPOS DE CONFIGURACIONES SINGLE CHANNEL DUAL CHANNEL
LECCIÓN Nº 06 DISEÑO DE CONTADORES SINCRONOS
LECCIÓN Nº 06 DISEÑO DE CONTADORES SINCRONOS 1. DISPOSITIVOS SECUENCIALES Los circuitos biestables son aquellos que poseen dos estados estables que se pueden mantener por tiempo indefinido, lo que nos
PCF8574 EXPANSOR REMOTO 8-BIT I/O PARA I²C-BUS
PCF8574 EXPANSOR REMOTO 8-BIT I/O PARA I²C-BUS 1. CARACTERISTCAS Suministro de voltaje de funcionamiento 2.5 a 6 V Bajo consumo de corriente de espera (standby) de 10 ma máximo. Expansor I²C a puerto paralelo.
Velocidades Típicas de transferencia en Dispositivos I/O
Entradas Salidas Velocidades Típicas de transferencia en Dispositivos I/O Entradas/Salidas: Problemas Amplia variedad de periféricos Entrega de diferentes cantidades de datos Diferentes velocidades Variedad
ESTRUCTURA DE INTERCONEXIÓN DE UN COMPUTADOR
ESTRUCTURA DE INTERCONEXIÓN DE UN COMPUTADOR 1 Arquitectura Von Neumann se fundamente en tres ideas: En la memoria del ordenador se almacenan indistintamente datos e instrucciones. Se puede acceder a la
Comunicación Serial: Conceptos Generales
Comunicación Serial: Conceptos Generales Conceptos Generales Qué es la comunicación serial? Qué es RS-232? Qué es RS-422? Qué es RS-485? Qué es handshaking (o intercambio de pulsos de sincronización)?
Curso sobre Microcontroladores Familia HC9S08 de Freescale
Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: [email protected] Responsable Area Educación ELKO / ARROW www.elkonet.com
TARJETA DE ENTRADAS Y CONTADORES RÁPIDOS (MTC-3052)
Pag:1 Descripción Tarjeta de entradas y contadores rápidos diseñada para controles complejos en tiempo real. A través de software sencillo permite su configuración al usuario. Cuenta con diversidad de
TEMA 12: MEJORA DE LAS PRESTACIONES DE LA MEMORIA
TEMA 12: MEJORA DE LAS PRESTACIONES DE LA MEMORIA PRINCIPAL. 1. Introducción. 2. Aumentar el ancho de la memoria. 3. Memoria entrelazada. 4. Bancos de memoria independientes. 5. Tecnología de las memorias.
MÓDULO Nº7 REGISTROS Y CONTADORES
MÓDULO Nº7 REGISTROS Y CONTADORES UNIDAD: LÓGICA SECUENCIAL TEMAS: Registros. Contadores. OBJETIVOS: Explicar que es un registro, su clasificación y sus principales características. Explicar que es un
Figura Implementación de un latch a partir de un biestable asíncrono.
1.7. Implementaciones de biestables En muchas ocasiones no contamos con el circuito integrado del biestable necesario para una aplicación y por tal razón se hace necesario hacer implementaciones a partir
COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW
COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW En esta práctica se describe la forma de realizar una comunicación serie half-duplex entre dos microcontroladores utilizando UARTs software.
UNIDAD 2. Unidad de Microprocesador (MPU) Microprocesadores Otoño 2011
1 UNIDAD 2 Unidad de Microprocesador (MPU) Microprocesadores Otoño 2011 Contenido 2 Unidad de Microprocesador Generalizada Memoria Dispositivos de Entrada y Salida Sistemas basados en Microprocesadores
ESTRUCTURA Y TECNOLOGÍA DE LOS COMPUTADORES II BOLETÍN 3 MEMORIAS SEMICONDUCTORAS
NOTA: En aquellos problemas donde no se indique lo contrario debe suponerse que el espacio de direccionamiento es de 64K. Problema 1.- Un sistema basado en un microprocesador dispone de 3 RAMs de 8K*8
EL TEMPORIZADOR 555 FUNCIONAMIENTO BÁSICO. FUNCIONAMIENTO COMO MONOESTABLE. FUNCIONAMIENTO COMO AESTABLE
EL TEMPORIZADOR 555 FUNCIONAMIENTO BÁSICO. FUNCIONAMIENTO COMO MONOESTABLE. FUNCIONAMIENTO COMO AESTABLE EL TEMPORIZADOR 555. El temporizador 555 es un dispositivo versátil y muy utilizado, por que puede
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES II BOLETÍN 4 MICROPROCESADOR MC 68000
1.- Partiendo de la siguiente situación inicial, donde se indica el contenido de ciertos registros y direcciones de memoria: Dirección Contenido Registro Contenido 800 08 A0 0000 0802 801 03 A1 0000 0804
Tema 10. Interfaces de E/S programables
1 Estructura y tecnología de Computadores Módulo E. El subsistema de E/S Tema 1. Interfaces de E/S programables José Manuel Mendías Cuadros Dpto.. Arquitectura de Computadores y Automática Universidad
Indice. Subrutinas vs rutinas de interrupción Subrutinas Tareas a realizar para utilizar una subrutina en el programa
1 Indice Introducción Subrutinas vs rutinas de interrupción Subrutinas Tareas a realizar para utilizar una subrutina en el programa Crear una subrutina Llamar a una subrutina Rutinas de interrupción Ejemplo
TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL
TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL 1. ESTRUCTURA GENERAL DE UN COMPUTADOR VON-NEUMANN. Unidad de memoria (UM) Unidad Aritmético Lógica (UAL) Unidad de control (UC) Buses. Unidades de
Creación de biestables tipo D y T con biestable JK
Creación de biestables tipo D y T con biestable JK El biestable JK es también llamado "biestable universal" debido a que con él, se pueden implementar otros tipos de biestable, como el biestable tipo D
