ytoi / ev3rt_aspsim_raspi_linux

2 stars 0 forks source link

tslp_tsk()の時間が実時間と異なる #10

Closed karubehub closed 2 years ago

karubehub commented 2 years ago

tslp_tsk()に設定した時間に比べて、 早い時間で、スリープ時間が終わってしまうと思います。

単純に、モーターを30秒回すプログラムなのですが、 18秒程度で、モーターが止まってしまいます。

また、SPIKE側のプログラムを起動し直さないと、 動く時間が短くなっていきます。 sample_00_spike.zip

ytoi commented 2 years ago

raspi側EV3RTの方の不具合のようです。前からタイマーが1/2くらいで動作している感じがしていたのですが、あまり深く追えていませんでした。カーネルの中身を見ながら調査していますので、お待ちください。

ytoi commented 2 years ago

ターゲット依存部の現在時刻を返す部分が、差分を使って現在時刻をだしていて、それが誤差を大きくしていました。 clock_gettime()でとった値を使うように変更しました。 30秒で大体30.2秒くらいで返るようになりました。 これくらいであれば誤差かと思うので、これで試してもらえますか。

karubehub commented 2 years ago

tslp_tsk() に設定した時間で、制御できることを確認しました。