マイクロコントローラのカスタマイズ

コードを生成するとき,多くのパラメータが自動的に設定されるか,デフォルト値を使用するかする.これらはマイクロコントローラに指定することで変更できる.

一般的なパラメータ

"Microcontroller"コードを生成する対象のマイクロコントローラ
"OperatingVoltage"マイクロコントローラの動作電圧
"ClockFrequency"マイクロコントローラのシステムクロックの周波数
"I2CAddress"I2Cスレーブデバイスとして動作する場合のI2Cアドレス
"SlaveSelect"SPIスレーブデバイスとして動作する場合のSS(スレーブ選択)ピン

一般的なパラメータ

パッケージをロードする.
マイクロコントローラを明示的に指定する.
動作電圧を指定する.
システムクロック周波数を指定する.

タイマパラメータ

各サンプリング時点で,マイクロコントローラは入力信号を読み取り,状態を更新し,出力を計算し,出力を送信する.サンプリング区間が終わったら,タイマはリセットされ,これらの処理が最初から繰り返される.各サンプリング区間において,マイクロコントローラは,引き起こされた割り込みに対処しなければならないとき以外は,ビジー状態のときとアイドル状態のときがある.

サンプリリング区間はシステムの性能を決める重要な因子となり得る.サンプリング区間の選択は,通常性能と電力消費の間でのトレードオフとなる.

マイクロコントローラを各サンプリング区間でサンプリングを行うように設定するための情報はデータシートに記載されている.デフォルトでは,タイマとそのパラメータは自動的に選ばれる.これらは明示的に設定することもできる.

タイマとそのパラメータを指定する.
誤差は希望のサンプリング区間と実際のサンプリング区間との差である.
タイマを自動的に決定する.
タイマが自動的に設定されたときのパラメータ.

タイマには以下の特別な値が設定できる.

"delay"Arduinoライブラリのdelay関数を使用する
"delayMicroseconds"ArduinoライブラリのdelayMicroseconds関数を使用する
"millis"Arduinoライブラリのmillis関数を使用する
"micros"Arduinoライブラリのmicros関数を使用する
None連続操作

特別なタイマ設定

設定"delay""delayMicroseconds""millis""micros"ではArduinoライブラリの関数が使用される.マイクロコントローラはまずすべてのタスクを完了し,τ 秒遅延させ,また最初から始める.

Arduinoライブラリの"delay"関数を使用する.
タイマパラメータをすべてAutomaticに設定する.
使用するArduinoライブラリは必要に応じて指定できる.

連続操作には設定Noneが使用できる.出力が送信されたらすぐに新しい入力一式が読み込まれる.この設定はサンプリング区間を無視しても安全な場合に使用できる.タイマはこの場合設定されない.

LEDの輝度をA0におけるポテンショメータ設定に基づいて連続的に調整する.
サンプリングの誤差はサンプリング周期である.

共有パラメータ

"ADC"A/D変換設定
"Serial"シリアル通信設定
"SerialOverUSB"Serial Over USB設定
"IncludeFiles"インクルードするファイル
"Definitions"マクロの定義
"Declarations"関数宣言
"Utilities"ユーティリティ関数と変数
"Initializations"プログラムの初期化
"Loop"各サンプリング時点で実行する
"PreLoop""Loop"の前に実行する
"PostLoop""Loop"の後に実行する
"UntimedLoop"プロセッサが解放されているときに繰り返し実行する

共有パラメータ

場合によっては,いくつかのピン(入力チャンネルまたは出力チャンネル)は共通の機能を共有する.例えば,アナログからデジタルへの変換は複数の入力ピンの間で多重化されたり,複数の入力および出力によって同じシリアル通信ピンが使用されたりする."ADC""Serial"等のマイクロコントローラのサブオプションの設定は,これらすべてのチャンネルに適用される.

ADCの例

アナログ入力がつで,出力が1つの系を考える.

出力が3つの入力の平均である系.

3つの入力はすべて基準値としてAVCCを使用する.

基準値としてAVCCを使用するコードを埋め込む.

この共通基準値はマイクロコントローラのサブオプションとして指定できる.

同じ基準値を使い,アナログ値の平均を出力するコードを埋め込む.

チャンネルの設定を直接指定することで,個々のチャンネルの機能がカスタマイズできることもある.

チャンネル"A2"は内部基準値を使用する.
残りのチャンネルは共通の指定を使用する.
これは長いコードになる可能性が非常に高い.

SPIの例

2つのMAX6675熱電対がデータを読み込む設定を考える.どちらも同じSPIバスを使い,交換シーケンスも同じである.しかしそれらをスレーブとして選ぶのには異なるピンが使われる.

同じ交換シーケンスが使用される.

バイトを温度の値に変換するユーティリティも同じである.

入ってくるバイトを温度(°C)に変換するCコード.

入力と出力の指定も同じであるが,SSピンは異なる.

入力指定.
出力指定.

ユーティリティは熱電対のどちらについても同じであるので,マイクロコントローラが実行する必要のある共通のユーティリティコードスニペットとして与えることができる.

両方の入力に共通のユーティリティ関数を実行するコードを埋め込む.

その他のパラメータ

Arduino Yun等,マイクロコントローラのボードによっては, 新しいプログラムを自動的にボードにアップロードするのにCommunications Device Class (CDC)デバイスとして設定される必要がある.仮想シリアル通信等の場合,この機能はデバイスの動作時にも便利である."CDC"オプションを使うと,この機能を取り除き,プログラムのフットプリントを減らし,ボードを手作業でリセットして新しいプログラムをアップロードすることができる.

"Basic", Automatic基本的なCDC機能を加える
NoneCDC機能を加えない

"CDC"パラメータの値

CDC機能を取り除くことは,ボードをロック状態にすることになるため,以下の入力を評価する前にその結果を分かっておく必要がある.不明の場合は,Arduino Yunに物理的に接続しないで評価することもできる.

CDC機能を取り除く.
リセットボタンを素早く2回押して,もう一度アップロードする.
CDC機能を使うと,コードのフットプリントが大きくなる.
大きいフットプリントは,主に追加のファイルによるものである.
一時ディレクトリとすべての中間ファイルを削除する.