Среди многообразия средств программирования микроконтроллеров AVR не так давно появилась российская система программирования на языке функциональных блоков (Function Block Diagram) под названием Horizont-Configurator. Configurator является составной частью программного комплекса Horizont, представляющего SCADA-систему (Supervisory Control And Data Acquisition System — Система оперативного диспетчерского управления и сбора данных).

Язык FBD очень прост в освоении и удобен как для схемотехников, не имеющих специальной подготовки в области программирования, так и для начинающих осваивать мир электроники, автоматики и робототехники. Весь процесс программирования в FBD-системе заключается в соединении линиями связи готовых элементарных блоков. Практически каждый функциональный блок в Horizont-Configurator имеет графическое изображение, принятое при разработке функциональных схем электронных устройств. Блоки представлены в виде прямоугольников, внутри которых имеется обозначение функции, и являют собой операции над входными переменными.

Линии связи, которыми соединяют функциональные блоки, указывают распространение сигнала. Функциональная диаграмма системы управления, построенная в Horizont-Configurator, имеет сходство с электрическими схемами и может быть откомпилирована в файл прошивки для микроконтроллера AVR.

Система программирования, позволяющая строить программу из набора стандартных логических элементов, очень удобна, если Вы хотите сделать BEAM-робота, но предварительно решили проверить логику разработанной вами схемы. Нарисовать схему в программе Horizont-Configurator гораздо быстрее, чем собрать ее даже на макетной плате. Использование Horizont-Configurator также удобно при отладке или проверке различных вариантов схемы BEAM-робота на реальной платформе. Конечно, при исполнении BEAM-схемы на микроконтроллере потеряются ее аналоговые свойства, но основная логика работы будет вполне видна. Особенно удобно использовать Configurator при разработке многотактных конечных автоматов, являющихся центром управляющей системы BEAM-роботов со сложным поведением.

Для того, чтобы начать работу с Horizont-Configurator, необходимо зайти на страницу Downloads на официальном сайте программы, перейти в раздел "Configurator" и скачать установочный файл setup.exe (дистрибутив программы также можно скачать с этого сайта по ссылке horizont-configurator_for_avr_setup.exe). Также на странице Downloads находятся примеры проектов "Мигание светодиодом" и "Задержка сигнала".

Установив Configurator, можно загрузить примеры проектов, посмотреть на работу программы, откомпилировать примеры (меню "Проект" -> "Конфигурация -> "Создать файл конфигураций", затем меню "Проект" -> "Конфигурация -> "Собрать проект"). Пока среда Horizont-Configurator еще находится в стадии разработки, но уже представляет собой удобный и гибкий инструмент, с помощью которого можно создавать самые разнообразные прошивки для микроконтроллеров AVR.

Элементы, доступные в Horizont-Configurator:

  • Порты микроконтроллера (сразу конфигурируются как входы или выходы)
  • Логические блоки (НЕ, И, ИЛИ, Исключающее ИЛИ)
  • Логические константы
  • Триггеры (RS, SR, D, DC, RTRIG, FTRIG)
  • Логический генератор
  • Генератор импульсов
  • Блоки для работы с числами (Арифм. операции, Сравнение и т.д.)
  • Таймеры
  • Счетчики
  • Индикаторы
  • Элементы памяти

В качестве тестового проекта попробуем создать прошивку для простого робота, описанного в статье "Робот с фотодатчиком для следования по линии".

В меню Файл выберем "Новый проект", дадим ему название и зададим тип микроконтроллера, например, ATMega8. Нажмем несколько раз "применить" в появляющихся окнах.

После проделанных действий у нас появится поле для нашего проекта, а в левой панели необходимые элементы. Теперь перетащим элементы на рабочее поле. Нам понадобятся: Вход PinD1 из раздела "Порт D", Выходы PinC1, PinC2, Pin3, PinC4 из раздела "Порт C", две логические константы из раздела "Логические блоки" и Логическое НЕ из того же раздела. Развернуть элементы зеркально можно в правой панели "Свойства" с помощью изменения свойства "Turn" на "180 град".

Соединим элементы сигнальными линиями. В панели инструментов есть кнопки переключения между режимами выделения и рисования соединительных линий. Если объекты отказываются соединиться, то можно поступить следующим образом: нарисуйте соединительную линию, а затем придвиньте к ней элемент (они соединятся).

Зададим значения для логических констант последовательно выделив их и изменив значение "Value" в правой панели "Свойства" на "true".

Осталось откомпилировать получившуюся функциональную диаграмму. В меню Проект выберем "Конфигурация -> "Создать файл конфигураций", а затем "Конфигурация -> "Собрать проект". После проделанных действий у нас появится файл с прошивкой для микроконтроллера. Перейти в папку с получившимися файлами можно выбрав "Конфигурация -> "Открыть созданный проект". Среди списка файлов можно без труда найти файл "имя проекта.hex" — это и есть файл прошивки. Загрузить файл в микроконтроллер можно, например, с помощью программы-загрузчика PonyProg2000.

В качестве еще одного тестового примера попробуем сделать систему управления роботом для соревнований Кегельринг из статьи "Робот для соревнований".

Нам понадобятся: Вход PinD1 из раздела "Порт D", Выходы PinC1, PinC2, Pin3, PinC4 из раздела "Порт C", два Логических НЕ и Триггер FTRIG из раздела "Логические блоки", два Таймера с задержкой отключения из раздела "Таймеры/Счетчики" и Счетчик милисекунд из того же раздела.

Счетчик милисекунд необходим для нормальной работы таймеров (он использует внутренний Timer0 микроконтроллера). Установим его "Делитель" на 1 MHz в правой панели. Триггер FTRIG отслеживает падающий фронт логического сигнала.

При изменении состояния входа "FTRIG" с 1 на 0, происходит формирование короткого импульса на его выходе. Данный импульс поступает на входы блоков Таймеров с задержкой отключения, данные блоки формируют необходимые по длительности интервалы высокого уровня на своих выходах. Сигнал с вывода первого Таймера с задержкой отключения поступает на выходы PinC1 и PinC2, управляющие первым мотором. Блок "Логическое НЕ" необходим для реализации инверсии мотора. Аналогичным образом работает другая цепь Таймера с задержкой отключения, которая управляет вторым мотором. Интервалы для таймеров можно установить изменив свойство "T" в правой панели свойств. Зададим значение равное 1800 милисекунд для первого таймера и 2400 милисекунд для второго. Таким образом, при изменении состояния входа нашей схемы с 1 на 0, в тот момент, когда робот наткнется на черную ограничительную линию, триггер сформирует короткий импульс, запускающий таймеры. Направление вращения моторов инвертируется и робот начнет двигаться назад. Когда первый таймер перестанет работать, другой таймер еще 600 милисекунд будет обеспечивать вращение второго мотора в обратном направлении и робот повернется на небольшой угол. Когда и второй таймер закончит свою работу, робот снова поедет в прямом направлении.

В завершение краткого рассказа о новой среде разработки, следует добавить, что Horizont-Configurator имеет достаточно хорошую поддержку на youtube в виде целого ряда обучающих роликов. Ссылка на youtube-канал есть на официальном сайте программы.

Matrix Multimedia Flowcode 6

Предисловие С. Степанова

Еще совсем недавно фирма Matrix Multimedia представляла свой программный продукт Flowcode только как «один из самых передовых в мире графических языков программирования для микроконтроллеров серий PICmicro, AVR и ARM». Растущую популярность Flowcode, в первую очередь среди начинающих, обуславливают наглядность алгоритма в виде блок-схем (flow-chart) и возможность быстрого получения работоспособного кода для микроконтроллера без углубления в его архитектуру.

С выходом в сентябре 2013 г. очередной 6-й версии Flowcode разработчики обозначили новый вектор развития программы: «Программа Flowcode позволяет вам быстро и легко разрабатывать сложные электронные и электромеханические, управляющие и измерительные системы с использованием микроконтроллеров на сложных промышленных интерфейсах или на Windows совместимых персональных компьютерах».

Все это наглядно показано на представленной ниже диаграмме к пользовательскому интерфейсу Flowcode 6:

Предлагаем вам ознакомиться с фрагментом новой книги В.Н. Гололобова "Flowcode 6. Заметки к появлению новой версии". Полностью эта книга опубликована в «Радиоежегоднике» вып. №29.

Flowcode. К появлению шестой версии

Не так давно появилась шестая версия программы Flowcode. К использованию графического языка программирования и любители, и профессионалы относятся по-разному, кому-то нравится, кому-то нет, между тем популярность программы Flowcode растет.

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

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

Получить пробную версию программы Flowcode 6 можно на сайте Matrix Multimedia: http://www.matrixmultimedia.com/index.php, достаточно зарегистрироваться на сайте, чтобы активировать программу после установки. Установка проста и ничем не отличается от установки любой программы в Windows. С первым запуском программы после установки потребуется ввести ваш логин и пароль, которые вы использовали при регистрации. С приобретением программы больше проблем. Как заявлено производителем, расчет только в валюте Великобритании. Правда, есть возможность обратиться к региональным распространителям программы. Но начинать лучше с демонстрационной версии, чтобы убедиться в необходимости покупки.

Вот, что пишут о программе ее создатели:

Программа Flowcode позволяет вам быстро и легко разрабатывать сложную электронику и электромеханические системы. Инженеры используют Flowcode для разработки систем управления и измерения на базе микроконтроллеров, сложных индустриальных интерфейсов или совместимых с Windows персональных компьютеров.

Разработка

Создайте модель электронной системы, используя разделы System designer и Component library. Затем разработайте программу для управления системой. Dashboard designer позволяет вам разработать HMI.

Человеко-машинный интерфейс (ЧМИ) (англ. Human machine interface, HMI) — широкое понятие, охватывающее инженерные решения, обеспечивающие взаимодействие человека-оператора с управляемыми им машинами (Wiki).

Сomponent creator позволит вам собрать части и протестировать движение электромеханической системы.

Симуляция

