论坛风格切换切换到宽版
  • 5938阅读
  • 10回复

发一个AVR半双工软串口的程序 [复制链接]

上一主题 下一主题
离线bd1es
 
发帖
2096
只看楼主 倒序阅读 0楼 发表于: 2008-09-20
最近做实验,需要2313支持双串口。从atmel找了个304号应用笔记作参考,感觉真是写得不错。但原程序有个不足,如果发送的时候在接收端意外出现干扰脉冲,程序就会挂死的。于是我改了改,成了这个mod版的软uart。现在支持avrgcc,8mhz主频时可用到64kbps,最低200bps。如果要移入其它的芯片,请确认和修改寄存器操作那部分的代码,看程序便知。

也许没用,贴出来供大家参考。感兴趣的朋友请继续优化,不时告诉俺一声,感激不尽。
附件: AVR304-mods-bd1es.zip (0 K) 下载次数:423
离线BG4XCR
发帖
33381
只看该作者 1楼 发表于: 2008-09-20
好东西,收藏了。
在线BG4UVR
发帖
11287
只看该作者 2楼 发表于: 2008-09-20
记号,用到时直接来这下载 :d
离线bd1es
发帖
2096
只看该作者 3楼 发表于: 2008-09-20
:d :d :d
离线BG7PMZ
发帖
3139
只看该作者 4楼 发表于: 2008-12-17
记个号12345
离线xwg
发帖
264
只看该作者 5楼 发表于: 2008-12-31
下了,看了,学了,谢了
在线BG4UVR
发帖
11287
只看该作者 6楼 发表于: 2009-06-23
下载了最新版的avr304示例,加入到我一个工程当中,现在已经正常工作了。

感谢 bd1es 介绍这个代码。

我的软串口主要用于接收。实际使用时,发现查询接收状态的方法不太现实,
因为这样基本就无法去做别的工作了,除非你的主程序只需要处理极少的工作。
我把接收中断改造了一下,把接收到字节在中断中直接放入一个缓冲队列。主
程序判断队列头、尾指针是否相等就知道是否有数据在等待处理了。

缓冲区的大小需要根据你单位时间接收的数据量,以及主程序最大可能的执行
时间来确定,感觉使用内存来换取实用性,非常值得,效果非常好。

欢迎各位交流这个代码的学习感受。
离线bd1es
发帖
2096
只看该作者 7楼 发表于: 2009-06-26
好mods, ,我自己的那个也是改得面目全非了。应用不同代码就不同,软uart提供了足够的灵活性,这点比硬的强。
发帖
689
只看该作者 8楼 发表于: 2009-07-03
太好啦
谢谢
离线bg2thx
发帖
55
只看该作者 9楼 发表于: 2010-04-28
做记号
离线BG7PMZ
发帖
3139
只看该作者 10楼 发表于: 2010-06-01
记号...........