аппаратный конвертер протоколов
Jan. 14th, 2018 10:25 pmИз "квадратной шины" I2C в "однопроводную" 1-Wire и обратно.
Aliexpress, eBay и TaoBao учат нашего человека долгосрочному планированию и терпению.
Заказал ds2482-800 с китайского сайта https://ru.aliexpress.com/item/2-ds2482-800-ds2482-SOP16-IC/32835076970.html?spm=a2g0s.9042311.0.0.ljRQ10 по 7.85 евро за пару. Дороговато для большого тиража, но на попробовать годится.
Дело в том, что в одном своём проекте я так неудачно построил сеть 1-Wire, что работает она только с подтягивающим резистором не более 1кОм, а лучше даже 800 Ом.
Решил сделать три или четыре самостоятельных "каналов", которые буду переключать и отдельно обрабатывать каждый сегмент сети.
Эта микросхемка очень прикольная штука, ей отправляешь команды по шине I2C и далее она сама оперирует с шиной 1-Wire, не грузит центральный процессор "ненужными таймингами". В необходимый момент обратился к ней и просто считал десяток байт по скоростному интерфейсу.
Проблема только в том, что практически никто из "ардуинщиков" такую штуку не использует. Нашёл две библиотеки: одна совсем сложная и непонятная, вторая с ошибками и с минимальным описанием. Наверное, автор задумал такой "входной тест" - если не разобрался - то и нечего тебе тут делать :-)) Но зачем так нелогично писать простейшую библиотеку ?
Я несколько часов "изобретал велосипед" в обычном режиме, никакой реакции, потом с осциллографом - вижу, пошёл сигнал в "однопроводную" шину. Обложился даташитами на все устройства. Вроде пошло дело, но без даташитов даже невозможно было бы что-то сделать. Команды для конечных устройств надо отправлять в шину I2C в той последовательности, как устройства на шине 1-Wire ожидают их принять.
Нашёл ошибки в библиотеке, исправил. Добился RAW данных из одного устройства в другое.
.... Думаю, дай-ка попробую расшифровать эти RAW данные с помощью стандартного скетча "1-Wire термометр DS18x20" - открыл - и тут мне стало понятно, зачем библиотека написана так нелогично .... её можно просто подставить вместо библиотеки "1-Wire.h" и даже практически не переделывать скетч. Все методы и команды одинаковы. Программа микроконтроллера даже не поймёт, что она теперь работает не напрямую с устройством 1-Wire, а через микросхему "посредника" и на другой шине....
Ну вот, блин, ну неужели нельзя было это указать в описании библиотеки ???
Что теперь делать с теми знаниями, которые я зря загрузил в свой мозг ?
Aliexpress, eBay и TaoBao учат нашего человека долгосрочному планированию и терпению.
Заказал ds2482-800 с китайского сайта https://ru.aliexpress.com/item/2-ds2482-800-ds2482-SOP16-IC/32835076970.html?spm=a2g0s.9042311.0.0.ljRQ10 по 7.85 евро за пару. Дороговато для большого тиража, но на попробовать годится.
Дело в том, что в одном своём проекте я так неудачно построил сеть 1-Wire, что работает она только с подтягивающим резистором не более 1кОм, а лучше даже 800 Ом.
Решил сделать три или четыре самостоятельных "каналов", которые буду переключать и отдельно обрабатывать каждый сегмент сети.
Эта микросхемка очень прикольная штука, ей отправляешь команды по шине I2C и далее она сама оперирует с шиной 1-Wire, не грузит центральный процессор "ненужными таймингами". В необходимый момент обратился к ней и просто считал десяток байт по скоростному интерфейсу.
Проблема только в том, что практически никто из "ардуинщиков" такую штуку не использует. Нашёл две библиотеки: одна совсем сложная и непонятная, вторая с ошибками и с минимальным описанием. Наверное, автор задумал такой "входной тест" - если не разобрался - то и нечего тебе тут делать :-)) Но зачем так нелогично писать простейшую библиотеку ?
Я несколько часов "изобретал велосипед" в обычном режиме, никакой реакции, потом с осциллографом - вижу, пошёл сигнал в "однопроводную" шину. Обложился даташитами на все устройства. Вроде пошло дело, но без даташитов даже невозможно было бы что-то сделать. Команды для конечных устройств надо отправлять в шину I2C в той последовательности, как устройства на шине 1-Wire ожидают их принять.
Нашёл ошибки в библиотеке, исправил. Добился RAW данных из одного устройства в другое.
.... Думаю, дай-ка попробую расшифровать эти RAW данные с помощью стандартного скетча "1-Wire термометр DS18x20" - открыл - и тут мне стало понятно, зачем библиотека написана так нелогично .... её можно просто подставить вместо библиотеки "1-Wire.h" и даже практически не переделывать скетч. Все методы и команды одинаковы. Программа микроконтроллера даже не поймёт, что она теперь работает не напрямую с устройством 1-Wire, а через микросхему "посредника" и на другой шине....
Ну вот, блин, ну неужели нельзя было это указать в описании библиотеки ???
Что теперь делать с теми знаниями, которые я зря загрузил в свой мозг ?