Отговори на тема  [ 22 мнения ]  Отиди на страница 1, 2  Следваща
I2C адреси конфликт 
Автор Съобщение
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Чет Авг 21, 2008 1:52 pm
Мнения: 476
Местоположение: Пловдив
Мнение I2C адреси конфликт
Здравейте,
имам няколко въпроса относно I2C. Всъщност може би е малко софтуерен въпроса..
Устройството, което проектирам е с възможност до 8 дивайса на една линия.
Потребителя ръчно трябва да си задава адрес чрез ключета A2, A1, A0.
През web с I2C scanner функцията ще се показват наличните активни участника.
Въпроса е ако потребителя сгреши и настрои два еднакви адреса....
Може ли да се хване такъв конфликт с възможностите на I2C протокола? Поне да се изкара warning " капут, провери какви адреси си задал" :) Или с някакъв софтуерен трик..
Ако се закачат едно по едно, може да се направи проверка за заети и свободни адреси, но ако няколко наведнъж се закачат май няма начин да се направи проверка :)
Чиповете ще са mcp23017


Чет Дек 26, 2019 10:32 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: I2C адреси конфликт
Няма ли колижън флаг?


Чет Дек 26, 2019 11:35 am
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Чет Авг 21, 2008 1:52 pm
Мнения: 476
Местоположение: Пловдив
Мнение Re: I2C адреси конфликт
този чип 23017 сякаш няма.. или ти питаш за Master ? Мастъра ще е esp32.
Трябва да видя там


Чет Дек 26, 2019 11:40 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4616
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: I2C адреси конфликт
Най-вероятно ще трябва да го направиш хардуерно. Единия вариант е всичките адресни битове да ти отиват към есп-то, обаче предвид на това че броя I/O портове му е най-слабата част, се съмнявам че ще имаш толкова излишни портове.
Другия вариант е да сложиш някакви цифрови компаратори, примерно 74HC85 и тогава ще ти трябва само една линия за изхода '=. Обаче понеже имаш много истройства, това май няма да е опция.
Може да използваш някакъв I2C бъс мултиплексор, примерно PCA9548A. Тогава ти ще си избираш на кого да говориш и ключетата няма да имат значение.
Или пък може вместо I2C да ползваш SPI варианта 23S17 и да ги навържеш в дейзичейн. Тогава също няма да имаш никакви колизии

_________________
'просто' е технически синоним на 'красиво'


Чет Дек 26, 2019 11:59 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 8:39 pm
Мнения: 1969
Мнение Re: I2C адреси конфликт
Не можеш ли ти да зададеш адресите? Потребителят само слага устройство и то получава някакъв предварително известен адрес.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!


Чет Дек 26, 2019 1:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: I2C адреси конфликт
Доколкото разбирам това са допълнителни модули, които си ги инсталира потребителя - има си главния контролер и си поръчва още 3 еди какви си; закача ги на бъса и мастъра трябва да сработи. Нито може да опроводи адресните пинове, нито може да прави друга конфигурация.
И2Ц-то май не е мислено в тази посока - което означава че единия път е да смениш бъса, макар че едва ли те устройва тоя отговор. Но все пак, ако наистина искаш да решиш тоя проблем се налага. Ако "придадената стойност" от тази дуракоустойчивост е достатъчна би могъл да смениш бъса, и евентуално да наслагаш по едно контролерче на всеки нод.


Чет Дек 26, 2019 3:46 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Чет Авг 21, 2008 1:52 pm
Мнения: 476
Местоположение: Пловдив
Мнение Re: I2C адреси конфликт
gicho написа:
Доколкото разбирам това са допълнителни модули, които си ги инсталира потребителя - има си главния контролер и си поръчва още 3 еди какви си; закача ги на бъса и мастъра трябва да сработи. Нито може да опроводи адресните пинове, нито може да прави друга конфигурация.

Да, точно. Е, клиента е съгласен с тази особеност, само да не променяме нищо по схемата :).
пък и ще е open source.
Да не задълбавам толкова :)
Просто се чудех дали няма някакъв workaround на тази ситуация.
Ако евентуално опроводя линиите паралелно и на втория I2C мастър порт на есп32, дали може да се направи с двата порта някаква проверка..не знам.
Поръчах 8 модула с тези i2c разширители, като дойдат от Хонг Конг, ще тестваме да видим на живо реално дали може да се направи нещо, ако не така ще е ..

пс: ама явно наистина нищо не може да се направи софтуерно, допълнителен хардуер ще трябва


Чет Дек 26, 2019 5:11 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 476
Местоположение: Бургас
Мнение Re: I2C адреси конфликт
Може да се подходи и малко логистично. Примерно: клиент си поръчва устройство с три девайса. Пращаш му едно устройство с девайси 1, 2, 3- където на девайс 1 е присвоен адрес 1, на девайс 2- адрес 2, девайс 3- адрес три. Ако си поръча допълнителен девайс- пращаш му девайс 4 с адрес 4. Ако се повреди девайс- пращаш му същия номер.


