40inD писал(а):
у меня и будет мастер и слейв, я хочу сообразить, в программе как это организовать. Слейв будет передавать. Как мастер будет запрашивать значение какой-л. переменной?
Например, мастер хочет узнать у слейва, какое значение у него имеет переменная А. Как это сделать? Я с i2c только с часами и памятью работал.
А так как переменных передавать много, чтобы не терять времени на запрос каждой переменной, нужно передать сразу пакет. И как это сделать я вообще не догоняю.
Переменная характеризуется адресом и размером в байтах. Передать переменную - значит, передать N байт, располагающихся по её адресу. На приёмной стороне эти байты записываются по адресу какой-нибудь переменной такого же размера. Тип переменной не имеет значения.
Если нужно запрашивать переменную именно по идентификатору, можно прошивать во флэш-память опрашивающего м/к список переменных, который создаётся компилятором для прошивки опрашиваемого м/к (.map файл), и вести по нему поиск адреса для запрашиваемой переменной, который затем и передавать в запросе. Можно и наоборот - в запросе передавать идентификатор переменной, а поиск по .map вести на опрашиваемом м/к.