chenkuizhong 发表于 2006-7-20 08:48:09

定时器中断产生时,UART接收数据中断还会产生吗?

一个系统中存在几个中断,定时器中断和UART接收,发送数据中断。

当定时器中断产生时,这时如果UART收到数据,UART接收数据中断还会产生吗?如果不会,这样岂不是会丢数据。



UART发送数据中断产生时,这时如果UART收到数据,UART接收数据中断还会产生吗?

CN.Cn 发表于 2006-7-20 08:49:59

产生

avr-qq 发表于 2006-7-20 11:09:32

在一个中断处理的过程中,AVR是不会再响应第二个中断(有些CPU是分级别的),直到这个中断服务结束,再去处理第二个中断源所产生的中断。除了你在这个中断服务中打开中断允许 sei()。



中断服务程序一般处理的时间很短,所以没有必要再去开中断。如果你的这个中断服务会持续很长时间,那就有必要在中断里面再做一个中断允许指令



打个比方说:程序中有一个中断已经发生时,处理需要1毫秒。同时还有UART接收的数据需要处理。如这个UART的波特率是 4800 /S, 则可以不必额外处理。如这个UART 波特率是 19200的,那肯定要在进入这个中断服务时,打开中断允许。以处理UART接收。
-----此内容被avr-qq于2006-07-20,11:24:21编辑过

chenkuizhong 发表于 2006-7-20 13:38:28

谢谢

我还想问个问题:

比发说程序中有一个时间中断已经发生时,处理需要1毫秒,我在这个中断中没有打开中断允许sei(),这时候UART接收到一个数据,肯定是进不了中断吧。但是当时间中断处理完后,在UART寄存器中有数据,UART上回没产生的中断,这次会不会补上?

avr-qq 发表于 2006-7-20 13:55:17

退出第一个中断后,第二个已经有的中断会响应的(就是你说的补上)。

cycle 发表于 2013-1-3 11:30:10

{:smile:} 学习
页: [1]
查看完整版本: 定时器中断产生时,UART接收数据中断还会产生吗?