ホーム フォーラム Texas Instruments マイコン MSP430 MSP430で動作が止まってしまう

このトピックには5件の返信が含まれ、2人の参加者がいます。4 年、 3 ヶ月前 nachan さんが最後の更新を行いました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #11599 返信

    nachan
    参加者

    MSP430で動作が止まってしまう

    デバイス型番:MSP430F5528

    この度は宜しくお願い致します。
    皆様のお知恵を拝借したく、お力添えください。

    現在、MSP430F5528にて制御プログラム開発しているものが御座います。
    搭載機能としては、以下になります。
    尚、基板回路はカスタム開発したものです。

    ・LED点灯制御(PWM)
    ・加速度センサーICとの通信(I2C)
    ・ADコンバーターとの通信(SPI)
    ・電源電圧をCPUでA/D入力
    ・タクトSW入力
    ・DCモーター制御

    開発環境は以下になります。
    ICE・・・MSP-FET (Spy-Bi-Wire (2-wire JTAG) )
    IDE・・・CCS ver7.4.0.00015

    DCモーター制御以外の機能を搭載し、動作確認を行う上では問題はありません。
    しかし、DCモーター制御を含むと、不規則に暴走してしまいます。

    DCモーターは、DRV8837のドライバーを用いた簡単な制御になり、
    PORT1から2本用いて、HIGH or LOWの組み合わせ制御をしています。
    モーター電流は、最大400mA以下になります。

    暴走原因を探っている過程にあり、考えられる要因は御座いますでしょうか?
    現状で分かっている事を箇条書き致します、、、

     ・DCモーター制御処理をMASKし、それ以外の機能を制御させると発生しない

     ・デバッグ用として、DCモーター制御だけを一定周期でMAIN関数でさせると、
      暴走状態が発生する

     ・電源は安定化電源を用いており、モーター電源は安定化電源から取得し、
      CPU電源は安定化電源 -> 基板回路上のLDOにて3.0V生成して供給。
      CPUのDVCC1,2ともに+3.0Vで、オシロで確認する限りモーター駆動時に電圧降下はない

     ・MSP-FETを起動直後の初期化でブレークしていると、
      暴走時は、RESETが掛かっている様で、初期化ブレークにくる(恐らくSystem Reset)

     ・WDTはmain関数の冒頭で1箇所のクリア処理とし、WDTをインターバルモードにて割り込み設定すると、
      暴走発生時に、WDTのベクタへ飛んでくることがある(必ずではない)
      
     ・暴走後の初期化ブレーク状態にて、SFRの中をモニターすると、
      全て0xFFで埋められている事がある

     ・stack、heap領域を増加させ、メモリFillしながら確認したが、通常時はオーバーフローしている様子はなかった。
      但し、暴走時はstack領域が全て0xffになることがある。
      全てのメモリが0xffにならないこともあり、頻度や傾向はわかりません、、、

     ・ICEを繋がず、スタンドアローン動作を試みても現象は変わらず発生する

     ・暴走現象は、電源印可 -> モーター起動直後に発生することもあれば、
      数分間駆動し続けて発生することもあり、時間的な傾向はみられない

    長文となってしまいましたが、見落としや考えられる要因があれば、どの様な事でも結構なのでご指示ください。

    以上、宜しくお願い致します。

    #11600 返信

    nachan
    参加者

    自己解決とまで行きませんが、モーター駆動時のノイズの影響がありそうな感じです。
    オシロで確認していたものの、高周波だったことで捕まえられておりませんでした。

    現況では、降下電圧が数usの間、最大で600mVほどあり、
    モーター制御は周期性のない制御をしている為、恐らく起動・停止時にノイズとして出ている模様です。

    ハード側では、電源部、CPUのパスコン部共に、
    コンデンサが十分に入っていることと、追加でいくらか周波数に効きそうな乗数を入れてみましたが、
    大きな改善がありませんでした。

    後は、制御側でPWM駆動でソフトスタートの様な緩やかな制御にて効果を確かめようと考えています。

    恐らく、MSP430に対しては電源の瞬時降下が誤動作の要因と考えていますが、
    もし、他にありそうでしたら、後学の為にご教示ください。

    #11604 返信
    umamiti
    umamiti
    従業員

    nachan様

    ご投稿いただきありがとうございます。

    現在頂いている情報から考えられる要因としては、ご認識の通り、電源の瞬時降下が発生したことでCPUが暴走している可能性が高いと考えられます。
    また、モーターと接続している端子(PORT1)や、RSTピンなどにノイズ等の影響を受けている可能性がございますので、合わせてご確認いただければと思います。

    MSP430F5528の場合、データシートの「Figure 5-1. Maximum System Frequency」に、VCC電圧、コア電圧とMCLKの適正な範囲が以下のように定義されております。

    MCLKの動作周波数は20MHz以上を使用されていますでしょうか。
    20MHz以上で使用されている場合、VCCが2.4Vを下回った際にViolationが発生してしまうと、クロックの発振が不安定になり、プログラムカウンタが壊れるため、暴走することがあります。

    対策方法の1つとしましては、内蔵されているPMM(Power Management Module and Supply Voltage Supervisor )機能を使用し、電源電圧を監視する方法がございます。
    PMM内の、SVSHRVLによってしきい値を設け、VCCがSVSHRVLより下がると、PORを起こしてシステムをreset状態にして止める(Violation防止)ことができます。

    以下のリンクより、PMM機能に関するまとめと、PMM機能を使用してVCCの監視・異常停止を実現する方法について、ドキュメントにて解説されておりますので、ご参考下さい。
    MSP430 F5/F6シリーズ VCCのdrop検出などに使用できるPMM機能の解説

    また、暴走時にRESETがかかっているとのことですが、リセットベクタレジスタ(SYSRSTIV)を確認しREST要因を判定することできるかと思います。
    ○ユーザーズ・ガイド「1.15.10 SYSRSTIV Register」を参照。

    以上、よろしくお願いいたします。

    #11612 返信

    nachan
    参加者

    umamiti 様

    ご回答ありがとうございました。

    先の通り、電源ラインにノイズがあり、綺麗にRESETが掛かった後は、
    SYSRSTIVレジスタの値が0x02(POR)になっております。

    なので、恐らくCPUの電源ラインが電圧降下した結果、PORにてRESETされるというのが、
    現象の一つになります。

    駆動周波数ですが、16MHzにしております。
    PMMはLevel 3で使用しており、イニシャライズでのPMM処理を、
    仕様書、TIのサイト、フォーラムを参考にして構築しました。

    PMMもCORE電圧と設定値は、「2.2.2.1.2 Recommended SVSH Settings」に記載の通り、組み合わせで決まってしまう様なので、レジスタ設定の変更などでトリガー電圧が決めれる様なものでは無いようですね、、、

    一つご質問ですが、
    16MHzで駆動していますが、VCCが2.4Vを下回った際にViolationが発生しないのでしょうか?
    ご教示頂いた20MHz以上の場合のみに限るケースと捉えて良いものかどうかという質問です。

    #11656 返信
    umamiti
    umamiti
    従業員

    nachan様

    >一つご質問ですが、
    >16MHzで駆動していますが、VCCが2.4Vを下回った際にViolationが発生しないのでしょうか?
    >ご教示頂いた20MHz以上の場合のみに限るケースと捉えて良いものかどうかという質問です。

    16MHzで駆動されている場合は、PMMCOREVx=3では、VCCが2.4Vを下回ってしまいますと、推奨値から外れてしまいViolationが発生してしまう可能性があると考えられます。

    16MHzで駆動されている場合は、PMMCOREVx=2であれば、VCCが2.2~3.6Vでの範囲で動作が可能となりますので、こちらの設定値での動作をご確認いただければと思います。

    以上、よろしくお願いいたします。

    #11668 返信

    nachan
    参加者

    umamiti 様

    ご回答ありがとうございました。

    最初の投稿につきましては、ノイズ対策にて解決ができました。
    お手間を掛けましたが、ありがとうございました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)