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

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

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

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

Входов  En у блоков нет, это значит что отправляет/читает постоянно? Ну входы если что я сам прикручу.

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

Добавлено: 04.10.2017{, 08:30}
Sancho
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.
Всё.

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

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

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

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

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

Добавлено (04.10.2017, 16:47)
---------------------------------------------
Справка по Wire.h и не только.

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

Добавлено: 08.10.2018{, 16:32}
Oleg
Что то не пойму как проверить работу блоков по I2C. Подскажи на каком-нибудь примере уважаемый Sancho.

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

Добавлено: 08.10.2018{, 17:52}
Sancho
Oleg, Блоки в проекте - только для мастера.
В роли слэйва что?

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

Добавлено: 09.10.2018{, 07:55}
Oleg
Я понял что для мастера. А как тогда их тестировать. Я предполагаю в роли мастера одна Нано, в роли слейва другая Нано. Получается нужен блок мастера.

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

Добавлено: 09.10.2018{, 08:49}
Sancho
Oleg, Попробуйте мои блоки или проект, где-то в этой теме.

Отправлено спустя 6 минут 35 секунд:
Вот еще - отправка в слэйв 4 байт

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

Добавлено: 09.10.2018{, 11:24}
Oleg
НЕТ связи. Залил последний скетч.

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

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

Добавлено: 09.10.2018{, 12:10}
Sancho
Oleg, Это не проект - это просто блоки для мастера и слэйва. :)

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

Добавлено: 09.10.2018{, 12:52}
Oleg
Ну и что же. В одну Нано залил блок мастера в другую слейва. Должно если все правильно работать. Принимать слейвом например через сериал данные. Или что не так.

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

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

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

Добавлено: 09.10.2018{, 14:20}
Oleg
Вы у себя проверяли блоки.

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

Добавлено: 09.10.2018{, 14:54}
Sancho
Oleg, Два резистора 2 ... 4.7 ком к + поставили по шине?

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

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

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

Добавлено: 30.07.2019{, 19:00}
neangel
Здравствуйте товарищ полковник Sancho.

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


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

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

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

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

Добавлено: 31.07.2019{, 08:54}
Sancho
neangel, У меня компилится. Держите два блока, RX & TX по 10.

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

Добавлено: 31.07.2019{, 12:21}
neangel
Здравствуйте Sancho.

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

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

Добавлено: 07.08.2019{, 10:12}
neangel
Здравствуйте Sancho.

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

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

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

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

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


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

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

Добавлено: 07.08.2019{, 10:20}
Sancho
Вы увеличили скорость шины до 400к?
Личку гляньте.

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

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