Gomulu Sistemler
1 dakika okuma
ESP32 ile FreeRTOS: Cok Gorevli Sistem Tasarimi
ESP32 ve FreeRTOS ile cok gorevli gomulu sistem: gorev olusturma, kuyruk ve mutex.
E
Emre Cihan FreeRTOS Neden ESP32 Icin Ideal
ESP32 cift cekirdekli mimarisi ve entegre FreeRTOS destegi ile guclu gomulu sistemler icin idealdir.
Gorev Olusturma
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
QueueHandle_t kuyruk;
void sensor_fn(void *p) {
float d;
while (1) {
d = sicaklik_oku();
xQueueSend(kuyruk, &d, pdMS_TO_TICKS(100));
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
void wifi_fn(void *p) {
float d;
while (1) {
if (xQueueReceive(kuyruk, &d, pdMS_TO_TICKS(5000)))
mqtt_gonder("sensor/t", d);
}
}
void app_main(void) {
kuyruk = xQueueCreate(10, sizeof(float));
xTaskCreatePinnedToCore(sensor_fn, "S", 4096, NULL, 5, NULL, 0);
xTaskCreatePinnedToCore(wifi_fn, "W", 8192, NULL, 3, NULL, 1);
}
Mutex
SemaphoreHandle_t mtx;
void gorev(void *p) {
while (1) {
if (xSemaphoreTake(mtx, pdMS_TO_TICKS(100))) {
spi_yaz(veri);
xSemaphoreGive(mtx);
}
}
}
Watchdog
#include "esp_task_wdt.h"
void kritik(void *p) {
esp_task_wdt_add(NULL);
while (1) { islem(); esp_task_wdt_reset(); vTaskDelay(pdMS_TO_TICKS(1000)); }
}
Paylaş:
Twitter / X
E
Emre Cihan
Sistem Yöneticisi · Maker · Elektronik Meraklısı
İlgili yazılar