所以我将设备设置为I2C主设备,总线上的其余设备设置为从设备。主设备向每个从设备发送命令,从设备执行此任务(运行电机等,重要的时间敏感代码)。我希望能够知道奴隶何时完成其任务。我可以看到这样做的唯一方法是不断地让主轮询从机,但是这会产生一个问题,因为每次主机轮询从机时,它会触发从机上的i2c中断并退出运行电机代码时间很短。
无论如何要解决这个问题?我正在考虑将所有设备设置为主设备,因此当每个设备完成任务时,它可以发送数据,表示已完成,无需轮询。这个问题是我担心公共汽车上的数据冲突,设备可能同时试图通话。
解决此问题的正确方法是什么?
答案 0 :(得分:2)
让从设备在运行时间关键任务时禁用其I2C接口,然后重新启用。然后,主设备可以根据需要进行轮询,它将不会从繁忙的从设备获得ACK,并且从设备也不会获得任何中断。