定时器中断产生时,UART接收数据中断还会产生吗?
一个系统中存在几个中断,定时器中断和UART接收,发送数据中断。当定时器中断产生时,这时如果UART收到数据,UART接收数据中断还会产生吗?如果不会,这样岂不是会丢数据。
UART发送数据中断产生时,这时如果UART收到数据,UART接收数据中断还会产生吗? 产生 在一个中断处理的过程中,AVR是不会再响应第二个中断(有些CPU是分级别的),直到这个中断服务结束,再去处理第二个中断源所产生的中断。除了你在这个中断服务中打开中断允许 sei()。
中断服务程序一般处理的时间很短,所以没有必要再去开中断。如果你的这个中断服务会持续很长时间,那就有必要在中断里面再做一个中断允许指令
打个比方说:程序中有一个中断已经发生时,处理需要1毫秒。同时还有UART接收的数据需要处理。如这个UART的波特率是 4800 /S, 则可以不必额外处理。如这个UART 波特率是 19200的,那肯定要在进入这个中断服务时,打开中断允许。以处理UART接收。
-----此内容被avr-qq于2006-07-20,11:24:21编辑过 谢谢
我还想问个问题:
比发说程序中有一个时间中断已经发生时,处理需要1毫秒,我在这个中断中没有打开中断允许sei(),这时候UART接收到一个数据,肯定是进不了中断吧。但是当时间中断处理完后,在UART寄存器中有数据,UART上回没产生的中断,这次会不会补上? 退出第一个中断后,第二个已经有的中断会响应的(就是你说的补上)。 {:smile:} 学习
页:
[1]