I2C между ардуинами

В данный форум переносятся темы из форума "Новые" после рассмотрения принятые в очередь на реализацию.
fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

I2C между ардуинами

#21

Сообщение fsergei70 » 03.10.2017{, 19:16}

Sancho писал(а):Только для теста. Ничего не гарантирую.
Спасибо огромное. Какие гарантии этож ардуино, в ответственные места я ее не ставлю

Саш подскажи про адреса I2C 
в блоке I2C_slave_v1   у нас адрес 1
а в блоке I2C_read_slave_v1  адреса нет,
получается отсылаем в 1 а читаем с любого?
Если надо чтоб читало только с первого  надо в Setup section подправить строчку так   
  Wire.begin(0x01)
А то без адреса как то не кашерно, ведь если кроме того что соединены 2 ардуины по i2c  есть еще что то на шине (ну например дисплей)  то оно будет мешать

Входов  En у блоков нет, это значит что отправляет/читает постоянно? Ну входы если что я сам прикручу.
Последний раз редактировалось fsergei70 03.10.2017{, 19:29}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#22

Сообщение Sancho » 04.10.2017{, 08:30}

fsergei70 писал(а):Саш подскажи про адреса I2C  в блоке I2C_slave_v1   у нас адрес 1а в блоке I2C_read_slave_v1  адреса нет, получается отсылаем в 1 а читаем с любого? Если надо чтоб читало только с первого  надо в Setup section подправить строчку так     Wire.begin(0x01)А то без адреса как то не кашерно, ведь если кроме того что соединены 2 ардуины по i2c  есть еще что то на шине (ну например дисплей)  то оно будет мешать
Блок slave ставитсься сам понимаешь в какой ардуинке.
Блок  I2C_read_slave_v1 ставится в МАСТЕРЕ!!! и не имеет адреса в Wire.begin().
Адрес для считывания с созданого нами slave "зашит" в БП.
fsergei70 писал(а):Входов  En у блоков нет, это значит что отправляет/читает постоянно? Ну входы если что я сам прикручу.
Я делаю так: 
Объявляю переменную, например Takt_1 типа BYTE.
В плате, которая выполняется в каждом цикле, делаю приращение +1:  Takt_1 + 1 =Takt_1
Плата, с блоками, которые необходимо только периодически запускать, выполняется по условия  Takt_1= Х, где Х - число, указывающее, через сколько циклов повторится запуск. На этой-же плате  в Takt_1 записываю 0.
Всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

I2C между ардуинами

#23

Сообщение fsergei70 » 04.10.2017{, 15:14}

Sancho писал(а):Адрес для считывания с созданого нами slave "зашит" в БП.
Не подскажешь в каком месте, чтоб можно было поменять в случае если понадобится с 2 устройств считывать.

Добавлено (04.10.2017, 15:14)
---------------------------------------------
Sancho писал(а):Объявляю переменную, например Takt_1 типа BYTE.В плате, которая выполняется в каждом цикле, делаю приращение +1:  Takt_1 + 1 =Takt_1
Плата, с блоками, которые необходимо только периодически запускать, выполняется по условия  Takt_1= Х, где Х - число, указывающее, через сколько циклов повторится запуск. На этой-же плате  в Takt_1 записываю 0.
Всё.
Интересное решение, век живи век учись

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#24

Сообщение Sancho » 04.10.2017{, 16:47}

fsergei70 писал(а):Не подскажешь в каком месте, чтоб можно было поменять в случае если понадобится с 2 устройств считывать.
Wire.requestFrom(1,6),; где 1-адрес, а 6 - байт для считывания.

Добавлено (04.10.2017, 16:47)
---------------------------------------------
Справка по Wire.h и не только.
Последний раз редактировалось Sancho 04.10.2017{, 16:48}, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Oleg
Сержант
Сообщения: 200
Зарегистрирован: 17.09.2015{, 13:04}
Репутация: 1
Откуда: Беларусь
Имя: Олег

I2C между ардуинами

#25

Сообщение Oleg » 08.10.2018{, 16:32}

Что то не пойму как проверить работу блоков по I2C. Подскажи на каком-нибудь примере уважаемый Sancho.
Вложения
Перед I2C.flp
(123.72 КБ) 62 скачивания

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#26

Сообщение Sancho » 08.10.2018{, 17:52}

Oleg, Блоки в проекте - только для мастера.
В роли слэйва что?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Oleg
Сержант
Сообщения: 200
Зарегистрирован: 17.09.2015{, 13:04}
Репутация: 1
Откуда: Беларусь
Имя: Олег

I2C между ардуинами

#27

Сообщение Oleg » 09.10.2018{, 07:55}

Я понял что для мастера. А как тогда их тестировать. Я предполагаю в роли мастера одна Нано, в роли слейва другая Нано. Получается нужен блок мастера.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#28

Сообщение Sancho » 09.10.2018{, 08:49}

Oleg, Попробуйте мои блоки или проект, где-то в этой теме.

Отправлено спустя 6 минут 35 секунд:
Вот еще - отправка в слэйв 4 байт
Вложения
Перед I2C_v01.flp
(80.47 КБ) 72 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Oleg
Сержант
Сообщения: 200
Зарегистрирован: 17.09.2015{, 13:04}
Репутация: 1
Откуда: Беларусь
Имя: Олег

I2C между ардуинами

#29

Сообщение Oleg » 09.10.2018{, 11:24}

НЕТ связи. Залил последний скетч.

