UNIVERSIDAD TÉCNICA DEL NORTE FACULTAD DE CIENCIA APLICADAS CIME SISTEMAS MICROPROCESADOS

TEMA: RELOJ EN TIEMPO REAL UTILIZANDO EL TIMER1 DEL ATMEGA324P Y UN OSCILADOR EXTERNO DE 32KHZ

INTEGRANTES: TABITA QUILUMBAQUIN SANTIAGO ROBLES EDWIN RUIZ FERNADO VILLALBA

IBARRA, 12 DE JULIO DEL 2012

Otra razón para utilizar el temporizador Timer1 es medir los intervalos de tiempo con resoluciones menores que la que ofrece el reloj de tiempo real. OBJETIVOS Objetivo General: Usar el timer1 para generar una onda cuadrada de un segundo exacto. tiene capacidad de captura El timer / contador 2 es de 8 bits con pwm. Esto es posible si utiliza llamadas del sistema PulseIn o RCtime para medir los intervalos de tiempo superiores a 2 ms. tiene capacidad de trabajar en forma asincrónica TIMER1 Los sistemas BasicX tienen un temporizador integrado denominado Timer1. lo que significa que puede utilizar el temporizador Timer1 para medir intervalos de tiempo que oscilen entre 136 ns y 139 ms.  Comprobar el funcionamiento de los periféricos de salida con el montaje realizado en un protoboard . que es el que vamos a analizar en esta nota de aplicación. que tiene una tasa de marcación de 512 Hz. CAPACIDADES DE LOS TIMERS • • • El timer / contador 0 es de 8 bits con pwm El timer / contador 1 es de 16 bits con pwm.37 MHz aproximadamente. timer 1 y timer 2 se configuran mediante los bits de los registros de control pueden trabajar en forma dependiente del programa o por medio de interrupciones. MARCO TEÓRICO LOS TIMERS Los timers son registros contadores ascendentes los atmega164p poseen tres timers: timer 0.20 a los 7. Este temporizador puede utilizarse para múltiples funciones. Las tasas de marcación de Timer1 son como mínimo 10 veces inferiores. una de las cuales es medir los intervalos de tiempo.INFORME DE LA PARCTICA TEMA: Reloj en tiempo real utilizando el timer1 del Atmega y un oscilador externo de 32khz. ¿Por qué utilizar un temporizador Timer1? En algunos casos no se puede utilizar el reloj de tiempo real integrado para medir los intervalos de tiempo. . Objetivos Específicos  Configurar los registros del timer1 para trabajar un generador de pulsos externos (usar un cristal externo de 32khz)  Usar la LCD para mostrar el tiempo que genera el timer1. El temporizador puede operar con 5 frecuencias de marcación discretas que oscilan entre los 7. que potencialmente pueden interferir con el reloj de tiempo real.

TCCR1A = 0 El siguiente paso es borrar los 2 bytes del contador del Timer1. El primer paso es poner a cero el registro de control TCCR1A del temporizador Timer1. Tenga en cuenta que escribir un valor lógico 1 para el bit acabaría borrándolo: Const TOV1 As Byte = bx10000000 ' BX-01 Const TOV1 As Byte = bx00000100 ' BX-24. Así se desconecta el Timer1 de los pines de salida OC1A y OC1B.TCNT1L = 0 El último paso de la iniciación es borrar el indicador de desbordamiento TOV1.DIAGRAMA DE BLOQUES DEL TIMER 1 Modo de uso del temporizador Timer1 Iniciación El temporizador debe iniciarse antes de empezar a utilizarlo. BX-35 Register. y desactiva la operación PWM del temporizador: Register. que corresponde con un bit en el registro TIFR. y a continuación el byte alto: Register.TIFR = TOV1 .TCNT1H = 0 Register. El byte alto debe escribirse en primer lugar.

y a continuación.888 9 7 373 800 921 600 115 200 28 800 7 200 0.TCNT1L HighByte = Register.Arranque del temporizador Timer1 Una vez que el Timer1 ha sido iniciado. (ms) (Hz) 0.TCNT1H Count = CLng(HighByte) * 256 + CLng(LowByte) SIMULACION: . Count As Long LowByte = Register. se puede arrancar el temporizador escribiendo uno de los 5 valores enumerados para uno de los registros de control (TCCR1B) del temporizador.135 633 7 1.568 9 2. puede leerlo en cualquier momento a través de los dos registros de tiempo TCNT1L y TCNT1H.008 889 0. en el que el valor superior debe escribirse antes): Dim LowByte As Byte.085 069 8. debe leer el valor de byte bajo.722 22 138. debe leer el valor inferior del byte y después el valor superior (al contrario que el proceso de escritura del contador.071 11 0.680 555 34. Los valores disponibles aparecen a continuación: Rango de Resolución Frecuencia tiempo de pulsos máximo del timer (s). HighByte As Byte.276 9.102 Valor TCCR1B 1 2 3 4 5 Lectura del temporizador Timer1 Una vez que se ha arrancado el temporizador. Para leer el contador.

unsigned char hora =0.h> #define F_CPU 8000000UL #include "lcd_lib. static int LCDsendstream(char c . if (seg >=20)//CUENTA EL TIEMPO { seg=0.h> #include <util/delay.//pi n como salida TCCR0A=0x00. //----inicio de la lcd a 4 bits-static int LCDsendstream(char c.CODIGO: /* * intento_1_timer1_reloj. PORTB&=~(1<<PB0). FILE *stream) { LCDsendChar(c). _FDEV_SETUP_WRITE).h> #include <avr/pgmspace.//CONFIGURACION EN MODO NORMAL TCCR0B=0X05. static FILE lcd_str = FDEV_SETUP_STREAM(LCDsendstream.c * * Created: 09/07/2012 16:55:15 * Author: user */ #include <avr/io.h> #include<avr/interrupt. //EXORT } TCNT0 = 177.//PRESCALER DE 1024 VALOR 101 .//CARGAR DENUEVO EL NUMERO } int main(void) { DDRB|=(1<<PB0). NULL. return 0.h" //---caracteres a usar--unsigned char seg=0. unsigned char min=0. } ISR(TIMER0_OVF_vect) { seg ++. PORTB ^=(1<<PB0).h> #include <stdio. FILE *stream).

// Iniciando LCD Stream LCDinit().scribd.min). LCDGotoXY(1. printf(" Contador"). //clears LCD LCDclr().pdf .org/datasheet/vishay/016m002b. cursor right LCDclr(). LCDGotoXY(1. } // } return 0. //init LCD bit.datasheetcatalog. _delay_ms(100).TIMSK0|=(1<<TOIE0).com/doc/19073773/Capitulo7-Timer1-del-AVR-del-ATmega32espanol http://microcontroladores2utec. 0). dual line.com/2009/12/01/proyecto-relogdigital-basico-con-atmega/ http://relojatmegadigital. BIBLIOGRAFIA:     http://es. printf("%d".wordpress. stdout=&lcd_str.1). sei(). TCNT0=177.com/ http://www.blogspot. while(min<10) //loop demos { min++.

Sign up to vote on this title
UsefulNot useful