1

阿木币

0

精华

0 小时

在线时间

应届白菜

Rank: 1

发表于 2019-4-13 14:45:01 6730 浏览 4 回复

PX4学习过程中的经验分享

以前在微信群里发,不便于大家查看和检索,以后都同步发在这里。

2019.4.13 电调端口用作普通IO的方法
记得前段时间有人问 PWM 口作普通端口使用的问题,今天试了下依靠改变占空比的方法,完全可行,脉宽为0输出低电平,等于周期输出高电平;
简单测试,以 FMU 控制的 AUX 端口为例,首先在 fmu.cpp 文件中注释掉如下两个函数:
up_pwm_servo_set(i, pwm_limited[i]);
up_pwm_update();
以防止其操作端口,随后在控制台下用 pwm 命令测试,首先将频率设置为500Hz:
pwm -d /dev/pwm_output1 rate -a -r 500
随后将脉宽设置为2000us:
pwm -d /dev/pwm_output1 test -a -p 2000
此时用示波器可以看到输出是高电平,如果将脉宽设置为0,输出的就是低电平(需要编辑 pwm.cpp 源码解除为0的限制,频率的最大限制是10000Hz,在其他文件中,编辑后也可解除),如果要编写应用,可以参考 pwm.cpp 用 px4_ioctl 函数直接操作脉宽和周期。
延伸:完全可以用脉冲方向的方式控制步进和伺服电机,我测试了一下,2.4.6的硬件,脉宽5us,频率100K时的波形依然完美,最高上到500K也没啥大问题;不知2.4.8的简化版怎么样(端口的TXS010的芯片被干掉了),有兴趣的同学可以试试。

2019.4.2 控制台用“上”键回调之前指令的方法
搞开发绕不开串口5的调试控制台,但默认命令行功能太过简单,不能通过“上”键回调之前的命令,解决的方法是在 platforms/nuttx/nuttx-configs/px4fmu-v2/nsh 下的文件 defconfig 中,加入如下三行代码:
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_READLINE_CMD_HISTORY_LINELEN=80
CONFIG_READLINE_CMD_HISTORY_LEN=16
随后编译烧录即可。

2019.3.16 PX4中的指针初始化切慎用NULL
应当用nullptr。一般C++中,用NULL或0不会有问题,可PX4中非常危险,莫名其妙的Hardfault导致系统崩溃,短则运行几分钟,最长有过一天多(测试),看map文件追踪来源也一头雾水,几乎每次都不样,后来指针初始化用nullptr后再未发生过,目前具体原因不详,另外,查看PX4本身的代码也有使用NULL的,但数量很少。
各位朋友如用到指针,千万记得用nullptr初始化,血泪教训啊!

2019.3.4 关于Pixhawk的系统时间
PX4的系统时间,如果不上电工作就走时的问题,明明看见板子上有颗纽扣电池,可是折腾了好久,一直追踪到Nuttx下打开LSE晶振都不行,奇了怪了,最后仔细看了板子和原理图才发现,原来根本没有LSE晶振;

2019.2.19 关于串口自定义使用的问题
微信群中的变形钢筋提到过,ttyS2串口无法发送只能接收的现象,我今天也在研究,发现该串口有硬件流控制,将原本高电平的CTS管脚接地就可以发送数据了;
随后继续演进ttyS2串口不能发送数据的解决方法,昨天提到用CTS接地实现硬件流控制允许,毕竟硬件比较麻烦,软件实现的方法是,在串口初始化时取消硬件流控制:
添加 uart_config.c_cflag &= ~CRTSCTS 即可。

扫一扫浏览分享
回复

使用道具 举报

8

阿木币

2

精华

10 小时

在线时间

版主

Rank: 7Rank: 7Rank: 7

发表于 2019-4-13 17:34:20
2019.3.4 关于Pixhawk的系统时间
PX4的系统时间,如果不上电工作就走时的问题,明明看见板子上有颗纽扣电池,可是折腾了好久,一直追踪到Nuttx下打开LSE晶振都不行,奇了怪了,最后仔细看了板子和原理图才发现,原来根本没有LSE晶振;


对于这个问题,那对于这个问题该如何解决,poixhawk如何让它走时准确,我最近记录log数据,时间都有问题。
回复 点赞

使用道具 举报

97

阿木币

0

精华

57 小时

在线时间

老司机

Rank: 2

发表于 2019-4-15 09:59:10
这期间有没有做仿真方面的尝试,可以一起沟通下!
回复 点赞

使用道具 举报

139

阿木币

0

精华

287 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2019-4-15 11:57:09
toothsmile 发表于 2019-4-13 17:34
2019.3.4 关于Pixhawk的系统时间
PX4的系统时间,如果不上电工作就走时的问题,明明看见板子上有颗纽扣电池 ...

有GPS的话,系统时间是准确的,貌似有外接的板载计算机,用过mavlink协议也可,提供准确的时间
我不为己,谁人为我,但我只为己,那我又是谁?
回复 点赞

使用道具 举报

1

阿木币

0

精华

13 小时

在线时间

应届白菜

Rank: 1

发表于 2019-7-4 13:44:03
补充一个,usleep命令也要慎用,有可能会挤掉低优先级的任务导致各种莫名其妙的bug
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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