Hello all,
Just starting with FreeRTOS and Arduino (Mega2560). I created a simple program to blink two LED,
Green every 5 sec
Blue turn on after 500ms
Behaviour i got:
-Blue turns on.
-Green blink but what seems like every 1 second
-After a minute Green is stuck at On and BLue starts blinking
help is appreciated
thanks
~~~
#include <Arduino_FreeRTOS.h>
include “timers.h”
include <Arduino.h>
define ONESHOTTIMERPERIOD (pdMSTO_TICKS(500))
define AUTORELOADTIMERPERIOD (pdMSTO_TICKS(5000))
int blueLedPin = 13, greenLedPin = 11;
const uint8
t *blueLed = (uint8t *)&blueLedPin;
const uint8_t *greenLed = (uint8_t *)&greenLedPin;
TimerHandle
t xOneShotTimer;
TimerHandlet xAutoReloadTimer;
BaseType
t xOneShotTimerStarted;
BaseTypet xAutoReloadTimerStarted;
void prvOneShotTimerCallback(TimerHandle
t xTimer);
void prvAutoReloadTimerCallback(TimerHandlet xTimer);
void setup()
{
Serial.begin(115200);
Serial.println(“Setup “);
pinMode(blueLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
xOneShotTimer = xTimerCreate("One Shot",
ONE_SHOT_TIMER_PERIOD,
pdFALSE,
(void *)0,
prvOneShotTimerCallback
);
xAutoReloadTimer = xTimerCreate("Auto Reload",
AUTO_RELOAD_TIMER_PERIOD,
pdTRUE,
(void *)0,
prvAutoReloadTimerCallback
);
if ((xOneShotTimer != NULL) && (xAutoReloadTimer != NULL))
{
xOneShotTimerStarted = xTimerStart(xOneShotTimer, 0);
xAutoReloadTimerStarted = xTimerStart(xAutoReloadTimer, 0);
}
while ((xOneShotTimerStarted != pdPASS) && (xAutoReloadTimerStarted != pdPASS)){}
vTaskStartScheduler();
Serial.println("end");
}
void prvOneShotTimerCallback(TimerHandle
t xTimer)
{
TickTypet xTimerNow;
xTimerNow = xTaskGetTickCount();
Serial.print(“One-shot timer : “);
Serial.println(xTimerNow);
digitalWrite(blueLedPin, digitalRead(blueLedPin) ^ 1);
}
void prvAutoReloadTimerCallback(TimerHandle
t xTimer)
{
TickTypet xTimerNow;
xTimerNow = xTaskGetTickCount();
Serial.print(“Auto- Reload timer : “);
Serial.println(xTimerNow);
digitalWrite(greenLedPin, digitalRead(greenLedPin) ^ 1);
}
void loop(){}
`
~~~