Страница 1 из 1

I2C

Добавлено: 02.03.2018{, 10:04}
pan
набор блоков для работы с устройствами по "квадратной" шине

работают с физической шиной.


блоки записи

Изображение
----------------------------------------------------------------------------------------------------------

блоки чтения

Изображение

---------------------------------------------------------------------------------------------------------
с буквой а: Изображение
в блоке задается адрес устройства (1) и номер регистра (2) в который нужно записать наши значения (3).
запись происходит при каждом изменении значения на входе "data"
Изображение

с буквой b: Изображение
настройка аналогична предыдущему, только запись происходит при подаче "1" на вход "write". вход работает по фронту сигнала.

с буквой с: Изображение
все значения вынесены на входы. меняя значения на входах можно обращаться к разным устройствам и записывать в разные регистры.
___________________________________________________________________________________
на всех блоках имеется выход error значения на нем могут быть следующие
0: передача успешна
1: объем данных слишком велик для буфера передачи
2: получен NACK при передаче адреса
3: получен NACK при передаче данных
4: другая ошибка
если на нем "0" то все в порядке. использовать в программе этот выход не обязательно.
____________________________________________________________________________________
как это выглядитПоказать
Изображение
адреса устройств и регистров задаются в десятичной системе.
если адрес указан шестнадцатиричный , конвертируем в десятичный.
например в калькуляторе.Показать
Изображение

например в даташите адрес 0х2С соответствует 44 десятичному
------------------------------------------------------------------------------------------
блоки чтения настраиваются аналогично блокам записи.
------------------------------------------------------------------------------------------

I2C

Добавлено: 12.03.2018{, 23:27}
Oleg_UA
pan писал(а):
12.03.2018{, 20:11}
это хоть работает? или как
Этот способ работает на 100%.
У меня так сделан обмен с расширителями портов МСР23017, если сравнивать с штатным блоком FLProg то так работает в 15 раз быстрее.
Можно ещё добавить выход результата связи на случай отвала модуля " error_code=Wire.endTransmission(); " большинство пользователей скорее всего используют "шилды" а не пайку.

В блоках чтения повторная отправка зачем?
Wire.requestFrom(Addr, 1); if (Wire.available() == 1) { data = Wire.read(); } Wire.endTransmission();

I2C

Добавлено: 12.03.2018{, 23:30}
pan
это разве не завершение обмена?

I2C

Добавлено: 12.03.2018{, 23:36}
Oleg_UA
pan писал(а):
12.03.2018{, 23:30}
это разве не завершение обмена?
Функция начала обмена " beginTransmittion(). " у Вас уже завершена.
Описание Wire.endTransmission()

I2C

Добавлено: 12.03.2018{, 23:59}
pan
действительно, в чтении эта строка не нужна. в том месте где читал про библиотеку было истолковано не совсем корректно.

Отправлено спустя 6 минут 37 секунд:
завтра переделаю и добавлю выход ошибки.

I2C

Добавлено: 13.03.2018{, 00:09}
Oleg_UA
:friends: Главное идея и желание, да ещё и с таким шикарным оформлением. :like:

I2C

Добавлено: 13.03.2018{, 14:53}
pan
обновлены блоки I2C_0.2. добавлен выход номера ошибки , если вдруг таковая произойдет в процессе передачи данных

I2C

Добавлено: 17.04.2018{, 14:22}
Vasiliy
Народ привет! Мой мозг просит Вашего совета: соединяю нано и про мини, указываю одинаковый Addr, одинаковый Reg и в errorе на приеме весит 2. Отправляю байтец с копма уартом по позитиву в нано, блоком wr_ а в i2c, принимаю pro mini блоком re_ b c частотой 10 мс. на Этом остановился, до этого как только не отправлял и принимал. двойка весит на LCD по i2c с pro mini стандартным блоком и адресом 3F.

I2C

Добавлено: 17.04.2018{, 14:42}
pan
а кто сказал что эти блоки для общения между ардуинами?
это блоки для работы с СЛЕЙВами I2C
и в блоках указывается адрес СЛЕЙВа, а не одинаковые адреса...
может для начала почитаете о шине I2C

I2C

Добавлено: 17.04.2018{, 17:50}
Vasiliy
Так я и читал, что с і2с можна связывать контролеры между собой. По типу CAN шины, тут вроде и протокол похожий, или я ошибаюся? Я в +1 Guide работал крепко, фл вооще супер - учить ничего не надо. А вот связать ардуишки между собой, так то ж дело прорыва вообще. Я в Си подобных языках после графики никак. Не пинай, давай луше CAN open организуем...

I2C

Добавлено: 17.04.2018{, 19:15}
pan
Vasiliy писал(а):
17.04.2018{, 17:50}
с і2с можна связывать контролеры между собой
можно. но эти блоки для МАСТЕРА
Vasiliy писал(а):
17.04.2018{, 17:50}
давай луше CAN open организуем
можете здесь http://forum.flprog.ru/viewforum.php?f=112 создать тему

I2C

Добавлено: 29.04.2018{, 12:23}
ZeRG
не пойму как ваши блоки работают вроде все сделал правильно должно работать а не работает

I2C

Добавлено: 29.04.2018{, 20:44}
pan
ZeRG, ну какой нафиг приемник/передатчик,это блоки для работы с СЛЕЙВАМИ

I2C

Добавлено: 29.04.2018{, 23:01}
ZeRG
pan писал(а):
29.04.2018{, 20:44}
ZeRG, ну какой нафиг приемник/передатчик,это блоки для работы с СЛЕЙВАМИ
ну пускай будет мастер и слейф

Отправлено спустя 34 секунды:
дело в другом что не работает

I2C

Добавлено: 29.04.2018{, 23:06}
pan
и не будет. и не должно.
блоки только для мастера

I2C

Добавлено: 11.12.2020{, 01:24}
alexcccp
Подскажите пожалуйста на примере МСР23017
как считать или записать данные

например: я хочу прочитать значения GPB0 МСР23017 на адресе 0x20 (32 насколько я понимаю) а вот GPB0 это что за адрес
Смотрю даташит и откровенно говоря не понимаю где описан GPB0 в виде его адреса :smile37:

по большему счету мне нужна проверка МСР23017 что она жива, а желательно получить данные с пина для записи - в каком он состоянии.
ну и понять как управлять на прямую МСР23017 будет отлично.

I2C

Добавлено: 11.12.2020{, 19:30}
alexcccp
av, я так понимаю Вы говорите про стандартный блок.
Я же имею в виду пользовательский который здесь прикрепил pan: I2C,
23017 работает на данном интерфейсе. Стандартный блок меня не устраивает.

также Oleg_UA, пишет
Oleg_UA писал(а):
12.03.2018{, 23:27}
У меня так сделан обмен с расширителями портов МСР23017, если сравнивать с штатным блоком FLProg то так работает в 15 раз
мне бы просто понять как обратится к самой микросхеме из прикрепленного блока.

или я что то не понимаю

I2C

Добавлено: 30.11.2023{, 09:47}
Gusel
Добрый день всем!
А как сделать, чтобы вторая нано стала слейвом?
В программировании новичок, Использую FLprog. В коде практически не шарю. Заранее благодарен всем откликнувшимся. Ссылкам тож буду рад.