Симулятор покажет вам, как ваша система будет работать. Трехмерный симулятор покажет движение вашей электромеханической системы под воздействием электронных стимулов. Dashboard HMI покажет реальные общие значения. Интерфейс Application Program позволит вам соединить вашу встроенную систему с функциями PC и инструментами других производителей.

Внутрисхемный тест

Скомпилируйте вашу разработку в микроконтроллер или соедините его с интерфейсом PC. Пройдите программу в чипе и одновременно на экране. Dashboard HMI поможет вам наблюдать воплощение вашей системы, а API позволит вам интегрировать данные от сторонних производителей инструментов в вашу систему.

Реализация

Когда вы убедились, что с вашей разработкой все в порядке, воспроизведите вашу систему для использования другими. Если вы полноправный автор, вы можете изготовить один или сотни тысяч устройств. Используйте автоматический документатор, чтобы помочь другим лучше разобраться с вашим проектом.

Подготовил: Гололобов В.Н. по заказу Радиоежегодник

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

И одна из образовательных задач, которая может быть решена с помощью этих современных инструментов – постепенный переход от визуального программирования к текстовому. Сегодня я хотел бы рассказать о разнообразных визуальных средах и их возможностях в этом плане.

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

  1. Возможность работы с универсальными микроконтроллерами, а не только лишь с частными специализированными контроллерами. В первую очередь нас интересует Arduino Uno как самый распространённый и доступный контроллер на сегодняшний день, во вторую – BBC Micro:bit как представитель универсальных образовательных микроконтроллеров будущего.
  2. Мгновенный отклик при создании программ. Ребенок должен иметь возможность сразу увидеть, что произойдёт, если записать логическую единицу в порт, либо выполнить какую-либо иную команду (без необходимости ждать, пока откомпилируется и загрузится программа). Особенно это важно на начальных этапах обучения. Реализована данная возможность может быть несколькими способами.
  1. Работа в интерактивном режиме с предварительной загрузкой специальной прошивки на микроконтроллер. Сама программа при этом остаётся работающей на компьютере, а прошивка лишь исполняет полученные от него команды. Данный вариант имеет множество достоинств, так как в результате нам становится доступной многозадачность, управление дополнительными игровыми персонажами (спрайтами Scratch) и т.д. Но существенным недостатком является значительное время отклика системы на изменение условий. Сигнал от датчика вначале должен добраться до компьютера, после этого компьютер определит необходимое управляющее воздействие, и лишь спустя какое-то время обратный сигнал возвратится к устройству. В данном обзоре мы будем сравнивать время реакции системы при использовании разных программных сред.
  2. Работа с микроконтроллерами, которые интерпретируют программы, написанные на языках высокого уровня. В данном случае компилировать программу не требуется, её загрузка в память контроллера происходит очень быстро, в некоторых случаях прямо в процессе создания.
  3. Поддержка программной эмуляции работы устройства. Можно посмотреть, как (предположительно) будет работать реальное устройство, исполняя написанный код, проверить всё на эмуляторе вместо того, чтобы загружать в устройство на самом деле.
  • Программная среда должна предоставлять возможность создания программ для автономной работы контроллера, в противном случае она просто не может называться инструментом, выполняет исключительно учебно-ознакомительные функции, и непонятно, зачем её использовать, когда есть альтернативы.
  • Должна быть предусмотрена возможность лёгкого переключения между интерактивным режимом работы и режимом создания автономных программ. Подготовить микроконтроллер к использованию должно быть просто.
  • Желательно. Использование подключаемых расширений с дополнительными визуальными блоками, поддерживающими разнообразное периферийное оборудование сторонних производителей, а также прочие дополнительные возможности.
  • Желательно. Возможность создания собственных графических блоков, расширяющих функциональность (с использованием текстового программирования, например), возможность включения произвольных фрагментов текстового кода в графический скрипт.
  • Желательно. Возможность загрузки текста программы, сгенерированного из графического скрипта, внутрь редактора для дальнейшей доработки.
  • Пару лет назад всем перечисленным выше требованиям соответствовала лишь одна единственная программная среда – mBlock for PC, разработка компании Makeblock, а также, с некоторой натяжкой, Snap4arduino. Менее года назад на сцене появились другие программные продукты, но они поначалу были весьма сырыми, демонстрировали недостаточную производительность и функциональность. Сегодня уже можно сказать, что у программы mBlock есть серьёзные конкуренты. Однако у каждого продукта существуют свои достоинства и недостатки.

    Итак, список рассматриваемых сегодня программных средств.

    1. mBlock v.3.4.11
    2. mBlock v.5.0.0 RC
    3. Snap4arduino v.1.2.7
    4. MindPlus v.1.2.1
    5. KittenBlock v.1.8.1
    6. MakeCode for Micro:bit (v. 1.2.13 / 4.4.7 / 2.1.1 )
    7. MicroBlocks v.0.1.27 (alpha)

    Программные среды, позволяющие работать с платой Arduino Uno в интерактивном режиме, тестировались на производительность с замером трёх показателей: скорость чтения состояния портов, скорость отправки команд на изменение состояния портов, интегральная скорость (чтение/запись). Описание процедуры и программные скрипты будут приведены далее.

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