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ソースを追加してください。

 

全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。