0% encontró este documento útil (0 votos)
26 vistas16 páginas

Timers

Este documento describe el uso de temporizadores y contadores en Arduino. Explica que Arduino tiene 3 temporizadores: Timer 8 bits, Timer 16 bits y Timer 8 bits. Describe funciones como delay(), millis() y micros() para controlar el tiempo. También cubre el uso de interrupciones con los temporizadores, los registros importantes y eventos como Compare Match, Overflow e Input Capture.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Descargar como pptx, pdf o txt
0% encontró este documento útil (0 votos)
26 vistas16 páginas

Timers

Este documento describe el uso de temporizadores y contadores en Arduino. Explica que Arduino tiene 3 temporizadores: Timer 8 bits, Timer 16 bits y Timer 8 bits. Describe funciones como delay(), millis() y micros() para controlar el tiempo. También cubre el uso de interrupciones con los temporizadores, los registros importantes y eventos como Compare Match, Overflow e Input Capture.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1/ 16

TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

23
24
25
TEMPORIZADORES Y 26
CONTADORES EN 27
ARDUINO 28
Procesadores I
F.C.F.M.yN. U.N.S.L.
29
01 30
EJEMPLO

02 31
TEMPORIZADO
TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

3RES
TIMERS EN
ARDUINO:
TIMER 8 bits • Compare Match delay(); millis();
0 (0-255) • Overflow micros();

• Compare Match
TIMER 16 bits Librería de
(0-65535) • Overflow
1 Servomotores
• Input Capture
8 bits tone();
• Compare Match
TIMER (0-255)
• Overflow
EJEMPLO

2
DELAY(); MILLIS(); MICROS();
TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

• DELAY(): detiene el programa por los milisegundos especificados en el parámetro.

• Variante en microsegundos: DELAYMICROSECONDS();

• MILLIS(): devuelve el tiempo de milisegundos que han pasado desde que se inició el programa. No

detiene el programa ni produce código bloqueante. Overflow en 50 DÍAS;

• Variante en microsegundos: MICROS(); Overflow en 70 MINUTOS;


EJEMPLO
DEMOSTRACIÓN PRÁCTICA: UTILIZACION DE
FUNCIONES
A través de una pantalla conectada a una placa Arduino, se desean imprimir 4 avisos: Inicio de la reunión, Pausa para el café, segunda
TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

parte de la reunión y fin de la reunión.

Distintos tiempos a tener en cuenta

Inicialización del puerto serial en

IMPRESIÓN
donde podré ver el mensaje.

FINAL
Mensaje 1.

Mensaje 2.

Mensaje 3.
EJEMPLO

Mensaje 4.
INTERRUPCIONES
TIMERS REGISTROSINTERRUPCIONESEJEMPLO FUNCIONES ESQUEMA

Una interrupción es un evento externo que detiene la ejecución del programa principal y ejecuta una rutina
de sevicio a la interrupción (ISR). Una vez finalizada la ISR, se continua con la siguiente instrucción del
programa principal .

Para configurar una ISR se usa la siguiente función:

ISR (TIMERn_CAPT_vect) {  
  // xxxxxxxxxxxxx
}

TIMERn_CAPT_vect: vector de la interrupción del TIMERn, donde n puede ser 0,1,2.

  // xxxxxxxxxxxxx: representa las sentencias que se ejecutarán cuando suceda la interrupción.


EJEMPLO
REGISTROS
TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA


IMPORTANTES
TCNTx – Registro del Timer/Counter. Aquí se almacena el valor actual del timer.

• TCCRx – Registro de control del Timer/Counter. Aquí se configura el prescaler.

• OCRx – Registro del Output Compare.

• ICRx – Registro Input Capture (sólo para el timer de16bit).

• TIMSKx – Registro de la máscara de la interrupción del Timer/Counter. Sirve para habilitar

o deshabilitar interrupciones con el timer.

• TIFRx – Registro de la interrupción por bandera del Timer/Counter. Indica una interrupción
EJEMPLO

de tiempo pendiente.
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

TIMER2 TIMER0
REGISTROS
IMPORTANTES
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

TIMER1
REGISTROS
IMPORTANTES
COMPARE MATCH, OVERFLOW e INPUT
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

