Основная идея получения доступа к ресурсам микроконтроллерного устройства через MCT-протокол.
1 MCT-протокол позволяет получить доступ к выбранным ресурсам микроконтроллера (МК), и отображать результат в виде дерева конфигурации на вашем ПК или другом устройстве. При этом, вся информация необходимая для дерева конфигурации (ДК), хранится в памяти программ самого МК-устройства, занимая минимальный объем. Для обмена данными между МК-устройством и ПК может быть использован любой доступный интерфейс связи (UART, CAN, USB, Ethernet) на различных скоростях обмена. Кроме того, MCT-протокол, помимо функции обеспечения работы с ДК, легко может использоваться как сетевой интерфейс обмена данными между различными МК-устройствами, например, может быть сетевым протоколом для «умного дома». Для этого нет необходимости изучать документацию на устройства, потому что вся необходимая для связи информация уже содержится в ДК. Достаточно, зная серийный номер устройства (или широковещательный номер, если устройство одно в сети), загрузить ДК.
Как управлять микроконтроллерным устройством, используя MCT-протокол и дерево конфигурации?
Дерево конфигурации, после его загрузки на ПК, позволяет:
- Визуализировать хранящиеся в памяти МК-устройства названия узлов, названия параметров и другие атрибуты дерева конфигурации.
- Визуализировать численные значения параметров МК-устройства в различных типах данных (uint, int, float, hex, bool, …).
- Изменять значения выбранных параметров МК-устройства.
- Отображать короткие текстовые сообщения, хранящиеся в памяти МК.
- Отображать системное время МК-устройства в удобном формате 2.
- Перезагружать микроконтроллер устройства.
- Запоминать изменения параметров во внутренней памяти МК.
- Активировать выполнение различных действий на МК-устройстве (выполнять функции и куски кода программы).
- Производить отладку программы МК — выводить временные параметры и сообщения, помогающие отладке.
- Загружать прошивку МК (расширенный вариант MCT-конфигуратора для ПК);
- Управлять режимами работы MCT-конфигуратора на ПК (добавление кнопки или модальных окон с органами управления и т.п., требует навыков программирования в среде MCT-конфигуратора).
- Использовать MCT-конфигуратор для сбора данных или логирования;
- Использовать MCT-конфигуратор для построения графиков по данным из МК-устройства (расширенный вариант MCT-конфигуратора).
- Использовать MCT-конфигуратор как средство настройки МК-устройства для сетевого использования (например: изменять серийный номер устройства и т.д.).
Описание MCT-протокола и дерева конфигурации.
Документация по MCT-протоколу представлена в файле MkConfTree.docx и статье. Ведущий — приложение-конфигуратор (MCT-конфигуратор), загруженное на ПК, отправляет пакет запроса, а ведомый (МК-устройство) отвечает. Пакеты для обмена формируются по минимально необходимому количеству байт. Формат пакетов запроса и ответа содержат:
- Заголовок (2 байта);
- Идентификатор (серийный номер) МК-устройства (2 байта);
- Длину запроса / ответа (1 байт);
- Команду (1 байт);
- Поле данных (может быть нулевым);
- Контрольную сумму (CRC-16: 2 байта).
Так как поле длины запроса (ответа) в пакете один байт (см. MCT-протокол), это накладывает ограничения на максимальную длину (255 — 9 = 246 байт) поля передаваемых данных, в основном это имеет значение для Команды 4.
Протокол имеет всего пять команд: первые три команды используются для загрузки дерева конфигурации, а две оставшиеся команды для чтения и записи. Команда 1 — это получение количества узлов дерева конфигурации. При помощи команды 2 можно получить наименование узла и свойства узла. Команда 3 необходима для загрузки наименования и свойства переменной узла дерева конфигурации. Команда 4 нужна для чтения значений переменных узла конфигурации. Команда 5 — это перезапись значения переменной узла ДК.
Для того чтобы загрузить ДК из МК-устройства необходимо:
- При помощи команды 1 узнать количество узлов (например: 5 узлов).
- 5 раз отправить команду 2 и узнать наименования, свойства всех узлов (также номер родителя узла) и количество переменных в каждом узле.
- Затем для каждого узла при помощи команды 3 загрузить наименования и свойства всех переменных.
- Из полученных данных сформировать и отобразить дерево конфигурации (с учетом родительских узлов).
- Для получения и отображения значений переменных необходимо использовать команду 4, это позволяет организовать циклический опрос. Для отображения значений всех переменных (для 5 узлов), нужно периодически (5 раз) отправить команду 4.
При необходимости изменить значение выбранного параметра, можно использовать команду 5. Как работать с деревом конфигурации написано в статье.
На скриншоте показано дерево конфигурации для описанного в качестве примера двухканального выключателя.

Программное обеспечение для реализации MCT-протокола на периферийном устройстве и дерева конфигурации для ПК.
Реализацию взаимодействия устройства с MCT-конфигуратором можно посмотреть на примере двухканального выключателя. Для обеспечения взаимодействий через MCT-протокол необходимо:
- В проект программы МК-устройства добавить три файла: conf_init.h, mk_conf_tree.h, mk_conf_tree.c.
- В свои рабочие файлы проекта добавить функции поддержки MCT-протокола: (см. пример). В примере это: System_prop, System_get, System_set файл system.c и Control_prop, Control_get, Control_set в файле control.c.
- Добавить функции поддержки обмена данными (в примере это MKBUS_rx и MKBUS_send функции USART2_Proc в файле uart.c).
- Скачать архив программы MkConfTree_base для ПК.
- Для работы нужно распаковать архив и запустить файл MkConfTree_base.exe.
Подробнее файловая структура поддержки MCT-протокола описана в статье.
Более подробное описание взаимодействия периферийного устройства с деревом конфигурации на ПК описано в статьях:
Скриншот загруженного на ПК под Windows дерева конфигурации показан выше.
Архив приложения MCT-конфигуратора для ПК под Windows можно скачать здесь.
