La familia PIC18 USB posee 4 timers: Timer0, Timer1, Timer2 y Timer3, cada uno de los cuales tiene sus características únicas.



Documentos relacionados
6 MODULACIÓN DE ANCHO DE PULSO (PWM)

7 CONVERTIDOR ANALÓGICO DIGITAL

4.4 Interrupciones RBI (Interrupciones por cambio de estado)

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE

PIC 18F45XX EL TIMER 0

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra curso.escom@yahoo.com

MICROCONTROLADOR PIC DE MICROCHIP

Periféricos: Timer. Cesáreo Fernández Martínez Álvaro Sánchez Miralles

17 Con el chorro de agua pequeño, la cubeta se llena en 10 minutos

RECURSOS FUNDAMENTALES

MICROCONTROLADORES PIC

Prueba 1. Figura B.1 Diagrama de Bloques de la Conexión Para la Prueba 1. #include <p18f2321.h> #include <USART.h> #include <delays.

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Diseño Basado en Microcontroladores. Programa Detallado

TEMA 20 EL CONVERSOR A/D

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1

El TIMER 1. (c) Domingo Llorente

Segundo Parcial Programación en Mikro C PIC16F877

ESPACIO DE DIRECCIONES

PIC16F882/883/884/886/ Funcionamiento de Timer1 6 EL MODULO TMR1 CON PUERTA DE CONTROL Selección de Fuente de reloj

PRÁCTICA 5: Medida del tiempo en un PIC

RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC 16F87X. Figura # 1

TUTORIAL II parte A. Observemos el diagrama de pines del microcontrolador 16F877A:

MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627)

b) Las teclas pueden generar varios impulsos tanto al pulsar como al soltar (rebotes durante t < 100 ms, p. ej.). El usuario pulsa la tecla así

9 MODULACIÓN DE ANCHO DE PULSO (PWM)

PIC 16F87X. Juan González. Escuela Politécnica Superior Universidad Autónoma de Madrid. Flir Networked Systems. Flir Networked Systems

Laboratorio 8: Interrupción por Lectura de Entradas y por Desbordamiento del TMR0.

PIC 18F45XX. El módulo CCP de Comparación, Captura y PWM (Pulse Wide Modulation)

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits

Microprocesadores. Temporizadores / Contadores. Prof. Luis Araujo. Universidad de Los Andes

MICROCONTROLADORES PIC

PIC 18F45XX. El sensor de distancias (SRF04/05)

Registros SFR vistos hasta ahora: Microcontroladores PIC

PIC16C5X (GAMA BAJA) Solo en dispositivos de 28 pins. Encapsulado y patillaje:

Figura 1. Diagrama de bloques del Timer_A

CUESTIONES: 1/5. Solución:

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Diseño con Microcontroladores

Microcontroladores PIC

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

PROFESOR: Práctica 8. Temporizador 0 (Timer 0)

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

Usando los Codificadores Cuadráticos

Generador de Pulsos. Todas las CPUs disponen de dos generadores PTO/PWM para producir trenes y formas de onda moduladas por ancho de pulsos.

IM : ARDUINO NANO OEM

Universidad Tecnológica Nacional Departamento De Electrónica Facultad Regional Buenos Aires. Informática II GUIA DE TRABAJOS PRACTICOS

Curso sobre Microcontroladores Familia HC9S08 de Freescale

CAPITULO 1 CARACTERÍSTICAS GENERALES DEL MICROCONTROLADOR menú principal

El modo TIMER, (contador de tiempos) es seleccionado poniendo a cero el bit de T0CS (OPTION<5>).

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

CUESTIÓN (2 puntos): SOLUCIÓN:

Diagrama de bloques del sistema

Guía de Usuario Teclado capacitivo de 4x4

Timer Interface Module

Borrador PIC 18F45XX. El sensor de distancias (SRF04/05)

Guía de programación PWM. Características de una señal de control con Modulación de Ancho de Pulso.

LENGUAJE C PARA SISTEMAS DEDICADOS

CURSO: MICROCONTROLADORES UNIDAD 2: MÓDULOS DEL MICRO 16F877- TEORÍA PROFESOR: JORGE ANTONIO POLANÍA 1. TEMPORIZADORES E INTERRUPCIONES

DESARROLLO DE SISTEMAS BASADOS EN MICRONTROLADORES Y DSPs

TEMPORIZADOR MÚLTIPLE CON SALIDAS A RELEVADOR. Carlos Romero Villegas Universidad Politécnica de Juventino Rosas, Gto. México

LABORATORIO DE ELECTRÓNICA DE POTENCIA PRÁCTICA N 3

5 Responde las preguntas. 5.1 Cuál es la razón de que al iniciar el programa se muestre un cero al principio

