arshad wrote on Monday, June 10, 2019:
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 ONE_SHOT_TIMER_PERIOD (pdMS_TO_TICKS(500))
#define AUTO_RELOAD_TIMER_PERIOD (pdMS_TO_TICKS(5000))
int blueLedPin = 13, greenLedPin = 11;
const uint8_t *blueLed = (uint8_t *)&blueLedPin;
const uint8_t *greenLed = (uint8_t *)&greenLedPin;
TimerHandle_t xOneShotTimer;
TimerHandle_t xAutoReloadTimer;
BaseType_t xOneShotTimerStarted;
BaseType_t xAutoReloadTimerStarted;
void prvOneShotTimerCallback(TimerHandle_t xTimer);
void prvAutoReloadTimerCallback(TimerHandle_t 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)
{
TickType_t xTimerNow;
xTimerNow = xTaskGetTickCount();
Serial.print("One-shot timer : ");
Serial.println(xTimerNow);
digitalWrite(blueLedPin, digitalRead(blueLedPin) ^ 1);
}
void prvAutoReloadTimerCallback(TimerHandle_t xTimer)
{
TickType_t xTimerNow;
xTimerNow = xTaskGetTickCount();
Serial.print("Auto- Reload timer : ");
Serial.println(xTimerNow);
digitalWrite(greenLedPin, digitalRead(greenLedPin) ^ 1);
}
void loop(){}
`