搜索
bottom↓
回复: 5

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

[复制链接]

出0入0汤圆

发表于 2006-7-20 08:48:09 | 显示全部楼层 |阅读模式
一个系统中存在几个中断,定时器中断和UART接收,发送数据中断。

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



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

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-7-20 08:49:59 | 显示全部楼层
产生

出0入0汤圆

发表于 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编辑过

出0入0汤圆

 楼主| 发表于 2006-7-20 13:38:28 | 显示全部楼层
谢谢

我还想问个问题:

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

出0入0汤圆

发表于 2006-7-20 13:55:17 | 显示全部楼层
退出第一个中断后,第二个已经有的中断会响应的(就是你说的补上)。

出0入0汤圆

发表于 2013-1-3 11:30:10 | 显示全部楼层
学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 06:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表