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

Связь по интерфейсу I2C

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

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


блоки записи

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

блоки чтения

Изображение

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

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

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

[spoiler=как это выглядит] Изображение [/spoiler]

адреса устройств и регистров задаются в десятичной системе.
если адрес указан шестнадцатиричный , конвертируем в десятичный.
[spoiler=например в калькуляторе. ]Изображение

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

I2C

Добавлено: 12 мар 2018, 23:27
Oleg_UA
pan писал(а): 12 мар 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 мар 2018, 23:30
pan
это разве не завершение обмена?

I2C

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

I2C

Добавлено: 13 мар 2018, 00:05
pan
действительно, в чтении эта строка не нужна. в том месте где читал про библиотеку было истолковано не совсем корректно.

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

I2C

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

I2C

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

I2C

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

I2C

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

I2C

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

I2C

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

I2C

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

I2C

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

I2C

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

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

I2C

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

I2C

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

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

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

I2C

Добавлено: 11 дек 2020, 19:30
alexcccp
[ref]av[/ref], я так понимаю Вы говорите про стандартный блок.
Я же имею в виду пользовательский который здесь прикрепил [ref=#ff8000]pan[/ref]: I2C,
23017 работает на данном интерфейсе. Стандартный блок меня не устраивает.

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

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

I2C

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

Re: Связь по интерфейсу I2C

Добавлено: 24 дек 2024, 15:32
aidar_i
Сюда выложу пользовательские блоки для связи по I2c на профессиональном редакторе. Данными блоками можно передавать от 1 до 4 байт.
Примеры:
I2C.rar
Блок:
CONNECTION_VIA_I2C_(Code_-_Professional).ubi

Re: Связь по интерфейсу I2C

Добавлено: 25 дек 2024, 08:34
aidar_i
С использованием штатных блоков так же можно передавать и символы и буквы.
Передача символов 4 byte.flp
Прием символов 4 byte.flp
Коды символов можно сразу вставлять на вход master.