[AVR单片机] MEGA128串口问题 很是迷惑

[复制链接]
4299|17
 楼主| leizi2008 发表于 2009-10-13 11:04 | 显示全部楼层 |阅读模式
我用UCSR0发数,用的是codevision自动生成的发送中断函数 每1s发送200个字节
波特率115200 老处错误 错误率3/10000左右 但是每次发完加上一个很短的延时 就好了 知道的大侠指点下
宇容创行 发表于 2009-10-13 11:08 | 显示全部楼层
波特率误差,是用内部rc振荡吗?
 楼主| leizi2008 发表于 2009-10-13 11:45 | 显示全部楼层
不是啊 外部震荡 14.7456MHz 查的资料没有波特率误差啊
zhaoweige 发表于 2009-10-14 13:16 | 显示全部楼层
这个我也试过,波特率越高,越容易出错,没深究过为什么
用不到这么高的波特率
lovelyegle 发表于 2009-10-14 13:28 | 显示全部楼层
可能来没来得及发完
wangwo 发表于 2009-10-14 22:01 | 显示全部楼层
自动生成的发送中断函数有没有什么特别的设置什么的
 楼主| leizi2008 发表于 2009-10-15 09:57 | 显示全部楼层
7# wangwo
自动生成的发送中断程序没有改动过 我用查询的试了下,也是这种现象……
 楼主| leizi2008 发表于 2009-10-15 09:58 | 显示全部楼层
wangwo 发表于 2009-10-18 19:11 | 显示全部楼层
:o,高手在哪,偶也不清楚
Karlshen 发表于 2009-10-18 19:13 | 显示全部楼层
顶贴!
 楼主| leizi2008 发表于 2009-10-20 13:28 | 显示全部楼层
算了 我就加个延时吧用吧
Karlshen 发表于 2009-10-20 19:15 | 显示全部楼层
没办法的办法
lbcumt 发表于 2009-10-21 14:51 | 显示全部楼层
UART的控制寄存器中有两个标志位,一个是发送完成标志,还有一个是发送寄存器空标志。当你发送数据的速率太快时,寄存器还没有清掉你就发送下一组数据了,这样就会造成误码或者数据的丢失。你加了延时以后就解决了这个问题,也可以通过检测上面提到的寄存器空标志位来判断。这样就不会耽误太长的时间了
 楼主| leizi2008 发表于 2009-10-22 16:28 | 显示全部楼层
我的延时不是加在每个字节之后,而是发完200多个字节后加了一次延时 14# lbcumt
wangwo 发表于 2009-10-22 19:43 | 显示全部楼层
那还真是奇怪了
 楼主| leizi2008 发表于 2009-10-29 11:24 | 显示全部楼层
他妈的。看门狗出问题……
延时函数内有看门狗……见笑……
li_s_w 发表于 2009-10-29 20:15 | 显示全部楼层
1 S 200Byte 用不着波特率115200。9600不行吗?
wangwo 发表于 2009-10-29 20:47 | 显示全部楼层
问题的答案原来是这样:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

266

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部