Jump to content

    

pruwait

Новичок
  • Content Count

    3
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. В общем, пинок в нужном направлении сработал. Я не нашел на Ардуино библиотек, которые поддерживают uart.break, но нашел способ отправлять пакет с данными 0x00, изменив битрейт. При скорости 17400 отправка 0x00 выглядит как нужный мне break на 19200. Дальше переключаю на 19200 и отправляю основной пакет. Между break и пакетом получился интервал 122us (Arduino Mega) вместо положенных 52us как в оригинальном сигнале. Но контроллер мотора это всё съел и открылся по команде!
  2. Вот это то, что я не знал об UART. Спасибо за подсказку! Проработаю.
  3. Привод Nice для распашных ворот имеет свой протокол обмена BusT4. Два устройства (А и Привод) общаются через rx и tx. Команда "Стоп" от А к приводу выглядит как стандартный uart 19200 8n1. Длина импульса условного бита примерно 52us, то есть каждый фрейм должен быть примерно 520us. (стоп бит + 8 + старт бит =10*52=520). Но перед пакетом всегда добавлен заголовок, который не укладывается в 8n1. Выглядит как более длинный импульс, длиннее обычного фрейма на 1 бит! Далее следует ответ от мотора, что он всё понял и исполняет. И в этом ответе также есть нестандартный импульс. Только ещё более длительный и с паузой после него. А дальше стандартный UART 8n1. Часть байт в посылках удалось быстро понять, это адрес спросившего, адрес получателя, данные, crc дважды в виде количества байт в посылке минус 3 и что-то ещё. Если устройство А спрашивает у мотора номер прошивки, то в посылке добавляются байты данных, в которых есть ASCII символы текущей прошивки. Желаю отправлять контроллером вроде ESP8266 или каким другим команду, которая выглядит как запрос от устройства А. Сформировать UART 8n1 могу и на графике он такой же как оригинал. А вот с добавкой импульса беда. Уже голову сломал, пытаясь понять, как туда импульс этот добавить. Конечно же, без импульса мотор меня не слушает и команды не выполняет. Нужна подсказка.