发新帖我要提问
12
返回列表
打印
[AVR单片机]

TWI问题请教,开发10年也未碰到的问题。

[复制链接]
楼主: 老狼迈克
手机看帖
扫描二维码
随时随地手机跟帖
21
老狼迈克|  楼主 | 2008-10-23 12:37 | 只看该作者 回帖奖励 |倒序浏览

搞开发时间长了 思路都一样了

农民讲习所 发表于 2008-10-23 11:07 AVR 单片机 ←返回版面    

18楼: 有可能 

你可以对程序专门做个优化:case判断,把0xb8放到最前面。 
-----------------------------------------------------------

哈哈 英雄所见略同 我正是这么干的 结果也不行 还有许多别的办法 我也试过 。我想可能是速度太慢 而主机的SCL不等我处理好就来啦 我要提高到8M看看,即有可能如DA兄所说,主机也可能仿IIC的,即有可能SCL时钟周期不固定,有可能1个字节后面跟着的下一个SCL周期间隔非常快。既然是仿的,SCL信号周期不一致也是很可能的

使用特权

评论回复
22
老狼迈克|  楼主 | 2008-10-23 12:43 | 只看该作者

谢谢

再次谢谢DU和农民兄,有许多方法我限于现场条件也使用不了,比如换个板子什么的,甚至大部分的时间示波器也没有,只能靠经验去猜测,然后DOWNLOAD验证等等,所以带来许多的困难。

我感觉快摸到实质问题了,真的谢谢!

使用特权

评论回复
23
老狼迈克|  楼主 | 2008-10-23 13:36 | 只看该作者

结果

问题已经解决,主要原因是主机的SCL周期不一致,尤其在字节结束后表现更为突出,现在把AVR时钟提高到8M,且优化了程序,问题得到了解决。
------------------------------------------------------------

那为什么我会花如此长的时间在这上面?
第一:我本能的认为显卡输出的为标准信号,不会有问题

第二:我认为显卡在我释放SCL后,应该再等待一段时间才开始拉高SCL以产生一个稳定的低电平时间,否则不是一个完整地先低后高时钟周期(因为数据更新都是在低电平时期,所以必须先在低电平时期更新数据,然后拉高SCL才保证数据稳定接收)。这个观点每问题,问题是这个时间太短了,以至于示波器上面看的话,这个时间SCL也是出于上升阶段的前半段,也是非稳定时间,让我判断失误。

第三:因为上面的问题,我把主要的精力都放在寄存器设置上,浪费了大量的时间。

第四:很长的时间内无法监控发出去的数据到底是什么?不知道问题出在发送还是接收。

第五:设备条件简陋,只有一个万用表,还有一把烙铁,示波器还只能用很短时间。

结论:什么都不可靠,只有原始信号最可靠,调试前不能过分主观的人为标准器件就一定标准。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则