Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

timer 1,3,5 en un pic18f45k22, Apuntes de Microcontroladores

se explica el funcionamiento de los timers 1 3 y 5 para un pic18f45k22

Tipo: Apuntes

2019/2020

Subido el 19/08/2020

cervantes-mejia-gabriel
cervantes-mejia-gabriel 🇲🇽

4.8

(11)

14 documentos

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Timer 1/3/5 con control de GATE
El módulo Timer1/3/5 es un temporizador/contador de 16 bits con las siguientes características:
Par de registro de temporizador/contador de 16 bits (TMRxH:TMRxL)
Fuente de reloj interno o externo programable
Preescalador de 2 bits
Circuito oscilador secundario dedicado de 32 kHz
Comparador sincronizado opcionalmente fuera
Múltiples fuentes de temporizador1/3/5 (habilitación de conteo)
Interrupción por desbordamiento
Despertar con el desbordamiento (reloj externo, Sólo en modo asíncrono)
Operación de lectura y escritura de 16 bits
Base de tiempo para la función de Captura/Comparación
Disparador de eventos especiales (con CCP/ECCP)
Polaridad de la fuente del gate seleccionable
Modo de conmutación del gate
Gate Modo de pulso único
Estado del valor del gate
Interrupción de eventos del gate
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga timer 1,3,5 en un pic18f45k22 y más Apuntes en PDF de Microcontroladores solo en Docsity!

Timer 1/3/5 con control de GATE

El módulo Timer1/3/5 es un temporizador/contador de 16 bits con las siguientes características:

 Par de registro de temporizador/contador de 16 bits (TMRxH:TMRxL)

 Fuente de reloj interno o externo programable

 Preescalador de 2 bits

 Circuito oscilador secundario dedicado de 32 kHz

 Comparador sincronizado opcionalmente fuera

 Múltiples fuentes de temporizador1/3/5 (habilitación de conteo)

 Interrupción por desbordamiento

 Despertar con el desbordamiento (reloj externo, Sólo en modo asíncrono)

 Operación de lectura y escritura de 16 bits

 Base de tiempo para la función de Captura/Comparación

 Disparador de eventos especiales (con CCP/ECCP)

 Polaridad de la fuente del gate seleccionable

 Modo de conmutación del gate

 Gate Modo de pulso único

 Estado del valor del gate

 Interrupción de eventos del gate

Nota:

1: El buffer ST es del tipo de alta velocidad cuando se usa TxCKI.

2: El temporizador1/3/5 registra incrementos en el borde ascendente.

3: Sincronizar no funciona mientras está en reposo.

4: Consulte la Figura 12-2 para ver el diagrama de bloques del modo de lectura/escritura de 16

bits.

5: T1CKI no está disponible cuando el oscilador secundario está activado. (SOSCGO = 1 o

TXSOSCEN = 1)

6: T3CKI no está disponible cuando el oscilador secundario está activado, a menos que T3CMX = 1.

7: La salida del comparador sincronizado no debe ser usada en conjunto con el TxCKI sincronizado.

12.1 Temporizador1/3/5 Operación

El módulo Timer1/3/5 es un contador incremental de 16 bits al que se accede a través del par de

registros TMRxH:TMRxL. Escribe al TMRxH o al TMRxL para actualizar directamente el contador.

Cuando se utiliza con una fuente de reloj interno, el módulo es un temporizador y se incrementa

en cada ciclo de instrucción. Cuando se utiliza con una fuente de reloj externa, el módulo puede

utilizarse como temporizador o contador y se incrementa en cada borde seleccionado de la fuente

externa.

El temporizador1/3/5 se activa configurando los bits TMRxON y TMRxGE en los registros TxCON y

TxGCON, respectivamente. En la tabla 12-1 se muestran las selecciones de habilitación de

Timer1/3/5.

TABLA 12-1: SELECCIONES DE ACTIVACIÓN DEL TEMPORIZADOR 1/3/

TMRxON TMRxGE Timer1/3/5 Operation

0 0 OFF

0 1 OFF

1 0 SIEMPRE ENCENDIDO

1 1 CONTEO HABILITADO

cuando el TxCKI es alto, entonces se activa el temporizador 1/3/5 (TMRxON=1) cuando el TxCKI es

bajo.

12.3 Temporizador1/3/5 Precalentador

El temporizador 1/3/5 tiene cuatro opciones de precalentamiento que permiten 1, 2, 4 u 8

divisiones de la entrada del reloj. Los bits TxCKPS del registro TxCON controlan el contador de

preescala. El contador de preescala no es directamente legible o escribible; sin embargo, el

contador de preescala se borra al escribir en TMRxH o TMRxL.

12.4 Oscilador secundario

