Microcontroladores El ElTimer Timer22 El Timer2 del 89C52 Carlos E. Canto Quintal M.C. Microcontroladores El ElTimer Timer22 El Timer2 del 89C52 El Timer 2 es un Timer/Contador de 16 bits que puede ser operado ya sea como timer o como contador de eventos. El tipo de operación es seleccionado por el bit C/T2 el SFR T2CON . El Timer 2 tiene 3 modos de operación: • Modo de Captura • Auto-recarga (conteo ascendente-descendente) • Generador de Baudaje. Los modos se seleccionan con los bits del T2CON. El Timer 2 consiste de dos registros de 8 bits, TH2 y TL2. La operación del timer 2, tanto como timer como contador de eventos externos, es similar a la de los Timers 0 y 1. Carlos E. Canto Quintal M.C. TIMER 2 Microcontroladores Microcontroladores (MSB) T2CON: REGISTRO DE CONTROL DELTIMER/CONTADOR2 TF2 TF2 EXF2 EXF2 RCLK RCLK TCLK TCLK EXEN2 EXEN2 TR2 TR2 (LSB) C/T2 C/T2 CP/RL2 CP/RL2 SIMBOLO POSICIÓN NOMBRE Y SIGNIFICADO TF2 T2CON.7 Bandera de sobre flujo del Timer2 se hace 1 con el rebase del Timer y debe hacerse 0 por software.TF2 no se hace 1 cuando RCLK=1 o cuando RCLK=1 EXF2 T2CON.6 Bandera externa del Timer2, se hace 1 cuando ya sea una captura o una recarga sea producida desde el exterior, al ocurrir una transición negativa en T2EX y además que EXEN2=1. Siempre la interrupción del timer 2 esté habilitada, EXF2=1 hará que la CPU vectorice a la rutina de servicio del timer 2. EXF2 debe deshabilitarse por software. EXF2 no produce una interrupción en modo contador Up//Down (DCEN=!) RCLK T2CON.5 Bandera del reloj de recepción. Cuando se hace 1, hace que el puerto serie use los pulsos del sobre flujo del timer 2 para el reloj de su receptor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del transmisor. RCLK=0 hará que el sobre flujo del Timer 1 sea usado para el reloj del receptor TCLK T2CON.4 Bandera de reloj del transmisor. Cuando está en 1, hace que el puerto serial use los pulsos del sobre flujo del timer 2 para el reloj de su transmisor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del receptor. TCLK=0 hará que el sobre flujo del Timer 1 sea usado para el reloj del transmisor. EXEN2 T2CON.3 Bandera de habilitación externa, Cuando está habilitada permite que ocurra una captura o una recarga como resultado de una transición negativa en T2EX si el Timer 2 no está siendo usado para temporizar el puerto serial. EXEN2=0 hace que el Timer2 ignore los eventos en T2EX TR2 T2CON.2 Control de Arranque /Paro del Timer2. Un 1 lógico arranca el Timer2 C/T2 T2CON.1 Selección de Timer o contador (Timer2) 0=Timer interno (OSC/12) 1=Contador de eventos externos (disparado en la transición de bajada) CP/RL2 T2CON.0 Bandera de Captura/Recarga. Cuando está en 1, ocurrirá una captura con una transición negativa en T2EX si EXEN2=1. Cuando está en cero, ocurrirá una auto recarga ya sea cuando el Timer 2 rebase o una transición negativa en T2EX y que EXEN=1. Cuando ya sea que RCLK=1 o TCLK=1, este bit es ignorado y el timer es forzado a una auto recarga en el rebase del Timer 2. Carlos Canto Quintal TIMER 2 Microcontroladores Microcontroladores (MSB) T2MOD: REGISTRO DE CONTROL DE MODO DEL TIMER/CONTADOR2 (LSB) ---- ---- DIRECCIÓ DIRECCIÓN DEL T2MOD=0C9H ---- ---- ---- ---- NO ES DIRECCIONABLE A BIT T20E T20E DCEN DCEN VALOR DE RESET=XXXXX00B SIMBOLO POSICIÓN NOMBRE Y SIGNIFICADO -- T2MOD.7 NO IMPLEMENTADO , RESERVADO PARA EL FUTURO -- . T2MOD.6 NO IMPLEMENTADO , RESERVADO PARA EL FUTURO -- T2MOD.5 -- T2MOD.4 -- T2CON.3 -- T2CON.2 T20E T2MOD.1 TIMER2 OUTPUT ENABLE BIT (BIT HABILITADOR DE LA SALIDA DEL TIMER2) DCEN T2MOD.0 CUANDO SE PONE A “1” , PERMITE QUE EL TIMER2 SE CONFIGURE COMO CONTADOR CRECIENTE-DECRECIENTE (UP-DOWN) Carlos Canto Quintal Microcontroladores Las LasInterrupciones Interrupciones El El manejo manejo de de las las Interrupciones Interrupciones en en el el 80C52 80C52 Registro habilitador de las Interrupciones (IE: Interrupts Enable Register )) Register)) EA EA ---- ET2 ET2 ES ES ET1 ET1 EX1 EX1 ET0 ET0 EX0 EX0 SIMBOLO POSICIÓN FUNCIÓN EA IE.7 deshabilita todas las interrupciones -- IE.6 Reservada ET2 IE.5 Bit habilitador de interrupción del timer2 ES IE.4 Habilitador de interrupción del puerto serie ET1 IE.3 Habilitador de interrupción del timer 1 EX1 IE.2 Habilitador de la interrupción externa 1 ET0 IE.1 Habilitador de interrupción del timer 0 EX0 IE.1 Habilitador de la interrupción externa 0 Carlos E. Canto Quintal Microcontroladores Las LasInterrupciones Interrupciones Fuentes ón en Fuentes de de Interrupci Interrupción enel el80C52 80C52 ET2 Carlos E. Canto Quintal TIMER 2 Microcontroladores Microcontroladores MODOS DE OPERACIÓN DEL TIMER2 RCLK+TCLK CP/RL2 TR2 MODO 0 0 1 0 1 X 1 1 1 Auto-Recarga de 16 bits Captura de 16 bits Generador de baudaje X X 0 Apagado Carlos Canto Quintal Microcontroladores Microcontroladores TIMER 2 Modo Auto-recarga (contador Ascendente o Descendente) Cuando se configura en su modo de Auto-Recarga de 16 bits, el timer 2 puede ser programado para contar en forma ascendente o descendente. Esta habilidad es invocada con el bit DCEN (Down Counter Enable ), localizado en el SFR T2MOD Al resetear el CPU, el DCEN está en cero, lo que hace que el Timer 2 por default cuente hacia arriba (Up). Cuando el DCEN se pone a uno, el Timer 2 puede contar hacia arriba o hacia abajo, dependiendo del valor de T2EX Carlos Canto Quintal TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=0) Con la habilidad de conteo Up/Down desactivada osc osc _: 12 : 12 C/T2=0 TL2 TH2 TL2 TH2 (8bits) (8bits) (8bits)(8bits) C/T2=1 T2 T2 control TR2 TR2 Recarga RCAP2L RCAP2H RCAP2L RCAP2H Detector de transición TF2 TF2 T2EX T2EX Interrupción Interrupción del del Timer2 Timer2 EXF2 EXF2 control EXEN2 EXEN2 Carlos Canto Quintal Microcontroladores Microcontroladores TIMER 2 TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=0) Con la habilidad de conteo Up/Down desactivada • Cuando DCEN=0, el Timer 2 automá automáticamente realiza un • • • conteo ascendente. En este modo se pueden seleccionar dos opciones con el bit EXEN2 del T2CON. Si EXEN2 =0, el timer 2 cuenta hasta 0FFFFH y se activa el bit TF2 con el overflow. overflow. El overflow tambié también hace que los registros del timer sean recargados con el valor de 16 bits en RCAP2H RCAP2L. Los valores del timer en modo captura, RCAP2H y RCAP2L son preestablecidos por programa. si EXEN2=1, un arecarga de 16 bits puede ser producida ya sea por un overflow o por una transició transición de 0 a 1 en la entrada externa T2EX. Esta transició transición tambié también activa el bit EXF2. Tanto TF2 como EXF2 pueden generar una interrupció interrupción , si está está habilitada Carlos Canto Quintal TIMER 2 Microcontroladores Microcontroladores Generaci ón de Interrupciones en el Timer2 Generación • La interrupción del Timer 2 es generada por un OR lógico entre los bits TF2 y EXF2 del registro T2CON. • Ninguna de estas dos banderas son limpiadas por hardware cuando la rutina de servicio es invocada. De hecho, la Rutina de Servicio debe determinar cual de las dos banderas, TF2 o EXF2, fue la que generó la interrupción, y ese bit será limpiado en el programa. TF2 TF2 Interrupción Interrupción del del Timer2 Timer2 EXF2 EXF2 Carlos Canto Quintal TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=1) Con la habilidad de conteo Up/Down activada Valor Valor de de recarga recarga en en conteo conteo descendente descendente 0FFh 0FFh 0FFh 0FFh conmuta EXF2 EXF2 osc osc _: 12 : 12 C/T2=0 TL2 TH2 TL2 TH2 (8bits) (8bits) (8bits)(8bits) C/T2=1 T2 T2 TF2 TF2 control TR2 Valor Valor de de recarga recarga en en conteo ascendente conteo ascendente T2EX T2EX Dirección de conteo 1= Up 0=Down Carlos Canto Quintal RCAP2L RCAP2H RCAP2L RCAP2H Interrupción Interrupción del del Timer2 Timer2 TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=1) Con la habilidad de conteo Up/Down activada • Cuando DCEN=1 , el Timer2 realiza un conteo descendente. • En este modo la terminal T2EX controla la dirección del conteo . • Un “1” lógico en T2EX hace que el Timer2 cuente hacia arriba. – El Timer hará hará overflow en 0FFFFH y activa la bandera TF2. Este overflow tambié también hace que el valor de 16 bits de RCAP2H y RCAP2L sea recargado en los registros del timer, TH2 y TL2 respectivamente. respectivamente. • Un “0” lógico en T2EX, hace al Timer2 contar hacia abajo. – El timer hace un underflow cuando TH2 y TL2 igualan el valor almacenado en RCAP2H y RCAP2L. El underflow activa el bit TF2 y hace los registros del timer sean recargados con 0FFFFh. 0FFFFh. • El bit EXF2 conmuta siempre que el Timer2 haga ya sea overflow o underflow y puede ser usado como el 17avo bit de resolución. • En este modo de operación, EXF2 no invoca una interrupción. Carlos Canto Quintal Microcontroladores El ElTimer Timer22 Modo Captura En el modo captura, hay dos opciones escogidas con el bit EXEN2 del T2CON. Si EXEN2=0, el Timer 2 es un timer o contador de 16 bits y cuando hay desborde de su conteo, habilita la bandera TF2 del T2CON, que puede ser usada para generar una interrupción. Si EXEN2=1, el Timer 2 realiza la misma operación, pero una transición de 1 a 0 en la entrada externa T2EX también hace que el valor actual de TH2 y TL2 sean capturados en RCAP2H y RCAP2L, respectivamente. Además la transición en T2EX hace que el bit EXF2 del T2CON se haga “1”. El bit EXF2, al igual que TF2, puede generar una interrupción. Carlos E. Canto Quintal M.C. TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO CAPTURA osc osc _: 12 : 12 C/T2=0 TL2 TH2 TL2 TH2 (8bits) (8bits) (8bits)(8bits) C/T2=1 T2 T2 TF2 TF2 control Interrupción Interrupción del del Timer2 Timer2 TR2 TR2 Detector de transición captura T2EX T2EX RCAP2L RCAP2H RCAP2L RCAP2H EXF2 EXF2 control EXEN2 EXEN2 Carlos Canto Quintal Microcontroladores El ElTimer Timer22 Modo Generador de Baudaje El timer 2 es habilitado como generador de baudaje poniendo en uno TCLK y/o RCLK en el registro T2CON. Nótese que el baudaje del transmisor y el del receptor pueden ser diferentes, si el timer 2 se usa para el baudaje del receptor o para el del transmisor entonces el Timer 1 se podrá usar para la función del otro. El modo generador de baudaje es similar al modo de autorecarga, en el hecho que cuando se rebasa el TH2 hace que los registros del timer 2 sean recargados con el valor de 16 bits de los registros RCAP2H y RCAP2L, los ciuales son preestablecidos por programa. Carlos E. Canto Quintal M.C. Microcontroladores El ElTimer Timer22 Modo Generador de Baudaje La operación del timer 2 es diferente cuando se usa como generador de baudaje . Normalmente , como timer se incrementa en cada ciclo de máquina (a 1/12 la frecuencia del oscilador ). Como generador de baudaje, sin embargo, se incrementa a ½ la frecuencia del oscilador. El baudaje se calculará con la formula siguiente: fB= fosc 1 32 N Donde, Entonces tenemos que:, N = 65,536-RCAP2H,RCAP2L fosc fB = 32 RCAP2H,RCAP2L=65,536 - 1 65,536-RCAP2H,RCAP2L fosc 32 (fB) Carlos E. Canto Quintal M.C. TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO GENERADOR DE BAUDAJE Sobre flujo del Timer 1 Nota: la frecuencia del oscilador es dividida entre 2 no entre12 osc osc _: 2 :2 1 _: 2 :2 0 TL2 TH2 TL2 TH2 (8bits) (8bits) (8bits)(8bits) C/T2=1 T2 T2 1 0 RCLK control _: 16 : 16 TR2 TR2 1 RCAP2L RCAP2H RCAP2L RCAP2H Detector de transición T2EX T2EX EXF2 EXF2 control EXEN2 EXEN2 Carlos Canto Quintal SMOD C/T2=0 Interrupción del Timer 2 RX Clock 0 TCLK _: 16 : 16 TX Clock TIMER 2 Microcontroladores Microcontroladores TIMER 2 EN MODO RELOJ DE SALIDA Nota: la frecuencia del oscilador es dividida entre 2 no entre12 osc osc TL2 TH2 TL2 TH2 (8bits) (8bits) (8bits)(8bits) _: 2 :2 TR2 TR2 Salida de reloj RCAP2L RCAP2H RCAP2L RCAP2H C/T2 C/T2 P1.0 _: 2 :2 T2 T2 P1.1 T2EX T2EX EXF2 EXF2 Interrupción del Timer 2 T2OE T2OE(T2MOD.1) (T2MOD.1) Detector de EXEN2 transición EXEN2 Carlos Canto Quintal Microcontroladores El ElTimer Timer22 Salida de Reloj Programable Se puede programar la salida de un reloj con un ciclo de trabajo del 50%, en la terminal P1.0 . Esta terminal, además de ser una terminal regular de E/S, tiene dos funciones alternas. Puede ser programada como la entrada de reloj externo para el Timer/Contador 2 o para emitir un reloj con ciclo de trabajo entre del 50% con un rango de entre 61hz y 4 Mhz con una frecuencia de operación de 16 MHz. Para configurar el timer 2 como generador de reloj, el bit C/T2 (T2CON.1) debe ser “0” y el bit T2OE (T2MOD.1) debe ser “1”. El bit TR2 ( T2CON.2) arranca y para el Timer . La frecuencia del reloj de salida depende de la frecuencia del oscilador y el valor de recarga de los registros de captura del (RCAP2H, RCAP2L). En el modo de salida de reloj, el rebase del conteo del Timer 2 no genera interrupción. Frecuencia del oscilador Frecuencia de salida del reloj = 4 X (65,536-RCAP2H,RCAP2L) Carlos E. Canto Quintal M.C.