Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACIÓN. (CLASE 6)
TIMER 0 Y 1
Agosto 2018
Uno de los recursos que más se necesitan a la hora de desarrollar
cualquier aplicación es el manejo de tiempos o retardos. Los retardos
se pueden realizar de dos formas: la primera consiste en valerse del
retardo presente durante la ejecución de una instrucción, la cual
depende del número de ciclos que requiere para su ejecución y de la
frecuencia del oscilador encargado del funcionamiento del
microcontrolador; teniendo en cuenta estos dos factores es posible
generar un retardo a base de instrucciones, forma que en la mayoría
de los casos es poco práctica su atención a este proceso y descuide
otros procesos que en un momento dado representa mayor
importancia. La segunda forma y, de paso, la más adecuada y
utilizada, es valerse de un poderoso recursos presente en la mayoría
de microcontroladores existentes, que es utilizar el timer. El timer se
puede considerar como un registro contador que incrementa su valor a
medida que transcurre el tiempo, donde el incremento depende de
varios factores como son la frecuencia del oscilador y la configuración
del prescalador.
TIMER 1
Bit 5-4: T1CKPS1:T1CKPS0: Selección del valor del prescaler del reloj del TMR1.
11=Prescaler a 1:8
10=Prescaler a 1:4
01=Prescaler a 1:2
00=Prescaler a 1:1
Bit 3:T1OSCEN: Bit de habilitación del oscilador del TMR1.
1 = Oscilador habilitado.
0 = Oscilador parado
Como temporizador.
Como contador síncrono.
Como contador asíncrono.
El modo de operación se establece mediante el bit TMR1CS
(T1CON<1>). En modo temporizador, el TIMER1 se incrementa en
cada ciclo de instrucción. En modo contador se incrementa por flanco
de subida de la señal externa. Cuando se habilita el oscilador interno
del TIMER1 mediante el bit T1OSCEN, los pines RC1/T1OS1 y
RC0/T1OSO/T1CK1 se configuran como entradas ignorando el valor
de TRISC<1:0>. El TIMER1 tienen un reset interno que puede ser
generado por el modulo CCP. Las interrupciones del TIMER1 se
controlan a través de los registros PIE1 y PIR1.
El tiempo de desbordamiento del TIMER1 se calcula según la
siguiente ecuacion:
T=TCM.Prescaler.(65536-Carga TMR1)
TCM=4/FOSC
enable_interrupts(INT_TIMER1);
enable_interrupts(global);