avr单片机串口程序,发送数据利用中断方式好,还是查询方式好,为什么?
2个回答
展开全部
AVR单片机的UART在数据发送结束时产生中断。如果数据量比较大并且需要连续发送,而单片机的时间资源又很紧张,这时最好采用中断的方式发送数据,把整个数据包扔给中断函数去处理。UART每发送完1个字节发生1次中断,中断之后就从数据缓存读取下一个字节,周而复始直至数据全部发送完毕,这样,单片机可以把有限的时间资源,支配到实时要求更高的事件处理。
如果数据量很少,单片机的时间资源也比较宽松,采用查询的方式则更方便,先把眼下的事件处理完了再处理别的事件,这样做事情更有序,也比同时处理多个事件更不容出错。
如果数据量很少,单片机的时间资源也比较宽松,采用查询的方式则更方便,先把眼下的事件处理完了再处理别的事件,这样做事情更有序,也比同时处理多个事件更不容出错。
追问
atmega16,主频16M,对外通信距离不超过2米,能用多大的波特率。在这种波特率情况下,多少数据量的发送算是少而采用查询方式。
我看到的代码绝大部分都是查询方式。
追答
16M的频率最高波特率是1Mbps,但不知道你是单片机对单片机的通讯,还是单片机对PC的通信,这是有区别的。对于单片机一般3-5个字节算是少量的,但这仅是个人观点。但数据量的大小是相对于单片机的时间资源而言的,如果时间资源特别的窘迫,哪怕一个字节的查询时间也要计较,那只能另当别论了。至于你看到代码大部分采用查询的方式,这是因为单片机的内存空间有限,一般不会安排大量数据发送。但这并不是说明采用查询方式就一定比采用中断方式更好,重要的还是“因时制宜”。
2013-03-29
展开全部
中断还是查询不是根据用的是什么单片机决定的,而是根据程序的逻辑。
一般情况下,单片机这边处理可以这样做:定时中断接收,接收正确,使能发送中断,然后发送数据就好了
另外一端的配合可以一时,定时进入发送中断,定时进入接收中断,或者和单片机一样的处理,接收正确再发送!
一般情况下,单片机这边处理可以这样做:定时中断接收,接收正确,使能发送中断,然后发送数据就好了
另外一端的配合可以一时,定时进入发送中断,定时进入接收中断,或者和单片机一样的处理,接收正确再发送!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询