Este documento describe el timer 8254, un circuito integrado que contiene 3 contadores independientes programables. Cada contador puede programarse para contar en binario o BCD y funcionar en diferentes modos. El documento explica la arquitectura interna de cada contador, incluyendo el registro de control y de conteo, y cómo programar cada contador enviando primero la palabra de control y luego el valor inicial de conteo.
Este documento describe el timer 8254, un circuito integrado que contiene 3 contadores independientes programables. Cada contador puede programarse para contar en binario o BCD y funcionar en diferentes modos. El documento explica la arquitectura interna de cada contador, incluyendo el registro de control y de conteo, y cómo programar cada contador enviando primero la palabra de control y luego el valor inicial de conteo.
Este documento describe el timer 8254, un circuito integrado que contiene 3 contadores independientes programables. Cada contador puede programarse para contar en binario o BCD y funcionar en diferentes modos. El documento explica la arquitectura interna de cada contador, incluyendo el registro de control y de conteo, y cómo programar cada contador enviando primero la palabra de control y luego el valor inicial de conteo.
Este documento describe el timer 8254, un circuito integrado que contiene 3 contadores independientes programables. Cada contador puede programarse para contar en binario o BCD y funcionar en diferentes modos. El documento explica la arquitectura interna de cada contador, incluyendo el registro de control y de conteo, y cómo programar cada contador enviando primero la palabra de control y luego el valor inicial de conteo.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 14
Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 88 -
NOMBRE DE LA PRCTICA
EL TIMER 8254, SU CONEXIN Y PROGRAMACIN
OBJETIVO ESPECFICO: CONOCER LA UTILIZACIN Y LA PROGRAMACIN DEL TIMER 8254
INTRODUCCIN: El Temporizador programable de intervalos 8254, consta de tres contadores (temporizadores ) de 16 bits. Cada contador puede contar en binario o en decimal codificado en binario (BCD). La frecuencia mxima permisible de entrada a cualquier contador es de 10 MHz . El 8253/8254 es un chip que puede ser empleado cuando el microprocesador debe controlar eventos en tiempo real, como reloj de tiempo real, contador de eventos, generador de baudaje programable, generador de onda cuadrada, etc.
Este temporizador tambin aparece en la PC en los puertos 40h al 43h para generar una interrupcin bsica del temporizador a ms o menos, 18.2 Hz; hacer que se refresque la memoria DRAM del sistema; constituir una fuente de temporizacin para la bocina interna y otros dispositivos.
DESCRIPCIN DEL CIRCUITO INTEGRADO 8254
Este circuito integrado posee 3 contadores totalmente independientes, que pueden ser programados de 6 formas diferentes.
- 89 - Buffer del bus de datos Buffer del bus de datos Lgica de lectura/ escritura Lgica de lectura/ escritura Registro de control Registro de control Contador 0 Contador 0 Contador 1 Contador 1 Contador 2 Contador 2 BUS INTERNO BUS INTERNO D0-D7 CLK0 CLK1 CLK2 GATE0 GATE1 GATE2 OUT2 OUT1 OUT0 WR RD A0 A1 CS Buffer del bus de datos Buffer del bus de datos Lgica de lectura/ escritura Lgica de lectura/ escritura Registro de control Registro de control Contador 0 Contador 0 Contador 1 Contador 1 Contador 2 Contador 2 BUS INTERNO BUS INTERNO D0-D7 CLK0 CLK1 CLK2 GATE0 GATE1 GATE2 OUT2 OUT1 OUT0 Buffer del bus de datos Buffer del bus de datos Lgica de lectura/ escritura Lgica de lectura/ escritura Registro de control Registro de control Contador 0 Contador 0 Contador 1 Contador 1 Contador 2 Contador 2 BUS INTERNO BUS INTERNO D0-D7 CLK0 CLK1 CLK2 GATE0 GATE1 GATE2 OUT2 OUT1 OUT0 WR RD A0 A1 CS DEFINICIN DE LAS TERMINALES D7..D0: BUS de datos bidireccional de 3 estados. CLK 0: CLOCK 0, entrada de reloj al contador 0. OUT 0: Salida del contador 0. GATE 0: Puerta de entrada al contador 0. CLK 1: CLOCK 1, entrada de reloj al contador 1. OUT 1: Salida del contador 1. GATE 1: Puerta de entrada al contador 1. CLK 2: CLOCK 2, entrada de reloj al contador 2. OUT 2: Salida del contador 2. GATE 2: Puerta de entrada al contador 2. A0..A1: Lneas de direccin para seleccionar uno de los tres contadores o el registro de la palabra de control. -CS: Habilita la comunicacin con la CPU. -WR: Permite al 8254 aceptar datos de la CPU. -RD: Permite al 8254 enviar datos a la CPU.
DESCRIPCIN FUNCIONAL
El buffer del bus de datos, de 8 bits y tres estados, comunica el 8254 con la CPU. La lgica de lectura y escritura acepta entradas del bus y genera seales de control para las partes funcionales del 8254. Las lneas A0..A1 seleccionan uno de los tres contadores o el registro de la palabra de control, para poder leerlos o escribirlos. El registro de la palabra de control es seleccionado cuando A0=A1=1, este registro slo puede ser escrito (se puede obtener informacin de estado, como se ver ms adelante, con el comando read-back del 8254, no disponible en el 8253). Los contadores 1, 2 y 3 son idnticos en su funcionamiento y son totalmente independientes y cada uno de ellos puede ser programado en un modo diferente.
Si se observa el esquema de un contador, a la derecha, se ver el registro de la palabra de control: aunque no es parte del contador propiamente dicho, afecta a su modo de funcionamiento. Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 90 - El registro de estado, cuando es transferido al correspondiente latch, contiene el valor en curso del registro de la palabra de control y alguna informacin adicional (como se ver despus en el comando read-back). El contador propiamente dicho est representado en la figura por CE (Counting Element) y es un contador descendente sncrono de 16 bits que puede ser inicializado. OL M y OL L son dos latch de 8 bits (OL significa Output Latch; los subndices M y L estn relacionados con el ms y el menos significativo byte, respectivamente); ambos son referenciados normalmente como un conjunto denominado OL a secas. Estos latches siguen normalmente la cuenta descendente de CE, pero la CPU puede enviar un comando para congelarlos y poder leerlos; tras la lectura continuarn siguiendo a CE.
La lgica de control del contador se encarga de que un slo latch est activo a un tiempo, ya que el bus interno del 8254 es de 8 bits. CE no puede ser nunca ledo directamente (lo que se lee es OL). De manera anloga, existen un par de registros CR M y CR L (CR significa Count Register) que almacenan la cuenta del contador y se la transmiten convenientemente a CE. Los valores de cuenta se escriben siempre sobre CR (y no directamente sobre CE). La lgica de control gestiona la conexin con el exterior a travs de las lneas CLK, GATE y OUT
PROGRAMACIN DEL 8254 Para programar un contador del 8254 hay que enviar primero una palabra de control y, despus, un valor de cuenta inicial. Los contadores se seleccionan con las lneas A0 y A1; el valor A0=A1=1 selecciona la escritura de la palabra de control (en la que se identifica el contador implicado). Por tanto, el 8254 ocupa normalmente 4 direcciones de E/S consecutivas ligadas a los contadores 0, 1, 2 y al registro de la palabra de control. Para enviar la cuenta inicial se utiliza Lgica de Control Lgica de Control Registro de control Registro de control Latch De Salida (OLM) MSB Latch De Salida (OLM) MSB Latch de status Latch de status Registro de status Registro de status Registro de conteo (CRM) MSB Registro de conteo (CRM) MSB CONTADOR n (CE) CONTADOR n (CE) Bus interno de Datos Bus interno de Datos Registro de conteo (CRL)LSB Registro de conteo (CRL)LSB Latch de salida (OLL) LSB Latch de salida (OLL) LSB CLK n GATE n OUT n Arquitectura interna de un contador del 8254 Arquitectura interna de un contador del 8254 Lgica de Control Lgica de Control Registro de control Registro de control Latch De Salida (OLM) MSB Latch De Salida (OLM) MSB Latch de status Latch de status Registro de status Registro de status Registro de conteo (CRM) MSB Registro de conteo (CRM) MSB CONTADOR n (CE) CONTADOR n (CE) Bus interno de Datos Bus interno de Datos Registro de conteo (CRL)LSB Registro de conteo (CRL)LSB Latch de salida (OLL) LSB Latch de salida (OLL) LSB CLK n GATE n OUT n Arquitectura interna de un contador del 8254 Arquitectura interna de un contador del 8254 FORMATO DE LA PALABRA DE CONTROL FORMATO DE LA PALABRA DE CONTROL SC1 SC1 SC0 SC0 RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD D0 D1 D2 D3 D4 D5 D6 D7 SC1 SC1 SC0 SC0 RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD SC1 SC1 SC0 SC0 RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD D0 D1 D2 D3 D4 D5 D6 D7 Elegir contador: 0 0 contador 0 0 1 contador 1 1 0 contador 2 1 1 comando Read Back Operacin: 0 0 comando de enclavamiento 0 1 leer/escribir byte bajo 1 0 leer/escribir byte alto 1 1 leer/escribir byte bajo y despus el alto Contador: 0 binario 16 bits 1 BCD 4 dcadas Modo: 0 0 0 modo 0 0 0 1 modo 1 x 1 0 modo 2 x 1 1 modo 3 1 0 0 modo 4 1 0 1 modo 5 Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 91 - simplemente el puerto E/S ligado al contador que se trate. El formato de la palabra de control es: Operaciones de escritura.
El 8254 es muy flexible a la hora de ser programado. Basta con tener en cuenta dos cosas: por un lado, escribir siempre primero la palabra de control, antes de enviar la cuenta inicial al contador. Por otro, dicha cuenta inicial debe seguir exactamente el formato seleccionado en la palabra de control (enviar slo byte bajo, enviar slo byte alto, o bien enviar ambos consecutivamente). Teniendo en cuenta que cada contador tiene su propio puerto y que la palabra de control indica el contador al que est asociada, no hay que seguir un orden especial a la hora de programar los contadores. Esto significa que, por ejemplo, se puede enviar la palabra de control de cada contador seguida de su cuenta inicial, o bien enviar todas las palabras de control para los 3 contadores y despus las 3 cuentas iniciales; tambin es vlida cualquier combinacin intermedia de estas secuencias (por ejemplo: enviar la palabra de control para el contador 0, despus la palabra de control para el contador 1, despus la parte baja de la cuenta para el contador 0, luego la parte baja de la cuenta para el contador 1, la parte alta de la cuenta para el contador 0, etc...).
Un nuevo valor de cuenta inicial puede ser almacenado en un contador en cualquier momento, sin que ello afecte al modo en que ha sido programado (el resultado de esta operacin depender del modo, como se ver ms adelante). Si se programa el contador para leer/escribir la cuenta como dos bytes consecutivos (bajo y alto), el sentido comn indica que entre ambos envos/recepciones no conviene transferir el control a una subrutina que utilice ese mismo contador para evitar un resultado incorrecto. Operaciones de lectura. Existen tres posibles mtodos para leer el valor de un contador en el 8254. El primero es el comando Read-Back, slo disponible en el 8254 (y no en el 8253). El segundo consiste en leer simplemente el contador accediendo a su puerto correspondiente: este mtodo requiere inhibir la entrada CLK al contador (por ejemplo, a travs de la lnea GATE o utilizando circuitera exterior de apoyo) con objeto de evitar leer la cuenta en medio de un proceso de actualizacin de la misma, lo que dara un resultado incorrecto. El tercer mtodo consiste en el comando de enclavamiento. Comando de enclavamiento (Counter Latch Command). Este comando se enva como si se tratara de una palabra de control (A1=A0=1): para diferenciarlo de ellas los bits 5 y 4 estn a cero. En los bits 7 y 6 se indica el contador afectado. Los dems bits deben estar a cero para compatibilizar con futuras versiones del chip. Cuando se enva el comando, el OL del contador seleccionado queda congelado hasta que la CPU lo lee, momento en el que se descongela y pasa de nuevo a seguir a CE. Esto permite leer los contadores al vuelo sin afectar la cuenta en curso. Se pueden enviar varios de estos comandos a los diversos contadores, cuyos OL's quedarn enclavados hasta ser ledos.
SC1 SC1 SC0 SC0 0 0 0 0 X X X X X X X X D0 D1 D2 D3 D4 D5 D6 D7 contador afectado: 0 0 contador 0 0 1 contador 1 1 0 contador 2 SC1 SC1 SC0 SC0 0 0 0 0 X X X X X X X X D0 D1 D2 D3 D4 D5 D6 D7 SC1 SC1 SC0 SC0 0 0 0 0 X X X X X X X X SC1 SC1 SC0 SC0 0 0 0 0 X X X X X X X X D0 D1 D2 D3 D4 D5 D6 D7 contador afectado: 0 0 contador 0 0 1 contador 1 1 0 contador 2 Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 92 - 1 1 1 1 -CONTEO -CONTEO -STATUS -STATUS CONTADOR2 CONTADOR2 CONTADOR1 CONTADOR1 CONTADOR0 CONTADOR0 0 0 0 si enclava la cuenta de los contadores seleccionados 0 si enclava el byte de status del contador seleccionado A 1 los contadores seleccionados D0 D1 D2 D3 D4 D5 D6 D7 1 1 1 1 -CONTEO -CONTEO -STATUS -STATUS CONTADOR2 CONTADOR2 CONTADOR1 CONTADOR1 CONTADOR0 CONTADOR0 0 0 1 1 1 1 -CONTEO -CONTEO -STATUS -STATUS CONTADOR2 CONTADOR2 CONTADOR1 CONTADOR1 CONTADOR0 CONTADOR0 0 0 0 si enclava la cuenta de los contadores seleccionados 0 si enclava el byte de status del contador seleccionado A 1 los contadores seleccionados D0 D1 D2 D3 D4 D5 D6 D7 Si se envan varios comandos de enclavamiento al mismo contador, separados por un cierto intervalo de tiempo, slo se considerar el primero (por tanto, la cuenta leda corresponder al valor del contador cuando fue enclavado por vez primera).
Por supuesto, el contador debe ser ledo utilizando el formato que se defini al enviar la palabra de control; aunque en el caso de leer 16 bits, las dos operaciones no han de ser necesariamente consecutivas (se pueden insertar en medio otras acciones relacionadas con otros contadores). Otra caracterstica interesante consiste en la posibilidad de mezclar lecturas y escrituras del mismo contador. Por ejemplo, si ha sido programado para cuentas de 16 bits, es vlido hacer lo siguiente: 1) leer el byte menos significativo, 2) escribir el nuevo byte menos significativo, 3) leer el byte ms significativo, 4) escribir el nuevo byte ms significativo. Comando Read-Back. Slo est disponible en el 8254, no en el 8253. Este comando permite leer el valor actual de la cuenta, as como averiguar tambin el modo programado para un contador y el estado actual de la patilla OUT, adems de verificar el bandern de cuenta nula (Null Count) de los contadores que se indiquen. El formato del comando Read-Back es el siguiente: El comando Read-Back permite enclavar la cuenta en varios OL's de mltiples contadores de una sola vez, sin requerir mltiples comandos de enclavamiento, poniendo el bit 5 a cero. Todo funciona a partir de aqu como cabra esperar (los contadores permanecen enclavados hasta ser ledos, los que no son ledos permanecen enclavados, si el comando se reitera slo acta la primera vez reteniendo la primera cuenta...). Tambin es posible enviar informacin de estado al latch OL, enclavndola para que puede ser leda con comodidad por el puerto que corresponda a ese contador. La palabra de estado tiene el siguiente formato:
En D0..D5 se devuelve justo la misma informacin que se envi en la ltima palabra de control; en el bit D7 se entrega el estado actual de la patilla OUT del OUTPUT OUTPUT NULL COUNT NULL COUNT RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD D0 D1 D2 D3 D4 D5 D6 D7 Valor de la terminal out 1 Null count 0 cuenta disponible para ser leda Modo del contador activo Contador: 0 binario 16 bits 1 BCD 4 dcadas OUTPUT OUTPUT NULL COUNT NULL COUNT RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD OUTPUT OUTPUT NULL COUNT NULL COUNT RW1 RW1 RW0 RW0 M2 M2 M1 M1 M0 M0 BCD BCD D0 D1 D2 D3 D4 D5 D6 D7 Valor de la terminal out 1 Null count 0 cuenta disponible para ser leda Modo del contador activo Contador: 0 binario 16 bits 1 BCD 4 dcadas Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 93 - 8254, lo que permite monitorizar por software las salidas del temporizador economizando hardware en ciertas aplicaciones. El bit NULL COUNT (D6) indica cundo la ltima cuenta escrita en CR ha sido transferida a CE: el momento exacto depende del modo de funcionamiento del contador. Desde que se programa un nuevo valor de cuenta, pasa un cierto tiempo hasta que ste valor pasa de CR a CE: leer el contador antes de que se haya producido dicha transferencia implica leer un valor no relacionado con la nueva cuenta. Por ello, segn las aplicaciones, puede llegar a ser necesario esperar a que NULL COUNT alcance el valor 0 antes de leer. El funcionamiento es el siguiente: Operacin Consecuencias A -Escribir al registro de la palabra de control (1) NULL COUNT = 1 B -Escribir al registro contador (CR) (2) NULL COUNT = 1 C -Nueva cuenta cargada en CE (CR ->CE) NULL COUNT = 0 Notas: (1) Slo el contador especificado por la palabra de control tiene su NULL COUNT a 1; los dems contadores, lgicamente, no ven afectado su correspondiente bit NULL COUNT.
(2) Si el contador es programado para cuentas de 16 bits, NULL COUNT pasa a valer 1 inmediatamente despus de enviar el segundo byte. Si se enclava varias veces seguidas la palabra de estado, todas sern ignoradas menos la primera, por lo que el estado ledo ser el correspondiente al contador en el momento en que se enclav por vez primera la palabra de estado.
Se pueden enclavar simultneamente la cuenta y la palabra de estado (en un comando Read-Back con D5=D4=0), lo que equivale a enviar dos Read-Back consecutivos. En este caso, y con independencia de quin de los dos hubiera sido enclavado primero, la primera lectura realizada devolver la palabra de estado y la segunda la cuenta enclavada (que automticamente quedar de nuevo desenclavada). MODOS DE OPERACIN DEL 8254 MODO 0: Interrupt On Terminal Count (Interrupcin al final de la cuenta). Es empleado tpicamente para contar eventos. Tras escribir la palabra de control, OUT est inicialmente en estado bajo, y permanecer as hasta que el contador alcance el cero: entonces se pone a 1 y no volver a bajar hasta que se escriba una nueva cuenta o una nueva palabra de control. La entrada GATE puesta a 0 permite inhibir la cuenta, sin afectar a OUT. El contador sigue evolucionando tras llegar a cero (0FFFFh, 0FFFEh, ...) por lo que lecturas posteriores del mismo devuelven valores pseudoaleatorios. Tras escribir la cuenta inicial y la palabra de control en el contador, la cuenta inicial ser cargada en el prximo pulso del reloj conectado (CLK), pulso que no decrementa el contador: para una cuenta inicial N, OUT permanecer a 0 durante N+1 pulsos del reloj tras escribir la cuenta inicial. Si se escribe una nueva cuenta en el contador, ser cargada en el prximo pulso del reloj y el contador comenzar a decrementarse; si se enva una cuenta de dos bytes, el primer byte enviado inhibe la cuenta y OUT es puesto a cero inmediatamente (sin esperar a CLK): tras escribir el segundo byte, la cuenta ser (3) (2) (1) (0) Inicia conteo Final de conteo Se carga la cuenta al registro de conteo (4) Pulso de escritura CLK WR GATE OUT (3) (2) (1) (0) Inicia conteo Final de conteo Se carga la cuenta al registro de conteo (4) Pulso de escritura CLK WR GATE OUT Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 94 - cargada en el siguiente pulso del reloj. Esto permite sincronizar la secuencia de conteo por software.
Si se escribe una nueva cuenta mientras GATE=0, sta ser cargada en cualquier caso en el siguiente pulso del reloj: cuando GATE suba, OUT se pondr en alto tras N pulsos del reloj (y no N+1 en este caso). MODO 1: Hardware Retriggerable One-Shot (Monoestable programable). OUT ser inicialmente alta y bajar en el pulso de reloj que sigue al flanco de subida de GATE, permaneciendo en bajo hasta que el contador alcance el cero. Entonces, OUT sube y permanece activo hasta el pulso del reloj que siga al prximo flanco de subida de GATE. Tras escribir la palabra de control y la cuenta inicial, el contador est preparado. Un flanco de subida de GATE provoca la carga del contador (CR - < CE) y que OUT baje en el prximo pulso del reloj, comenzando el pulso One- Shot de N ciclos de reloj de duracin; el contador vuelve a ser recargado si se produce un nuevo flanco de subida de GATE, de ah que OUT permanezca en bajo durante N pulsos de reloj tras la ltima vez que suceda esto. El pulso One- Shot puede repetirse sin necesidad de recargar el contador con el mismo valor. GATE no influye directamente en OUT. Si se escribe una nueva cuenta durante un pulso One-Shot, el One-Shot en curso no resulta afectado, a menos, lgicamente, que se produzca un nuevo flanco de subida de GATE: en ese caso, el contador sera recargado con el nuevo valor. MODO 2: Rate Generator (Generador de ritmo). En este modo, el contador funciona como un divisor por N. Es empleado tpicamente para las interrupciones de los relojes de tiempo real. OUT estar inicialmente en alto. Cuando el contador se decremente hasta el valor 1, OUT pasar a estado bajo durante un pulso del reloj; tras ello, volver a subir y el contador se recargar con la cuenta inicial, repitindose el proceso. Este modo es, por tanto, peridico, y la misma secuencia se repite indefinidamente. (3) (2) (1) (0) (4) Pulso de escritura CLK WR GATE OUT Conteo detenido (3) (2) (1) (0) (4) Pulso de escritura CLK WR GATE OUT Conteo detenido (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc Disparos del monoestable (3) (2) (4) (1) GATE (TRIGGER) (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc Disparos del monoestable (3) (2) (4) (1) (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc Disparos del monoestable (3) (2) (4) (1) GATE (TRIGGER) Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 95 - Para una cuenta inicial N, la secuencia se repite cada N ciclos de reloj (CLK). Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un pulso de salida, OUT sube inmediatamente. Un flanco de subida en GATE provoca una recarga del contador con el valor de cuenta inicial en el siguiente pulso del reloj (despus, como cabra esperar, OUT bajar tras los N pulsos del reloj correspondientes): GATE puede ser utilizado para sincronizar el contador. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: OUT bajar N pulsos de reloj despus, lo que permite tambin una sincronizacin por software. Escribir un nuevo valor de cuenta durante el funcionamiento del contador no afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE antes del final del perodo el contador se recargar con ese nuevo valor de cuenta inicial tras el prximo pulso del reloj y volver a comenzar, en caso contrario se recargar con el nuevo valor tras finalizar con normalidad el ciclo en curso. MODO 3: Square Wave Mode (Generador de onda cuadrada). Este modo es empleado normalmente para la generacin de una seal de onda cuadrada. Este modo es similar al 2, con la diferencia de que la salida OUT conmuta al transcurrir la mitad de la cuenta: inicialmente est en alto, pero al pasar la mitad de la cuenta pasa a estado bajo hasta que la cuenta finaliza. Este modo es tambin peridico: la onda resultante para una cuenta inicial N tiene un perodo de N ciclos. Si GATE=0 la cuenta descendiente se detiene: si GATE es bajado durante un pulso de salida, OUT sube inmediatamente sin esperar ningn CLK. Un flanco de subida en GATE provoca una recarga del contador con el valor de cuenta inicial en el siguiente pulso del reloj: GATE puede ser utilizado para sincronizar el contador. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: tambin puede ser sincronizado por software. Escribir un nuevo valor de cuenta durante el funcionamiento del contador no afecta a la actual secuencia de cuenta; si se recibe un flanco de subida de GATE (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc (3) (2) (4) (1) GATE un periodo de reloj (Tc) N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk (0) (4) (3) (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc (3) (2) (4) (1) GATE un periodo de reloj (Tc) N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk (0) (4) (3) N = cuenta cargada Tc = periodo del reloj en CLK = 1/fclk T= NTc (3) (2) (1) (0) (4) N=4 CLK WR OUT (3) (2) (4) (1) GATE (0) (4) (3) T1 T0- (3) (2) (1) (0) (4) N=4 CLK WR OUT (3) (2) (4) (1) GATE (0) (4) (3) T1 T0- Ya que es una onda cuadrada T1 = T0 = N/2 Si N es impar entonces T1 = (N+1)/2 y T0 = (N-1)/2 Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 96 - antes del final del medio-perodo el contador se recargar con ese nuevo valor de cuenta inicial tras el prximo pulso del reloj y volver a comenzar, en caso contrario se recargar con el nuevo valor tras finalizar con normalidad el medio- ciclo en curso. Para valores de cuenta impares, la duracin a nivel alto de OUT ser un perodo de reloj mayor que la duracin a nivel bajo.
MODO 4: Software Triggered strobe Mode (Pulso Strobe iniciado por software). OUT est en alto al principio; cuando la cuenta inicial expira, OUT baja durante un pulso de reloj y luego vuelve a subir. El proceso se inicia cuando se escribe la cuenta inicial. GATE=0 inhibe el contador y GATE=1 lo habilita; GATE no influye en OUT. Tras escribir la palabra de control y la cuenta inicial, el contador ser cargado en el prximo pulso del reloj: como ese pulso no decrementa el contador, para una cuanta inicial N, OUT no bajar hasta N+1 pulsos de CLK. Si se escribe una nueva cuenta durante el proceso, se cargar en el prximo pulso CLK y continuar el proceso de cuenta con la nueva cuenta escrita; si la cuenta es de 2 bytes, al escribir el primero no se altera el funcionamiento del contador hasta que se enve el segundo. MODO 5: Hardware Triggered Strobe (Pulso Strobe iniciado por hardware). OUT estar en alto al principio: con el flanco de subida de la seal GATE, el contador comienza a decrementar la cuenta. Cuando llega a cero, OUT baja durante un pulso CLK y luego vuelve a subir. Despus de escribir la palabra de control y la cuenta inicial, el contador no ser cargado hasta el pulso de reloj posterior al flanco de subida de GATE. Este pulso CLK no decrementa el contador: por ello, ante una cuenta inicial N, OUT no bajar hasta que pasen N+1 pulsos de reloj. GATE no afecta a OUT. Si una nueva cuenta inicial es escrita durante el proceso, la actual secuencia del contador no ser alterada; si se produce un flanco de subida en GATE antes de que la nueva cuenta sea escrita pero despus de que expire la cuenta actual, el contador ser cargado con la nueva cuenta en el prximo pulso del reloj. (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc GATE un periodo de reloj (Tc) N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk Strobe Strobe (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc GATE un periodo de reloj (Tc) N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk Strobe Strobe (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc GATE (TRIGGER) un periodo de reloj (Tc) Strobe Strobe Disparo del Strobe (3) (2) (1) (0) (4) N=4 CLK WR OUT T=NTc GATE (TRIGGER) un periodo de reloj (Tc) Strobe Strobe Disparo del Strobe Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 97 - MATERIAL Y EQUIPO UTILIZADO: 1 CI 8254 1 CI L293 1 MOTOR DE CD Sensor ptico de herradura Encoder ( disco con una ranura) I Transistor NPN Bocina pequea (o buzzer) 1 CI 74LS14 (inversor Schmitt Trigger)
CORRELACIN CON TEMAS DEL PROGRAMA VIGENTE: Con esta prctica se cubre algunos de los aspectos de la unidad II: Interfases
METODOLOGA (DESARROLLO DE LA PRCTICA):
1.-Use el timer 0 del 8254 como contador de nmero de vueltas que realiza un motor de CD, tal que cuando cuente 1000 vueltas, usando el timer 1 se produzca en la bocina un pitido de 1Khz por 1 segundo despus de los cuales se invierte el sentido de giro del motor usando el doble puente H (L293) y de nuevo se contar con el 8254 1000 vueltas y se repite indefinidamente. 2.- El L293 que va a controlar el sentido de giro del motor, se va a manipular por el bit 0 y bit 1 del puerto B del PPI. 3.- El inicio del giro del motor va ser controlado con el push-button conectado al bit 7 del puerto A. del PPI. 4.-El timer 1 generar un tono de 1 Khz al poner en alto su terminal gate1 con el bit 0 del puerto C del PPI
Ejemplo de Conexin del 8254 con el Z80 Direcciones vlidas para el 8254: 84h contador 0 85h contador 1 86H contador 2 87H r. control Direcciones vlidas para el 8254: 84h contador 0 85h contador 1 86H contador 2 87H r. control Gate 1 Clock 1 Z80 Z80 Bus de Datos Bus de Datos CS RD WR RD WR A0 A1 A0 A1 A2 A3 A4 A5 A6 A7 B u s
d e
D i r e c c i o n e s
( B a j o ) B u s
d e
D i r e c c i o n e s
( B a j o ) A B C G1A G1B G2 74LS138 Y1=84H-87H A3 A2 A6 A5 A4 A7 IORQ Out 0 Gate 0 Clock 0 Out 1 Out 2 Gate 2 Clock 2 Contador 0 Contador 1 Contador 2 Timer 8254 IORD IOWR Direcciones vlidas para el 8254: 84h contador 0 85h contador 1 86H contador 2 87H r. control Direcciones vlidas para el 8254: 84h contador 0 85h contador 1 86H contador 2 87H r. control Gate 1 Clock 1 Z80 Z80 Bus de Datos Bus de Datos CS RD WR RD WR A0 A1 A0 A1 A2 A3 A4 A5 A6 A7 B u s
d e
D i r e c c i o n e s
( B a j o ) B u s
d e
D i r e c c i o n e s
( B a j o ) A B C G1A G1B G2 74LS138 Y1=84H-87H A3 A2 A6 A5 A4 A7 IORQ Out 0 Gate 0 Clock 0 Out 1 Out 2 Gate 2 Clock 2 Contador 0 Contador 1 Contador 2 Timer 8254 IORD IOWR Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 98 -
Contador2 Contador2 Contador1 Contador1 Contador0 Contador0 Clk 1 Circuito De reloj del z80 Circuito De reloj del z80 Out 1 Encoder Encoder L293B L293B Z80 INT Clk0 Gate0 Gate1 Out 0 PPI 8255 PPI 8255 TIMER 8254 Programado en modo 0 Programado en modo 0 Programado en modo 3 Programado en modo 3 No se usa No se usa No se usa Tono de 1khz fclk =2Mhz Start PA.7 PB.0 PB.1 PC.0 Contador2 Contador2 Contador1 Contador1 Contador0 Contador0 Clk 1 Circuito De reloj del z80 Circuito De reloj del z80 Out 1 Encoder Encoder L293B L293B Z80 INT Clk0 Gate0 Gate1 Out 0 PPI 8255 PPI 8255 TIMER 8254 Programado en modo 0 Programado en modo 0 Programado en modo 3 Programado en modo 3 No se usa No se usa No se usa Tono de 1khz fclk =2Mhz Start PA.7 PB.0 PB.1 PC.0 Circuito de un sensor Circuito de un sensor ptico herradura para un encoder ptico herradura para un encoder Motor Motor Motor CIRCUITO SUGERIDO PARA LIMPIAR LOS PULSOS ENVIADOS POR EL ENCODER +5V CLK 0 CLK 0 220 10 k 7414 Al 8254 Motor Motor Motor Motor Motor Motor Motor Motor Motor CIRCUITO SUGERIDO PARA LIMPIAR LOS PULSOS ENVIADOS POR EL ENCODER +5V CLK 0 CLK 0 220 10 k +5V CLK 0 CLK 0 220 10 k 7414 Al 8254 CIRCUITO DE CONTROL DE SENTIDO DE GIRO DE UN CIRCUITO DE CONTROL DE SENTIDO DE GIRO DE UN MOTORES DE CD USANDO UN CI ( MOTORES DE CD USANDO UN CI ( ) L293 ) L293 L293B VEN D C +VCC=5v +VS M 8 16 2 1 7 6 3 L293B VEN D C +VCC=5v +VS M 8 16 2 1 7 6 3 Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 99 -
Circuito para contar el n Circuito para contar el n mero de revoluciones de un motor de CD mero de revoluciones de un motor de CD 8254 8254 Motor de CD 10 k 220 Clk 0 L293 L293 PPI 8255 PPI 8255 Bus de Datos Z80 Z80 Out 0 INT gate0 +5v 8254 8254 Motor de CD 10 k 220 Clk 0 L293 L293 PPI 8255 PPI 8255 Bus de Datos Z80 Z80 Out 0 INT gate0 +5v Diagrama de flujo que muestran las tareas a realizar por el programa Inicio Inicio Configurar PPI Configurar PPI Programar El 8254 Programar El 8254 Arranca motor Arranca motor Motor gir 1000 vueltas? Out 0=alto? Motor gir 1000 vueltas? Out 0=alto? Detener el motor Detener el motor iniciar pitido Bocina a 1khz iniciar pitido Bocina a 1khz Invertir giro del motor Invertir giro del motor Inicializar El 8254 Inicializar El 8254 Inicializar El 8254 Inicializar El 8254 Habilitar Interrupciones. en modo1 Habilitar Interrupciones. en modo1 Rehabilitar Interrupciones. Rehabilitar Interrupciones. No Si Ubica el Stack Ubica el Stack Si Delay 1 seg Delay 1 seg Parar pitido De bocina Parar pitido De bocina RSI RSI RETI RETI CALL RSI CALL RSI Aqu Aqu el Z80 entra en un el Z80 entra en un estado HALT hasta que ocurra estado HALT hasta que ocurra la interrupci la interrupci n n Inicio Inicio Configurar PPI Configurar PPI Programar El 8254 Programar El 8254 Arranca motor Arranca motor Motor gir 1000 vueltas? Out 0=alto? Motor gir 1000 vueltas? Out 0=alto? Detener el motor Detener el motor iniciar pitido Bocina a 1khz iniciar pitido Bocina a 1khz Invertir giro del motor Invertir giro del motor Inicializar El 8254 Inicializar El 8254 Inicializar El 8254 Inicializar El 8254 Habilitar Interrupciones. en modo1 Habilitar Interrupciones. en modo1 Rehabilitar Interrupciones. Rehabilitar Interrupciones. No Si Ubica el Stack Ubica el Stack Si Delay 1 seg Delay 1 seg Parar pitido De bocina Parar pitido De bocina RSI RSI RETI RETI CALL RSI CALL RSI Aqu Aqu el Z80 entra en un el Z80 entra en un estado HALT hasta que ocurra estado HALT hasta que ocurra la interrupci la interrupci n n Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 100 - VS A0 LAS DIRECCIONES SELECCIONADAS SON DE 84H A 87H PB.1 INT VCC A1 PPI 8255 PRACTICA NUM.9 APLICACIONES DEL TIMER /CONTADOR 8254 A2 AL 8254 +5V D1 Carlo L293 2 7 10 15 1 9 3 6 11 14 16 8 1A 2A 3A 4A 1/2EN 3/4EN 1Y 2Y 3Y 4Y VCC1 VCC2 A3 7414 1 2 A0 PPI 8255 A5 +5V +5V START SPEAKER D4 220 2N3904 3 2 1 A4 +5V MOTOR CD 1 2 A1 A6 VCC PA.7 D2 A2 2.7 K A7 D3 IORD A3 0 IOWR 7414 1 2 A4 8254 8 7 6 5 4 3 2 1 22 23 19 20 21 9 11 10 15 14 13 18 16 17 24 12 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 CS CLK0 G0 OUT0 CLK1 G1 OUT1 CLK2 G2 OUT2 VCC GND 84H-87H 0 X +5V 4.7 K A5 0 CIRCUITO DE RELOJ DEL Z80 PB.0 SENSOR PTICO 74LS138 1 2 3 6 4 5 15 14 13 12 11 10 9 7 A B C G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 A6 BUS DE DIRECCIONES 0 10K A7 1 X 1 BUS DE DATOS PC.0
SUGERENCIA DIDCTICA: 1.- investigue como se usa el 8253/8254 en un IBM PC compatible. a) Cul es el uso del timer 0, cul del timer 1 y cul del timer2? b) Cules son las direcciones de los puertos de la PC con los que se tiene acceso al 8254? 2.-Implemente un programa para generar los tonos musicales en la bocina en la salida del timer 1 del 8254, tal que se le asigne a cada tecla del teclado matricial un tono diferente (teclado musical).
Laboratorio de Microprocesadores EL TIMER 8254
M.C. Carlos E. Canto Quintal
- 101 - REPORTE: 1.- Reporte el listado del programa LST o PRN (documentado) del control de sentido de giro del motor de CD 2.-incluya en su reporte la investigacin de la sugerencia didctica 3.-el listado del programa de teclado musical con el 8254 4.- reporte sus conclusiones y comentarios respecto al desarrollo de esta prctica
BIBLIOGRAFA: Ramesh S. Gaonkar Prentice Hall The Z80 Microprocessor: Architecture, Interfacing, Programming, and Design Barry B. Brey Prentice Hall Los microprocesadores de Intel, Arquitectura, programacin e interfases TTL Data Book TI Manual de Zilog Manual de National Semiconductor linear Manual del L293 http://atc.ugr.es/docencia/udigital/index.html