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

1-Wire для Arduino или Atmega328PB

Начало здесь:

 

 

А вы вообще уверены, что ардуина потянет 1-wire overdrive (125кб/с) ?   

Изменено пользователем makc
Добавлена ссылка на исходную тему

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


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

У меня есть на это надежда, если избавится от ардуиновского фреймворка и написать все руками

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


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

1 hour ago, furius said:

У меня есть на это надежда, если избавится от ардуиновского фреймворка и написать все руками

Если слэйвов на шине много, то ваша програ только и будет что обрабатывать шину. ИМХО, без задействования UART или таймеров а-ля тем, что в STM32, идея выглядит сомнительной.

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


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

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

Если слэйвов на шине много, то ваша програ только и будет что обрабатывать шину. ИМХО, без задействования UART или таймеров а-ля тем, что в STM32, идея выглядит сомнительной.

Устройство на шине гарантированно одно всегда. Посылки повторяются, можно вс несколько заходов вычитать данные, все просчитать и отдать со следующим пакетом

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


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

On 2/13/2023 at 11:51 PM, tgruzd said:

А вы вообще уверены, что ардуина потянет 1-wire overdrive (125кб/с) ?   

 

Немного оффтоп, но Вы, батенька, слегка как это сказать закушались: на 8МГц тактовой и полном отсутствии аппаратной периферии я спокойно принимал чистым софтом сигнал DMX512 (250 кбит/сек) на КР1878ВЕ1. А тут на кристалле и система команд богаче и аппаратка вся нужная есть...

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


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

3 hours ago, fantasy said:

на 8МГц тактовой и полном отсутствии аппаратной периферии я спокойно принимал чистым софтом сигнал DMX512 (250 кбит/сек) на КР1878ВЕ1

А какая нагрузка была на процессор? Принять-то можно, но вот на что ещё останется время- вопрос. Если в сети девайс один и ничего критичного по времени реакции от него не требуется, то вполне можно.

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


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

16 часов назад, fantasy сказал:

Немного оффтоп, но Вы, батенька, слегка как это сказать закушались

Я-то, быть может и закушался.  Но вглядитесь в тайминги фрейма 1-wire: это далеко не DMX512. Там мастер вполне имеет право растягивать интервалы между битами (и да, именно поэтому все эти реализации на уарте - не 1-wire,  а убогая имитация оного). А как у ардуины обстоит вопрос с прерываниями?

  image.png.2daf0b939208a320efee4bcd8e406ef2.png

 

на картинке ещё и не овердрайв)

Изменено пользователем tgruzd

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


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

2 hours ago, tgruzd said:

Там мастер вполне имеет право растягивать интервалы между битами

И в чём проблема реализовать через UART?

2 hours ago, tgruzd said:

А как у ардуины обстоит вопрос с прерываниями?

Какой МК?

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


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

On 2/15/2023 at 8:59 AM, C2000 said:

И в чём проблема реализовать через UART?

Какой МК?

МК в заголовке Atmega328PB 🙂

Вот и я о том же: на таком неплохом "железе" реализовать приём такого простого протокола не сложно, и способов там много 🙂 

On 2/14/2023 at 5:34 PM, tonyk_av said:

А какая нагрузка была на процессор? Принять-то можно, но вот на что ещё останется время- вопрос. Если в сети девайс один и ничего критичного по времени реакции от него не требуется, то вполне можно.

Во вложении закинул исходник того проекта если любопытно, но в кратце там был как раз приём DMX, задание частоты (стробоскоп) и межпроцессорный обмен. Задание частоты как раз критический момент: требовалась синхронизация нескольких устройств. Сейчас уже трудно вспомнить почему туда закладывал именно 2 процессора (это всё же проект 2001-2002 года), но насколько припоминаю там основные ограничения были в числе портов и объёме памяти программ.

sl_dmx2.mic

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


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

On 2/15/2023 at 6:13 AM, tgruzd said:

Я-то, быть может и закушался.  Но вглядитесь в тайминги фрейма 1-wire: это далеко не DMX512. Там мастер вполне имеет право растягивать интервалы между битами (и да, именно поэтому все эти реализации на уарте - не 1-wire,  а убогая имитация оного). А как у ардуины обстоит вопрос с прерываниями?

  image.png.2daf0b939208a320efee4bcd8e406ef2.png

 

на картинке ещё и не овердрайв)

 

Я в слове "ардуино" у автора вижу упоминание процессора Atmega328PB, который по моим беглым прикидкам и опыту использования разных мелко-кастрированных архитектур сможет легко и непринуждённо принять данный сигнал и разными способами 🤓

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


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

3 часа назад, tgruzd сказал:

Там мастер вполне имеет право растягивать интервалы между битами (и да, именно поэтому все эти реализации на уарте - не 1-wire,  а убогая имитация оного).

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

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


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

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

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

Так поясните - на какой битовой скорости UART? Какова должна быть длительность бита UART?

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


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

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

Так поясните - на какой битовой скорости UART?

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

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

Какова должна быть длительность бита UART?

При 8,n,1 получается 1.5 мкс или чуть больше.

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


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

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

Так поясните - на какой битовой скорости UART? Какова должна быть длительность бита UART?

Очевидно, что момент "master samples" должен попасть на середину первого принимаемого бита UART. Т.е. битовая длительность примерно как  15мкс/1.5=10мкс хотя лучше чуть меньше т.к. 15мкс это конец окна(т.е. там должен быть последний семпл чтения бита UARTа)

20 минут назад, Сергей Борщ сказал:

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

Не, достаточно за это время прочитать один бит. Т.е. один бит это 7,5....10мкс.

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


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

ЗЫ. Вот тут https://www.rotr.info/electronics/interface/one_wire/ow_over_uart.htm хорошая статья о том как UART для 1-Wire используют.

Для overdrive 15мкс вроде становится 2мкс или битовая длительность UARTа 1...1,3мкс. Вроде на внутреннем генераторе Мега должна впритык влезть.

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


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

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

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

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

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

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

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

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

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

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