3604|4

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

RS485的奇怪问题 [复制链接]

我是147调试MODUS程序的,接收是采用中断,发送放在main中,接收中断中一次收8个字节的数据,可是总是第一个数据大部分是不正确,本来发送的3,结果接收后就变成了0x85等一些其他数,更奇怪的是我的主程序里面做了一些改动,就是注释掉一些函数(减少主程序的运算量),收发就正常了,真的搞不明白了,下面把主函数发上来,大家帮忙看一下:
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
Init_device();
Chk_Set();
IE1 |= 0x40; //打开UART接收中断
_EINT();

while (1)
{

Dis_led(); //显示程序 这段注释掉就可以正常收发
// if(cad_flag) //其中cad_flag是timer中断中置位的,这段注释掉也可以正常收发
// {
// Adc_conver();
// cad_flag=0;
// }
if(Csend)
{
P5OUT |=BIT6;
Send_data(); //这个就是USART发送函数

}
if(actflag)
{
receive_act();
}

if(B2ms) //这段注释掉也可以正常收发
{
if(Bover==1) //采集10次结束,进入数据处理
{
TripCheck();
switch(CALcnt)
{
case 0:
_NOP();
break;

case 1:
StartCheck();
break;

case 2:
PfCheck();
break;

case 3:
OlCheck();
break;

case 4:
Qz_cal();
break;

}
CALcnt++;
if(CALcnt>=5)
{
CALcnt=0;
Bover=0; //开始采集
}
}

}

}

}

最新回复

我注意这个问题了,加了延时的  详情 回复 发表于 2009-5-2 20:58
 
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
其他子函数呢?看主程序貌似是用查询的方法接收的
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你好,我的接收是在中断中进行的......其他子程序就是AD采样和计算还有LED显示
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 

你的485是否需要切换发送和接收?

如果你的485芯片是半双工的,就要注意下从发送状态到接收状态的相互切换时要有个充足的转换时间
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
我注意这个问题了,加了延时的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表