Сергей Борщ 143 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 час назад, artemkad сказал: Очевидно, что момент "master samples" должен попасть на середину первого принимаемого бита UART. Зачем? В конце "master samples" прием уже можно заканчивать. Если мы говорим об устройстве, которое слушает. Впихнуть ответ - да, задача посложнее. Реализация ведущего (master) значительно проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 92 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 3 часа назад, Сергей Борщ сказал: Зачем? Меньше частота тактирования, меньше требования по задержкам, нет необходимости в еще одном таймере для отправки остальных бит 1-Wire т.к. прием остальных бит UART отрабатывает необходимый межбитный интервал 1-Wire. Т.е. после завершения приема/отправки текущего байта можно сразу отправлять 0xFF для приема следующего бита. 3 часа назад, Сергей Борщ сказал: Если мы говорим об устройстве, которое слушает. Мы говорим о мастере который слушает. В частности первый фронт(минимум 1мкс) формирует именно он. Т.е. чтение одного бита 1-Wire выглядит как отправка 0xFF в UART с одновременным чтением того, что там на проводе получилось. Если прочитали те же 0xFF значит ведомое устройство выдало "1", если прочитали что-то другое - "0". Слэйвы на 1-Wire это всякие прибамбасы заводского исполнения(таблетки, датчики, память, часы) и дрова Ардуино работу в режиме слэйва точно не поддерживают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 40 минут назад, artemkad сказал: Мы говорим о мастере который слушает Понятно. Тогда да, время байта должно быть примерно 15+45 мкс (кстати, там есть еще и допуски в документации на 1-wire) и никаких сложностей с реализацией ведущего нет. Но в первом сообщении исходной темы была поставлена задача написать ведомого (slave) и остальные участники продолжают обсуждать именно ее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 92 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 1 час назад, Сергей Борщ сказал: Тогда да, время байта должно быть примерно 15+45 мкс ... Не совсем... 15+45(+1) мкс это минимальное время. Дыры между битами могут быть до неприличия громадными(больше 1мкс и ничем не ограничено сверху). А вот прочитать бит надо гарантированно за первые 15мкс иначе слэйв может и отпустить (в конечном итоге это его собственное питание, так что держать ему линию в нуле лишнее время нет резона). Т.е. первый бит по любому должен уложиться в 15 мкс интервал, а остальной хвост можно отрегулировать числом бит в байте т.е. примерно стартовый, первый + еще 6 бит( (45+1мкс)/7,5мкс) или больше. 1 час назад, Сергей Борщ сказал: Но в первом сообщении исходной темы была поставлена задача написать ведомого (slave) и остальные участники продолжают обсуждать именно ее. Да, тут мы слегка в оффтоп залезли и не уверен, что остальные обсуждают именно ее. Иначе UART вообще-бы не всплыл потому как он тут совсем никоим боком, потому как слейву надо после падающего фронта отреагировать и установить нулевой бит в течение 1 мкс. Тут прерывание и ничего кроме прерывания и то не факт что успеет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 13 часов назад, Сергей Борщ сказал: Исходя из приведенной картинки - время одного байта должно быть 15 мкс или чуть больше. Исходя из той картинки - не будет работать с длиной байта = 15мкс. В общем случае - не будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 февраля, 2023 Опубликовано 16 февраля, 2023 · Жалоба 14 часов назад, artemkad сказал: Тут прерывание и ничего кроме прерывания и то не факт что успеет. В случае такой работы по прерываниям, прерывания могут идти с частотой до <=500кГц (1/(1мкс+1мкс)) Что-то сомнительно, что AVR справится с таким. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться