打印
[AVR单片机]

如何中断标志清除??

[复制链接]
3855|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
glen_cao|  楼主 | 2007-9-12 08:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, TE, ST, AN, IO
昨天看AVR-lib的资料上这样说:
Why are (many) interrupt flags cleared by writing a logical 1?
........
The solution is simple: writing a logical 1 to it requires only a single OUT instruction,
and it is clear that only this single interrupt request bit will be cleared. There is no need
to perform a read-modify-write cycle (like, an SBI instruction), since all bits in these
control registers are interrupt bits, and writing a logical 0 to the remaining bits (as it
is done by the simple OUT instruction) will not alter them, so there is no risk of any
race condition that might accidentally clear another interrupt request bit. So instead of
writing
TIFR |= _BV(TOV0); /* wrong! */
simply use
TIFR = _BV(TOV0);

用TIFR |= _BV(TOV0);是不是真的错???我一直这样用的!!!

相关帖子

沙发
glen_cao|  楼主 | 2007-9-12 08:21 | 只看该作者

up

使用特权

评论回复
板凳
BitFu| | 2007-9-12 08:45 | 只看该作者

没错就是这样清除

写1清或进入中断程序自动清除
要年不过要看具体器件对应的数据手册

使用特权

评论回复
地板
glen_cao|  楼主 | 2007-9-12 10:38 | 只看该作者

附:

如果用了中断源T1_OVF和T0_OVF.
现在用软件清除T0_OVF而不影响T1的中断标志.
请问是用
    TIFR |= _BV(TOV0);
还是用
    TIFR = _BV(TOV0);

????

使用特权

评论回复
5
glen_cao|  楼主 | 2007-9-12 12:11 | 只看该作者

up

使用特权

评论回复
6
zhiwei| | 2007-9-12 12:17 | 只看该作者

当然用

前者了,用后者,其他位可能会受影响的。

使用特权

评论回复
7
glen_cao|  楼主 | 2007-9-12 13:32 | 只看该作者

看来楼上的是没有看Avr-lib-user-manual

使用特权

评论回复
8
glen_cao|  楼主 | 2007-9-12 14:28 | 只看该作者

M8的datasheet上是这么说的:

。。。。。。
也可以对其写入逻辑"1” 来清除该标志位。

使用特权

评论回复
9
glen_cao|  楼主 | 2007-9-12 17:41 | 只看该作者

up

使用特权

评论回复
10
glen_cao|  楼主 | 2007-9-13 15:53 | 只看该作者

没人理了

使用特权

评论回复
11
simon21ic| | 2007-9-14 01:55 | 只看该作者

TIFR |= _BV(TOV0);是对的

但没有必要这么写,编译器应该不会优化的(多了一次寄存器读取操作).
TIFR里的位都是中断Flag,可以用"TIFR = _BV(TOV0);",只会清除"1"对应的Flag,"0"对应的不变.

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 赞一个!
12
农民讲习所| | 2007-9-14 10:13 | 只看该作者

TIFR = _BV(TOV0);

使用特权

评论回复
13
glen_cao|  楼主 | 2007-9-17 16:45 | 只看该作者

知道了,谢谢各位的支持

使用特权

评论回复
14
一般首席| | 2013-3-19 12:55 | 只看该作者
不用管它为什么 只要知道这么用就行了 我是这么想的

使用特权

评论回复
15
qin552011373| | 2013-3-20 00:17 | 只看该作者
不错的讨论  

使用特权

评论回复
16
Socrazyman| | 2013-3-20 15:02 | 只看该作者

使用特权

评论回复
17
qin552011373| | 2013-3-21 21:59 | 只看该作者
Socrazyman 发表于 2013-3-20 15:02

使用特权

评论回复
18
yhhsky| | 2013-3-30 18:56 | 只看该作者

使用特权

评论回复
19
Socrazyman| | 2013-11-19 10:24 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

61

帖子

0

粉丝