打印
[ZLG-ARM]

关于I2C中断问题,请各位高人指点

[复制链接]
1672|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaogao5887|  楼主 | 2007-1-29 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本问题困扰几天,望周立功公司及各位指点。
背景:使用LPC2292,ucosii操作系统平台,cpu开放UART0收发中断、UART1收发中断、I2C中断,UART0、UART1收发中断用于数据传输,I2C中断写7290,I2C速率10k,UART0、UART1收发中断频率500ms。

故障:程序运行一段时间后,出现异常,程序一直运行在低优先级,无法调度。调试发现,OSintnesting==2。

调试:
    1)关闭I2C中断,不操作7290,开放UART0收发中断、UART1收发中断,程序一直运行,无故障。
    2)提高或降低I2C速率,程序出现复位、跑飞。
    3)将I2C中断设为最高优先级,程序运行较长一段时间后,故障出现。
    4)将I2C中断设为FIQ,故障出现概率大大降低,运行大半天后仍有故障出现。

所以,想请各位帮忙分析。有没有好的解决办法。谢谢!

相关帖子

沙发
zlgARM| | 2007-1-29 17:53 | 只看该作者

RE

UART任务如果暂时屏蔽,或者尽量减少ISR执行时间。这样处理再来看看效果有什么不同。
尽量不要发生中断嵌套的情况。我们公司的UCOS/ARM7移植版里,FIQ是不经过OS管理的。
先提供你这点信息吧!希望能对你有所助益!

使用特权

评论回复
板凳
gaogao5887|  楼主 | 2007-1-29 21:15 | 只看该作者

非常感谢!

使用特权

评论回复
地板
gaogao5887|  楼主 | 2007-2-1 20:39 | 只看该作者

向周立功公司工程师致敬

问题圆满解决,感谢zlgarm的指点。程序最后是这样做的:
关中断,查询方式写7290或读写e2prom,然后开中断。这样可以保证以最短的时间操作I2C。

使用特权

评论回复
5
zlgARM| | 2007-2-2 08:32 | 只看该作者

RE

谢谢您分享了您最终的solution。一起进步!

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