Un circuito oscilador secundario dedicado de baja potencia de 32,768 kHz está incorporado entre

los pines SOSCI (entrada) y SOSCO (salida del amplificador). Este circuito interno debe ser usado en

conjunto con un cristal externo de 32.768 kHz.

El circuito del oscilador se activa ajustando el bit TxSOSCEN del registro TxCON, el bit SOSCGO del

registro OSCCON2 o seleccionando el oscilador secundario como el reloj del sistema ajustando

SCS<1:0> = 01 en el registro OSCCON. El oscilador continuará funcionando durante el sueño.

Nota: El oscilador requiere un tiempo de puesta en marcha y estabilización antes de su uso. Por lo

tanto, se debe ajustar el TxSOSCEN y observar un retardo adecuado antes de activar el

Timer1/3/5.

12.5 Funcionamiento del temporizador1/3/5 en modo de contador asíncrono

Si el bit de control TxSYNC del registro TxCON está activado, la entrada de reloj externo no está

sincronizada. El temporizador se incrementa asincrónicamente a los relojes de fase internos. Si se

selecciona la fuente de reloj externo, el temporizador continuará funcionando durante el reposo y

puede generar una interrupción por desbordamiento, que despertará al procesador. Sin embargo,

es necesario tomar precauciones especiales en el software para leer/escribir el temporizador

(véase el apartado 12.5.1 "Lectura y escritura del temporizador1/3/5 en modo de contador

asíncrono").

Nota: Al cambiar de funcionamiento síncrono a asíncrono, es posible omitir un incremento.

Cuando se pasa de un funcionamiento asíncrono a uno síncrono, es posible producir un

incremento adicional.

12.5.1 LECTURA Y ESCRITURA DEL TEMPORIZADOR1/3/5 EN MODO DE CONTADOR ASÍNCRONO

La lectura de TMRxH o TMRxL mientras el temporizador está funcionando desde un reloj asíncrono

externo asegurará una lectura válida (cuidado en el hardware). Sin embargo, el usuario debe tener

en cuenta que la lectura del temporizador de 16 bits en dos valores de 8 bits en sí misma, plantea

ciertos problemas, ya que el temporizador puede desbordarse entre las lecturas. En el caso de las

escrituras, se recomienda que el usuario simplemente detenga el temporizador y escriba los

valores deseados. La contención de la escritura puede producirse al escribir en los registros del

temporizador, mientras el registro se va incrementando. Esto puede producir un valor

impredecible en el par de registros TMRxH:TMRxL.

12.6 Temporizador1/3/5 Modo de lectura/escritura de 16 bits

El temporizador 1/3/5 puede ser configurado para leer y escribir los 16 bits de datos, hacia y

desde, los 8-bit TMRxL y TMRxH registros, simultáneamente. Los 16 bits leen y escriben se activan

mediante el ajuste del bit RD16 de la

Registro de TxCON.

Para realizar esta función, el valor del registro TMRxH está mapeado a un registro de buffer

llamado el buffer TMRxH registrarse. Mientras que en el modo de 16 bits, el registro TMRxH es no

se puede leer ni escribir directamente y todos leen y escriben las operaciones tienen lugar

mediante el uso de este TMRxH registro de buffer.

Cuando se solicita una lectura del registro TMRxL, el el valor del registro TMRxH se carga

simultáneamente en el registro del buffer TMRxH. Cuando una lectura del Se solicita el registro

TMRxH, se proporciona el valor del registro del buffer TMRxH en su lugar. Esto proporciona el

usuario con la capacidad de leer con precisión los 16 bits de el valor de Timer1/3/5 de una sola

instancia en el tiempo.

En cambio, cuando no está en el modo de 16 bits, el usuario debe leer cada registro por separado

y determinar si la valores se han vuelto inválidos debido a un vuelco que puede han ocurrido entre

las operaciones de lectura.

Cuando se solicita una petición de escritura del registro TMRxL, el registro de la memoria

intermedia del TMRxH se actualiza simultáneamente con el contenido del registro TMRxH. El valor

del TMRxH debe ser precargado en el TMRxH

registro de buffer antes de la solicitud de escritura para el registro TMRxL. Esto proporciona al

usuario la capacidad de escribir los 16 bits en el par de registros TMRxL:TMRxH al mismo tiempo.

Cualquier solicitud de escritura al TMRxH directamente no borra el valor del preescalador

Timer1/3/5. El valor del preescalador sólo se borra mediante solicitudes de escritura al registro

TMRxL.

FIGURA 12-2: DIAGRAMA DE BLOQUES DEL MODO DE LECTURA/ESCRITURA DE 16 BITS DEL

TEMPORIZADOR1/3/

La fuente del Timer1/3/5 Gate puede ser seleccionada de una de cuatro fuentes diferentes. La selección de la fuente es controlada por los bits TxGSS del registro TxGCON. También se puede seleccionar la polaridad de cada fuente disponible. La selección de la polaridad se controla mediante el bit TxGPOL del registro TxGCON. TABLE 12-4: TIMER1/3/5 fuente del gate TxGSS TIMER1/3/5 fuente del gate 00 Timer1/3/5 Gate Pin 01 Temporizador 2/4/6 Coincidencia con PR2/4/ (Incrementos de TMR2/4/6 para coincidir con PR2/4/6) 10 Comparador 1 Salida sync_C1OUT (opcionalmente salida sincronizada Timer1/3/5) 11 Comparador 2 Salida sync_C2OUT (opcionalmente salida sincronizada Timer1/3/5) El recurso de la puerta, Timer2 Match a PR2, cambia entre Timer2, Timer4 y Timer6 dependiendo de cuál de los tres Timer de 16 bits, Timer1, Timer3 o Timer5, se seleccione. Véase el cuadro 12- para determinar qué combinación de Timer2/4/6 Match to PR2/4/6 está disponible para el temporizador de 16 bits que se está utilizando. TABLE 12-5: RECURSOS DEL GATE PARA EL TIMER2/4/6 COINCIDEN CON EL PR2/4/ Recursos del Timer 1/3/5 Gate del timer1/3/5 coinciden con la selección Timer1 TMR1 coincide con el PR Timer3 TMR3 coincide con el PR Timer5 TMR5 coincide con el PR 12.7.2.1 Funcionamiento de la puerta del pin TxG La clavija TxG es una fuente para el control de la puerta Timer1/3/5. Puede ser usado para suministrar una fuente externa al circuito de la puerta Timer1/3/5. 12.7.2.2 Temporizador2/4/6 Operación de la puerta de enlace El registro TMR2/4/6 se incrementará hasta que coincida con el valor del registro PR2/4/6. En el siguiente ciclo de incremento, el TMR2/4/6 será reajustado a 00h. Cuando se produzca este reset, se generará automáticamente un pulso de bajo a alto que se suministrará internamente al circuito de la puerta Timer1/3/5. 12.7.2.3 Operación de la puerta del comparador C La salida resultante de una operación de Comparador 1 puede ser seleccionado como fuente para el control de la puerta Timer1/3/5. La salida del Comparador 1 (sync_C1OUT) puede ser sincronizado al reloj Timer1/3/5 o a la izquierda asincrónica. Para más información, véase la sección 18.8.4 "Sincronización de la salida del comparador con el temporizador1". 12.7.2.4 Operación de la puerta del comparador C La salida resultante de una operación de Comparador 2 puede ser seleccionado como fuente para Timer1/3/5 Gate Control. La salida del Comparador 2 (sync_C2OUT) puede se sincronizarán con el reloj Timer1/3/5 o se dejarán asincrónica. Para más información, véase Sección 18.8.4 "Sincronización de la salida del comparador a Timer1". 12.7.3 MODO DE CONMUTACIÓN DE LA PUERTA DEL TEMPORIZADOR1/3/ Cuando se activa el modo Timer1/3/5 Gate Toggle, es posible medir la duración del ciclo completo de una señal de puerta Timer1/3/5, en lugar de la duración de un pulso de un solo nivel. La fuente de la puerta Timer1/3/5 se enruta a través de un flip-flop que cambia de estado en cada flanco de incremento de la señal. Véase la Figura 12-5 para los detalles de temporización. El modo de conmutación de la puerta Timer1/3/5 se activa configurando el bit TxGTM del registro TxGCON. Cuando el bit TxGTM se borra, el flip-flop se borra y se mantiene limpio. Esto es necesario para controlar qué borde se mide.Esta concatenación crea un temporizador de 24 bits.

Cuando se usa en conjunto con el disparador de eventos especiales del CCP se pueden generar interrupciones periódicas muy largas. Nota: Habilitar el modo Toggle al mismo tiempo que se cambia la polaridad de la puerta puede dar lugar a un funcionamiento indeterminado. 12.7.4 TEMPORIZADOR1/3/5 PUERTA DE UN SOLO PULSO MODE Cuando el temporizador 1/3/5 Puerta modo de un solo pulso está activado, es posible capturar un evento de puerta de un solo pulso. El modo de puerta de un solo pulso del temporizador 1/3/5 es activado primero por estableciendo el bit TxGSPM en el registro TxGCON. Siguiente, el bit TxGGO/DONE en el registro TxGCON debe ser ...y el juego. El temporizador 1/3/5 estará totalmente activado en el próximo ...y el incremento de la ventaja. En el siguiente borde de salida de la pulso, el bit TxGGO/DONE será automáticamente despejado. No se permitirá que ningún otro evento de la puerta incrementar el Timer1/3/5 hasta que el bit TxGGO/DONE sea una vez más en el software. Limpiar el bit TxGSPM del registro TxGCON hará que también despeja la parte de TxGGO/DONE. Vea la Figura 12-6 para detalles de tiempo. Activando el modo de conmutación y el modo de pulso único simultáneamente permitirá que ambas secciones funcionen juntos. Esto permite que los tiempos de ciclo en el Timer1/3/5 La fuente de la puerta debe ser medida. Véase la figura 12-7 para detalles de tiempo. 12.7.5 ESTADO DEL VALOR DE LA PUERTA DEL TEMPORIZADOR1/3/ Cuando se utiliza el temporizador1/3/5 de estado de valor de la puerta, es es posible leer el nivel más actual de la puerta valor de control. El valor se almacena en el bit TxGVAL en el registro de TxGCON. El bit TxGVAL es válido incluso cuando la puerta del temporizador 1/3/5 no está activada (bit TMRxGE está despejado). 12.7.6 TEMPORIZADOR1/3/5 EVENTO DE PUERTA INTERRUPTOS Cuando el temporizador 1/3/5 Interrupción de eventos de la puerta está activado, es posible generar una interrupción al completar un evento de la puerta. Cuando se produce el flanco descendente de TxGVAL, el bit de bandera TMRxGIF en el registro PIR3 se activará. Si se activa el bit TMRxGIE en el registro PIE3, se reconocerá una interrupción. El bit de bandera TMRxGIF funciona incluso cuando el La puerta del temporizador 1/3/5 no está habilitada (el bit TMRxGE está despejado). Para obtener más información sobre la selección del estado de prioridad alta o baja para la Interrupción de eventos de la puerta Timer1/3/5, consulte la Sección 9.0 "Interrupciones". 12.8 Temporizador1/3/5 Interrupción El par de registro Timer1/3/5 (TMRxH:TMRxL) se incrementa a FFFFh y pasa a 0000h. Cuando Timer1/3/5 se vuelca, el bit de bandera de interrupción de Timer1/3/5 del registro PIR1/2/5 se fija. Para habilitar la interrupción en el vuelco, se deben establecer estos bits:

  • El bit TMRxON del registro TxCON
  • Los bits TMRxIE de los registros PIE1, PIE2 o PIE
  • PEIE/GIEL bit del registro INTCON
  • El bit GIE/GIEH del registro INTCON La interrupción se borra despejando el bit TMRxIF en la Rutina de Servicio de Interrupción. Para más información sobre la selección del estado de prioridad alta o baja para la Interrupción de desbordamiento del Timer1/3/5, véase la Sección 9.0 "Interrupciones". Nota: El par de registro TMRxH:TMRxL y el bit TMRxIF deben ser limpiados antes de habilitar las interrupciones. 12.9 Temporizador1/3/5 Operación durante el sueño

Configuración del timer 1 como temporizador a 1 segundo #include <xc.h> #include "configuracion.h" void __interrupt () interrupcion(void) { if(PIR1bits.TMR1IF==1) { LATD=~LATD; TMR1H=0XEC; TMR1L=0X78; PIR1bits.TMR1IF=0; } } void main(void) { //CONFIGURACION DEL PUERTO D COMO SALIDA ANSELD=0X00; TRISD=0X00; LATD=0X00; //CONFIGURACION DEL TIMER T1CON=0X01; T1GCON=0X00; TMR1H=0XEC; TMR1L=0X78; //CONFIGURACION DE LA INTERRUPCION RCONbits.IPEN=0; INTCON=0XC0; PIR1bits.TMR1IF=0; PIE1bits.TMR1IE=1; while(1); }

TIMER 1 CONFIGURADO COMO CONTADOR

AQUÍ SE CONFIGURO TAMBIEN PARA LEER Y ESCRIBIR EL LOS REGISTROS TMR1H Y

TMR1L AL MISMO TIEMPO, ASIENDO USO DE TMR

#include <xc.h> #include "configuracion.h" #include "lcd.h" void main(void) { //CONFIGURACION DE LOS PUERTOS ANSELC=0X00; TRISC=0XFF; ANSELD=0X00; TRISD=0X00; LATD=0X00; ANSELE=0X00; TRISE=0X00; LATE=0X00; //CONFIGURACION DEL TIMER1 COMO CONTADOR T1GCON=0x00; T1CON=0x83; TMR1=0x0f00; char col=0, fil=1; long conteo=0; LCD_CONFIGURAR(); while(1) { conteo=TMR1; LCD_Printf("CONTEO ES=%i",&col,&fil,conteo); __delay_ms(200); LCD_RESET(); } }