Чет Дек 26, 2019 5:29 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Чет Авг 21, 2008 1:52 pm
Мнения: 476
Местоположение: Пловдив
Мнение Re: I2C адреси конфликт
С 3 дип ключета се задават адресите на всяко устройство.
Тоест всеки може да си ги мърда както иска, няма да е фабрично да се задава.
А бе крайния потребител да си следи това...
В опътването ще пише
"А ти провери ли за дублиращи се адреси?" :D
или
" Добавяй нови устройства едно по едно, зада може да се провери за конфликт"


Последна промяна sukhoi на Чет Дек 26, 2019 5:38 pm, променена общо 1 път



Чет Дек 26, 2019 5:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4715
Мнение Re: I2C адреси конфликт
ако клиента е наясно що е то I2C е достатъчно да си прочете документацията .... все пак го караш да цъка някакви ключета ... с маникюр :)

_________________
main[-1u]={1};


Чет Дек 26, 2019 5:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 06, 2018 4:18 pm
Мнения: 1219
Мнение Re: I2C адреси конфликт
Направи така че адреса да може да се задава софтуерно, всички устройства да имат адрес по подразбиране 255 или какъвто ти е там максималния и всяко устройство да разрешава I2C шината към следващото (с рид реле или електронен ключ по усмотрение) когато му се промени адреса. Сценарият е следния: Закачаш всички устрйства едно за друго, но само най-близкото комуникира с контролера т.к. I2C шината е прекъсната към останалите. Контролера му задава адрес 1, след което първото устройство разрешава шината нататък. Контролера се обръща към следващото устройство с адреса по подразбиране (255 или максималния) и му задава адрес 2 след което второто устройство на свой ред разрешава шината към 3-тото устройсто и т.н. Ако клиента иска да си промени номерацията може да размени устройствата по веригата.


Чет Дек 26, 2019 9:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 22, 2006 2:25 am
Мнения: 6014
Мнение Re: I2C адреси конфликт
как ще се свързват тия 8 устройства? конектори? гнезда? не може ли да има 3 допълнителни пина, и всяко гнездо да си има собствен адрес, т.е. който и слейв модул да се включи в гнездо 3 винаги ще има и адрес 3, пък мастъра да адресира по гнезда


Пет Дек 27, 2019 1:58 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 10:05 pm
Мнения: 324
Мнение Re: I2C адреси конфликт
sukhoi написа:
Здравейте,
имам няколко въпроса относно I2C. Всъщност може би е малко софтуерен въпроса..
Устройството, което проектирам е с възможност до 8 дивайса на една линия.
Потребителя ръчно трябва да си задава адрес чрез ключета A2, A1, A0.
През web с I2C scanner функцията ще се показват наличните активни участника.
Въпроса е ако потребителя сгреши и настрои два еднакви адреса....
Може ли да се хване такъв конфликт с възможностите на I2C протокола? Поне да се изкара warning " капут, провери какви адреси си задал" :) Или с някакъв софтуерен трик..
Ако се закачат едно по едно, може да се направи проверка за заети и свободни адреси, но ако няколко наведнъж се закачат май няма начин да се направи проверка :)
Чиповете ще са mcp23017


Най-общо казано, ще стане мазало. Ще стане като вица:
Мъж се прибира пребит при жена си. Жена му го пита:
- Какво се е случило? Добре ли си?
- Ами какво да се случи.. днеска викам на колегата "Иване, хвърли ми ключ 24"
- И какво стана?
- Еми, какво... не знаеш колко Ивановци има в завода.

Та същата работа и с това, за което питаш.
Не може ли да реализираш тия модули така:
Като включиш модула, чака I2C линиите да се освободят и тогава става мастър. Почва да проверява всички адреси, дали някой ще му отговори. Първият свободен адрес, на който всички мълчат, си го харесва и после става slave. Така и другите модули. Ще стане бавно setup-а, ама пък няма да има колизиия. Да не говорим, че така вместо 8 устройства, ще можеш да свържеш 255 (ако са 8-битови адресите). Даже клиентите ти няма да си хабят маникюра да цъкат ключета или да цъкат джъмпери.


Пон Яну 06, 2020 11:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2586
Местоположение: Велико Търново / София
Мнение Re: I2C адреси конфликт
Да ама трябва някакъв допълнителен микроконтролер който да помни настройките.
Всъщност може ако се добавят едно по едно устройствата адресите да се сетват през GP изходите. Проблема е, че при ресет системата ще забие, защото всички slave-ове ще са с еднакъв първоначален адрес. За да се избегне това може да се навържат верично, всеки следващ контролер MCP23017 да се ресетва също софтуерно през GP изхода на предходното. Това обаче може да не съответства на топологията...

_________________
https://github.com/slav4ocom/


Вто Яну 07, 2020 1:03 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 10:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: I2C адреси конфликт
Аз не разбира, ама си е въпрос на топология. Най-дуракоустойчивото го казаха: буксата да определя адреса. Като не става - опростяваш нещата за потребителя. Правиш му табличка, според която ключетата на устройството в букса No2 трябва да са "Of-On-Of" и точка.


Вто Яну 07, 2020 10:44 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни