EL TIMER 8254 Microprocesadores El temporizador /contador Intel 8254 • • • • Su Arquitectura interna Modos de programación Su interconexión con un µprocesador Aplicaciones Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Características principales del 82C54 9 Frecuencia del reloj de entrada de 8MHz a 12MHz 9 Versió Versión mejorada del NMOS 8253 9 Tres contadores independientes de 16 bits 9 Seis modos programables de Contador 9 Comando Read Back de Status 9 Conteo en Binario o BCD 9 Completamente compatible con TTL 9 Una fuente de poder de 5V 9 Baja Potencia – – ICCSB (corriente en Stand By). ... . . . . . .10µ .10µA ICCOP (corriente en operació operación) . .. .. . . . . 10mA a 8MHz Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Ejemplo de Aplicaciones del 8254 Algunas de las otras funciones computadora/timers comunes a las microcomputadoras los cuales pueden ser implementados con el 8254 son: Reloj de Tiempo Real Contador de Eventos One-Shot Digital Generador de baudaje Programable Generador de Onda Cuadrada Multiplicador Binario Generador de forma de onda compleja Controlador complejo de motor Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Arquitectura interna del 8254 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Arquitectura interna del 8254 D0-D7 WR RD A0 A1 Buffer Buffer deldelbus bus dededatos datos Contador Contador00 CLK0 GATE0 OUT0 Lógica Lógicadede lectura/ lectura/ escritura escritura Contador Contador1 1 CLK1 GATE1 OUT1 Registro Registrodede control control Contador Contador2 2 CLK2 GATE2 OUT2 CS BUS BUSINTERNO INTERNO Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Arquitectura interna de un contador del 8254 Bus Businterno internode deDatos Datos Latch Latchdedestatus status Registro Registrodedecontrol control Lógica Lógicadede Control Control Registro Registrodedestatus status Registro Registrodedeconteo conteo (CRM) (CRM)MSB MSB Registro Registrodedeconteo conteo (CRL)LSB (CRL)LSB CONTADOR CONTADORnn(CE) (CE) Latch LatchDeDeSalida Salida(OLM) (OLM) Latch Latchdedesalida salida(OLL) (OLL) MSB LSB MSB LSB CLK n GATE n OUT n Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Distribución De Terminales OUT0 GATE0 Contador 0 D0D0-D7 CLK0 OUT1 GATE1 CLK1 Contador 1 RD WR CLK2 A1 D6 D5 2 3 D4 D3 4 D2 D1 6 7 8 CLK0 OUT0 GATE0 GATE2 Contador2 1 D0 OUT2 A0 D7 CS GND 24 23 22 21 20 5 9 10 11 12 8254 VCC WR RD CS A1 19 18 A0 17 OUT2 16 15 14 GATE2 13 OUT1 CLK2 CLK1 GATE1 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Tabla de verdad de la operación del 8254 CS RD WR A1 A0 FUNCION 0 1 0 0 0 CARGA CONTADOR 0 0 1 0 0 1 CARGA CONTADOR 1 0 1 0 1 0 CARGA CONTADOR 2 0 1 0 1 1 ESCRIBIR PALABRA DE CONTROL 0 0 1 0 0 LEER CONTADOR 0 0 0 1 0 1 LEER CONTADOR 1 0 0 1 1 0 LEER CONTADOR 2 0 0 1 1 1 READ BACK (LEER STATUS) 1 X X X X BUS DE DATOS EN TRI- STATE 0 1 1 X X BUS DE DATOS EN TRI-STATE Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores FORMATO DE LA PALABRA DE CONTROL D7 SC1 SC1 0 0 1 1 D6 D5 D4 SC0 SC0 RW1 RW1 RW0 RW0 Elegir contador: 0 contador 0 1 contador 1 0 contador 2 1 comando Read Back 0 0 1 1 D3 M2 M2 D2 D1 D0 M1M1 M0 M0 BCD BCD 000 001 Operación: 0 comando de enclavamiento x 1 0 x11 1 leer/escribir byte bajo 100 0 leer/escribir byte alto 101 1 leer/escribir byte bajo y después el alto Modo: modo 0 modo 1 modo 2 modo 3 modo 4 modo 5 Contador: 0 binario 16 bits 1 BCD 4 décadas Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Operaciones de lectura de conteo. ¾Existen tres posibles métodos para leer el valor de conteo de un contador del 8254: 1).-Con un comando Read-Back. 2).-Leer simplemente el contador accediendo a su puerto correspondiente: este método requiere inhibir la entrada CLK al contador (por ejemplo, a través de la línea GATE o utilizando circuitería exterior de apoyo) con objeto de evitar leer la cuenta en medio de un proceso de actualización de la misma, lo que daría un resultado incorrecto. 3).- Con un comando de enclavamiento Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Formato de Comando Read-Back. D7 D6 D5 11 11 -CONTEO -CONTEO D4 D3 D2 D1 D0 -STATUS -STATUS CONTADOR2 CONTADOR2 CONTADOR1 CONTADOR1 CONTADOR0 CONTADOR0 00 A 1 los contadores seleccionados 0 si enclava la cuenta de los contadores seleccionados 0 si enclava el byte de status del contador seleccionado Permite enclavar la cuenta en varios latches de salida (OL's (OL's ) de varios contadores de una sola vez, sin requerir mú múltiples comandos de enclavamiento, poniendo el bit 5 a cero. Los contadores permanecen enclavados hasta ser leí leídos, los que no son leí leídos permanecen enclavados. Tambié También es posible enviar informació información de estado al latch de salida ( OL), enclavá á ndola para que puede ser leí enclav leída con comodidad por el puerto que corresponda a ese contador. Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Palabra de status D7 D6 OUTPUT NULLCOUNT COUNT OUTPUT NULL Valor de la terminal out D5 D4 RW1 RW1 RW0 RW0 D3 M2 M2 D2 D1 D0 M1M1 M0 M0 BCD BCD Modo del contador activo 1 “Null count” 0 cuenta disponible para ser leída Contador: 0 binario 16 bits 1 BCD 4 décadas Al leer la palabra de status se permite leer el valor actual de la cuenta, así así como averiguar tambié é n el modo programado para un contador y el estado tambi actual de la terminal OUT, ademá además de verificar la bandera de cuenta nula (Null Count) Count) de los contadores que se indiquen Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Comando de enclavamiento (Counter Latch Command). D7 SC1 SC1 D6 D5 D4 D3 D2 D1 SC0 SC0 00 00 XX XX XX D0 XX Este comando se enví envía como una palabra de control contador afectado: (A1=A0=1) con los bits 5 y 4 a cero. 0 0 contador 0 Cuando se enví envía el comando, el latch de salida (OL) del 0 1 contador 1 contador seleccionado queda congelado hasta que la CPU 1 0 contador 2 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 latches de salida (OL's (OL's)) quedará quedarán enclavados hasta ser leí leídos. Si se enví envían varios comandos de enclavamiento al mismo contador, separados por un cierto intervalo de tiempo, só sólo se considerará considerará el primero (por tanto, la cuenta leí leída corresponderá corresponderá al valor del contador cuando fue enclavado por vez primera). Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Modos de programación del timer 8254 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Modo 0: Interrupt On Terminal Count (Interrupción al final de la cuenta). CLK Pulso de escritura WR GATE Se carga la cuenta al registro de conteo (4) OUT CLK Pulso de escritura WR (3) (2) Inicia conteo (3) (4) (1) (0) (2) (1) Final de conteo (0) Conteo detenido GATE OUT Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Modo 1:Hardware Retriggerable One-Shot (Monoestable programable). (4) CLK WR GATE (TRIGGER) N=4 (3) (2) (1) (0) (4) (3) (2) (1) Disparos del monoestable OUT T=NTc Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Modo 2: Rate Generator (Generador de ritmo). (4) CLK (3) (2) (1) (0) (4) (3) (2) (1) (0) (4) (3) N=4 WR GATE OUT T=NTc un periodo de reloj (Tc) N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Modo 3: Square Wave Mode (Generador de onda cuadrada). (4) CLK WR (3) (2) (1) (0) (4) (3) (2) (1) (0) (4) (3) N=4 GATE OUT T1 T0- T= NTc N = cuenta cargada Tc = periodo del reloj en CLK = 1/fclk Ya que es una onda cuadrada T1 = T0 = N/2 Si N es impar entonces T1 = (N+1)/2 y T0 = (N-1)/2 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores MODO 4: Software Triggered strobe Mode (Pulso Strobe iniciado por programa) (4) CLK (3) (2) (1) (0) N=4 WR GATE OUT un periodo de reloj (Tc) T=NTc N=cuenta cargada Tc=periodo del reloj en CLK=1/fclk Strobe Strobe Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores MODO 5: Hardware Triggered strobe Mode (Pulso Strobe iniciado por hardware) (4) CLK WR (3) (2) (1) (0) N=4 GATE (TRIGGER) OUT Disparo del Strobe T=NTc un periodo de reloj (Tc) Strobe Strobe Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Interconexión del 8254 con un microprocesador Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Ejemplo de Conexión del 8254 con el Z80 Bus Busde deDatos Datos RD IORD IORQ RD IOWR WR WR Z80 Z80 A0 A1 BusdedeDirecciones Direcciones(Bajo) (Bajo) Bus A2 A3 A4 A5 A6 A7 A0 A1 Contador 0 Timer 8254 Contador 1 Out 1 Gate 1 Clock 1 Contador 2 Out 2 Gate 2 Clock 2 CS 74LS138 A2 A3 A4 A5 A6 A7 A B C G1A G1B G2 Out 0 Gate 0 Clock 0 Y1=84H-87H Direcciones Direccionesválidas válidas para paraelel8254: 8254: 84h 84hÆ Æcontador contador00 85h Æ contador 85h Æ contador11 86H 86HÆ Æcontador contador22 87H Æ r. 87H Æ r.control control Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores EJEMPLO DE APLICACIONES DEL 8254 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Control de velocidad de un motor de CD con PWM Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores CIRCUITO DE CONTROL DE SENTIDO DE GIRO DE UN MOTORES DE CD USANDO UN CI (½) L293 +VS M 3 6 16 8 +VCC=5v ½ L293B 7 D 1 VEN 2 C Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Circuito de un sensor óptico herradura para un encoder DISCO RANURADO O ENCODER Motor Motor +5V 220Ω 10 kΩ CLK 0 CLK 0 7414 Al 8254 CIRCUITO SUGERIDO PARA LIMPIAR LOS PULSOS ENVIADOS POR EL ENCODER Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Circuito para contar el número de revoluciones de un motor de CD Bus de Datos Motor de CD Z80 Z80 PPI PPI 8255 8255 8254 8254 L293 L293 INT Out 0 Clk 0 +5v gate0 10 kΩ 220 Ω Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Circuito L293B doble puente” H” PPI PPI 8255 8255 +5V +VS alimentación del motor IN1 1 Out1 Motor de CD 4.7 kΩ EN1 (½)L293B (½)L293B Out2 2 IN2 220 Ω +5V 10 kΩ 4.7 kΩ T0 8254 8254 GATE0 CONTADOR CONTADOR00 74LS14 OUT 0 CLK 0 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Uso del 8254 para controlar el conteo del giro de un motor de CD PA.7 PB.0 PB.1 PC.0 PPI PPI 8255 8255 L293B L293B Start Gate0 Contador0 Contador0 Encoder Encoder Clk0 Programado en modo 0 Out 0 INT Z80 Tono de 1khz Gate1 Contador1 Contador1 Out 1 Clk 1 fclk =2Mhz Circuito Circuito DeDereloj reloj deldelz80 z80 Contador2 Contador2 Programado en modo 3 No Noseseusa usa TIMER 8254 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Esquemático de la conexión del 8254 con el z80 para la práctica 9 4.7 K 2 7 10 15 PA.7 PPI 8255 +5V PB.0 PB.1 1 9 16 8 1Y 2Y 3Y 4Y 1A 2A 3A 4A 3 6 11 14 MOTOR CD D1 1/2EN 3/4EN D2 1 2 D4 VCC1 VCC2 D3 L293 2 INT 7414 1 +5V +5V BUS DE DATOS +5V 24 8 7 6 5 4 3 2 1 IORD IOWR BUS DE DIRECCIONES 22 23 19 20 A0 A1 PPI 8255 1 2 3 A7 A6 A5 6 4 5 A B C 74LS138 G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 9 7 21 12 G0 OUT0 CLK0 8254 CLK1 G1 OUT1 RD WR A0 A1 OUT2 CLK2 CS GND G2 11 10 9 10K 2 7414 220 1 15 14 13 17 18 +5V 16 SENSOR ÓPTICO 84H-87H SPEAKER 3 A2 A3 A4 VCC D0 D1 D2 D3 D4 D5 D6 D7 2 2N3904 2.7 K 1 START VS PRACTICA NUM.9 APLICACIONES DEL TIMER /CONTADOR 8254 VCC PC.0 CIRCUITO DE RELOJ DEL Z80 A7 1 A6 A5 A4 A3 A2 A1 A0 1 X X 0 0 0 0 AL 8254 LAS DIRECCIONES SELECCIONADAS SON DE 84H A 87H Carlos Canto Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Final Finaldede conteo conteo Out 0 1 segundo Gate1 Pita Pitalalabocina bocinapor por1 1seg. seg. Tono de 1KHZ Out 1 Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Inicio Inicio Ubica Ubicaelel Stack Stack Microprocesadores Diagrama de flujo que muestran las tareas a realizar por el programa RSI RSI Configurar Configurar PPI PPI Detener Detenerelel motor motor Programar Programar ElEl8254 8254 iniciar iniciarpitido pitido Bocina Bocinaa a1khz 1khz Inicializar Inicializar ElEl8254 8254 Habilitar Habilitar Interrupciones. Interrupciones. enenmodo1 modo1 Arranca Arrancamotor motor Aquí Aquí el Z80 entra en un estado HALT hasta que ocurra la interrupció interrupción Si Delay Delay1 seg 1 seg Parar Pararpitido pitido DeDebocina bocina Si CALL CALLRSI RSI Inicializar Inicializar ElEl8254 8254 Motor Motorgiró giró 1000 1000vueltas? vueltas? Out Out0=alto? 0=alto? Rehabilitar Rehabilitar Interrupciones. Interrupciones. No RETI RETI Invertir Invertirgiro giro deldelmotor motor Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores Definición de los símbolos usados en el programa STACK PORT_A PORT_B PORT_C CTRL_PPI PAL_CTRL CONT_0 CONT_1 CTRL_TIM CONT_0_MOD0 CONT_1_MOD3 CONT_INICIAl_LSB CONT_INICIAl_MSB DIV_LSB DIV_MSB EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 1000H 80H 81H 82H 83H 88H 84H 85H 87H 0F0H 07H ; Inicio del stack ; dirección del puerto A ; dirección del puerto B ; dirección del puerto C ; dirección del registro de control del PPI ; palabra de control del PPI el pto.Ch =entrada ; dirección del contador 0 ; dirección del contador 1 ; dirección del registro de control del 8254 ; palabra de control para el contador 0, en modo 0 ; palabra de control para contador 1 en modo 3 ; Byte menos significativo del valor de conteo inicial ; Byte menos significativo del valor de conteo inicial ; Byte divisormenos significativo ; Byte divisor más significativo Carlos E. Canto Quintal M.C. M.C. EL TIMER 8254 Microprocesadores ;UBICA EL STACK LD SP, STACK ; CONFIGUARCIÓN DEL PPI LD A , PAL_CTRL OUT (CTRL_PPI) , A ; PROGRAMACIÓN DEL TIMER 8254 LD A , CONT_0_MOD0 OUT (CONT_0) , A LD A , CONT_1_MOD3 OUT (CONT_1) , A ; Carga de palabra de control del PPI ;Configura el contador 0 en modo 0 ; Configura contador 1 en modo 1 ; INICIALIZACIÓN DEL TIMER 8254 CALL INICIA_8254 ; HABILITACIÓN DE LA INTERRUPCIONES Y SELECCIÓN DEL MODO1 IE IM1 LEER: ;ARRANCA EL MOTOR IN A , (PTO_A) AND 80H JP NZ, LEER LD A, 01H OUT (PTO_B) , A HALT ; Habilita las interrupciones del Z80 ; Selección del modo 1 de interrupciones ;leer tecla start del puerto A ;enmascara bits no usados ;si no se oprimió la tecla vuelve a checar ; si se oprimió la tecla , arranca el motor ; espera que ocurra la interrupción Carlos E. Canto Quintal M.C. M.C. INICIA_8254 : ;INICIALIZACIÓN DEL CONTADOR 0 LD A, CONT_INICIAL_LSB OUT (CONT_0) , A LD A, CONT_INICIAL_MSB OUT (CONT_0) , A ;INICIALIZACIÓN DEL CONTADOR 1 LD A , DIV_LSB OUT (CONT_2) , A LD A , DIV_MSB OUT (CONT_2) , A ;Carga el byte menos significativo del valor ; de conteo inicial al contador 0 ;Carga el byte más significativo del valor ; de conteo inicial al contador 0 ;Cargar al contador1 con el divisor de frecuencia ; menos significativo ; Cargar al contador1 con el divisor de frecuencia ; más significativo RET EL TIMER 8254 Microprocesadores Generador de señales en una IBM PC Carlos E. Canto Quintal M.C. M.C.