Отправлено спустя 20 минут 14 секунд:
Померял напругу на А4 SDA слейва и мастера 0В. при подключенной шине. Когда откидываешь провод с А4 ОВ. только на слейве.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#30

Сообщение Sancho » 09.10.2018{, 12:10}

Oleg, Это не проект - это просто блоки для мастера и слэйва. :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Oleg
Сержант
Сообщения: 200
Зарегистрирован: 17.09.2015{, 13:04}
Репутация: 1
Откуда: Беларусь
Имя: Олег

I2C между ардуинами

#31

Сообщение Oleg » 09.10.2018{, 12:52}

Ну и что же. В одну Нано залил блок мастера в другую слейва. Должно если все правильно работать. Принимать слейвом например через сериал данные. Или что не так.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#32

Сообщение Sancho » 09.10.2018{, 13:35}

Oleg писал(а):
09.10.2018{, 12:52}
Ну и что же. В одну Нано залил блок мастера в другую слейва. Должно если все правильно работать. Принимать слейвом например через сериал данные. Или что не так.
Работает. Димер, четырёх-канальный, работает.
Сериал причём - не уловил...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Oleg
Сержант
Сообщения: 200
Зарегистрирован: 17.09.2015{, 13:04}
Репутация: 1
Откуда: Беларусь
Имя: Олег

I2C между ардуинами

#33

Сообщение Oleg » 09.10.2018{, 14:20}

Вы у себя проверяли блоки.
Вложения
Слейв.flp
(51.03 КБ) 82 скачивания
Мастер.flp
(56.75 КБ) 89 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#34

Сообщение Sancho » 09.10.2018{, 14:54}

Oleg, Два резистора 2 ... 4.7 ком к + поставили по шине?

Отправлено спустя 50 минут 21 секунду:
Правильно, изучайте то, что есть на просторах нета ( видел Ваш сегодняшний комментарий на другом ресурсе). Я тоже не спец - так-же всё собирал по крохам.

Отправлено спустя 5 минут 9 секунд:
При создании блока, специально для какого-то проекта, лучшим вариантом будет сборку/разборку данных производить прямо внутри блока.
Для универсальных - всё принимать/выдавать байтами, с других сторон собирать/разбирать по необходимости в нужные типы данных.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

neangel
Сержант
Сообщения: 138
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 1
Откуда: Москва
Имя: Игорь

I2C между ардуинами

#35

Сообщение neangel » 30.07.2019{, 19:00}

Здравствуйте товарищ полковник Sancho.

Спасибо за блоки.
Они единственные на этом форуме, которые смогли соединить мои две ардуины.
Одна из них управляет адресной лентой WS2812B, которая убивает скорость по UART.
Ваши блоки для шины i2c запросто это обошли.
Скорость великолепна и для ленты достаточна.


В редакторе этих блоков пытался сделать их на 6 (шесть) значений byte.
Вроде получилось.
Но при компиляции больше 4-х значений не пропускает.

Можно ли это сделать теоретически? ... 6 (шесть) значений ... а лучше 10.
Если Вы это сделаете на практике готов Вам за это заплатить 1000 руб.

С Уважением, neangel.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#36

Сообщение Sancho » 31.07.2019{, 08:54}

neangel, У меня компилится. Держите два блока, RX & TX по 10.
Вложения
I2C_TX_&_RX_v5_Sancho.flp
(132.74 КБ) 81 скачивание
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

neangel
Сержант
Сообщения: 138
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 1
Откуда: Москва
Имя: Игорь

I2C между ардуинами

#37

Сообщение neangel » 31.07.2019{, 12:21}

Здравствуйте Sancho.

Всё работает, спасибо !
Номер Вашего телефона пополнил.
С Уважением, neangel.

neangel
Сержант
Сообщения: 138
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 1
Откуда: Москва
Имя: Игорь

I2C между ардуинами

#38

Сообщение neangel » 07.08.2019{, 10:12}

Здравствуйте Sancho.

Теоретический вопрос (нет так нет).
Может ли работать несколько мастеров на один (два) значения.
С разными адресами и последовательно (НЕ одновременно).

Сам пробовал ставить два мастера с разным адресом, но работает только один из них.

Дело в том что мастер на много значений всё-таки грузит камень и заметно.
А надо точно измерять и передавать на другую ардуину.

Мастер с одним значением работает на ура, довольно точно всё измеряется и передаётся быстро.
Речь идёт о не высокой частоте до 100 Герц.

или по-другому.
Не один мастер на 6 значений, а 6 мастеров с разными адресами на одно значение.
Которые включаются последовательно и с интервалом.


С Уважением, neangel.
Последний раз редактировалось neangel 07.08.2019{, 10:20}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

I2C между ардуинами

#39

Сообщение Sancho » 07.08.2019{, 10:20}

Вы увеличили скорость шины до 400к?
Личку гляньте.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

I2C между ардуинами

#40

Сообщение seri0shka » 07.08.2019{, 17:06}

Sancho, могут мастер и слейв каждый отправлять шесть байтовых переменных и получать шесть других байтовых переменных?
С вашими блоками, как я понял, не получится. Интересует в свете этой темы:
viewtopic.php?f=18&t=5474
С уартом у меня всё отлично получается, но наткнулся на эту тему, и подумал: те же два провода, нет строгой привязки к тактовой частоте, а главное, можно применять с контроллерами, которые уарт не поддерживают (для меня сейчас актуальна Тини26).

Ответить

Вернуться в «Принято»