Может ли он работать от 3.3v? Судя по описанию да, но у меня адруина почему-то виснет при попытке считать с нее данные когда подаю такое напряжении. При 5v все нормально. Но у меня на шине есть другие устройства 3.3v и я не хотел бы их поджарить. Ведь по SDA\SDL как я понял идет то же напряжение что и на самих устройствах? Хотя я замерил выход 3.3 на арудине и мультиметр мне показывает 3.25, может в этом дело или это нормально?
Описание Схема и код? Есть ли у вас устройства с одинаковыми адресами? ничего не понятно, как вы такое поняли? Если на устройствах разное напряжение, то и на линиях разное, как? Почитайте про i2c и открытый коллектор. На этих линиях максимальное напряжение равно напряжению на подтягивающих резисторах. все имеет разброс, допустимые отклонения описываются в даташитах. 50 мВ это всего лишь 1.5% от 3.3 В - норм.
В данный момент, в тестовом варианте ничего кроме ардуино, тройка шилда и иму не подключено. Если подключаю 2мя трех-контактниками прямо в шилд, то все работает хорошо. Но если в тот трех-контактник по которому идет питание втыкаю 3.3в и землю, то все сразу начинает виснуть. У меня изначально ардуино законкчен с малиной через i2c, чтобы не было проблем с напряжением я нашел код отключающий подтягивающие резисторы на ардуино и все работает. Вот теперь на ту же шину мне нужно повесить этот самый imu - вот я и озадачился, чтобы там не было 5в, а иначе может быть каюк малинке.
не у всех есть обозначенные выше модули. Резисторы подтягивающие устанавливаются внешние, надо их только найти. Тут я их не вижу. Обратите внимание, что есть джампер выбора питания. Без схем вам мало кто помогать будет. нужна схема. I2C по определению ОК. Подозреваю, что отключая/подключая внутренние подтягивающие вы по сути ничего не делаете, т.к. их должна отключать библиотека. Я в ней не копался.
А не подскажете где их лучше всего изображать, я нашел нечто подобное - www.tinkercad.com. Там есть некие базовые модули. Но если я хочу этот вот с этим самым гироскопом, акселерометром и подобным изобразить то как мне лучше это сделать?
Я бы делал в DiagramDesigner. В крайнем случае, на листочке. В программах рисования красивых картинок не разбирался. Слишком много красивостей, которые отвлекают. Интересуют какие выводы к чему подключены, какие напряжения питания (проверить все джамперы, если есть возможность, то и тестером пройтись, а то вдруг вы втыкаете в 3.3 В, а там ничего нет или земля не объединена..). Наличие каких-либо внешних элементов (подтягивающих резисторов) на используемых проводниках.
На уно очень слабый регулятор 3.3v - всего 50мА. Вполне возможно, что не хватает питания, если у вас еще и другие устройства.
В I2C нет подтягивающих резисторов. Я писал об этом здесь http://forum.amperka.ru/threads/Суперэкономичный-беспроводной-монитор-Т-и-rh.17221/ Поэтому только внешние.
Смотрите у меня сейчас ардуина соединена с маликой напрямую, двумя кабелями SDA SDL и все работает без каких либо проблем, хотя я читал что адруина 5 вольтовая а малинка 3.3 и надо конвертировать уровни. Я подозреваю что все потому что я использовал код: #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #endif #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__) // deactivate internal pull-ups for twi // as per note from atmega8 manual pg167 cbi(PORTC, 4); cbi(PORTC, 5); #else // deactivate internal pull-ups for twi // as per note from atmega128 manual pg204 cbi(PORTD, 0); cbi(PORTD, 1); #endif Из вот этой статьи: http://www.varesano.net/blog/fabio/how-disable-internal-arduino-atmega-pullups-sda-and-scl-i2c-bus Он вообще что-то делает? Или я могу его убрать и у меня все продолжит работать и ничего не сгорит?
Нет. Здесь надо ознакомиться с аппаратной частью интерфейса I2C и с тем, как формируются CMOS уровни.
Он отдаст столько, сколько способен отдать блок питания. Но если питание на плату подаётся через встроенный линейный стабилизатор, то я бы больше 300 мА не снимал.
Ох, я нуб и хотел общий простых ответов а меня отправиили штудировать матчасть, ну как всегда). Так и не понял тогда зачем в сети куча статей про всякие понижения повышения напряжения при соедниении микрокомьютьеров (Beaglebone, Raspberry) c Arduino по всевозможным интерфейсам. Если просто можно воткнуть два провода и не париться вообще. Так и делают когда надо ардуино с малиной соединить?
Согласовывать уровни нужно, чтобы не сжечь процессор или микроконтроллер. Но бывают случаи, когда процессор питается от 3V, а некоторые выводы толерантны к 5V. Тогда достаточно двух проводков. Или наоборот -- 5тивольтовый микроконтроллер "понимает" 3ёхвольтовую логику и в случае интерфейса I2C с его открытыми коллекторами можно сделать 3ёхвольтовую логику на пинах 5тивольтового микроконтроллера. В этом случае так же нет необходимости согласовывать уровни. В общем надо смотреть в каждом конкретном случае -- нужно согласовывать и как уровни или и "так сойдёт".
У CMOS логики раздел уровня "0" и "1" ровно посередине питания. Но не надо забывать о триггерах шмидта на входе у некоторых экземпляров. В любом случае "1" с трехвольтовой логики гарантировано попадает в зону "1" 5-ти вольтовой (3 вольта > 2.5 вольт).