ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

RELOJ EN TIEMPO REAL


Enviado por   •  11 de Abril de 2014  •  1.828 Palabras (8 Páginas)  •  256 Visitas

Página 1 de 8

INGENIERIA ELECTRÓNICA

CAMPUS SUR

TEMA: RELOJ EN TIEMPO REAL

PERIODO: 44

FECHA: 6 DE FEBRERO 2014

NOMBRES: FARINANGO DANIEL

BUSTILLOS ANA

OBJETIVO GENERAL

Entender el funcionamiento del TIMER0 y las distintas aplicaciones que se pueden implementar.

OBJETIVO ESPECÍFICO

Estudiar las distintas fuentes de interrupciones presentes en el pic 16f877a.

Diseñar un reloj en tiempo real, utilizando para ello la interrupción por desbordamiento del TIMER0.

MARCO TEÓRICO

LOS TEMPORIZADORES EN LOS MICROCONTROLADORES PIC

Cada uno de los temporizadores disponibles en un PIC de ciase media tiene, como elemento esencial, un contador sincrónico ascendente de 8 ó 16 bits. Estos contadores se pueden programar para contar pulsos internos o externos. El número almacenado en cada contador (valor de la cuenta) se puede leer o modificar mediante la lectura o escritura de registros de fun¬ciones especiales asociados al temporizador en cuestión. El desbordamiento de los contadores queda reportado en bits indicadores disponibles en esos registros, y puede generar también una solicitud de interrupción al microcontrolador.

EL MÓDULO TIMER0

El módulo Timer0 consta básicamente de un pre-divisor y un contador ascendente de 8 bits (figura 1). El pre-divisor es un contador asincrónico ascendente con factor de división programable cuyo conteo no es visible para el programador. El contador ascendente de 8 bits se puede leer o escribir a través del registro de funciones especiales TMRO.

Figura 1. Diagrama de bloques del TimerO. El TimerO puede trabajar como contador de ciclos de máquina (modo temporizador, TOCS = 0) o como contador de pulsos externos (modo contador, TOCS = /). TMRO es un contador ascendente de 8 bits, cuyo desbordamiento activa el indicador T01F del registro INTCON. Antes de llegar a TMRO, los pulsos son sincronizados con el reloj del microcontrolador y pueden pasar o no por un pre-divisor cuyo factor de división es programable.

El TimerO puede trabajar como contador de ciclos de máquina o como contador de pulsos externos. En el primer caso se dice que el módulo opera en el modo temporizador (timer). Si cuenta pulsos externos, el módulo ope¬ra en el modo contador (counter). Los pulsos externos llegan por el terminal T0CK1.

A su paso por el TimerO, los pulsos llegan al bloque de sincronización. En este bloque, los pulsos que entran son muestreados en dos instantes de tiempo dentro de cada ciclo de máquina, de lo que resulta una señal cuyos flancos ocurren en fase con el reloj del microcontrolador. Con esta señal sin¬cronizada se excita el contador TMRO. Para que no se pierdan pulsos en la sincronización, es necesario que los pulsos que entran en el bloque de sin¬cronización permanezcan en 1 ó en 0 al menos durante la mitad del tiempo que dura un ciclo de máquina. Cuando el TimerO trabaja en el modo conta¬dor, el bloque de sincronización determina el valor mínimo del período (o la frecuencia máxima) de los pulsos que entran por el terminal TOCKI. Si es el período del oscilador principal del microcontrolador y P es el factor de división del pre-divisor [1].

REGISTROS DEL TIMER0

Hay tres registros de funciones especiales asociados al TimerO: TMRO, OPTION e IN I CON. La figura 2 muestra los nombres de los bits de los re¬gistros OPTION e 1NTCON. El registro TMRO almacena el valor que tiene el contador del TimerO. Este valor se puede leer o escribir en cualquier momen¬to desde el programa que ejecuta el microcontrolador. Cuando se escribe un valor en TMRO, la cuenta del pre-divisor, si está asignado al TimerO, se pone a 0. Además, una escritura en el registro TMRO inhibe el conteo del TimerO durante dos ciclos de máquina.

El desbordamiento del TimerO hace que el indicador T01F (bit INTCON<2>) pase a 1. Si la atención al TimerO se hace usando la técnica de E/S programada, entonces se debe consultar el bit T0IF para saber si el TimerO se ha desbordado [1].

Una vez comprobado el desbordamiento, este indicador debe ser puesto a 0 por software.

Figura 6.3 Registros de funciones especiales OPTION e INTCON. En OPTION están Los bits de configuración del TimerO: TOCS configura al TimerO como temporizador o como contador; TOSE configura el flanco de la señal externa con el que se incre¬menta el TimerO si ha sido programado como contador; PSA asigna el pre-divisor al TimerO o al Perro Guardián y PS2, PS1 y PSO programan el factor de división del pre-divisor. En INTCON está el indicador de desbordamiento del TimerO: T0IF; con el bit T0IE se habilita la solicitud de interrupción al microcontrolador por esta causa.

Si la interrupción del TimerO está habilitada, lo cual se hace poniendo a 1 el bit TOIE (INTCON<5>), cuando se desborda el TimerO se produce una solicitud de interrupción.

En el registro OPTION están los bits de control del TimerO. La fuente de los pulsos de reloj se selecciona con el bit TOCS. Si se selecciona una fuente de reloj externa en el terminal TOCKI, el bit 'FOSE sirve para hacer que el conta¬dor se incremente con los flancos de subida (con TOSE = 0) o de bajada (con TOSE = 1) de los pulsos en TOCKI.

El tiempo de desbordamiento del TIMERO se calcula según la siguiente ecuación:

Td=T_CM*Prescaler*(256-Carga TMR0) Ec.1

Donde T_CM es el ciclo de máquina que se puede calcular mediante la ecuación:

T_CM=4/F_OSC Ec.2

DESARROLLO

Diseñar y mostrar en una LCD un reloj en tiempo real utilizando para ello el desbordamiento del TIMER0, además colocar dos botones para editar el valor de las horas y minutos.

Como primer punto se debe calcular el valor de carga del Timer0, haciendo uso de las ecuaciones 1 y 2 tenemos:

T_CM=4/F_OSC Ec.2

T_CM=4/4Mhz=1μs

Calculamos el valor de carga del TMR0, para un tiempo de desbordamiento de:

Td=500μs

Td=T_CM*Prescaler*(256-Carga TMR0) Ec.1

500μs=1μs*128*(256-Carga TMR0)

500μs/(1μs*128)=(256-Carga TMR0)

Carga TMR0 =256-500μs/(1μs*128)

Carga TMR0=248

Ahora calculamos cada cuantas veces en 1s se realiza una interrupción por desbordamiento del TIMER0, donde:

1s/500μs=x

...

Descargar como (para miembros actualizados) txt (12 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com