CAPTURE
Utilizando el TIMER1:

65529
65530
65531
65532
65533 == OCR1A (65533) COMPARE MATCH INTERRUPT
65534
65535

0 OVERFLOW INTERRUPT
1
2 INPUT CAPTURE INTERRUPT ICP1(PB0) Cambio de estado lógico ICR1=2
3
4
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

Clock
System
Prescaler
CONFIGURACIÓN DEL PRESCALER

TIMERX

TCNTX
DEMOSTRACIÓN PRÁCTICA: CONFIGURACION DE LOS 3
TIMERS
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

Se desea imprimir 2 ondas cuadradas, por los pines 8 y 9. La frecuencia de la onda del pin 8 debe ser de 50 Hz, la del pin 9 de 1kHz.
Además se debe encender el LED del pin 13 de la placa cada 1 segundo. Para ello utilice los 3 timers que dispone Arduino.

Estas variables servirán para


alternar el estado de los pines

Configuro los pines 8,9,13 como salidas. Además


detengo todas las interrupciones.

Configuración del
Prescaler
Frecuencia del reloj del procesador
-1 = Valor en el registro OCRxA.
Valor del Prescaler x Frecuencia deseada
DEMOSTRACIÓN PRÁCTICA: CONFIGURACION DE LOS 3
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

TIMERS
Aquí es donde se guarda el valor de la cuenta.

Cargo el valor hasta el cual deseo contar.


Activo el modo CTC, clear timer on compare.

Configuro el prescaler a 1024 bits.

Habilito la interrupción cuando el valor del contador sea igual al valor cargado
Configuro el TIMER0. en el registro OCR0A.

Aquí es donde se guarda el valor de la cuenta.

Cargo el valor hasta el cual deseo contar.


Activo el modo CTC, clear timer on compare.

Configuro el prescaler a 256 bits.

Habilito la interrupción cuando el valor del contador sea igual al valor cargado
en el registro OCR0A.
Configuro el TIMER1.
DEMOSTRACIÓN PRÁCTICA: CONFIGURACION DE LOS 3
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

TIMERS

Aquí es donde se guarda el valor de la cuenta.

Cargo el valor hasta el cual deseo contar.


Activo el modo CTC, clear timer on compare.

Configuro el prescaler a 32 bits.

Habilito la interrupción cuando el valor del contador sea igual al valor cargado
Configuro el TIMER2. en el registro OCR0A.
DEMOSTRACIÓN PRÁCTICA: CONFIGURACION DE LOS 3
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

TIMERS
Genero la ISR para el TIMER0.

Genero la ISR para el TIMER1.

Genero la ISR para el TIMER2.

Código principal.
VISUALIZACIÓN DE LA DEMOSTRACIÓN
EJEMPLO TIMERS REGISTROS INTERRUPCIONES EJEMPLO FUNCIONES ESQUEMA

Genero la ISR para el TIMER1.

Genero la ISR para el TIMER2.

Genero la ISR para el TIMER0.


BIBLIOGRAFÍA
BIBLIOGRAFÍA EJEMPLOS INTERRUPCIONES FUNCIONES TEMPORIZADORES

• https://controlautomaticoeducacion.com/arduino/timer-arduino/

• Atmel-42735B-ATmega328/P_Datasheet_Complete-11/2016

• https://circuitdigest.com/microcontroller-projects/arduino-timer-tutorial

• https://oscarliang.com/arduino-timer-and-interrupt-tutorial/

• https://jaimedearcos.github.io/arduino/2017/01/04/Timers/

• https://www.forward.com.au/pfod/ArduinoProgramming/TimingDelaysInArduino.html

• https://arduinoinfo.mywikis.net/wiki/Timers-Arduino

• https://www.youtube.com/watch?v=IdL0_ZJ7V2s

• https://www.youtube.com/watch?v=2kr5A350H7E

• https://www.instructables.com/id/Arduino-Timer-Interrupts/

• ARDUINO UN ENFOQUE PRÁCTICO E INCREMENTAL. Jose Antonio de la Torre las Heras; Julio Daniel Dondo Gazzano. ISBN 978-84-608-7339-6

También podría gustarte