C-Style上での処理能力を上げるためには?

ロボットの処理能力を上げるには、マイコンの性能を上げるのが手っ取り早いが、TJ3Bなどのキットではマイコンそのものを取り替えるわけにも行かないので、プログラムの無駄を省くことが重要になる。

ロボットの一般的なプログラムはこんな感じになるが、決まった時間内により多くのループを回せるプログラムのほうが、判断回数も多く、処理能力が高いと言える(実際のプログラムの内容はさておき)。

無駄を省くためには、C-Styleのそれぞれの機能を実行するために、どれほどの時間がかかるか、を知っておく必要がある。

タイマーを使えばプログラムの実行時間が計測できるので、それに若干のC-Codeを足して実際の処理時間を確認する。機能によっては一瞬で処理が終わりタイマーで時間が測れないことがあるので、同じ機能を複数回実行するが、時間を図りたい機能以外の処理にかかる時間(ループ処理にかかる時間等)は除外することも考える。

下のサンプルは、空のfor文1000回ループの時間を計測する。この内側のfor文に、時間を図りたい機能を入れてプログラムを実行し、空のfor文1000回ループに掛かった時間を引けば、その機能を1000回実行する際の時間がわかる(1000回に深い意味は無い。時間を図るに十分な回数を繰り返す)。

様々な機能毎に処理時間が分かれば、遅い機能の利用を避けて処理速度を上げることができる。

シリアル出力の確認には Teraterm を使う。