FLProg: Редактор пользовательских описаний контроллеров

Предыдущий урок здесь.

Открываем программу FLProg. В меню «Инструменты» выбираем пункт «Редактор пользовательских описаний контроллеров».

Открывается окно редактора описаний.

Пользовательские описания можно объединять в библиотеке с любой глубиной вложенности. Поэтому сначала создадим библиотеку описаний.

Зададим имя библиотеки.

После чего создадим в библиотеке описание контроллера.

И назначим ему имя:

При создании описания контроллера мы сразу попадаем на ветку общих параметров.

Здесь мы можем изменить имя, задать тип центрального процессора, задать размер EEPROM, изменить номер версии описания.

Поскольку плата ShloTiny сделана на базе контроллера ESP8266 то его и выбираем. При выборе контроллера автоматически проставляется соответствующий ему объём EEPROM. При необходимости это значение можно изменить. Номер версии по умолчанию для нового описания устанавливается 1.

В будущем при изменении существующих описаний, рекомендуется изменять его в сторону увеличения. При использовании данного описания в проекте, программа будет сравнивать версию описания в проекте и в библиотеке. Если номер версии описания в библиотеке больше чем в проекте, в меню «Проект» программы появится пункт для обновления описания в программе. Если наоборот – то появится пункт для обновления описания в библиотеке. Ну а если в библиотеке вообще не будет найдено описания контроллера применяющегося в проекте – в том же меню появится пункт для внесения описания из проекта в библиотеку.

Так же в этой ветке можно написать текстовое описание контроллера, помогающее при его выборе.

Для применения внесённых изменением перед переходом на другую ветку параметров контроллера необходимо нажать кнопку «Применить». Если этого не сделать, изменения не будут сохранены.

Теперь рассмотрим принципиальную схему платы ShloTiny.

У платы имеется три цифровых входа, три цифровых выхода, аналоговый вход, и вход для сенсора.

Итого восемь выводов платы.

Переходим в редакторе на ветку «Выводы контроллера» и задаём количество выводов, не забывая после этого нажать кнопку «Применить».

Программа сформирует необходимое количество выводов. Переходим на первый из них.

На этой ветке, можно прописать альтернативное имя вывода, которое будет выводится в программе.

В случае его отсутствия, в программе будет выводится надпись PinN где N номер вывода в списке выводов. Я рекомендую записывать в поле альтернативного имени надпись к нему на плате.

Это облегчит понимание, к какому выводу производится обращение. Для описываемой платы занесём туда значение Input1 в соответствие с принципиальной схемой.

Так в этой ветке можно прописать индивидуальное описание вывода, например для указания особенностей его применения.

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

После внесения изменений не забываем нажать кнопку «Применить». По такому же принципу поименуем остальные выводы.

В той же ветке основных параметров вывода к нему добавляются выполняемые им функции.

Каждому выводу можно назначить следующие функции.

  • I2C – функция одного из выводов шины I2C (SDA или SCL).
  • SPI – функция одного из выводов шины SPI (MISO, MOSI, SCK, SS).
  • UART – функция одного из выводов интерфейса UART (RX или TX).
  • Функция аналогового входа
  • Функция аналогового выхода (в программе FLProg пока не используется, задел на будущее).
  • Функция цифрового входа/выхода.

Назначим выводу 1 функцию цифрового входа/выхода. При назначении выводу новой функции (ещё не настроенной) в дереве контроллера появится ветка «Ошибки» и весь путь до ветки некорректной функции окрасится красным. На ветке «Ошибки» можно посмотреть список ошибок найденных в описании контроллера.

В данном случае на вводе 1 в функции «Цифровой вход/выход» не задан номер этого ввода как цифрового. Переходим на ветку данной функции (в будущем я планирую сделать прямой переход на нужную ветку при клике на ошибку).

Согласно принципиальной схеме платы вывод «Input1» подключен к пину GPIO2 контроллера. Это значение вводим в поле «Номер цифрового входа».

При компиляции проекта это значение будет вставляться в код. Поскольку использование данного ввода в качестве вывода не предусмотрено, то снимаем чекбокс «Может использоваться как выход».

Как всегда нажимаем кнопку «Применить». Таким же образом настраиваем остальные два цифровых входа.

Затем переходим к выводу аналогового входа «ADC1» и добавляем ему функцию «Аналоговый вход».

В настройках этой функции необходимо указать номер данного вывода как аналогового входа. В соответствии со схемой это 0 (в ESP8266 он один).

Затем переходим к настройке вывода «1WIRE». Здесь добавляем к нему функцию цифрового входа/выхода, но запрещаем его использование как входа, так и как выхода. В результате он будет доступен для выбора только в блоках сенсоров, и не доступен при создании входов, выходов.

Настройка выходов «К1» — «К3» аналогична настройкам входов «Input1» – «Input3» только в случае выходов мы запрещаем им использоваться в качестве входа.

Переходим к ветке «Изображения». В ней мы можем добавить загружаемые в описание контроллера изображения, например с внешним видом контроллера, распиновкой и т.д.

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

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

Изображение добавляется с помощью кнопки «Добавить изображение».

После выбора и загрузки изображения (поддерживается только формат PNG), для каждого изображения создается отдельная ветка в дереве.

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

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

Переходим к ветке «Стандартные блоки».

На этой ветке показаны блоки, которые могут быть представлены в библиотеке стандартных блоков программы в соответствии с текущими настройками программы.

Что это значит. Часть стандартных блоков программы предназначены только для определённых видов ЦП. И их наличие зависит от выбранного процессора.

Так же блоки, рассчитанные на работу с SPI, I2C, UART появятся в этом списке, только если на выводах контроллера будут добавлены соответствующие функции.

Блоки, рассчитанные на работу с EEPROM, появятся, только если размер EEPROM заданный на ветке общих параметров контроллера будет больше нуля, или на выводах контроллера будет добавлена функция I2C.

По умолчанию, все блоки в библиотеке запрещены к использованию (отмечены оранжевым цветом).

Разрешить к использованию можно как отдельный блок, так и целиком папку блоков, выделив необходимую ветку и нажав кнопку «Разрешить», или из контекстного меню.

При разрешении блока или папки блоков к показу в программе они окрашиваются в черный цвет.

Запрещение к показу блока или отдельной папки производится аналогично.

В папке, в которой разрешены к показу не все блоки, отмечаются тремя звездочками перед именем и после.

Запретим к использованию в программе моторы, часы реального времени, дисплеи, блоки ИК управления, датчики (кроме датчиков DS18B20 и DHT22 –поскольку разработчик платы пока заявил только об их поддержке), микросхемы расширений и пьезо динамик.

То же самое сделаем и для языка LAD

Не забываем после внесения изменений применять их.

Остальные ветки описания контроллера мы рассмотрим в следующем посту, пока текущих настроек достаточно для использования конкретно этой платы в программе FLProg.

Пока только коротко скажу что ветка «Специальные блоки» служит для загрузки в описание пользовательских блоков, которые будут показаны в библиотеке стандартных блоков в программе при использовании данного контроллера.

Ветка «Специальный код» служит для записи кода, который всегда будет вставляться в компилируемый код,

а ветка «Специальные библиотеки», служит для загрузки в описание контроллера библиотек, которые будут, выгружается в папку \libraries ArduinoIDE, с которой работает программа.

После всех изменений, сохраняем библиотеку описаний контроллера.

Ссылка на источник: https://habr.com/ru/post/467007/