Коллеги, хотелось бы поговорить о дистанционном управлении синтезатором с прмощью МК. Имеется в виду, как изменение частоты синтезатора, или запись новой частоты в МК, так и смена программы.
Те программули, которые приводились мною выше, предполагают наличие кнопок и светодиодов в непосредственной близости от синтезатора. С другой стороны, если синтезатор на мачте или на крыше, то в пургу неохота туда лазить...
Ну вот, предлагаю простой протокол обмена центрального компьютера (хост) и микроконтроллеров (МК), выполняющих функции связи и управления.
Хост и МК обмениваются пакетами фиксированной длины. Обмен всегда начинает хост. МК обязательно отвечает квитанцией. Обмен может быть осуществлён с помощью любой полудуплексной линии связи. Все байты в пакете передаются без задержек между байтами. Каждый пакет заканчивается пустым интервалом, как при передаче одного байта.
Пакет от хоста к МК состоит из 14 байт.
1) Два байта ЗАГОЛОВКА 0x07,0xBB - начало пакета.
2) Один байт АДРЕСА МК 0х01..0xFF - уникальный адрес в системе.
3) Один байт КОМАНДЫ 0х01..0xFF - предписание МК, какую исполнить функцию.
4) Восемь байт ДАННЫХ - зависит от адреса и от команды.
5) Два байта циклической контрольной СУММЫ CRC - для определённости возьмём CCITT-16.
Пакет от МК к хосту также состоит из 14 байт. Заголовок, адрес и команда остаются теми же, а вот данные и CRC могут быть другие.
Если заголовок или контрольная сумма не совпадают, или нет такого адреса или команды - пакет игнорируется. Точно также и при разрыве пакета.
Пример.
Есть устройство на МК ATtiny25, которое управляет синтезатором.
Адрес 0х01. Обмен по УАРТ на скорости 115200 бод. Передатчик подключен ко всем МК звездой, возможно через буферные элементы. Приемник подключается к МК с помощью мультиплексера.
Список команд
0х01 - записать в синтезатор код частоты под номером 1 (байт1=0х01), расположенным в еепром.
0х01 - записать в синтезатор код частоты под номером 2 (байт1=0х02), расположенным в еепром.
. . . . . . . . . .
0х01 - записать в синтезатор код частоты под номером 5 (байт1=0х05), расположенным в еепром.
0х02 - записать в синтезатор код частоты под номером 6 (байт1=0х06), расположенным во флеши.
. . . . . . . . . .
0х02 - записать в синтезатор код частоты под номером 60 (байт1=0х3С),
0х03 - записать в еепром код частоты под номером 2 (байт1=0х02, байт2-байт5 - код).
0х04 - записать во флеш код частоты под номером 10 (байт1=0х0A, байт2-байт5 - код).
0х05 - записать во флеш машинный код инструкции (байт1-байт2=адрес в памяти, байт3-байт4 - код инструкции или, возможно, две инструкции).
Протокол может быть применен для любого устройства в системе связи, например, в опорно-поворотном устройстве.
Прошу высказать конструктивную критику, а также ваши пожелания и предложения.