Добрый день! Имеется 3 микрухи (UNO), которые соединены 4 проводами (SDA, SCL, GND и VCC). Также, главный МК соединен через цифровой разъем 7 с подчиненным МК #1 и через цифровой разъем 8 с подчиненным МК #2. Главный МК соединен с ПК и каждые полсекунды выставляет на разъемы 7 и 8 единичку, тем самым отправляя синхросигнал на подчиненные МК и те начинают опрос датчиков. Затем, они передают показания датчиков с помощью библиотеки EasyTransferI2C.h по I2C в главный МК, а тот обрабатывает показания и выводит на ПК. Но каждый второй раз происходит такая фигня, что в результате отправки синхросигнала на подчиненные МК те начинают одновременно дергать линию связи и одновременно пытаются отдать показания датчиков на главный МК. Что можно с этим сделать? Датчики должны опрашиваться одновременно на обеих МК! Я вижу это так: 1) Синхросигнал обеим подчиненным МК 2) Подчиненные МК опрашивают датчики 3) Главный МК сообщает подчиненной МК1, что хочет от нее показания 4) Подчиненная МК1 дергает линию I2C и посылает показания 5) Главный МК сообщает подчиненной МК2, что хочет от нее показания 6) Подчиненная МК2 дергает линию I2C и посылает показания 7) Главный МК доволен Можно ли как-то реализовать такое требование передачи показаний датчиков? Пока что думаю попробовать использовать для этой цели линию синхросигналов.
Пускай МК1 и МК2 по сигналу снимают показания датчиков, но МК1 пускай их сразу отправляет, а МК2 с задержкой. Либо можно делать опрос датчиков по сигналу, а данные пускай главный МК запрашивает сам по очереди. А зачем вообще 3 контроллера? Почему бы на одном все не сделать?
Сделал второй вариант Они довольно сильно разнесены друг от друга - если до одного бросать провода, то там шумов будет больше, чем данных)