Доброго времени суток.
Подскажите, уже несколько дней бьюсь. Как правильно пользоваться библиотекой GyverLibs /FileData
Или какую нибудь другую применить оптимальнее?
Нужно ли использовать очереди?
или напрямую со структурой общаться как с глобальной переменной?
Решал кто такие непосредственно задачи?
Без очереди все работает)... но я не понимаю на долго ли это, пока пару задач никаких сбоев нет. Но будет параллельный доступ и возникнут ли проблемы в будущем и уже переделывать гораздо больше.
Пытаюсь работать через очередь, записываю структуру в очередь длинной 1. Далее оперирую xQueueOverwrite и xQueuePeek.
И задача отдельная которая переодически вызывает tick
Читаем данные из очереди, копируем в глобальную структуру.
Или вообще все неправильно, подскажите правильный ход решения задачи организации eeprom на esp32 (freertos)
Первый проект начал делать с freertos, боле менее разобрался а тут прям затык.
Подскажите, уже несколько дней бьюсь. Как правильно пользоваться библиотекой GyverLibs /FileData
Или какую нибудь другую применить оптимальнее?
Нужно ли использовать очереди?
или напрямую со структурой общаться как с глобальной переменной?
Решал кто такие непосредственно задачи?
Без очереди все работает)... но я не понимаю на долго ли это, пока пару задач никаких сбоев нет. Но будет параллельный доступ и возникнут ли проблемы в будущем и уже переделывать гораздо больше.
Пытаюсь работать через очередь, записываю структуру в очередь длинной 1. Далее оперирую xQueueOverwrite и xQueuePeek.
И задача отдельная которая переодически вызывает tick
Читаем данные из очереди, копируем в глобальную структуру.
Или вообще все неправильно, подскажите правильный ход решения задачи организации eeprom на esp32 (freertos)
Первый проект начал делать с freertos, боле менее разобрался а тут прям затык.
C++:
void Task_upd_ee_prom(void *pvParameters __attribute__((unused))) {
for (;;) // A Task shall never return or exit.
{
Data1 tempData;
while (1) {
// Ждать данные из очереди
xQueuePeek(q_ee_prom, &tempData, portMAX_DELAY);
memcpy(&ee_prom, &tempData, sizeof(ee_prom));
// Обновить данные
// Вызывать тикер библиотеки FileData для отслеживания таймаута и записи данных
if (data_ee.tick() == FD_WRITE) {
Serial.println("Data updated!");
}
vTaskDelay(1000);
}
}
}