智能车制作

标题: K60 GPIO中断遇到的奇葩问题 [打印本页]

作者: HEYsir    时间: 2012-12-19 02:36
标题: K60 GPIO中断遇到的奇葩问题
本帖最后由 HEYsir 于 2012-12-19 02:45 编辑

用的软件CW10.2
首先系统初始化,配置了PTA12,PTA13为外部中断(PTA12为场中断,PTA13为行中断),刚选择了GPIO模式和中断触发模式,两个IO口的中断标志位(PCRA的ISF位)就都被置位了。在IO口初始化以前已经关闭了总中断,IO口中断还未使能。然后在中断函数里又无法清除标志位。不论是向PORTA_ISFR寄存器写0还是写1,或者直接给PCR寄存器ISF位操作,都不行。
也尝试过在中断函数里关闭总中断也没有效果。

我实在扛不住了。不调了,希望知道的大神给点帮助

PS:上图为中断函数内,下图为初始化。问题如上



补充内容 (2012-12-20 00:48):
这就算结贴吧。给后来人提个醒:如果你的中断信号是不断产生的(像摄像头的行场信号),调试时最好不用单步,让程序连续运行。

补充内容 (2012-12-20 00:50):
还有,一旦设置了电平敏感(例如边沿触发或者电平触发),ISF位和ISFR有关中断标志就会置位,使能中断和总中断只是决定了是否中断响应(我当时就把这个混在一起了,悲剧)。
作者: 野火    时间: 2012-12-19 07:52
中断函数里又无法清除标志位

是不是不断触发中断,导致中断位无法清除呢?写1清的
作者: hbqyzpy    时间: 2012-12-19 16:31

作者: jiyiboloann    时间: 2012-12-19 19:12
这样也很难帮你找出问题,要么尝试一下仿真找找原因,要么把源代码上传给大家看看
作者: HEYsir    时间: 2012-12-20 00:44
野火 发表于 2012-12-19 07:52
中断函数里又无法清除标志位

是不是不断触发中断,导致中断位无法清除呢?写1清的

谢谢,问题确认了。由于我是单步调试,所以中断标志被清除了还是会被置位。

作者: HEYsir    时间: 2012-12-20 00:45
jiyiboloann 发表于 2012-12-19 19:12
这样也很难帮你找出问题,要么尝试一下仿真找找原因,要么把源代码上传给大家看看

谢谢,问题确认了。由于我是单步调试,所以中断标志被清除了还是会被置位。在手册PORT_PCR ISF位和ISFR寄存器最后一句说明了。


作者: jiyiboloann    时间: 2012-12-20 12:41
HEYsir 发表于 2012-12-20 00:45
谢谢,问题确认了。由于我是单步调试,所以中断标志被清除了还是会被置位。在手册PORT_PCR ISF位和ISFR寄 ...

原来如此,问题解决了就好
作者: mxj1005071012    时间: 2012-12-20 12:45
kankan
作者: 461536135    时间: 2013-1-20 15:44
我的中断也遇到问题了
作者: HEYsir    时间: 2013-1-21 13:41
461536135 发表于 2013-1-20 15:44
我的中断也遇到问题了

希望一起探讨,目前我还是对中断内清除标志位是否有效还是不确定,也没专门试过

作者: 庞七七    时间: 2013-4-10 21:00
[attach]43654[/attach]我用的外部中断A12口的。。上升沿中断。。但是我并没有给A12上升沿。。他平时通过一个10K电阻接地。。可是却会自己就进中断了 。这是为什么啊  ?求帮助 我快被折磨死了

作者: HEYsir    时间: 2013-4-11 00:22
庞七七 发表于 2013-4-10 21:00
我用的外部中断A12口的。。上升沿中断。。但是我并没有给A12上升沿。。他平时通过一个10K电阻接地。。可是却 ...

其实吧,我也不怎么知道,只能给点建议。
依据我碰到的情况,disable函数好像并不能把中断关死(个人碰到的,也可能是我的程序问题),所以建议你的中断设置在确定要打开中断时再配置。


作者: 庞七七    时间: 2013-4-11 10:53
HEYsir 发表于 2013-4-11 00:22
其实吧,我也不怎么知道,只能给点建议。
依据我碰到的情况,disable函数好像并不能把中断关死(个人碰到 ...

我的中断是无时无刻都在检测有没有进入中断的。。。所以全程都要检测 因此只能在初始化各端口的时候给配置了




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2