首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

hcs08 IIC 问题

hcs08 IIC 问题

hcs08使用IIC与其他CPU通讯,本机做SLAVE接收,IIC为中断方式接收,运行的时候会跑到cpu.c文件中的ISR(Cpu_interrupt)函数中,就再也出不来了,死在里面.如果把IICIE禁止,就不会有这个问题. 请问各位,这个中断函数和IICIE是怎么产生联系的,项目中其他的定时和IRQ中断也在用,却不会出现问题。
在路上
你说的这个中断不是IIC中断吗?那它是什么中断,中断地址是什么?
海纳百川  有容乃大
应该不是IIC中断吧,它在cpu.c文件中,而且描述中说明:The method services unhandled interrupt vectors.This method is internal. It is used by Processor Expert only.
应该如何看它的地址?在Assembly窗口中么?
在路上
那么它是未用的中断。你可以试试将每个未用的中断都写一个空的,不同的中断函数,这样就可以看到到底是产生了哪个中断。
海纳百川  有容乃大
已经确认了,果然是IIC中断引起的, cpu.c文件中的ISR(Cpu_Interrupt)函数是对所有未处理的中断进行处理吗?可以在里面写代码吗?
在使用PE自动生成的时候,系统生成了OnRxChar,OnTxChar,OnNack三个中断函数,我以为出现中断时会自动跳进这几个函数处理,现在看起来产生前面问题的原因是没有对应VECTOR文件中的IIC中断地址的函数,导致了出现的IIC中断一直在pending状态.处理这个中断需要写一个_interrupt void I2C_ISR(void)函数,然后在这个函数中判断相应标志位再转入对应处理函数,我这样的理解对吗?在vectors.c文件中的中断函数地址表里仍然是Cpu_Interrup,是否需要把Int no.17改成I2C_ISR以与中断函数名对应?
在路上
在QG8的spec中关于IICIF是这么写的
IIC Interrupt Flag — The IICIF bit is set when an interrupt is pending. This bit must be cleared by software, by writing a one to it in the interrupt routine.
为了清除这个标志位,还要向这一位写"1"??感觉很难理解,还是spec上写错了?
在路上
对的,飞思卡尔的很多MCU标志的清零方法都是去写1。
海纳百川  有容乃大
返回列表