FLProg+nooLite (продолжение)

03e6b4c20c4a49e0a0d19b9bceba59b1.png

В предыдущем посте я рассказал о реализации поддержки оборудования nooLite в программе FLProg. Моим упущение было не рассказать об одной очень удобной функции этого оборудования, которое позволяет подключить сразу несколько трансиверов к одному порту UART и обращаться с ними независимо. Я решил исправить это упущение.
Схема подключения нескольких трансиверов к одному порту UART (взято из документации на трансивер) выглядит так:

f348e2c01e29452a9ed9d4fd209c51f1.PNG

Особенностью такого включения заключается в использовании входов SE трансиверов. Если на этот вход подать 0 V то трансивер не будет реагировать на команды, передаваемые через UART, а если подать 3–5V, то команды будут исполняться.
В этом уроке мы будем включать, и выключать несколько нагрузок с помощью разных трансиверов.
Схема тестового стенда:

4f7a5295bd724a10843f4b3408fccebd.PNG

Создаём новый проект, и в нем конфигурируем входа — выхода контроллера.
Сначала создаём три входа для кнопок:

e2bf152b97444543b43fa1c5cb98357d.PNG

Поскольку у нас кнопки подключены между GND и входом включаем подтягивающие резисторы, ну и для четкого срабатывания включаем защиту от дребезга.

a2820b52e78d4ef9a73794f66fba7eab.PNG

Затем создаём три выхода для управления трансиверами.

b3dfbb9e6e534963a821a1c4a0e22499.PNG

58564539235149909ce731827de8005b.PNG

Затем создаём шесть переменных для команд управления.

691c829eacb348e4a030d52ca9912aa1.PNG

ef248aa401c24a1baa51a58dfeddfa92.PNG

Теперь перетаскиваем на схему первый вход, два блока R-триггера (Библиотека блоков — папка «Триггеры»), а так же две переменных — «Команда на включение нагрузки 1» и «Команда на отключение нагрузки 1». Затем соединяем их в соответствии со схемой:

652b271c20f1462b8a771f8da2940805.PNG

Как она работает? Поскольку у нас кнопка включена между GND и входом, а так же включён подтягивающий резистор то при отпущенной кнопке на выходе блока входа будет 1, а при нажатой кнопке — 0. Верхний R-Тригер выделяет передний фронт (переход от 0 к 1) — то есть момент отпускания кнопки и создаёт в переменной «Команда на отключение нагрузки 1» короткий импульс на отключение нагрузки. Нижний R-Триггер в виду того что у него инвертирован вход производит выделение заднего фронта (переход от 1 к 0) — то есть момента нажатия кнопки. И так же формирует в этот момент короткий импульс в переменной «Команда на включение нагрузки 1».
Теперь повторим эту схему для остальных входов.

15ebc310e73f4d07a15a866444ae3015.PNG

Назовём эту плату «Выделение фронтов» и создадим ещё одну. Сразу можно назвать её — «Управление трансиверами». Перетащим на неё переменные «Команда на включение нагрузки 1» и «Команда на отключение нагрузки 1», блок OR (Библиотека элементов — папка «Базовые элементы») и выход «Включение трансивера 1». Затем соединим их в соответствии со схемой:

b6adc161457d4f85851d1fb5b4e4ccb7.PNG

Как она работает? При наличии 1 в переменной «Команда на включение нагрузки 1» ИЛИ в переменной «Команда на отключение нагрузки 1» на выходе «Включение трансивера 1» появится лог 1 (ТО есть трансивер 1 будет отрабатывать подаваемые на него команды). Повторим эту схему для остальных трансиверов.

1da8bd4beaa64bc7b53f82e1ced5917c.PNG

Создадим новую плату «Отправка команд».

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

Перетащим на нижнюю плату все переменные команд включения, блок OR (Библиотека элементов — папка «Базовые элементы»), и блок управления трансивером nooLite (Библиотека элементов — папка «Разное»). Соединим их.

849dfa927ea14e939da8198dd108fd62.PNG

В соответствии со схемой при появлении в любой из переменных лог.1 будет происходит отправка команды на включение нагрузки. Настроим блок управления трансивером nooLite на передачу этой команды.

ca0003bc2bef4787b90e5c3f58c091ea.PNG

Повторим эту схему для отправки команды на выключение.

a6a14f24d1ba4f4cb16c003643e6833b.PNG

Настроим блок.

3261393de1c54306b12b350785c10e94.PNG

Ну, вот и всё. Спасибо за внимание.

© Geektimes