В данном уроке мы рассмотрим работу светофоров. В светофор представляет собой некий механизм, который позволяет выполнения некой задачи только при наличии разрешения на выполнения данной задачи. Другими словами задача ждет пока будет зеленый цвет на выполнение, если красный – задача не выполняется.
Существует два вида семафоров:
- Бинарные семафоры.
- Счетные семафоры.
Бинарные семафоры – могут принимать значения 0 и 1. Пока одна задача выполняется, она выдает значение очереди 0 (красный цвет), как только она выполнится, она дает номер очереди 1 (зеленый цвет) тем самым разрешает работу второй задачи. После выполнения второй задачи, мы выставляем опять 0 очередь, и переходим в режим ожидания когда снова появится разрешение.
Данный подход хорошо подходит для синхронизации между задачами или для синхронизации между задачей и прерыванием.
Счетный семафор – может принимать значение больше 1. данный семафор используется для счета событий. То есть обработчик события будет каждый раз уменьшать значение семафора при появлении данного события, а обработчик будет увеличивать значение светофора при каждом выполнении.
Данный подход подходит, когда нам надо знать разницу между числом событий которые случились и числом событий которые были выполнены (обработаны).
Для проверки работы бинарного светофора мы с Вами подключим кнопку при нажатии которой у нас будет включаться светодиод, при повторном нажатии светодиод будет выключаться.
Программный код:
#include <Arduino_FreeRTOS.h>
#include <semphr.h>
Полную версию урока можно поссмотреть на сайте: https://texnohelp.com/arduino_freertos_lesson3/
Видео версию можно поссмотреть по ссылке: https://youtu.be/7kuZAooY94Q