搜索
bottom↓
回复: 9

AVR中断发送串口 遇到了问题 !求助啊~各位大神帮小弟看看

[复制链接]

出0入0汤圆

发表于 2014-3-19 13:37:57 | 显示全部楼层 |阅读模式
#define SEI_TX    UCSRB|=(1<<TXEN)|(1<<TXCIE)|(1<<UDRIE)//
#define CLI_TX    UCSRB&=~((1<<TXEN)|(1<<UDRIE)|(1<<TXCIE))//


u8 WriteDataToTxdBuff(u8 *Data,u8 Datalengt)
{
  if((MY_UartTxdBuff.UartDataHead==MY_UartTxdBuff.UartDataTail)&&(MY_UartTxdBuff.UartDataCounter==UartTxdBuffSize))
    return 1;//缓冲区数据满返回1退出
  if(Datalengt>(UartTxdBuffSize-MY_UartTxdBuff.UartDataCounter))
    return 1;//要接收的数据宽度不够
  while(Datalengt--)
    {  
           MY_UartTxdBuff.UartTxdBuf[MY_UartTxdBuff.UartDataHead++]=*Data++;
           MY_UartTxdBuff.UartDataCounter++;
        }
  if(MY_UartTxdBuff.UartDataHead>=UartTxdBuffSize)
    {
         MY_UartTxdBuff.UartDataHead=0;
        }
  SEI_TX;
  return 0;
}


ISR(USART_UDRE_vect)
{
if((MY_UartTxdBuff.UartDataHead==MY_UartTxdBuff.UartDataTail)&&(MY_UartTxdBuff.UartDataCounter==0))
   { CLI_TX;
     return;}//缓冲区数据空,可能性很少
UDR=MY_UartTxdBuff.UartTxdBuf[MY_UartTxdBuff.UartDataTail++];
MY_UartTxdBuff.UartDataCounter--;
if(MY_UartTxdBuff.UartDataTail>=UartTxdBuffSize)//
    {MY_UartTxdBuff.UartDataTail=0;
         }
else
SEI_TX;

}

ISR(USART_TXC_vect)
{
// CLI_TX;
}

while(1)
{
delay_ms(100);
WriteDataToTxdBuff(&a,3);
delay_ms(100)

}

现在现象是 刚开机时发时时间和间隔都很正常,当发送200左右之后  发送的速度就很快 完全没有时间间隔,请客位看官 ,大虾帮忙看看
小弟在线等!谢谢 谢谢

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2014-3-19 13:44:01 | 显示全部楼层
要不然 就是发送200左右之后 没动静了 但是程序没有死,点个LED做RUN的提示也正常!

出0入0汤圆

 楼主| 发表于 2014-3-19 13:46:00 | 显示全部楼层
ISR(USART_TXC_vect)
{
CLI_TX;
}
打开送200左右之后 没动静了

出0入0汤圆

 楼主| 发表于 2014-3-19 14:14:30 | 显示全部楼层
顶起~~~~~~

出0入0汤圆

 楼主| 发表于 2014-3-19 14:26:38 | 显示全部楼层

顶起~~~~~~

出0入0汤圆

 楼主| 发表于 2014-3-19 14:46:47 | 显示全部楼层
我等 ~~木有人遇到!

出0入0汤圆

 楼主| 发表于 2014-3-19 16:08:07 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2014-3-19 16:58:07 | 显示全部楼层
也数据不会发完 又自动循环  所以 最后不会进入接收中断里面

出0入0汤圆

 楼主| 发表于 2014-3-19 17:25:27 | 显示全部楼层
问题 好像不在 中断发送这里
而可能是缓冲BUFF里面!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-19 06:39

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

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