Curso STM32F303K8 Nucleo y Plataforma Mbed OS: Manejo del timer y ticker #06.
Buenas noches estimados lectores. En el día de hoy vamos a ver la clase #06 del curso de programación de microcontroladores de 32 bit basador en cortex, con el compilador Mbed compiler. Para esta clase veremos un periferico de suma importancia y que es usado mucho en la programación de embebidos, se trata del timer que posee nuestro micrcoontrolador. Además de esto lo manejaremos la interfaz Ticker la cual nos sirve para generar una interrupción de forma recurrente como lo veremos en esta entrada.
¿Qué es el modulo o periferico Timer?
La mayor parte de las aplicaciones para microcontrolador necesitan contar eventos o generar retardos de gran precisión. Por software es posible realizar retardos de cierta precisión y contar eventos, pero la mayor parte del potencial de la CPU se invertiría en éste cometido, y no dejaría tiempo para realizar otras acciones o complicando el diseño de la aplicación. Los contadores/temporizadores o, en la jerga, “timers”, son periféricos hardware que suplen este defecto, descargando de un trabajo poco grato al micro. Es tal la importancia de este tipo de dispositivos que los microcontroladores más avanzados incluyen decenas de ellos o, incluso, un coprocesador dedicado a gestionarlos. Estos dispositivos permiten, entre otras cosas, medir anchos de pulso de señales, generar señales digitales, contar impulsos, provocar acciones periódicas, implementar relojes de tiempo real, generar el ritmo para comunicaciones, comparación/captura, generación PWM (modulación por ancho de pulso) para control digital directo, etc
Use la interfaz del temporizador para crear, iniciar, detener y leer un temporizador para medir tiempos precisos (mejor que la precisión de milisegundos).
Puede crear, iniciar y detener de forma independiente cualquier número de objetos del temporizador.
Advertencias y notas:
- Los temporizadores se basan en contadores de microsegundos sin signo de 64 bits, pero para la compatibilidad con versiones anteriores, los read_ms() y read_us() solo devuelven enteros con signo de 32 bits. Esto limita su rango antes de ajustarse a 49 días y 35 minutos respectivamente. Utilice read_high_resolution_us() para acceder al rango completo de más de 500,000 años.
- Mientras se ejecuta un temporizador, se bloquea el sueño profundo para mantener una sincronización precisa. Si no necesita una precisión de microsegundos, considere usar la clase LowPowerTimer, ya que esto no bloquea el modo de suspensión profunda.
¿Qué es la interfaz Ticker?
La interfaz Ticker se usa para configurar una interrupción recurrente para llamar repetidamente a una función a una velocidad específica.
Se puede crear cualquier número de objetos de Ticker, permitiendo múltiples interrupciones pendientes al mismo tiempo. La función puede ser una función estática o una función miembro de un objeto en particular.
Use la interfaz Ticker para configurar una interrupción recurrente; llama a una función repetidamente ya una velocidad especificada.
Puede crear cualquier número de objetos de Ticker, permitiendo múltiples interrupciones pendientes al mismo tiempo. La función puede ser una función estática, una función miembro de un objeto particular o un objeto de devolución de llamada.
Advertencias y notas:
- Sin código de bloqueo en ISR: evite cualquier llamada en espera, bucle de tiempo infinito o bloqueo de llamadas en general.
- Sin printf, malloc o nuevo en ISR: evite cualquier llamada a funciones de biblioteca voluminosas. En particular, ciertas funciones de la biblioteca (como printf, malloc y new) no son reingresivas, y su comportamiento podría corromperse cuando se llaman desde un ISR.
- Mientras se adjunta un evento a un Ticker, el sueño profundo se bloquea para mantener la sincronización precisa. Si no necesita una precisión de microsegundos, considere usar la clase LowPowerTicker en su lugar porque eso no bloquea el modo de suspensión profunda.
Una vez que comprendimos las funciones timer y ticker, procederemos a estudiar el siguiente vídeo donde mostraremos la implementación de la interfaz y de la función:
Y esto sería todo en la clase de hoy. Espero que les haya gustado esta entrada donde nos muestra el manejo del timer y la interfaz ticker en microcontroladores STM32 con el compilador Mbed Compiler. En la siguiente entrada veremos el uso de interrupciones a través de pines digitales que posee el microcontrolador usado en este curso.
Si no han visto los vídeos anteriores de este curso, a través del siguiente link podrán verlos: Curso STM32F303K8 Nucleo y Plataforma Mbed OS
Escrito por: Breismam Alfonso Rueda Díaz
Bien muchachos, esto es todo por hoy. Estén pendientes de mi canal, de mi blog y de mi pagina de Facebook para más contenido.
Twitter: https://twitter.com/BreismamR