Sesión 09: TIMER como base de tiempo.

Slides:



Advertisements
Presentaciones similares
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Advertisements

CIRCUITOS SECUENCIALES E.U.I.T. Informática de Gijón
MICROCONTROLADORES NOCIONES BÁSICAS.
Programación en C para electrónica
MICROCONTROLADORES PIC
MICROCONTROLADORES.
TEMPORIZADORES.
Rommel Chang Suárez Jefferson Moreno Briones
COMUNICACIÓN SERIAL Javier Garcia Ramos.
Introducción a los MCU´s de Motorola
Sistemas Digitales Curso 2007/2008 Departamento de Tecnología E l e c t r ó n i c a Periféricos E/S. VIA 65C22 Sistemas Digitales 2º curso Ingeniero Técnico.
Entrada / salida digital con ccs
Circuitos Secuenciales
El Sistema de Memoria. Contenido Arquitectura del sistema Arquitectura del DIMM Descripción del reloj Arquitectura del chip RAM Latencia de Memoria Detección.
Semana 4 - periferico.
Vista General del Funcionamiento del Computador y sus Interconexiones
Registros y Contadores
Microcontroladores PIC16F84A.
INTERRUPCIONES Y TEMPORIZADORES Programación en C para electrónica.
REGISTROS DE DESPLAZAMIENTO
INTRODUCCIÓN AL DISEÑO SECUENCIAL: CONTADORES Y REGISTROS
SISTEMAS DIGITALES SECUENCIALES
EXAMEN CORTO SOBRE FLIP-FLOPS
José Estay A / jea I semestre académico 2014 Computadores (TU Sistemas Computacionales) Elementos de estructura de computadores.
INTERRUPCIONES Introducción.
TIMER 1 El módulo TIMER1 así como el TIMER0 es un temporizador/contador con las siguientes características. Trabaja con 16 bits (con 2 registros de 8 bits:TMR1H.
Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj kbits/s (pero también kbits/s y 3.4Mbits/s)
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
E. Verde UCV EIE Sensores de Variables Físicas Frecuencia.
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Integrantes: Christian Blanco Raúl Bejarano
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
Memorias RAM Características: Son de lectura escritura
Timer 3 Presentan: Fernando piñal moctezuma Tecilli tapia Tlatelpa BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA ELECTRÓNICA SISTEMAS.
MICROCONTROLADORES NOCIONES BÁSICAS COMPUTO II. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.

MICROCONTROLADORES COMPATIBLES CON 8XC51
Memorias.
Universidad Técnica Federico Santa María Departamento de Electrónica Seminario II1 Timers A - B. Usos y programación. Paola Rojas Pablo Naveas Carlos Silva.
“Organización y Arquitectura de Computadores” William Stallings
Microcontrolador MPS430F149
UNIVERSIDAD DEL VALLE DE MEXICO
Sesión 11: - Comparador, Captura y PWM. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.
Sesión 10: Conversión Análoga a Digital
Sesión 08: Interrupciones - IRQ. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales.
EL HARDWARE (I) MICROPROCESADOR Y MEMORIAS. El Hw del ordenador La parte básica del ordenador es la placa madre (motherboard) o placa base Todos los demás.
Clase 14: Memoria EEPROM.
Sesión 1: Presentación del curso. 2009/1 Circuitos Digitales III Universidad Santo Tomás Sistemas Digitales II Presentación  Nombre:  Sebastian Villa.
Tema 4: El microcontrolador PIC16F876
Clase 13: Protocolo de Comunicación I 2 C. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos.
Sistemas Secuenciales Electrónica Digital
INTRODUCCIÓN A LAS HERRAMIENTAS DE DISEÑO CON PIC
Sesión 07: Interrupciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Sistemas Digitales II Universidad.
INTRODUCCIÓN El rendimiento, costo de compra y costo de operación forman la base para la toma de decisiones, sobre que PC es mejor que otra y así adquirir.
NOCIONES BÁSICAS COMPUTO II
Contenido Los puntos 9.7 y 9.8 no se dan 9.1. Revisión del concepto de máquina secuencial. Taxonomía Temporización en los circuitos lógicos síncronos.
MULTIVIBRADORES Oscar Ignacio Botero H..
CORPOCIDES Ing. Emilio Medina Baquero
PICOBLAZE RESUMEN.
RESUMEN: Softmicro de 8 bits Xilinx
Alumno: Gerardo Mario Valdés Ortega
ESTADO Registro de ESTADO más utilizado  Es el registro más utilizado.  Ocupa la dirección 03 H tanto del Banco 0 como el Banco 1 de la Memoria de Datos.
REPUBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD ALONSO DE OJEDA FACULTAD DE INGENIERÍA ESCUELA DE COMPUTACIÓN ING. PROF. LEONEL SEQUERA MEMORIAS.
Programando puertos en C freescale
Republica Bolivariana de Venezuela Universidad Alonso de Ojeda Facultad de Ingeniería Escuela de Computación Ing. Prof. Leonel Sequera Entrada y Salidas.
Programación de microcontroladores PIC16f877a en linux
Módulo Serial Asicrónico SCI (Serial Communications Interface Module)
Estado de la Electrónica de ACORDE. Modo de operación Normal del single muon (L0) Modo de operación Toggle del single muon (se entrega el reloj del LHC.
SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.
Organización del Computador 1 Lógica Digital 2 Circuitos y memorias.
Transcripción de la presentación:

Sesión 09: TIMER como base de tiempo.

A continuación… TIMER como base de tiempo TIMER como base de tiempo

Antes de Comenzar Conociendo la CPU y sus Periféricos… CPU MEMORIA ADC CAJA NEGRA E/S SIM IRQ SCI TIMER

Antes de Comenzar Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos: Base de tiempo configurable… Generador de Bases de Tiempo Mínima intervención de la CPU 1s CAJA NEGRA 5ms 1ms 250ms 100ms 0.5s Reloj Sistema CPU Procesando…

Mínima intervención de la CPU Antes de Comenzar Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos: Midiendo… Mínima intervención de la CPU Medición de Tiempo t CAJA NEGRA Tiempo de evento: X seg.

Generación de señales cuadradas Mínima intervención de la CPU Antes de Comenzar Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos: Comunicación de datos, usando señales moduladas (Modulación de pulso o PWM). Suponga la transmisión de ‘H’ ‘O’ ‘L’ ‘A’ NULL Generación de señales cuadradas ‘H’ ‘O’ ‘L’ ‘A’ NULL CAJA NEGRA TIMER Equipo A CAJA NEGRA TIMER Equipo B Mínima intervención de la CPU Línea de Transmisión

Mínima intervención de la CPU Antes de Comenzar Se requiere del uso del Timer cuando necesitamos suplir los siguientes requerimientos: VDC t VDC t VDC t Generación de PWM VDC t CAJA NEGRA PWM Mínima intervención de la CPU MOTOR DC

Módulo TIMER Periódicos Detectar Eventos Externos Generar Señales Bases de Tiempo. Detectar Eventos Externos Medida de Frecuencia. Medida de ancho de dureza. Generar Señales Modulación de Ancho de Pulso. Combinaciones Control de Motores, Comunicaciones, etc…

Módulo TIMER Temporizadores. Medida del tiempo de eventos externos. Generación de Señales Cuadradas. TIMER Evento o INT 2 1 5 4 3 TIMER Evento I.C. Evento t4 t3 t2 t1 TIMER Evento O.C.

Módulo TIMER Este módulo provee varias funciones Contador Rueda Libre con overflow programable. Captura de tiempos cuando ocurre un evento externo (Input Capture). Generación de señales cuadradas con polaridad, duración y frecuencia programables (Output Compare). Se pueden generar señales PWM haciendo uso de Output Compare y Toggle on Overflow.

Módulo TIMER TIMER como Base de Tiempo MÓDULO N PRES: ÷1, ÷2, ÷4, CONT Divide la frecuencia de bus, el contador se incrementa más lentamente TIMER como Base de Tiempo Componente Central: Contador 16 Bits MÓDULO N FIN FOUT TIMER PRES: ÷1, ÷2, ÷4, ÷8, ÷16, ÷32, … CONT CONT. 16-BITS FBUS 0 ... 5 1 3 4 5 1 2 FOVERFLOW ACK_SW SEL. PS. COMP Tiempo COMP PTOF CARGA CARGA INT_TIMER 5 INT. a CPU

Timer Overflow Inicialización Reconocimiento de la interrupción Detener el conteo Resetear el contador del timer Seleccionar el preescalado Establecer el valor del módulo Quitar la máscara de interrupción Habilitar el conteo Reconocimiento de la interrupción Leer el registro de estado y control Llevar la bandera de interrupción a cero

A continuación… TIMER como base de tiempo Timer 0 TIMER 0 TIMER 1

TIMER 0 El bloque funcional TIMER0/WATCHDOG es: Pude usarse como: Un contador (registro) de 8 bits. Incrementado por hardware y programable. La cuenta máxima es de 255. El incremento es constante e independiente. Pude usarse como: Contador: cuenta los eventos externos (a través del pin RA4/TOCK1). Temporizador: cuenta los pulsos internos de reloj.

TIMER 0 Se puede insertar un preescalador (divisor de frecuencia programable) 2, 4, 8, 16,32, 64,128 o 256. La frecuencia de conteo es una cuarta parte de la frecuencia de reloj (fosc/4). Con el uso del preescalador se puede dividir la frecuencia. El bloque del TIMER0 puede funcionar como WATCHDOG.

TIMER 0 Los registros implicados en la configuración del TIMER0/WDT son los siguientes: OPTION_REG: configura el "hardware" del TIMER0/WDT. INTCON: permite trabajar con la interrupción del TIMER0/WDT. TRISA: habilita el pin RA4.

TIMER 0 Los registros configuran los siguientes elementos: T0CS: Procedencia de las señales: 1 = RA4/TOCK1. 0 = Reloj interno. T0SE: Tipo de flanco en el T0CK1/RA4: 1 = Flanco descendente. 0 = Flanco ascendente. PSA: Asignación del divisor de frecuencias: 1 = WDT. 0 = TMR0. Seleccionar el divisor de frecuencias a actuar (preescalador)

TIMER 0 El tiempo de desbordamiento del TIMER0 se calcula según la siguiente ecuación: T = TCM·Prescaler·(256 - Carga TMR0) Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación: TCM = 4/FOSC

TIMER 0 en C La función para configurar el TlMER0 es: Modo Descripción RTCC_INTERNAL Procedencia de la señal reloj interno flaco de subida RTCC_EXT_L_TO_H Procedencia de la señal reloj externo flaco de subida RTCC_EXT_H_TO_L Procedencia de la señal reloj externo flaco de bajada RTCC_DIV_2 Preescalador 2 RTCC_DIV_4 Preescalador 4 RTCC_DIV_8 Preescalador 8 RTCC_DIV_16 Preescalador 16 RTCC_DIV_32 Preescalador 32 RTCC_DIV_64 Preescalador 64 RTCC_DIV_128 Preescalador 128 RTCC_DIV_256 Preescalador 256 La función para configurar el TlMER0 es: setup_timer_0 (modo); Donde modo está definido en el fichero de cabecera

TIMER 0 en C Los distintos modos se pueden agrupar mediante el empleo de símbolo |. setup_timer_0(RTCC_DIV_2 | RTCC_EXT_L_TO_H); El compilador C suministra una serie de funciones para leer o escribir en el TlMER0/WDT. Para escribir un valor en el registro: set_timer0 (valor); Para leer el valor actual del registro: valor = get_timer0 ();

TIMER 0 en C Para activar TIMER0 es necesario utilizar bits de configuración mediante la directiva #FUSES: #fuses NOWDT //Watchdog Desactivado.

TIMER 0 en C Para trabajar con las interrupciones del TIMER0, se la siguiente directiva: #INT_TIMER0 Esta indica que la función que esté a continuación será la subrutina de atención de interrupción del módulo TIMER0. Para habilitar la interrupción se emplea: enable_interrups (INT_TIMER0);

Ejemplo Generar una señal Cuadrada de 1KHz utilizando la interrupción del TIMER0.

Ejemplo Solución: Para generar una señal de 1Khz se necesita un semiperiodo de 500us. Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 2: T = TCM·Prescaler·(256 - CargaTMR0) 500us = (4/4000000)·2·(256 - Carga) Carga = 6

Ejemplo Generar una señal Cuadrada de 1Hz utilizando la interrupción del TIMER0.

Ejemplo Solución: Para generar una señal de 1Hhz se necesita un semiperiodo de 500ms. Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 256: T = TCM·Prescaler·(256 - CargaTMR0) 500ms = (4/4000000)·256·(256 - Carga) Carga = -1697 ???

A continuación… TIMER como base de tiempo Timer 0 Timer 1 Timer 1

TIMER 1 El modulo TIMER1 es otro temporizador/contador con las siguientes características: Trabaja con 16 bits (con dos registros de 8 bits: TMR1H y TMR1L). Ambos registros se pueden leer y escribir. Interrupción por desbordamiento de FFFFh a 0000h. Reset por disparo del módulo CCP Controlado por el registro T1CON. Con el bit TMR10N (T1CON<0>) se puede habilitar o deshabilitar.

TIMER 1 Los registros configuran los siguientes elementos: Selección del valor del preescalador del reloj del TMR1. Habilitación del oscilador del TMR1. Sincronización de la entrada de reloj. Selección de la fuente de reloj para el TMR1: Habilitación del TMR1.

TIMER 1 El TlMER1 puede operar en los siguientes modos: Como temporizador. Como contador síncrono. Como contador asíncrono.

TIMER 1 El tiempo de desbordamiento del TIMER1 se calcula según la siguiente ecuación: T = TCM·Prescaler·(65536 - Carga TMR1) Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación: TCM = 4/FOSC

TIMER 1 en C La función para configurar el TlMER1 es: Modo Descripción T1_DISABLED Habilitar TIMER1 T1_INTERNAL Procedencia de la señal reloj interno T1_EXTERNAL Procedencia de la señal reloj externo asíncrono T1_EXTERNAL_SYNC Procedencia de la señal reloj externo síncrono T1_CLK_OUT Oscilador habilitado T1_DIV_BY_1 Preescalador 1 T1_DIV_BY_2 Preescalador 2 T1_DIV_BY_4 Preescalador 4 T1_DIV_BY_8 Preescalador 8 La función para configurar el TlMER1 es: setup_timer_1 (modo); Donde modo está definido en el fichero de cabecera

TIMER 1 en C Los distintos modos se pueden agrupar mediante el empleo de símbolo |. La lectura y escritura en el módulo TMR1 se realiza a través de las siguientes funciones: valor = get_timer1 (); set_timer1 (valor); Donde valor es un entero de 16 bits.

TIMER 1 en C Para trabajar con las interrupciones del TIMER1, se la siguiente directiva: #INT_TIMER1 Esta indica que la función que esté a continuación será la subrutina de atención de interrupción del módulo TIMER1. Para habilitar la interrupción se emplea: enable_interrups (INT_TIMER1);

Ejemplo Generar una función que permita realizar retardos de 1 segundo empleando el TIMER1

Ejemplo Solución: Para generar retardos de 1seg se necesita un semiperiodo de 500ms (¿por qué?). Según la ecuación de desbordamiento, utilizando un cristal de 4 MHz y un preescalador de 8: T = TCM·Prescaler·(65536 - CargaTMR0) 500ms = (4/4000000)·8·(65536 - Carga) Carga = 3036

A continuación… TIMER como base de tiempo Timer 0 Timer 1 Timer 2

TIMER 2 El TIMER2 es un modulo temporizador con las siguientes características: Temporización de 8 bits (registro TMR2). Registro de periodo de 8 bits (PR2). Ambos registros se pueden leer o escribir. Preesacalador programable por programa (1,4,16). Postescalador programable por programa (1 a 16). Interrupción controlada por PR2. El módulo SSP utiliza opcionalmente el TlMER2 para generar una señal de reloj.

TIMER 2 Los registros configuran los siguientes elementos: Selección del valor del postescalador del TMR2. Habilitación del TMR2: Selección del valor del preescalador del TMR2.

TIMER 2 El tiempo de desbordamiento del TIMER1 se calcula según la siguiente ecuación: T = TCM·Prescaler·(Carga TMR2+1)·Postescalador Donde TCM es el ciclo máquina que se puede calcular mediante la ecuación: TCM = 4/FOSC

TIMER 2 en C La función para configurar el TlMER2 es: setup_timer_2 (modo, periodo, postscaler); Donde: Periodo es un valor entero de 8 bits (0-255). Postscaler es el valor del postescalador (1 a 16). modo está definido en el fichero de cabecera Modo Descripción T2_DISABLED Habilitar TIMER2 T1_DIV_BY_1 Preescalador 1 T1_DIV_BY_4 Preescalador 4 T1_DIV_BY_16 Preescalador 16

TIMER 2 en C Los distintos modos se pueden agrupar mediante el empleo de símbolo |. La lectura y escritura en el módulo TMR2 se realiza a través de las siguientes funciones: valor = get_timer2 (); set_timer2 (valor); Donde valor es un entero de 8 bits.

TIMER 2 en C Para trabajar con las interrupciones del TIMER2, se la siguiente directiva: #INT_TIMER2 Esta indica que la función que esté a continuación será la subrutina de atención de interrupción del módulo TIMER0. Para habilitar la interrupción se emplea: enable_interrups (INT_TIMER2);

Ejemplo Generar una señal cuadrada de 1 KHz utilizando la interrrupción del TlMER2.

Ejemplo Solución: Para generar una señal de 1 Khz se necesita un semiperiodo de 500us, según la ecuación del desbordamiento del TIMER2, utilizando un cristal de 4 MHz, un preescalador de 4 y un postescalador de 1: T = TCM·Prescaler·(Carga TMR2+1)·Postscaler 500us = (4/4000000)·4·(Carga+1)·1 Carga = 125

Fin de la sesión 09