Le Queue, code, di FreeRTOs sono metodi per scambiare dati tra due task. In questo esempio una coda monodirezionale (un task invia dati e l'altro li riceve)
-----------------------------------------------------------------
#include <Arduino_FreeRTOS.h>
#include <queue.h>
QueueHandle_t coda;
int codasize = 10;
void sender( void *pvParameters );
void receiver( void *pvParameters );
void setup() {
Serial.begin(9600);
coda = xQueueCreate(codasize,sizeof(int));
if ( coda == NULL ) {
Serial.println("Errore nella creazione");
}
xTaskCreate(sender,(const portCHAR *)"Sender",128,NULL,3,NULL);
xTaskCreate(receiver,(const portCHAR *)"Receiver",128,NULL,2,NULL);
}
void loop()
{
}
void sender( void *pvParameters __attribute__((unused)) ) // This is a Task.
{
for (;;)
{
for (int t=0;t<5;t++){
xQueueSend(coda,&t,portMAX_DELAY);
}
vTaskDelay( 1000 / portTICK_PERIOD_MS );
}
}
void receiver( void *pvParameters __attribute__((unused)) )
{
int elemento;
for (;;)
{
for (int t=0;t<codasize;t++){
xQueueReceive(coda,&elemento,portMAX_DELAY);
Serial.print(elemento);
Serial.print("|");
}
Serial.println();
vTaskDelay( 1000 / portTICK_PERIOD_MS );
}
}
Iscriviti a:
Commenti sul post (Atom)
ESP32 logger low power
A seguito del precedente post in questo caso il logger e' stato fatto con una ESP32S3 Al contrario di Arduino dove i dati erano salvat...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
Nessun commento:
Posta un commento