Найти тему
Александр Рожков

Используем светофоры в системе FreeRTOS на базе платы Arduino Nano в среде программирования Arduino IDE.

В данном уроке мы рассмотрим работу светофоров. В светофор представляет собой некий механизм,  который позволяет выполнения некой задачи только при наличии разрешения на выполнения данной задачи. Другими словами задача ждет пока будет зеленый цвет на выполнение, если красный – задача не выполняется.

Существует два вида семафоров:

  1. Бинарные семафоры.
  2. Счетные семафоры.

Бинарные семафоры – могут принимать значения 0 и 1. Пока одна задача выполняется, она выдает значение очереди 0 (красный цвет), как только она выполнится, она дает номер очереди 1 (зеленый цвет) тем самым разрешает работу второй задачи.  После выполнения второй задачи, мы выставляем опять  0 очередь, и переходим в режим ожидания когда снова появится разрешение.

Данный подход хорошо подходит для синхронизации между задачами или для синхронизации между задачей и прерыванием.

Счетный семафор – может принимать значение больше 1. данный семафор используется для счета событий.  То есть обработчик события будет каждый раз уменьшать значение семафора при появлении данного события, а обработчик будет увеличивать значение светофора при каждом выполнении.

Данный подход подходит, когда нам надо знать разницу между числом событий которые случились и числом событий которые были выполнены (обработаны).

Для проверки работы бинарного светофора мы с Вами подключим кнопку при нажатии которой у нас будет включаться светодиод, при повторном нажатии светодиод будет выключаться.

Программный код:

#include <Arduino_FreeRTOS.h>
#include <semphr.h>

Полную версию урока можно поссмотреть на сайте: https://texnohelp.com/arduino_freertos_lesson3/

Видео версию можно поссмотреть по ссылке: https://youtu.be/7kuZAooY94Q