一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
12
返回列表 发新帖
楼主: qduwg
收起左侧

[51单片机] 让GPS速度程序搞的有点小崩溃。一旦定位好了,就显示不正常了

[复制链接]
发表于 2015-12-11 09:12 | 显示全部楼层
本帖最后由 狗狗百里游 于 2015-12-11 09:20 编辑

gps发送的数据长度不固定的,有定位数据的时候,发送数据较多,一般用这两句内容就可以了$GPGGA,$GPRMC。

如果串口接收中断函数,没有足够的缓存字节,没有过滤,$XXXXX的其他内容,转换数据的函数没有足够时间运行,被串口接收中断函数弄断的话,程序会跑飞。如果单片机cpu运行其他代码负担过大,gps串口接收数据也会丢失部分,得到有效数据也会从一秒一次到N秒一次。
如果你的gps支持发送命令,让它只输出$GPGGA,$GPRMC会比较有效,不过不是所有gps可以。
优化串口过滤字符,跟处理分析数据的代码比较好。
你可以用它【Virtual GPS V1.34 模拟连接到系统上的GPS接收器】发送虚拟数据测试,这个可以定义数据,也可以只发送$GPGGA,$GPRMC,跟全部发送,可以测试出代码效率。

我试过gps+DS3231,如果DS3231转换温度的命令,是卡死到温度成功转换的话,只发送一次温度转换阻塞命令,单片机处理转换完$GPGGA,$GPRMC数据,一秒更新一次,如果连续发送两次温度转换阻塞命令,就会变成两秒更新一次数据
发表于 2015-12-11 09:19 | 显示全部楼层
【Arduino Mega2560 R3】+【GY-NEO6MV2 GPS模块】+【时钟模块 DS3231】+【串口彩色触摸屏】
1.jpg 2.jpg 3.jpg

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-14 18:09 , Processed in 0.046652 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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