2017-04-15 97 views
0

嘿家伙我一直在这样的工作,像72小时直,我找不到错误,我正在PIC16F1719我试图设置3外设一个ADC一个I2C协议和一个USART通信给英国电信公司但是ADC很容易,但是我对I2C很不舒服,尽管我已经多次检查代码,出于某种原因,当我收到ACK的一切似乎都没问题,但是当我在传感器(MPU6050)上演讲时,什么也没有显示出来,但是我上次在缓冲器上放置的值,是否有任何想法为什么会发生?这就像缓冲区没有清除自己,我想我不能通过软件清除它,谢谢。IC2从未回应XC8

+0

这是否与编程有关,还是硬件问题? – Carcigenicate

+0

嗯,我认为它同时适用,我有我的硬件良好的设置,我得到了上拉电阻和一切,主要是关于为什么缓冲区不显示传感器的值,但我给它的地址,就像所有东西都堆放在缓冲区中,所以没有任何事情发生 –

回答

0

如果主站无法正确通信,i2c从站有能力锁定总线(几种可能的情况......) 由于2根导线是有线的,这意味着如果任何从站拉动时钟(例如)下来,并保持这种状态,总线被锁定。

  • 总是首先检查两条线上的值(使用范围或dvm),如果'0'表示总线锁定。
  • 接下来测试你的i2c控制器的状态寄存器,它可能会显示仲裁错误或类似的东西。
  • 如果发现任何错误,请仔细阅读i2c从站部分数据表以检查它期望的协议读/写类型,并修复您的代码。