linux c 指定时间执行一次,c – 如何限制Linux执行操作所需的时间?

问题可能看起来很模糊,因为很难在一行中描述问题所以就这样了.

我在Raspberry Pi上使用Debian运行PID调节器,这意味着每次计算PID输出时都会获得dt(循环执行之间的时间差).

基本上dt是这样计算的.

oldtime_ = time_;

clock_gettime(CLOCK_MONOTONIC, &time_);

Timer.dt = ((static_cast(time_.tv_sec) * 1000000000 + static_cast(time_.tv_nsec)) - (static_cast(oldtime_.tv_sec) * 1000000000 + static_cast(oldtime_.tv_nsec))) / 1000000000.0;

PID每秒更新大约400次并且它很好,但有时Linux决定花费更多的时间来采取行动.结果是大量的dt,比如,不是1/400 = 0.0025而是0.8,这是所需的320倍.

结果是PID的计算不正确.看起来像这样.

我很乐意回答如何将raspbian移动到更接近实时系统的位置.

编辑

谢谢,anaken78和任何帮助过的人.使用RR_FIFO计划工作完美,处理速度始终为380-400hz.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值