MSP430デバイス が起動しない
テクニカル・ノート 37778
アーキテクチャ:
MSP430
コンポーネント:
general
更新日:
2018/08/13 1:15
はじめに
本テクニカルノートでは、MSP430デバイスが起動しない場合、またはmain関数に到達しない場合について説明します。
現象
ハードウェアが起動しない
main()関数に到達する前に、MSP430デバイスがリセットされる
初期化中にウォッチドッグタイマがタイムアウトする
原因
アプリケーションで大量の(4kを超える)グローバル変数を初期化する場合、ウォッチドッグがタイムアウトする前にcstartupの初期化を完了できません(その結果、デバイスがリセットされます)。
関係する派生品
MSP430の派生品であるMSP430F1610、F1611、F1612は、大容量のRAMを搭載しています。ただし、本テクニカルノートは大容量のRAMを搭載しているあらゆるデバイスに適用されます。
解決方法
初期化フェーズに入る前に、ウォッチドッグタイマをオフにしてください。この操作は、なるべく__low_level_init内で行うようにしてください。
ステップ(MSP430F1610、F1611、F1612の場合)
- (...\430\src\lib\から)low_level_init.cというファイルをプロジェクトディレクトリにコピーします。
- コピーしたlow_level_init.cをプロジェクトに追加します。
- コピーしたlow_level_init.cを以下のように編集します。
- このファイルに以下の記述を追加します。
-
#include <msp430x16x.h>
- または、以下の記述を追加します。
-
#include <io430x16x.h>
- __low_level_init()関数に以下の記述を追加します。
-
WDTCTL = WDTPW + WDTHOLD;
- 最後に、(必要に応じて)アプリケーションのウォッチドッグを有効にすべきかどうか検討します。ウォッチドッグを有効にする場合、その場所にしかるべきCソースを追加してください。
全ての製品名は、それぞれの所有者の商標または登録商標です。