haerbintcl 发表于 2007-12-2 19:46:39

关于AVR定时器中断的疑问

老师你好,大家好,
关于AVR单片机定时器有个疑问一直解决不了,希望大家帮助一下。
1。定时器中断后何时自动清中断标志位?进入中断服务程序那一刻还是结束中断服务程序的要返回的时候?(我感觉是后者)
2。定时器中端可否中断自己?中断服务程序比较长,在下次中断服务开始的时候还没有完会发生什么情况?(这种情况我感觉可能性不大)

请大家谈谈,谢谢了!

mljda 发表于 2007-12-2 20:32:10

1 ,调用了中断程序就自动清。
2 ,所有中断在打开全局中断时,都可以中断任何正在执行的中断程序。如果在中断程序中开了全局终端就会发生中断嵌套,如果没有开全局中断,就会等退出程序再进入调用终端。

3,以上适合所有中断。

4,请看文档即相关教材。
下面为手册描述

任一中断发生时全局中断使能位I 被清零,从而禁止了所有其他的中断。用户软件可以在
中断程序里置位I 来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执
行RETI 指令后I 自动置位。
从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序
计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志。中
断标志也可以通过对其写”1” 的方式来清除。当中断发生后,如果相应的中断使能位为
"0",则中断标志位置位,并一直保持到中断执行,或者被软件清除。类似的,如果全局
中断标志被清零,则所有已发生的中断都不会被执行,直到I 置位。然后挂起的各个中断
按中断优先级依次执行。
第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中断标志。若
中断条件在中断使能之前就消失了,中断不会被触发。
AVR 退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中断。
要注意的是,进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恢
复。这些工作必须由用户通过软件来完成。
使用CLI 指令来禁止中断时,中断禁止立即生效。没有中断可以在执行CLI 指令后发生,
即使它是在执行CLI 指令的同时发生的。下面的例子说明了如何在写EEPROM 时使用这
个指令来防止中断发生以避免对EEPROM 内容的可能破坏。

machao 发表于 2007-12-2 20:38:37

请下载本拦置顶部分的红色帖子,电子书稿的第8章参考.详细了解定时器的工作原理与使用.

1.在响应该定时器中断服务的那一刻自动清中断标志位(电平中断方式除外)

2.如果在一般情况下(除中断嵌套)定时器中断不能再中断自己的中断服务.中断服务程序应尽量短.这些原则在电子稿中都有,请认真学习.

haerbintcl 发表于 2007-12-3 11:42:43

多谢两位指教,我就下载学习,多谢!

gmail@gmail.com 发表于 2012-7-23 10:54:27

mark,,,,,,,,都要mark

yfgww 发表于 2012-7-31 16:38:31

mark{:smile:}{:smile:}
页: [1]
查看完整版本: 关于AVR定时器中断的疑问