3205|6

68

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于pc和单片机的串口通信 [复制链接]

本人做了一个温控节点,把温度数据通过串口实时的传给pc,我也可以在pc上发命令给单片机,现在问题是:如果我不发命令给单片机,则系统正常,pc可以正常接收单片机发来的温度数据,但当我发命令给单片机时,系统就卡死了。我怀疑是当我通过pc发命令时,pc正好在接收数据(因为温度数据是实时发送的,不停的),所以发生冲突,导致系统卡死,不知道我的怀疑对还是错??不知道有没有什么解决方法,既可以把温度数据实时的传给pc,pc也可以随时发命令给单片机,求高人解答!!

最新回复

问题已经解决了,主要有两个问题,一是数据发的频率太高了,容易照成冲突;二、发送数据之前没有检查有没有正在接收。把上面两个问题解决后就行了,谢谢大家的建议哦。。。。  详情 回复 发表于 2010-3-31 13:11
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的单片机的串口在处理与PC的通讯,是采用的中断 还是轮询 方式啊?


感觉很可能是单片机采用了中断,但单片机的UART接受中断函数处理不当,
从而当PC端发送数据时,单片机进入接受中断 就死掉?


你看看你对单片机串口的 初始化是否正确? 如果采用中断,好好看看中断初始化,以及中断处理函数。
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
估計是你程序的問題,接收數據過快導致程序卡死是很容易的,像溫度這樣的變化不是很快的數據,1秒采集一次就已經是很快的了

這種串口通信的問題可以參考Modbus協議來做
看懂后你可以自己定一個一問一答的協議也可以
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
使用串口调试器先调试一下通信,看看返回
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
  232 通讯, 加个max232 进行ttl 与电脑的串口电平转化,有mscomm 控件可以调用。 卡死是软件问题。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
卡死一般不太会是PC端的问题。
查查你单片机的程序,要是中断接收的话,很有可能就在中断里卡死了。
我怀疑是在等待标志位那里,或者是数据处理那里挂掉了。
你看一下吧。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
问题已经解决了,主要有两个问题,一是数据发的频率太高了,容易照成冲突;二、发送数据之前没有检查有没有正在接收。把上面两个问题解决后就行了,谢谢大家的建议哦。。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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