Tema 4. Organización de la memoria

6. MÓDULOS DE CAPTURA DE PULSOS (IC)

Manual de la Práctica 4: Control de iluminación mediante Arduino

Sensores inalámbricos de bajo

ARQUITECTURA DE SISTEMAS PARALELOS (3º ING. TÉC. INFORMATICA DE SISTEMAS) PRACTICA (CURSO 2004/05) ENTRADA/SALIDA.

RELOJ DE TIEMPO REAL

PULSOS DE RELOJ. Los pulsos de reloj interno están en las banderas M1011 ~ M1014.

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719

CAPITULO 3 MANEJO DE LOS TEMPORIZADORES Y CONTADORES

PRACTICA Nº 2. Puertos de Entrada Digital. Sistemas Electrónicos Digitales. Subgrupo: de febrero de 2.015

PROGRAMACIÓN EN C para uc MCS-51

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

Represent. Información. Caracteres Alfanuméricos

Temporizadores/Contadores

Tarjeta Entrenadora EA128 Aplicación académica

Controlador de Interrupciones (Versión programable) Manual de Usuario

Tema 4 LA MEMORIA DE PROGRAMAS

PIC MICRO ESTUDIO Temporizador con el 16F872 Guía de Uso

Guía de Microcontroladores

Conversores Análogo-Digital

ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES

Elección de un microcontrolador

Practica 1: It s alive!

El TIMER 0. (c) Domingo Llorente

5. Microcontroladores de 32 bits. (C) 2007 Ibercomp S. A.

PRACTICA Nº 3. Puertos de Entrada Analógica. Sistemas Electrónicos Digitales. Subgrupo: de febrero de 2.015

PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA

CAPÍTULO IV BLOQUES DE FUNCIÓN PREDEFINIDOS

Microcontrolador PIC16F84: Arquitectura

Control Digital en PC con MS-DOS

SISTEMAS ELECTRÓNICOS DIGITALES E.T.S.I. TELECOMUNICACIÓN UNIVERSIDAD DE VALLADOLID

COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW

PIC16F88. Características

PRÁCTICA 6: Gobierno del display 7 segmentos

Transcripción:

59 5 TIMERS Todos los microcontroladores poseen circuitos temporizadores (timers), los cuales son útiles para: Programar tareas con alta precisión. Contar pulsos externos. Medir intervalos de tiempo. etc. Un timer es básicamente un contador el cual lo podemos habilitar para que cuente tiempo transcurrido o que cuente pulsos externos, se le llamada temporizador cuando cuenta ciclos de instrucción y se le llama contador cuando cuenta pulsos externos. La familia PIC18 USB posee 4 timers: Timer0, Timer1, Timer2 y Timer3, cada uno de los cuales tiene sus características únicas. 5.1 Timer0 El Timer0 tiene las siguientes características: Funcionamiento como temporizador o contador de 8 o 16 bits Prescaler de 8 bits Interrupción por desbordamiento (de FFh a 00h o de FFFFh a 0000h) Selección de flanco para pulsos externos En la Figura 5-1 se muestra un diagrama simplificado del Timer0 en modo de 8 bits y en modo de 16 bits.

60 Figura 5-1. Timer0 [8] 5.1.1 Timer0 como temporizador de 8 o 16 bits Cuando se configura el Timer0 como temporizador, se dedica a contar los periodos de instrucción (Tcy) y una vez que el contador se desborda se activa una bandera llamada T0IF y opcionalmente se activa una interrupción. De esta manera podemos programar rutinas con gran precisión. Cuando hablamos del modo temporizador nos referimos a que medimos el tiempo transcurrido, la formula que determina el tiempo transcurrido es la siguiente:

61 ( valorinicial) prescaler Tiempo = TCY 256 Para el modo de 8 bits. ( valorinicial) prescaler Tiempo = TCY 65536 Para el modo de 16 bits. Donde el prescaler puede ser un valor de 1, 2, 4, 8, 16, 32, 64, 128 o 256. Por ejemplo supongamos que el valor inicial del contador en modo de 8 bits es 100 y el periodo del ciclo de instrucción T CY es 1/12x10 6 =83.3333 ns y el prescaler es 64, Cuánto tiempo tarda el Timer0 en producir una interrupción? 1 Tiempo = (256 100) 64 832µs 6 12 10 Comúnmente el procedimiento es el inverso, nosotros sabemos en cuanto tiempo queremos que se produzca una interrupción y necesitamos saber el valor inicial del temporizador; en este caso la formula es: ValorInicial = 256 T CY Tiempo prescaler Para el modo de 8 bits ValorInicial = 65536 T CY Tiempo prescaler Para el modo de 16 bits

