Arduino Utilizando Freertos
Arduino Utilizando Freertos
Arduino Utilizando Freertos
O Arduino IDE e meio ambiente tem muitos drivers e bibliotecas disponveis dentro de
um alcance de armas, mas o ambiente Arduino se limita apenas a configurao () e
loop () e no suporta multi-tasking de forma eficaz.
Este um simples fcil de usar e robusta aplicao, FreeRTOS que s pode calo para o
Arduino IDE como uma biblioteca e permitir o uso das melhores partes de ambos os
ambientes, sem problemas.
fundo
A maioria dos sistemas operacionais aparecem para permitir que vrios programas ou
tpicos para executar ao mesmo tempo. Isso chamado de multi-tasking. Na realidade,
cada ncleo do processador s pode ser a execuo de um nico programa em qualquer
ponto no tempo. Uma parte do sistema operacional chamado o programador
responsvel por decidir qual o programa a ser executado quando, e fornece a iluso de
execuo simultnea, alternando rapidamente entre cada programa.
Vamos comear
De outra forma...
Prximos passos
Agora carregar e testar o esboo Blink, com um sistema operacional em tempo real
subjacente simplesmente atravs da insero de #include <Arduino_FreeRTOS.h> no
incio do esboo. Isso tudo o que h para ter FreeRTOS funcionando em seus esboos.
Blink_AnalogRead.ino uma boa maneira de comear uma vez que combina dois
exemplos Arduino bsicos, Blink e analogRead em um esboo com duas tarefas
distintas. Ambas as tarefas exercer as suas funes, gerido pelo programador FreeRTOS.
Este esboo pode ser encontrado na pasta Exemplos do Arduino IDE.
Blink_AnalogRead.ino Arduino
Estes so dois desenhos bsicos a partir dos exemplos Built-in Arduino IDE,
combinados em um esboo multitarefa usando dois FreeRTOS Tarefas.
#include <Arduino_FreeRTOS.h>
// the setup function runs once when you press reset or power the
board
void setup() {
xTaskCreate(
TaskAnalogRead
, (const portCHAR *) "AnalogRead"
, 128 // This stack size can be checked & adjusted by reading
Highwater
, NULL
, 1 // priority
, NULL );
void loop()
{
// Empty. Things are done in Tasks.
}
/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/
for (;;)
{
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
vTaskDelay(1); // one tick delay (15ms) in between reads for
stability
}
}