完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我在PIC16F1938上有一个I2C的问题。基本上,我正在从I2C接收传感器的数据,并使用AS1115 LED驱动器将其打印到7 SEG显示器。但是,每隔5秒钟更新一次显示器的几个小时后,所有工作都正常。Send_I2C_Data()函数挂起,同时试图将数据发送到AS1115。由于某种原因,旗帜不太高。有人知道发生了什么事吗?
|
|
相关推荐
11个回答
|
|
你正在清理钻头吗?你有没有想过使用一些防御性编程?我总是被教导把超时子句放在循环中,在那里等待某些事件使它退出循环。它允许您捕获异常并以受控方式在软件中处理它。例如:
|
|
|
|
“最好的计划……”我同意暂停循环中的超时。Mathew,你打了我几秒钟。
|
|
|
|
谢谢JANickerson,超时似乎是共识,谢谢你提供的信息。我已经想过了,但我觉得我会作弊一点!彼得
|
|
|
|
我会在I2C行上放一个内存范围/逻辑分析器,当捕获超时时停止捕获,看看捕获中是否有一些线索。添加超时不是欺骗,我有很多线索。
|
|
|
|
你的SCL率是多少,SCL/SDA踪迹(铅?)长度和上拉值?
|
|
|
|
嗨,时钟是100kHz,轨迹长度相当长约60mm,上拉是2K2。彼得
|
|
|
|
我认为吉姆的逻辑分析仪建议可能是下一个要弄清楚到底发生了什么的事情。
|
|
|
|
我在同一条船上,这是一种痛苦。你不能用一个SimeSopeQuestExchange的有限数据存储来真正调试:你在I2C运行的频率是多少?也许芯片不喜欢操作频率?也许是固有的软/硬件缺陷。您是否尝试过通过重置AS1115芯片的寄存器或者强制每100/500/1000(这里是PIDOOMA变量)关闭来修补它?
|
|
|
|
我运行在100kHz,另一个I2C设备在公共汽车上必须运行。所以我认为这是不可协商的,而不是18次切换SCL。也许我应该切换SCL,直到SDA到1并停在那里?尝试一下。我可以尝试在每x次数据传输之后关闭它,但是我不能确定这个问题不会在从迭代0到x的时间内发生。但是它可能值得一试。
|
|
|
|
我只是好奇而已。一些PIC设备在更高频率下运行,比如400k,实际上并不符合I2C规范。每当我得到NAK或超时错误时,我只是通过发送地址并等待它插入ACK来轮询设备,而不仅仅是切换SCL&SDA。类似:同意。但它会指出你的错误所在。它可能是一个寄存器溢出或一些奇怪的。不知道。(:
|
|
|
|
我建议一个逻辑分析仪实际上是强制性的对这些问题。我想能够推荐一个SaleAe,但我开始怀疑这个软件。(他们已经陷入了‘更多的特征’,陷阱和可靠性已经严重受损)。
|
|
|
|
只有小组成员才能发言,加入小组>>
5170 浏览 9 评论
2001 浏览 8 评论
1931 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3176 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2228 浏览 5 评论
736浏览 1评论
619浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
507浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
633浏览 0评论
530浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:58 , Processed in 1.471541 second(s), Total 98, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号