62 Por ejemplo suponga que se necesita producir una interrupción cada 500ms y T CY es 83.33ns, Qué prescaler y que valor inicial debe tener el temporizador para que se desborde en el tiempo deseado? Lo que debemos hacer es escoger un valor para el prescaler y sustituir en la formula. Usemos primeramente un valor de 256 para el prescaler y el timer en modo de 8 bits: ValorInici al 3 500 10 256 = 23181.5 9 83.33 10 256 = Si el valor sale negativo como en este caso, significa que se requiere más prescaler o bien usar el timer en modo de 16 bits. En este ejemplo como el prescaler usado es el máximo, entonces nuestra única opción es usar el timer en modo 16 bits: ValorInici al 3 500 10 65536 = 42098.5 9 83.33 10 256 = Ya obtuvimos un valor positivo y dentro del rango de 16 bits (0 a 65535), sin embargo si queremos una mejor precisión, nuestro calculo debe ser un valor entero. Probemos con prescaler de 128: 3 500 10 ValorInicial = 65536 = 18661 = 48E5H 9 83.33 10 128 Este resultado ya es positivo, dentro del rango y entero como se buscaba.

63 5.2 Uso de Timers en C18 La librería timers.h posee varios métodos útiles para el manejo de timers, la Tabla 5-1 muestra las funciones disponibles. La x se refiere al número de timer, en la familia PIC18 USB puede ser un valor de 0 a 3. Tabla 5-1. Funciones de timers.h [7] La Figura 5-2 muestra la función OpenTimer0, la cual se usa para configurar y habilitar el Timer0. La Figura 5-3 muestra la función WriteTimerx, con la cual podemos escribir el valor inicial al Timer usado. La función ReadTimerx no toma argumentos y regresa el valor actual del timer x. La función CloseTimerx deshabilita el timer indicado.

64 Figura 5-2. Función OpenTimer0 [7]

65 Figura 5-3. Función WriteTimerx [7]

66 Ejemplo 5-1. Uso de Timer0 El siguiente ejemplo muestra como usar el Timer0 para producir una interrupción cada 500ms. Dentro de la rutina de interrupción del Timer se cambia el estado de un bit. Usando el mismo circuito anterior, escriba, compile y prueba el siguiente programa. /* Uso del Timer0 * * Se programa el Timer0 para producir una interrupción cada 500ms */ #include <p18cxxx.h> #include <timers.h> #include <delays.h> // Prototipos de rutina de interrupción void rsi_tmr0(void); //Código para bootloader extern void _startup (void); #pragma code REMAPPED_RESET_VECTOR = 0x1000 void _reset (void) { _asm goto _startup _endasm } // Sección de código #pragma code void main() { // PORTA como salida TRISA = 0; // Configura pines como digitales ADCON1 = 0x0f; PORTA = 0; // Activa timer0 de 16 bits, conteo de Tcy con prescaler de 1:128 OpenTimer0 (TIMER_INT_ON & T0_SOURCE_INT & T0_16BIT & T0_PS_1_128); WriteTimer0(0x48E6); // Habilitación global de interrupciones INTCONbits.GIE = 1; } while(1) { }

67 // Vector de Interrupción modo compatibilidad #pragma code high_vector=0x1008 void high_interrupt (void) { _asm GOTO rsi_tmr0 _endasm } #pragma code /****** RSI de TIMER0 *****/ #pragma interrupt rsi_tmr0 void rsi_tmr0 (void) { // Invierte bit RA0 LATAbits.LATA0 ^= 1; // Reinicia el Timer0 WriteTimer0(0x48E6); } // Limpia la bandera de interrupción INTCONbits.TMR0IF = 0; Programa 5-1. Ejemplo uso de Timer0

68 PRÁCTICA 5. Reloj Digital Diseñe un Reloj Digital usando el Timer0 para generar la base de tiempos. El reloj mostrará: HH:MM:SS El sistema tendrá 3 botones: Boton 1: Activa cambio de hora con Boton 2 y Boton 3. Al pulsarse una vez parpadean los segundos, al pulsarse otra vez parpadean los minutos, al pulsarse otra vez parpadean las horas. Si se pulsa otra vez dejan de parpadear y se desactivan los cambios con Boton 2 y Boton 3. Boton 2: Aumenta segundos, minutos u horas (el que esté parpadeando). El cambio de segundos y minutos va de 0 a 59. El cambio de horas va de 0 a 23. Boton 3: Disminuye segundos, minutos u horas (el que esté parpadeando). Revisión: El reloj se dejará funcionando 2 horas, por cada segundo que se desfase con respecto al reloj de revisión disminuye un punto el valor de la práctica. Punto Extra en calificación parcial: Usar un teclado matricial en lugar de los 3 botones; para permitir cambiar las HH, MM o SS usando las teclas numéricas.