Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Подскажите алгоритм работы с сетью 1Wire


Подскажите алгоритм работы с сетью 1Wire

Сообщений 1 страница 16 из 16

1

Добрый день

есть сеть 1wire, состоящая из:
- нескольких термометров DS18b20 (до 5шт включительно)
- ключа iButton DS1990a - его подключают иногда, (до 5шт включительно)

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

у меня такие варианты:
1. опрашивать все устройства в сети, запоминать все имеющиеся в линии и опрашивать их данные. Надо как минимум 6 массивов по 8 байт (номера 1wire): каждому устройству по массиву.
2. опрашивать по ID (они сохранены в памяти устройства). Но усложняется алгоритм работы

может кто делал подобное и подскажет иное?...

0

2

Все подключены к одной линии или датчики в одной, а iButton к другой? Есть несколько вариантов. Можно искать 1-Wire в промежутках между опросами датчиков. А если UART свободен (и при условии что датчики и iButton разделены на две сети), то можно его задействовать как аппаратный 1-Wire приемо-передатчик что позволит почти параллельно работать с сетями, но потребует работы с UART используя прерывания и буфер приема.
Массив для ID по любому нужен, ведь нужно же как-то идентифицировать устройства.

0

3

всё на одной линии
уже сделал

не к месту: скачал примеры от Саша73. Проект под мега328 и 40 датчиков
пока разбирался с исходниками- чуть не подох. Проще было своё сделать... Я понимаю, что есть разные типы стилизации и удобств, но переменные - кириллицей, и по 4м файлам - это жесть :(

0

4

Александр Д. написал(а):

но переменные - кириллицей, и по 4м файлам - это жесть

я давно ранее говорил об этом (видимо никто толком не использовал работу Саши)
все метки должны быть: на латинском (желательно английском), как можно короче (чтобы не было простыни), сокращать по принципу "как можно понятнее".

0

5

RDW написал(а):

я давно ранее говорил об этом (видимо никто толком не использовал работу Саши)
все метки должны быть: на латинском (желательно английском), как можно короче (чтобы не было простыни), сокращать по принципу "как можно понятнее".

+1
Уважаю труд Александра пару раз использовал куски с примерами, но пока не переименую переменные через поиск/замену не могу код читать. Наверное это все же привычка многолетняя, глаз автоматически считает кириллицу за комментарий теряя нить. Думал я один такой неправильный и испорченный.
sasha_1973, не обижайся!

0

6

У Александра ВСЕ предельно разжеванно! Только проглатить! Поддерживаю "РУССКИЙ" комент! Действительно: Кратко.Внятно.И никаких двойных стандатов(кто как переведет)!
Это моЁ мнение!

0

7

--"Ребята, давайте жить дружно!".  - мы же не политиканишки!!!

Что я могу сказать, кому действительно надо, тому языковая транскрипция не помеха. Код выкладывается именно, как пример, а не, как готовый исходник!

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

Отредактировано sasha_1973 (2014-03-11 15:56:59)

0

8

Все комментарии не по теме буду безжалостно удалять.
Кому не нравится подача материала с переменными на русском - присылаем своё с переменными на английском.
Принимаются также на украинском, польском, белорусском и т.д.
Иероглифами не писать, у меня монитор их не отображает.

+1

9

Господа, надо с рождения закладывать правильный вкус программирования, а не диктовать "кому как нравится"! Если человек делится своим кодом для других - это одно дело, но если это преподносится как материал для учения - надо соблюдать стандарт (не один код-ревью такое не пройдёт).

0

10

Код выкладывается именно, как пример, а не, как готовый исходник!

Отредактировано amv2000 (2014-03-11 18:39:32)

0

11

в тему:
в процессе эксплуатации всплыл неприятный момент: при корочении линии 1wire всё зависает
можно ли задать некий таймаут работы?
или как определить наличие КЗ в линии?

0

12

Александр Д. написал(а):

в тему:
как определить наличие КЗ в линии?


Очень просто- когда нет опроса опрашиваем пин, должна быть единица, прижимаем к нулю- в опросе должен быть ноль. выполняем периодически.

0

13

ха, но есть ситуация, когда такой алгоритм не работает: КЗ наступило в процессе обмена данными

0

14

Александр Д. написал(а):

ха, но есть ситуация, когда такой алгоритм не работает: КЗ наступило в процессе обмена данными

Я бы добавил вачдог с анализом причины. Вачдог вообще штука полезная. :)

0

15

тут такой метод не применим
т.е., придётся самому писать весь протокол с нуля :(
блииин :(

0

16

Странно. КЗ вроде исключительная ситация, само не рассасывается, самое оно выйти по прерыванию от вачдога, проверить линию и маякнуть о проблеме. Даже переменные все будут в целости...

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Подскажите алгоритм работы с сетью 1Wire