「同時にいくつもの仕事をさせる」ための方法
長嶋洋一 (SUAC) ★
- ここではArduinoによる手法(ポーリング)をサンプルとして取り上げる
- 別途に、mbedの場合には割り込みを利用したイベントメソッド、Propellerの場合には並列処理手法がある
- Arduinoサイトや解説本の欠点 --- 「一つの事しか出来ない」
- CPUの本質は「逐次処理」の連結(羅列)
- 「時分割多重化」の考え方
- CPUに"wait"を使うのはあまりに無駄
- 「delay」を使ったプログラムは役に立たない
- 「sleep」を使ったプログラムは役に立たない
- 実はArduinoはそこそこ速いのに使いこなしていない
- 「グローバル変数」を使おう
- Arduinoブログラムの変数には2種類ある
- 関数内で定義するローカル(局所)変数
- 全体で定義するグローバル(広域)変数
- ローカル変数を持続させるにはstatic宣言
- 「ソフトウェアタイマ」を使おう
- 任意に定義できるフトウェアタイマ
- ハードに対応したハードウェアタイマ
- 再初期化を忘れずに
- ソフトウェアタイマの条件判定は「=」か「>」か?
- 正確な時間の管理方法
- システムタイマを参照する
- CPUに「厳密に正確な時間」は無い
- 平均してみればほぼ正しい時間
- Arduinoの割り込み処理 - ライブラリに任せる