4158|6

14

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

发现CH554单片机在GPIO下降沿中断下的一个严重问题 [复制链接]

最近在做一个应用需要用到CH554E的GPIO中断,我把GPIO中断配置成了P1.5的下降沿触发,然后进入中断做一些事,结果发现进了中断出不来了!根据CH554的PDF的第20页底部对GPIO中断使能寄存器(GPIO_IE)的描述和第23页底部对PIN_FUN的bIO_INT_ACT的描述,bIO_INT_ACT本应该在进入GPIO中断服务程序时会自动清零。然而实际情况是bIO_INT_ACT保持1。为了显示问题我专门写了一个简单的程序,排除其他东西的影响:
  1. #include "ch554.h"

  2. sbit qaq = P1^6;

  3. void main() {
  4.         EA = 0;
  5.        
  6.         GPIO_IE = bIE_IO_EDGE | bIE_P1_5_LO;        // Enable GPIO interrupt on P1.5, falling edge
  7.         IE_GPIO = 1;        // Enable GPIO interrupt
  8.        
  9.         EA = 1;
  10. }

  11. void GPIOInterruptEntry(void) interrupt INT_NO_GPIO {
  12.         qaq = ~qaq;
  13. }
复制代码


程序期待效果是每一次P1.5下降沿进入中断之后把P1.6给取反,P1.5低电平时啥都不做。
烧入程序效果是,上电之后P1.5 P1.6持续高输出,这个是正确的。然后导线短路P1.5到地然后松开,P1.5恢复高电平。此时测量P1.6会发现P1.6上有个高频振荡,几百KHz。

大伙儿有木有遇到过这个问题呢2333333还是我的使用姿势不对x

此内容由EEWORLD论坛网友Rikka0w0原创,如需转载或用于商业用途需征得作者同意并注明出处




补充内容 (2018-4-17 15:19):
注: 不是单片姬的问题是楼主使用姿势的问题233333
此帖出自51单片机论坛

最新回复

估计是超时就不能修改了 搞清楚了就行  详情 回复 发表于 2018-4-19 17:00
点赞 关注
个人签名DCDC DCAC ACDC
STM32 STM8 51
C C# Java
Minecraft Mod开发
 

回复
举报

63

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
GPIO中断,触发中断以后,如果要清除中断,不是直接清除中断标志就能清除的,需要先把边沿触发改为电平触发,然后清除中断标志,再改为边沿触发,这样就能清除边沿触发的中断了。
此帖出自51单片机论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
本帖最后由 Rikka0w0 于 2018-4-13 21:32 编辑

根据楼上的说法 在中断刚开始的地方加入
  1.         GPIO_IE &= ~bIE_IO_EDGE;
复制代码

后问题解决,但是有个疑问就是,数据手册原文是
  1. bIE_IO_EDGE 该位为1 选择边沿中断模式,GPIO引脚输入有效边沿时产生
  2. 中断标志bIO_INT_ACT 并请求中断,该中断标志无法软件清
  3. 零,只能在复位时或电平中断模式下或进入相应的中断服务
  4. 程序时被自动清零
复制代码

注意是 或!进入相应的中断服务程序时被自动清零

现在更新下我的理解
1. GPIO_IE = bIE_IO_EDGE | bIE_P1_5_LO; IE_GPIO = 1;配置P1.5中断为下降沿模式
2. 当P1.5跳变为低电平时触发中断
3. 在中断里GPIO_IE &= ~bIE_IO_EDGE;将中断改为低电平模式,此时如果IO脚是低电平则bIO_INT_ACT=1,高电平会让bIO_INT_ACT变成0,相当于硬件自动清零了
4. 然后在中断里程序IE_GPIO=0;关闭GPIO下降沿检测
5. 下次需要捕获下降沿的时候再用1的方法开启下降沿捕获
此帖出自51单片机论坛
 
个人签名DCDC DCAC ACDC
STM32 STM8 51
C C# Java
Minecraft Mod开发
 
 

回复

63

帖子

0

TA的资源

一粒金砂(中级)

4
 
手册讲了,时在复位清除标志或者电平模式下进入中断自动清空,所以在边沿模式进入了中断,在中断中将触发改为电平模式,才能满足清除中断的要求。
此帖出自51单片机论坛
 
 
 

回复

305

帖子

0

TA的资源

一粒金砂(高级)

5
 
这不是芯片问题呢,请帮忙把标题改一下,防止给别人造成误导哦。
此帖出自51单片机论坛
 
个人签名单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

6
 
窝错惹QAQ 咱不会编辑帖子肿么破QAQ
还是超时之后就不能修改惹
此帖出自51单片机论坛

点评

估计是超时就不能修改了 搞清楚了就行  详情 回复 发表于 2018-4-19 17:00
 
个人签名DCDC DCAC ACDC
STM32 STM8 51
C C# Java
Minecraft Mod开发
 
 

回复

305

帖子

0

TA的资源

一粒金砂(高级)

7
 
Rikka0w0 发表于 2018-4-17 15:06
窝错惹QAQ 咱不会编辑帖子肿么破QAQ
还是超时之后就不能修改惹

估计是超时就不能修改了

搞清楚了就行
此帖出自51单片机论坛
 
个人签名单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表