Простой протокол передачи данных CLUNET 2.0 основан на оригинальном протоколе Алексея Авдюхина aka Cluster.
Bootloader готов к тестированию в папке demo_project/clunet_bootloader
. Понимаю, что без инструментария, а именно адаптера ПК->CLUNET, это весьма проблематично, поэтому его изготовлением на базе Sparkfun Pro Micro 16MHz и займусь в ближайшее время.
Видео с фрагментами передаваемых кадров с помощью USB-адаптера (скоро будут исходники)
## Основные отличия Ниже приведены основные отличия от оригинальной версии протокола: 1. **Иной принцип передачи** максимально приближенный к **CAN**, без пауз, используется битстаффинг после 5 одноименных переданных бит, что устраняет рассинхронизацию устройств сети, но в отличие от **CAN** не производит сэмплирований, а работает по внешнему прерыванию. 2. **Скорость передачи выше от 2 до 4 раз** в _зависимости от передаваемых данных_ при том же значении периода передачи (64 мкс); 3. Заголовок кадра и данные передаются **старшим битом вперед**, в оригинальной версии - младшим; 4. **Уровней приоритетов сообщения 8** вместо 4 (3 бита); 5. Нагрузка на центральный процессор снижена за счет более редкого (минимум в **2 раза**) вызова прерываний; 6. Для работы с сетью используется **всего одна нога** микроконтроллера (можно применить и в оригинале, надо бы сделать **Pull Request**). Да, и больше **нет опции `WRITE_TRANSISTOR`**, оба типа подключения работают с одним и тем же вариантом прошивки; 7. Немного **изменен программный интерфейс** (незначительно), так что использование вместо оригинала повлечет _небольшую_ доработку.- Протокол передачи использует доминантно-рецессивный принцип, использованный в CAN. Все устройства расположены на одной шине и имеют одинаковые права, то есть выделенного мастера нет.
- Алгоритм использует активную защиту от коллизий, проводя арбитраж и отдавая право передачи данных устройству с более высоким приоритетом. Поле приоритета занимает 3 бита, что позволяет назначать 8 уровней приоритета. При равенстве приоритетов поле арбитража расширяется на все тело кадра.
- Алгоритм обеспечивает синхронизацию операций чтения и передачи по переднему фронту доминантного сигнала. Это обеспечивает превосходные результаты при чтении и арбитраже на шине при активном конкурентном использовании несколькими устройствами одновременно.
Шина CLUNET 2.0 использует для передачи и приема данных всего один провод и одну ногу микроконтроллера (должна поддерживать внешние прерывания). Организовать и подключиться к ней возможно 2 способами не изменяя прошивку устройства: