Существуют ли хорошие и поддерживаемые библиотеки для использования моста DS2482 I2C с 1-Wire?
DS2482-100 и DS2482-800 — это мосты I2C-1-Wire, которые полезны для управления сложными сетями 1-Wire.
Они изначально поддерживаются рядом пакетов в Linux, поэтому вы можете легко взаимодействовать с ними на Raspberry Pi.
Однако я был удивлен, обнаружив, что нет очевидной библиотеки для доступа к ним на Arduino.
Я обнаружил следующее:
- Библиотека Arduino имеет некоторые особенности и не поддерживается.
- Часть AVR-Liberty — меньше причуд, не уверен если поддерживается, не "Arduino", как такой, больше AVR.
Полезно иметь возможность полагаться на поддерживаемые библиотеки для работы с любыми изменениями в среде Arduino.
Библиотеки Arduino часто проще в использовании, чем библиотеки, разработанные для AVR в целом, что означает, что больше людей могут использовать программное обеспечение.
Есть ли лучшая библиотека?
@Cybergibbons, 👍3
Обсуждение2 ответа
Лучший ответ:
Я реализовал библиотеку на основе библиотеки Paeaetech, указанной выше, но приведя в порядок определения, устранив указанную проблему, добавление CRC на основе таблицы поиска и поддержка датчиков с пассивным питанием.
Я считаю, что в библиотеке, на которую ссылается Cybergibbons, есть ошибка
uint8_t OneWire::wireSearch(uint8_t *адрес)
Расхождение при i = 0 (нулевой бит в этой библиотеке, id_bit_number = 1 в примере Maxim) следует только по пути direction = 1 и не может найти адреса ПЗУ, где нулевой бит = 0 (т. е. даже коды семейств пропускаются, когда на шине 1-wire присутствуют смешанные устройства, некоторые с четными, а другие с нечетными кодами семейства).
Исправление, которое я только что внедрил и, похоже, работает, состоит в том, чтобы изменить библиотеку, чтобы объявить searchLastDiscrepancy и last_zero как int8_t (не uint8_t), инициализировать/сбросить их в -1 (не ноль) и ближе к концу метода
if (!last_zero)
searchLastDeviceFlag = 1;
становится
if (last_zero == -1)
searchLastDeviceFlag = 1;
Надеюсь, это поможет.
- Альтернативы библиотеке Wire для I2C
- Эмуляция 1-проводных устройств
- Запуск 7-контактного OLED-дисплея с 4 контактами (I2C)
- Помогите с 1-проводным переводом на I2C
- Легкая библиотека Arduino OLED, которая поддерживает текст и растровые изображения
- Любая функциональная библиотека DS2482 I2C to 1-Wire bridge?
- Хорошие способы подключения нескольких шин I2C?
- Как заставить 2 лидара lite v3 работать с 1 Arduino?
Единственное, что я знаю, это [библиотека проводов](http://arduino.cc/en/reference/wire#.Uv_jOvbzT1o), но I2c для TWI. Там также есть несколько крошечных библиотек onewire, но похоже, что это не то, что вы ищете. Это может быть хорошее время, чтобы начать свою собственную библиотеку :-), @Faux_Clef
Неподдерживаемая библиотека не обязательно означает плохую библиотеку. Если он полнофункционален и безупречен, то его не нужно поддерживать. Кроме того, тот факт, что коммит не происходит в течение длительного времени, не всегда означает, что его некому поддерживать., @jfpoilpret
По крайней мере, с библиотекой с открытым исходным кодом вы можете легко изменить код самостоятельно, если он содержит ошибки или не соответствует вашим потребностям. Техническое описание DS2482 может помочь в этом., @jfpoilpret
Нет, неподдерживаемый не всегда означает плохой, но когда с ним проблемы и он не обновлялся несколько лет, это вообще плохо., @Cybergibbons
@Cybergibbons, ты пробовал? Некоторые вопросы могут быть актуальны не для всех пользователей библиотеки. Насколько я вижу, по упомянутой библиотеке Arduino открыта только одна проблема, и ей всего месяц; Я бы не считал это неподдерживаемым (пока)., @jfpoilpret
Да, он не очень надежен - кажется, периодически пропускаются показания, и его необходимо модифицировать, чтобы решить эту проблему. Также не полностью реализован набор функций DS2482., @Cybergibbons
Библиотека не имела дело с паразитным питанием, отсюда и ненадежность., @Cybergibbons
Я использую эту библиотеку для связи с DS2482, но впоследствии не могу связаться с DS2401+ через 1-Wire. Я использую I2C 1-Wire Click (DS2482-800) и на 8 каналах DS2401+. https://www.mikroe.com/i2c-1-wire-click -> I2C 1-Wire Click (DS2482-800) https://pdfserv.maximintegrated.com/en/ds/DS2401.pdf -> DS2401+. Не могли бы вы объяснить мне? Спасибо, @Ibrahim