前回の記事のPWMのソースについて実験したのでその結果の報告。
実験は下記のとおり
(1) if文(従来のもの)
(2) else if文((1)のif文をelse if文に直したもの)
(3) switch文
(4) 配列処理
(5) シフト処理
の5つを、実行速度と、cnt1の値による実行時間の変化をオシロスコープを用いて計測する。
cnt1は0のときと7の時の値を用いる。
結果は下記の通り
cnt1の値 | 実行時間(μs) | |
if文 | 0 | 11.12 |
7 | 11.12 | |
else if文 | 0 | 6 |
7 | 11.12 | |
switch文 | 0 | 8.82 |
7 | 8.82 | |
配列 | 0 | 5.9 |
7 | 5.9 | |
左シフト | 0 | 6.1 |
7 | 10 |
色を付けているのはcnt1が0と7の時で同じ実行時間だったもの。
システムとして実行時間が変化するのは良くないで、else if文とシフトは除外される。
そこで速度で比較すると明らかに配列が高速なことが分かる。
よって配列を用いたPWMの出力を採用しようと思います。
実験に用いたソースは下記の通り。
ファイルをダウンロード - speed.c
--
追記
PWMのソースの新しいのを公開しました。
http://dream-drive.net/robot/pwm.htm