这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 串口通信速度过快导致单片机重启??

共19条 1/2 1 2 跳转至

串口通信速度过快导致单片机重启??

菜鸟
2012-06-01 17:06:20     打赏

SOS!!!!!用RS485串口通信,PC接上51。设置串口助手的自动发送周期为10ms,PC发送一串数据单片机返回一串应答码??

单片机运行不到0.5s便重启?????

程序开始运行时设置了开始声响,LED灯由暗变亮~~~~死机后,程序竟跳到main开始!!??

是不是单片机在发送,而串口助手也在发送,导致数据出错,而影响到单片机???

换了其他的51型号也是如此。计算过之后,单片机发送回来的数据有23个字节,波特率是19200,单片机发回来大概需要9.5ms,串口发送19个字节,需要8.0毫秒,加起来大概需要18ms。而串口利用自动发送,发送周期需要大于等于18ms,单片机才不会死机,重启。否则,小于18ms的就会死机,重启。

这是溢出问题吗???或者是其他原因???


485也出现这样的情况!!?

这个是发送程序,串口通信则屏蔽485线
void RS485_Send(uchar Data)
{
 TI=0;

// RS485_TXDEN = WRITE_485;

 SBUF = Data;      //send data to buffer

 while(!TI);
 TI=0;        //reset End-send flag bit

// RS485_TXDEN = READ_485;

}


中断处理函数
/***********************************************
* Name:  Receive_Data(ucahr Data)
* Describe: main fuction
* Return:  None
***********************************************/
void Receive_Data(uchar Data)

 if(Rec_Count>=REC_BUF_LENGTH-2) Rec_Count=0;
 
 else
  Rec_Buf[Rec_Count]=Data;

 if(Rec_Buf[0] == DATA_HEAD)  Rec_Count++;  //count from Data_Head

}



中断程序

void USRAT_int() interrupt 4
{
 uchar Data;

 EA=0;

 if(RI)
 {
  Data = SBUF;
 
//  RS485_Send(Data);
  Receive_Data(Data);

  RI=0;
 }// end of if(RI)

 EA=1;  
}




关键词: 串口     通信     速度     过快     导致     单片机     重启    

工程师
2012-06-01 18:01:00     打赏
2楼
串口通信速度过快会导致重启?有没有检查硬件电路有什么问题,复位电路被其它电路干扰到了?

助工
2012-06-01 18:54:49     打赏
3楼
测试一下你485口的电压有没有问题,单片机时序之类的。会不会被保护了。对外围硬件一一排查。。然后再查软件,看门狗,软保护。一点点找问题呗。

菜鸟
2012-06-01 22:32:45     打赏
4楼
应该是电压有异常,引起了重启。仔细检查是不是什么地方被干扰了。

菜鸟
2012-06-02 09:09:24     打赏
5楼
我想应该不是硬件的问题,因为换了另一个不一样功能的51模块(因为是在开发一个项目,有很多不一样功能的51模块,电路也不一样),同样会出现这样的问题。导致重启的话,还有一个问题??就是当波特率提高到57600,就不会出现这样的情况,就算自动发送周期设置为1ms。就是单片机发送回来的数据很快就处理掉,远远小于1ms的发送周期。这样的情况,我想应该是软件的问题。
       但软件真看不出有什么问题,接收缓冲的保护也有了……就是没有对狗操作而已

菜鸟
2012-06-02 09:12:29     打赏
6楼
两个不同的模块估计不是电压问题了吧~~~很有可能是程序的问题

助工
2012-06-03 09:40:44     打赏
7楼
将波特率降点再试试看

菜鸟
2012-06-03 09:57:24     打赏
8楼
将波特率降低出现这样的几率越大,反而将波特率提高却不会出现这样的情况。主要是因为提高波特率,自动发送周期就比单片机发送数据的时间长,这样就不会导致死机了

专家
2012-06-04 08:23:16     打赏
9楼
串口通信应该是很稳定的啊,关注一下。

菜鸟
2012-06-04 12:35:55     打赏
10楼
也许是溢出问题,但找不出是哪里溢出了。收发程序就在上面。也有可能是程序的问题??

共19条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]