Перейти к содержанию
    

1-Wire для Arduino или Atmega328PB

1 час назад, artemkad сказал:

Очевидно, что момент "master samples" должен попасть на середину первого принимаемого бита UART.

Зачем? В конце "master samples" прием уже можно заканчивать. Если мы говорим об устройстве, которое слушает. Впихнуть ответ - да, задача посложнее.

Реализация ведущего (master) значительно проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Сергей Борщ сказал:

Зачем?

Меньше частота тактирования, меньше требования по задержкам, нет необходимости в еще одном таймере для отправки остальных бит 1-Wire т.к. прием остальных бит UART отрабатывает необходимый межбитный интервал 1-Wire. Т.е. после завершения приема/отправки текущего байта можно сразу отправлять 0xFF для приема следующего бита.

3 часа назад, Сергей Борщ сказал:

Если мы говорим об устройстве, которое слушает.

Мы говорим о мастере который слушает. В частности первый фронт(минимум 1мкс) формирует именно он. Т.е. чтение одного бита 1-Wire выглядит как отправка 0xFF в UART с одновременным чтением того, что там на проводе получилось. Если прочитали те же 0xFF значит ведомое устройство выдало "1", если прочитали что-то другое - "0". Слэйвы на 1-Wire это всякие  прибамбасы заводского исполнения(таблетки, датчики, память, часы) и дрова Ардуино работу в режиме слэйва точно не поддерживают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

40 минут назад, artemkad сказал:

Мы говорим о мастере который слушает

Понятно. Тогда да, время байта должно быть примерно 15+45 мкс (кстати, там есть еще и допуски в документации на 1-wire) и никаких сложностей с реализацией ведущего нет. Но в первом сообщении исходной темы была поставлена задача написать ведомого (slave) и остальные участники продолжают обсуждать именно ее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Сергей Борщ сказал:

Тогда да, время байта должно быть примерно 15+45 мкс

... Не совсем... 15+45(+1) мкс это минимальное время. Дыры между битами могут  быть до неприличия громадными(больше 1мкс и ничем не ограничено сверху). А вот прочитать бит надо гарантированно за первые 15мкс иначе слэйв может и отпустить (в конечном итоге это его собственное  питание, так что держать ему линию в нуле лишнее время нет резона). Т.е. первый бит по любому должен уложиться в 15 мкс интервал, а остальной хвост можно отрегулировать числом бит в байте т.е.  примерно стартовый, первый + еще 6 бит( (45+1мкс)/7,5мкс) или больше.

 

1 час назад, Сергей Борщ сказал:

Но в первом сообщении исходной темы была поставлена задача написать ведомого (slave) и остальные участники продолжают обсуждать именно ее.

Да, тут мы слегка в оффтоп залезли и не уверен, что остальные обсуждают именно ее. Иначе UART вообще-бы не всплыл потому как он тут совсем никоим боком, потому как слейву надо после падающего фронта отреагировать и установить нулевой бит в течение 1 мкс. Тут прерывание и ничего кроме прерывания и то не факт что успеет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, Сергей Борщ сказал:

Исходя из приведенной картинки - время одного байта должно быть 15 мкс или чуть больше.

Исходя из той картинки - не будет работать с длиной байта = 15мкс. В общем случае - не будет работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, artemkad сказал:

Тут прерывание и ничего кроме прерывания и то не факт что успеет.

В случае такой работы по прерываниям, прерывания могут идти с частотой до <=500кГц (1/(1мкс+1мкс))

Что-то сомнительно, что AVR справится с таким.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...