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

Статья DiHalta о i2c мультимастере. Вопрос.

Добавлено: 31 мар 2016, 18:56
Arcanum
дублирую тему ибо тут тоже много грамотных и отзывчивых спецов

у него описано абсолютная большая часть случаев.
чтение/запись/арбитраж.
всё это хорошо но опущен один момент: когда контроллеры шлют и читают друг другу свои переменные в рамках одной сессии.
допустим.
контроллеру 1 нужны от контроллера 2 переменные x,z. при этом y не нужен. отлично.
контроллер 1 запускает шину и2ц запрашивает контроллер 2 как слейва передаёт ему команду(или страницу памяти с которой он начинает считывать) что ему нужны только x и z.
для y соответственно нужна другая команда.
с точки зрения контроллера 1 алгоритм как для обычного мастера при обращении к памяти или часам реального времени.

а вот как быть с алгоритмом контроллера 2 в слейв режиме? в статье байт принимается... и всё. сессия заканчивается. дальше идёт обработка этого байта. и начинается новая сессия уже как мастером.
я так думаю что для контроллера 2, в запросе адреса с которого начинаем считывать, от контроллера 1 - суть есть команда- какие переменные собственно передавать. по сути надо из контроллера 2 сделать аналог памяти eeprom или тех же самых часов реального времени.

приём произвольного количества байт Ди расписал вроде как подробно.

я перечитал статью вдоль и поперёк, но этот момент остался нераскрытым.

для чего мне это нужно: есть плата с клавиатурой и экраном(контроллер мега32). запущена оболочка меню. есть вторая плата(мега8). оболочке меню надо показать несколько переменных из меги8 в разных строках и местах(разные группы).