I2C重复启动

时间:2017-01-15 03:18:13

标签: i2c attiny

我正在尝试使用I2C接口附带的TC74 (or DS1621) temperature sensor。到目前为止,我的I2C ISR能够将命令和配置字节写入芯片。但是我不知道如何指示ISR跳转到状态0x10(重复启动)进行读操作。阅读程序如下:

  1. 微控制器启动位(在我的情况下为ATTINY48)
  2. 发送从站地址+ w(在状态0x8中),来自从站的
  3. 向从站发送命令字节(在状态0x18中),从从站
  4. 发送ACK
  5. 此时(状态0x28) ISR必须发送重复启动并跳转到状态0x10
  6. 然后从Slave发送Slave Adrress + R,ACK
  7. 然后在状态0x40,数据将从从机读取,NACK从机读取
  8. 在状态0x58中,数据准备好并复制到适当的变量,将发送停止位。
  9. 每次调用TC74 read函数并检查ISR内部的标志时,我都可以设置一个标志,所以不是在将数据字节写入TC74后发送停止位,而是发出重复启动位。但是我不确定这是否是正确的标准方法。通常,在I2C外设的许多状态中,必须确定下一个状态。

    我应该如何指示每个州的ISR跳转到所需的下一个状态?

0 个答案:

没有答案