2884|9

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

2410 I2C 的 ISR,看不懂,帮忙解释一下! [复制链接]

本人在调 CE5.0 + 2410 的 I2C 流驱动,其中 I2C 中断的 ISR 部分有些看不懂,如下:


  1.         //
  2.         // IIC Interrupt
  3.         //
  4.         else if ( IntPendVal == INTSRC_IIC )
  5.         {
  6.                 s2410INT->rSRCPND = BIT_IIC;        // 清除中断
  7.                 if (s2410INT->rINTPND & BIT_IIC) s2410INT->rINTPND = BIT_IIC;
  8.                 s2410INT->rINTMSK = BIT_IIC;        // I2C中断禁止

  9.                 return (SYSINTR_IIC);
  10.         }
复制代码


#define    BIT_IIC                (0x1<<27)

-----------------------------------------------------------------------

其中【s2410INT->rINTMSK = BIT_IIC;】这句我可以看懂,是屏蔽 I2C 中断;

但是上边两句就看不懂是什么意思了:

s2410INT->rSRCPND = BIT_IIC;        // 清除中断
if (s2410INT->rINTPND & BIT_IIC) s2410INT->rINTPND = BIT_IIC;


请大家简单解释一下!多谢!

最新回复

向对应的位写一清中断  详情 回复 发表于 2009-6-24 10:48
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
哦,上边一句有错误,少了一个位或符号,修正如下:

s2410INT->rINTMSK |= BIT_IIC;        // I2C中断禁止
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主看数据手册啊。

2440/2410 比较奇怪,当发生一次中断后,
要清除中断时要把该位置一的,通常都是置零,所以要特别小心。
    if (s2410INT->rINTPND & BIT_IIC) s2410INT->rINTPND = BIT_IIC;


没有什么啊,就是寄存器设置而已。你仔细对比其他的发现是一个样。

 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
建议看一下中断处理那一节,里面有说到2410整个的中断是怎么处理的,还有这几个寄存器是怎么用的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
中断源,请求源寄存器清零操作需要向对应位置一的。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 xingxing_y 的回复:
中断源,请求源寄存器清零操作需要向对应位置一的。

是这样的,2440手册上有说明
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 gooogleman 的回复:
楼主看数据手册啊。

2440/2410 比较奇怪,当发生一次中断后,
要清除中断时要把该位置一的,通常都是置零,所以要特别小心。
    if (s2410INT->rINTPND & BIT_IIC) s2410INT->rINTPND = BIT_IIC;


没有什么啊,就是寄存器设置而已。你仔细对比其他的发现是一个样。

同意gooogleman的见解!
SRCPND 和INTPND 这两个未决寄存器都是通过对其对应位写一次1来清除中断响应的。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
UP
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

9
 
uping
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
向对应的位写一清中断
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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