Всем привет! Подскажите как реализовать в скетче ардуино данную задержку Break ? (в моем случае необходимо 14 битовых интервалов, из которых 13 бит это лог 0, и 1 бит лог 1). Break (Материал из Википедии) Некоторые UART обладают возможностью посылать и принимать специальную посылку, называемую Break. Она состоит из непрерывного нулевого состояния линии длительностью заведомо больше минимальной посылки, обычно 1,5 минимальных посылки (для 8N1 это 15 битовых интервалов). Некоторые коммуникационные протоколы используют это свойство, например, протокол LIN использует Break для обозначения нового кадра. Написал вот такой примитивный скетч... как мог byte Sync[] = {0x55}; // байт синхронизации byte ID[] = {0x9C}; // байт адреса устройства #define rxPin 0 #define txPin 1 void setup() { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); digitalWrite(txPin, LOW); delayMicroseconds(675); // расчет из 52 мкс длина бита х 13 бит длины Serial.begin(19200); delayMicroseconds(135); Serial.write(Sync, 1); delayMicroseconds(565); Serial.write(ID, 1); } void loop() { } Далее подключив лог анализатор получил вот такую картинку... вроде бы все по настоящему, но лог. анализатор не расшифровывает как протокол, исчезли Sync, ID:0x1C пробовал по разному, задержка между байтов и тд.. результатов нет, и устройство на шине тоже не откликается. наверное дело в правильной программной реализации Break?
ну, на верхней осциллограмме сразу после break идет "1" длительностью два бита. На нижней такого нет.
Код (C++): ... digitalWrite(txPin, LOW); delayMicroseconds(675); // расчет из 52 мкс длина бита х 13 бит длины digitalWrite(txPin, HIGH); delayMicroseconds(52); // там сколько вам надо ??? Serial.begin(19200); Serial.write(Sync, 1); ... не ? По логике - после команды Serial.begin(19200) - прямое дрыганье (Бит-Бенг) выводом Тх не возможно. Будет конфликт в программе. Поэтому надо заранее "отдрыгать".. На рисунках - двунаправленный обмен по ОДНОМУ проводу. Ваше устройство тоже такое ? Тогда сначала над железом думать надо. Чтобы освобождать линию вовремя.
Регистр порта дрыгаться будет. Но так как нога физически отключена от регистра, то дальше регистра это не уйдет.