[ZLG-ARM] 关于I2C中断问题,请各位高人指点

[复制链接]
2681|4
 楼主| gaogao5887 发表于 2007-1-29 14:38 | 显示全部楼层 |阅读模式
本问题困扰几天,望周立功公司及各位指点。<br />背景:使用LPC2292,ucosii操作系统平台,cpu开放UART0收发中断、UART1收发中断、I2C中断,UART0、UART1收发中断用于数据传输,I2C中断写7290,I2C速率10k,UART0、UART1收发中断频率500ms。<br /><br />故障:程序运行一段时间后,出现异常,程序一直运行在低优先级,无法调度。调试发现,OSintnesting==2。<br /><br />调试:<br />&nbsp;&nbsp;&nbsp;&nbsp;1)关闭I2C中断,不操作7290,开放UART0收发中断、UART1收发中断,程序一直运行,无故障。<br />&nbsp;&nbsp;&nbsp;&nbsp;2)提高或降低I2C速率,程序出现复位、跑飞。<br />&nbsp;&nbsp;&nbsp;&nbsp;3)将I2C中断设为最高优先级,程序运行较长一段时间后,故障出现。<br />&nbsp;&nbsp;&nbsp;&nbsp;4)将I2C中断设为FIQ,故障出现概率大大降低,运行大半天后仍有故障出现。<br /><br />所以,想请各位帮忙分析。有没有好的解决办法。谢谢!<br />
zlgARM 发表于 2007-1-29 17:53 | 显示全部楼层

RE

UART任务如果暂时屏蔽,或者尽量减少ISR执行时间。这样处理再来看看效果有什么不同。<br />尽量不要发生中断嵌套的情况。我们公司的UCOS/ARM7移植版里,FIQ是不经过OS管理的。<br />先提供你这点信息吧!希望能对你有所助益!
 楼主| gaogao5887 发表于 2007-1-29 21:15 | 显示全部楼层

非常感谢!

  
 楼主| gaogao5887 发表于 2007-2-1 20:39 | 显示全部楼层

向周立功公司工程师致敬

问题圆满解决,感谢zlgarm的指点。程序最后是这样做的:<br />关中断,查询方式写7290或读写e2prom,然后开中断。这样可以保证以最短的时间操作I2C。
zlgARM 发表于 2007-2-2 08:32 | 显示全部楼层

RE

谢谢您分享了您最终的solution。一起进步!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部