Вопросы по I2C

В разделе рассматриваются вопросы информационного обмена в робототехнике.
Аппаратный уровень, протоколы.

Вопросы по I2C

Сообщение BeInspired » 15 ноя 2009, 22:40

Подскажите пожалуйста каким образом в I2C идет процесс установки адресов устройств? Ведь если на шине висят четыре одинаковых устройства, то получается их никак не возможно идентифицировать? Т.е. для датчиков температуры TMP100 надо подключить линии ADD0 и ADD1 (причем на каждый датчик по сути свою пару, ну или 3 линии на два датчика минимум), выдав на эти линии 1 или 0 сконфигурировать адресс, затем сделать General Call, чтобы устройства запомнили настроенные адреса и только потом можно не думая о линиях ADD0 и ADD1 адресовать устройства согласно настроенным адресам. Я прав или нет?
BeInspired
 
Сообщения: 42
Зарегистрирован: 09 ноя 2009, 14:51

Re: Вопросы по I2C

Сообщение Michael_K » 15 ноя 2009, 22:45

Нет.
Эти ноги на TMP нужно по разному закоротить на землю или плюс.
Тогда у TMP-шек будут разные ареса (будут различаться младшими битами A0 и A1, соответственно)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Вопросы по I2C

Сообщение MiBBiM » 15 ноя 2009, 22:49

и никакого gencall'a делать не нужно
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Вопросы по I2C

Сообщение BeInspired » 16 ноя 2009, 00:40

А зачем тогда нужен General Call? Чтобы перезагрузить устройства если нам вдруг показалось, что они начали выдавать косые данные?

Добавлено спустя 6 минут 11 секунд:
И меня немного смущает вот этот кусок из даташита на тмп100:
The state of pins ADD0 and ADD1 is sampled on the first I2C bus communication and should be set prior to any
activity on the interface.
Либо я неправильно перевожу, либо все-таки их надо устанавливать... хотя... получается можно их не жестко подтягивать к земле или нулю, а управлять их адресами...
BeInspired
 
Сообщения: 42
Зарегистрирован: 09 ноя 2009, 14:51

Re: Вопросы по I2C

Сообщение Michael_K » 16 ноя 2009, 01:06

"Состояния ножек считываются TMP-шкой при первом обмене по шине и должны быть установлены перед
любыми дрыганиями на шине."

Что это значит? Значит они должны стоять перед тем как обмен пойдет, а потом, сколько ты их не меняй она их уже считывать не будет. Их надо просто притягивать, чтобы установить адрес конкретной TMP-шки, они предназначены для этого. Можно заставить TMP-шку генерал коллом еще раз считать эти ноги, только зачем?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Вопросы по I2C

Сообщение BeInspired » 16 ноя 2009, 14:21

Кстати еще вопрос - а как TMP понимает, что ее нога ADD0 или ADD1 висит в воздухе? Просто в возможных адресах присутствуют комбинации, когда одна из ног оставлена не подключенной...
BeInspired
 
Сообщения: 42
Зарегистрирован: 09 ноя 2009, 14:51

Re: Вопросы по I2C

Сообщение MiBBiM » 16 ноя 2009, 14:57

мб хитрая внутренняя подтяжка вкупе с ногой о трех состояниях (0%, 50%, 70% от напряжения питания) :unknown:
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Вопросы по I2C

Сообщение blindman » 16 ноя 2009, 15:47

Примерно вот так. Используя 3 ноги можно задать 27 конфигураций, при этом сохраняется возможность использовать ноги как выходы (при достаточно большом сопротивлении нагрузки)
Вложения
config.png
config.png (4.69 КиБ) Просмотров: 2398
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Вопросы по I2C

Сообщение BeInspired » 16 ноя 2009, 15:57

2 blindman
Ясненько. Подскажите еще один вопрос - а в чем вы нарисовали эту схему?
Я вот использую протеус, проект у меня не сложный в плане кол-ва элементов и разводки - пойдет ли она? или надо что-то другое использовать?
BeInspired
 
Сообщения: 42
Зарегистрирован: 09 ноя 2009, 14:51

Re: Вопросы по I2C

Сообщение galex1981 » 16 ноя 2009, 15:59

Похоже что в Eagle
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович


Вернуться в Коммуникации

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12