Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Multitareas en Arduino
2
Un procesador Simple No tiene Sistema Operativo
Sólo ejecuta un programa a la vez.
3
¿Cómo implementar multitareas?
Dado que no existe Sistema Operativo, es necesario implementar todo el código que se requiere para la ejecución concurrente de tareas.
4
Sicronización de tiempo
Evitar el uso de rutinas como delay(), las cuales bloquean el uso del procesador. Implementar el código necesario para sincronizar la ejecución de múltiples tareas en el tiempo.
5
Midiendo el tiempo Calendarizar las tareas
Medir el tiempo contínuamente; Sincronizar las tareas conforme a la calendarización y el tiempo medido.
6
Ejemplo
7
Ejecución concurrente de dos tareas
Incorporar un segundo led (ver siguiente lámina) Incorporar una segunda tarea lo cual implica: Agregar variables de estado para segunda tarea (Pin, Estado, tiempo, intervalo) Agregar el código necesario para que se ejecute segunda tarea (modificar función loop).
8
Prototipo para ejecución concurrente de dos tareas
9
Código Pin1=12; Estado1 = LOW; unsigned long tiempoAnterior1 = 0;
long TiempoEncendido1 = 250; long TiempoApagado1 = 750; int Pin2 = 13; int Estado2 = LOW; unsigned long tiempoAnterior2 = 0; long TiempoEncendido2 = 330; long TiempoApagado2 = 400; Variables de estado para Tarea 1 Variables de estado para Tarea 2
10
Código Continuación void setup() { pinMode(ledPin1, OUTPUT);
}
11
Código Continuación void loop() {
unsigned long TiempoActual = millis(); if((Estado1 == HIGH) && (TiempoActual - tiempoAnterior1 >= TiempoEncendido1)) Estado1 = LOW; tiempoAnterior1 = TiempoActual; digitalWrite(Pin1, Estado1); } else if ((Estado1 == LOW) && (TiempoActual - tiempoAnterior1 >= TiempoApagado1)) Estado1 = HIGH;
12
Código Continuación if((Estado2 == HIGH) && (TiempoActual - tiempoAnterior2 >= TiempoEncendido2)) { Estado2 = LOW; tiempoAnterior2 = TiempoActual; digitalWrite(Pin2, Estado2); } else if ((Estado2 == LOW) && (TiempoActual - tiempoAnterior2 >= TiempoApagado2)) Estado2 = HIGH;
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.