トップページ >
dsPIC入門 >
コンフィグレーションについて(1)
クロックの設定
_FOSCマクロで、クロック回路の設定をします。
ソースコードでの記述方法 :
_FOSC(発振回路の選択 & 選択した発振器のモード設定 & クロック切り替え設定);
_FOSC()のカッコ内に、3つのパラメーターを記述します。パラメーターの順序は関係ありません。
“FOSC”はOscillator Configurationの略らしいです。
なお、dsPICが実際に動作する速度は、ここで設定する「入力クロック」の1/4になります。
これは「システムクロック」と呼ばれ、入力クロックと区別されています。
主にプログラムの実行及び内部モジュールはこのシステムクロックで動作します。
発振回路の選択
dsPICには合計4つの内部発振回路があります。この4種類のうちから1種類を選択するためのパラメーターです。
以下にパラメーターとして使用されるマクロを列挙します。
- 記述なし : 外付け水晶発振子によるクロックを生成します。
- LP : 32kHzの内部発振器。(タイマー1に使用されるクロックを、そのまま流用。外付け部品不要)
- FRC : 8MHzの内部発振器。(外付け部品不要)
- LPRC : 512kHzの内部発振器。(外付け部品不要)
選択した発振器のモード設定
内部PLLにおいて周波数を4倍、8倍、16倍に逓倍(ていばい)して使用することができます。
このPLLの設定を行うためのパラメーターです。また、発振子を使用する場合は使用する周波数ごとに
パラメーターを変える必要があります。(発振回路のゲインが違うから…?)
以下にパラメーターとして使用されるマクロを列挙します。
水晶発振子(セラロック等含む)を使用する場合
- XT : そのままの周波数で使用します。
- XT_PLL4 : 4倍の周波数にして使用します。
- XT_PLL8 : 8倍の周波数にして使用します。
- XT_PLL16 : 16倍の周波数にして使用します。
- XTL : 4MHz以下の発振子を使用する場合です。周波数はそのまま。
- HS : 10MHz以上の発振子を使用する場合です。周波数はそのまま。
外付け部品無し、内部発振回路からのクロックを使用する場合
- FRC_PLL4 : 周波数を4倍にして使用します。
- FRC_PLL8 : 周波数を8倍にして使用します。
- FRC_PLL16 : 周波数を16倍にして使用します。
外部クロックで、周波数が高い場合(4MHz以上)
- EC : 外部クロックをそのまま使用。(“OSC2”ピンは入力されたクロックの1/4の周波数を出力)
- ECIO : 外部クロックをそのまま使用。(“OSC2”ピンは入出力ピンとして使用)
- EC_PLL4 : 外部クロックを使用し、周波数は4倍
- EC_PLL8 : 外部クロックを使用し、周波数は8倍
- EC_PLL16 : 外部クロックを使用し、周波数は16倍
外部クロックで、周波数が低い場合(4MHz以下)
- ERC : 外部クロックをそのまま使用。(“OSC2”ピンは入力されたクロックの1/4の周波数を出力)
- ERCIO : 外部クロックをそのまま使用(“OSC2”ピンは入出力ピンとして使用)
クロック切り替え機能の有無
クロックが停止してしまった場合に、自動的に内部32kHzクロックに切り替える機能があります。
また、それを検出してトラップ(強制的に0x000006番地へ飛ぶ強制割り込み)を発生させることができます。
“CSW”というのはClock Switch(クロック切り替え)の可否
“FSCM”というのはFail Safe Clock Monitor(クロックのエラー検出)可否
なんじゃないかな…と思っています(汗)
以下にパラメーターとして使用されるマクロを列挙します。
- CSW_FSCM_OFF : ともにOFF
- CSW_ON_FSCM_OFF : クロック切り替えは可。フェイルセーフ・クロックモニターはOFF
- CSW_FSCM_ON : ともにON
以上をふまえた設定例
「セラロック使用、周波数はそのまま、クロック切り替えOFF、フェイルセーフクロックモニターOFF」
という条件で初期設定するときは、
_FOSC(XT & CSW_FSCM_OFF);
…のように記述します。