Programador horario arduino

Descarga de la biblioteca Scheduler h

El objetivo del programador es lanzar dos tareas cíclicas, una cada 10 ms para procesar el PID y otra cada 100 ms para leer el valor objetivo e informar del valor actual a través de SPI al dispositivo maestro.

Mi enfoque actual es utilizar Timer/Counter 2 en modo Clear Timer on Compare Match (CTC) con un valor de comparación A y un preescalador correctamente configurado a 10 ms y luego configurar la interrupción del Timer/Counter2 Compare Match A para disparar la Tarea1 y actualizar un contador de ciclos para la Tarea2.

La forma más sencilla de conseguirlo es utilizar ambas interrupciones de comparación (COMPA y COMPB). COMPA es tu tickrate de 10 ms (como ya has planeado), y COMPB en la marca de 5 ms. De esta forma, las interrupciones COMPA y COMPB siempre se disparan, y siempre tienes garantizado que COMPB siempre está a 5 ms del inicio de cada ciclo.

No estoy seguro de entender lo que quieres decir. En el ejemplo, la tarea lenta realmente se ejecuta cada diez veces que se ejecuta la tarea rápida, pero además, espera un tiempo de desplazamiento de 5 ms para permitir que la tarea1 se complete.

Tareas basadas en el tiempo de Arduino

Esto ha sido un largo tiempo de espera. Hace unos años (¡allá por 2012!) Escribí un programador TT básico que en realidad era más una «prueba de concepto» y no muy amigable para un usuario cotidiano de Arduino. Se basó en un fuerte conocimiento de C o C ++ y necesitaba Eclipse con un plugin de Arduino para conseguir que funcione. Desde entonces me prometí a mí mismo que escribiría una biblioteca Arduino adecuada para demostrar la programación temporizada a los usuarios de Arduino IDE, así como aprender algunas habilidades de C ++ para mí. He seguido la Guía de Estilo de la API de Arduino con el fin de hacer la biblioteca lo más familiar posible, pero si encuentras algo contra-intuitivo, o tienes alguna sugerencia o petición de características, por favor házmelo saber en los comentarios.

La idea principal detrás de la programación temporizada es realizar múltiples funciones sin un sistema operativo. Se ha dicho que usted debe elegir una Raspberry Pi (o una plataforma similar basada en OS) sobre Arduino si usted necesita hacer más de dos cosas. Este no es siempre el caso – dividiendo tu sketch en pequeños trozos de código (o ‘Tareas’) predecibles y de rápida repetición podemos hacer mucho más.

Temporizador Arduino

En los últimos días estuve jugando con mi Arduino uno para realizar varias tareas. Una de las tareas es algo así como, por ejemplo, dormir durante 10 minutos y encender un pin durante 3 minutos y luego dormir durante 10 minutos, y el ciclo continúa. He evaluado varias librerías pero la mayoría de ellas ejecutan una tarea basada en un intervalo. Por ejemplo, activar el pin 13 cada 1 minuto, es más como un retraso. Pero lo que yo queria era, delay por 2 minutos luego dar un voltaje HIGH al pin 13 por 1 minuto luego escribir LOW al pin 13 y de nuevo sleep por 10mins.

Mi búsqueda no conduce a nada, así que decidí escribir un rápido y sucio Scheduler para mí. Se me ocurrió una biblioteca después de pasar 3 horas ayer por la noche. No tenía mucha experiencia en programación en C++, así que tuve que pasar algún tiempo para entender cómo funcionan las cosas en el mundo C++. También uso la librería Timer como referencia.

La tarea t3 es un digitalWrite con timeout. Un escenario en el que podemos usar esa funcionalidad es, digamos que el encendido/apagado de un pin está basado en un comando externo, podría venir de una Raspberry pi. En una situación si el Pi se cayó con alguna razón después de emitir un comando de encendido entonces Arduino mantendrá el Pin encendido hasta un reinicio. Estos escenarios, podemos utilizar escribir, en el código anterior, el pin 12 será alta para 4000ms, después de que se apagará automáticamente.

Cuadro de mandos Arduino

En los primeros tiempos de la informática, los ordenadores sólo podían hacer una cosa a la vez. Cuando encendías tu fiel PC y ponías un disco, se iniciaba el sistema operativo. Luego cambiabas el disco y ejecutabas una hoja de cálculo. Tu hoja de cálculo aparecía en la pantalla al cabo de unos segundos y oías algunos sonidos dudosos procedentes de la unidad de disco, y entonces, por fin, podías ponerte a trabajar. Si querías tomarte un descanso y jugar a un juego en gloriosos cuatro colores, tenías que guardar tu trabajo y salir de la hoja de cálculo (o, en algunos casos, reiniciar el ordenador) antes de jugar a un juego. Con los discos, esto no importaba tanto; no podías tener dos programas abiertos al mismo tiempo.

Acerca del autor

admin

Ver todos los artículos