Технический форум по робототехнике.
RoboTok » 06 янв 2009, 15:29
Всем привет !
Вот делаю связь между модулями на I2C шине и возник вопрос.
Есть ведущий модуль с МК и ведомый.
Как может сообщить ведомый, что у него есть вопросы к ведущему ?
EdGull » 06 янв 2009, 15:33
1. стать ведущим (режиммультимастер)
2. дернуть отдельную ногу
3. ждать когда его спросят.
avr123.nm.ru » 06 янв 2009, 16:13
Притянуть можно любую линию i2c а мастер обнаружит это и сигналом по другой линии попросит отпустить и пообщаются потом.
=DeaD= » 06 янв 2009, 17:59
avr123.nm.ru писал(а):Притянуть можно любую линию i2c а мастер обнаружит это и сигналом по другой линии попросит отпустить и пообщаются потом.
Только надо понять, кто это трогал линию
(Если i2c-устройств кучка)
Серг » 07 янв 2009, 09:36
ну так опросить у кого вопроы есть
Последний раз редактировалось
EdGull 07 янв 2009, 10:03, всего редактировалось 1 раз.
Причина: излишнее цитирование!
RoboTok » 07 янв 2009, 14:08
Что то сложный этот I2C по сравнению с UART-ом.
Плюнул, готовую библиотеку скачал.
avr123.nm.ru » 07 янв 2009, 14:28
RoboTok писал(а):готовую библиотеку скачал.
Для того они и есть, чтоб использовать.
RoboTok » 09 янв 2009, 15:37
Кто имел опыт с I2C подскажите пожалуйста, если поставить подтяжки на плату Мастера и Ведомого может ли шина не работать совсем ? И ещё на выходе у каждого устройства резисторы по 330 Ом.
Скорость 100кГц.
=DeaD= » 09 янв 2009, 15:38
Смотря какие резисторы стоят
правило для параллельных резисторов никто не отменял
RoboTok » 09 янв 2009, 15:39
Подтяжка 4.7кОм с каждой стороны
=DeaD= » 09 янв 2009, 15:42
На выходе 330 Ом, подтяжка получилась 4700 Ом / 2 = 2350 Ом. Искажение сигнала = 330/2350 = 14%, вроде не должно валить всё подряд... но и красоты не наблюдается, поставьте 150 Ом резисторы на входах\выходах и 10 кОм резисторы с каждой стороны или уберите резисторы с 1 стороны и попробуйте еще раз.
RoboTok » 09 янв 2009, 15:47
330 Ом у каждого модуля, то есть 660 Ом между ними !
У меня ведомый вообще не реагирует никак !
Точнее у него не возникает прерываний.
Вот мне и интересно, может быть что просто ведомый не правильно адрес получает и не реагирует из-за этого ?
=DeaD= » 09 янв 2009, 16:01
RoboTok писал(а):330 Ом у каждого модуля, то есть 660 Ом между ними !
Имхуется мне, что не важно сколько между модулями, важно насколько мешает резистор подтягивать 1 модулю линии к земле.
RoboTok писал(а):У меня ведомый вообще не реагирует никак! Точнее у него не возникает прерываний.
Вот мне и интересно, может быть что просто ведомый не правильно адрес получает и не реагирует из-за этого ?
Мне кажется, что действительно проблемы не из-за резисторов, они по идее сбои могут давать, но чтобы 100% всё валить - вряд ли...
Сергей » 09 янв 2009, 16:48
=DeaD= писал(а):...линии к земле.
А что тут к земле нада подтягивать? На I2C нужны подтягивающие резисторы на VCC
=DeaD= » 09 янв 2009, 16:57
2Сергей: А как работает I2C не забываешь?
как оба устройства работают с одной и той же линией подтянутой через резистор к VCC? Не к земле ли её переодически подтягивают жестко?
Вот только т.к. тут 330 Ом стоит у каждого девайса, то и к земле они её через резистор подтягивают.