• No se han encontrado resultados

U5 Timer0

N/A
N/A
Protected

Academic year: 2020

Share "U5 Timer0"

Copied!
12
0
0

Texto completo

(1)

Microcontroladores

El timer

Ingeniería Mecatrónica

Dr. Victor H. Benitez

(2)

Organización de la presentación

 El timer 0

 Timer configurado como contador

 Timer configurado como temporizador

 Prescaler

Objetivos:

Al concluir la presentación el alumno:

1. Comprenderá el funcionamiento del periférico llamado timer 0 en el microcontrolador

2. Configurará el timer 0 como un contador

3. Usará el timer 0 como un temporizador de uso general

4. Aprenderá a controlar la duración de los pulsos mediante el prescaler o divisor de frecuencia

(3)

Timer 0 (TMR0)

 El timer 0 funciona por medio de un contador ascendente de 8 bits que

determina el tiempo entre la carga de un valor al contador y el tiempo que dura en desbordarse dicho contador

 El timer 0 se inicializa con un valor y éste se incrementa hasta llegar a su valor máximo 0xFF, con el siguiente pulso se desborda pasando a 0x00 y en ese momento se activa una bandera, el T0IF del registro INTCON.

 Funciona con impulsos provenientes de dos fuentes

 Pulsos aplicados al pin T0CKI

(4)

Timer configurado como contador

 En este modo de funcionamiento se le aplican pulsos al pin RA4/T0CLI sirviendo como un contador de eventos muy eficiente

 Los pulsos de entrada pueden ser de dos tipos

 Flanco de subida o ascendente

 Flanco de bajada o descendente

(5)

Timer configurado como temporizador

 En este modo de operación, el timer cuenta los pulsos provenientes de Fosc/4. Como hemos visto para un reloj de 4MHz los pulsos tienen una duración de 1ms

 Cuando el contador llega a una cuenta se 256, activará una banderá al pasar a 0

 Para realizar una cuenta restamos 256 menos el número de pulsos que deseamos contar y el resultado se carga al contador

 Por ejemplo si queremos contar 10 pusos hacemos los siguiente: 256 – 10 = 246

Este resultado lo cargamos al contador y sucede los siguiente:

11110110

11110111 pulso 1

11111000 pulso 2

11111001 pulso 3

11111010 pulso 4

11111011 pulso 5

11111100 pulso 6

11111101 pulso 7

11111110 pulso 8

11111111 pulso 9

00000000 T0IF

(6)

Divisor de frecuencia (Prescaler)

 Cuando requerimos controlar que los pulsos que incrementan el timer sean mayores usamos el prescaler

 Es un divisor de frecuencia que tiene el efecto de realizar las cuentas con pulsos de mayor duración

 La duración de estos pulsos se configura desde el registro Option

(7)

Configuración del TIMER 0

 La configuración se realiza con los registros

 OPTION Banco 1, dirección 0x81, se manda llamar como OPTION_REG

 INTCON Banco 0, dirección 0x0B y Banco 1, dirección 0x8B

GIE EEIE T0IE INTE RBIE TOIF INTF RBIF

B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO INTCON

• T0IF Bandera de interrupción que indica el desbordamiento del timer cuando ha pasado de 1111 1111 a 0000 0000

• T0IF = 0 TMR0 no se ha desbordado

(8)

Configuración del TIMER 0

Dr. Victor H. Benitez 8

/RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO OPTION

• PS2:PS0 (Prescaler Rate Select Bits) Estos bits se usan para seleccionar los valores del rango con el que actúa el divisor de frecuencia de acuerdo a la tabla siguiente

• PSA = 0, se asigna el prescaler al TMR0

• PSA = 1, se asigna el prescaler al watch dog

• T0SE = 0, el T0 se incrementa en cada flanco de subida

• T0SE = 1, el T0 se incrementa en cada flanco de bajada

• T0CS = 0, usa los pulsos de reloj interno (T0 como temporizador)

• T0CS = 1, cuenta los pulsos aplicados a RA4/T0CKI (T0 como contador)

(9)

Ejemplo de contador

En este ejemplo se usa el mC como contador de pulsos aplicados al pin RA4/T0CKI y visualizar la cuenta en un display de LCD

; *** Timer0ej1.asm***

; Cuenta los pulsos aplicados al microcontrolador y visualiza el resultado en un ; display de cristal líquido

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST P=16F84A INCLUDE<P16F84A.INC>

CBLOCK 0X0C ENDC

ORG 0

Start call LCD_Inicializa bsf STATUS,RP0

movlw b’00111000’ ; configura el registro OPTION movwf OPTION_REG

bcf STATUS,RP0

clrf TMR0 ; Inicializa en cero el Timer0 Main

call LCD_Linea1 movf TMR0,W call BIN_a_BCD call LCD_Byte goto Main

(10)

Ejemplo de uso como temporizador

Dr. Victor H. Benitez 10

Para usarse como temporizador, se usa la siguiente formula:

𝑇𝑖𝑚𝑒 = 𝑘 (𝑝𝑟𝑒𝑠𝑐)(256 − 𝐿𝑜𝑎𝑑𝑇0)

Time = tiempo requerido

k = 1x10-6 para un cristal de 4MHz

Presc = Configuración del divisor de frecuencia (prescaler)

LoadT0= Valor de carga al Timer0.

Por ejemplo si requerimos generar un tiempo de 0.0005 seg que valor deberá cargarse en el T0, usando un prescaler de 2?

Despejar LoadT0 de la formula y sustituir valores

𝐿𝑜𝑎𝑑𝑇0 = 256 − 𝑇𝑖𝑚𝑒

𝑘 𝑝𝑟𝑒𝑠𝑐 = 256 −

0.0005

1𝑥10−6 2 = 6

Ejercicio: Que valores se requieren cargar en el T0 para lograr tiempos de

(11)

Dr. Victor H. Benitez 11 ; Generación de una onda cuadrada de 1KHz de frecuencia

; se debe configurar el T0 con un semiciclo de 1ms/2 = 500us

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84A

INCLUDE<P16F84A.INC>

CBLOCK 0X0C ENDC

#DEFINE Frequency PORTB,3

ORG 0

Start

bsf STATUS,RP0 bcf Frequency movlw b'00000000' movwf OPTION_REG bcf STATUS,RP0 Main

bsf Frequency call T0_500us bcf Frequency call T0_500us goto Main

; Se generan los 500us con un prescaler de 2

T0_Load500us EQU d'6'

T0_500us

movlw T0_Load500us

movwf TMR0 ; Carga el T0 con 6

bcf INTCON,T0IF ; Resetea la bandera para (inicializar) T0_Overflow

btfss INTCON,T0IF ; Verifica la bandera de desbordamiento goto T0_Overflow ; No se a desbordado sigue contando return

Este código tiene el problema de que no es preciso!! Verlo en el Stopwatch.

(12)

Ejercicio

Referencias

Documento similar

Además de aparecer en forma de volumen, las Memorias conocieron una primera difusión, a los tres meses de la muerte del autor, en las páginas de La Presse en forma de folletín,

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

por unidad de tiempo (throughput) en estado estacionario de las transiciones.. de una red de Petri

Como hemos visto anteriormente en 2.3.1.1, para realizar una regulación de la tensión de salida de un convertidor “boost” con control de corriente en modo de deslizamiento es

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Secondary.  The  target  possesses  a  receiver  and  transmitter  system,  which  is  able  to  answer  to  the  request  of  the  radar.  This  type  of