ホーム フォーラム Texas Instruments マイコン MSP430 UCS モジュールのフェールセーフ動作について

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

10件の投稿を表示中 - 16 - 25件目 (全25件中)
  • 投稿者
    投稿
  • #6091 返信

    kkk
    参加者

    御回答ありがとうございます。

    御連絡いただいたとおり、FLL基準クロックソースはXT1CLKから供給(SELREF=0)されています。
    FLL(DCO)の再起動はどのような手順で行えば良いでのしょうか?

    #6109 返信
    UNA
    UNA
    従業員

    kkk様

    FLL(DCO)の初期化を実施頂く必要があります。
    初期化手順については下記サンプルコードをご参考ください。
    ※DCOを12Mhzに初期化するコードになっております。

    http://dev.ti.com/tirex/explore/node?node=AK.MiAXQcD3eqe5tGmsMzQ__IOGqZri__LATEST

    以上、どうぞ宜しくお願い致します。
    H.U

    #6249 返信

    kkk
    参加者

    Resource Explorerが起動できなかったため遅くなりましたが、ご紹介いただいたサンプルコードを確認しました。
    下記サンプルコードではSCG0によってFLLを再起動していますがDISMODをセットしていないため、DCOモジュレータを再起動していないと思います。

    // Initialize DCO to 12MHz
    __bis_SR_register(SCG0); // Disable the FLL control loop
    UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
    UCSCTL1 = DCORSEL_5; // Select DCO range 24MHz operation
    UCSCTL2 = FLLD_1 + 374; // Set DCO Multiplier for 12MHz
    // (N + 1) * FLLRef = Fdco
    // (374 + 1) * 32768 = 12MHz
    // Set FLL Div = fDCOCLK/2
    __bic_SR_register(SCG0); // Enable the FLL control loop

    オシレータ障害発生後に消費電流が増加したソフトの動作モードはアクティブモードとLPM3モードを交互に繰り返すことで、FLLをイネーブル/ディスエーブルに切り替えて再起動(DCOはイネーブルのまま)しましたが、消費電流がオシレータ障害発生前の数値に戻ることはありませんでした。
    DCOモジュレータの再起動によって消費電流がオシレータ障害発生前の数値に戻ることは確認できましたので、DCOモジュレータがオシレータ障害発生後の消費電流増加の原因と考えていますが、そのようなことは無いのでしょうか?

    #6250 返信
    UNA
    UNA
    従業員

    kkk様

    説明が不足しておりまして申し訳ありません。
    メーカからは、FLL基準クロックソース(XT1CLK)に障害が発生しているため、
    FLLを再起動してLFXT1を再調整することが推奨されてるとの指摘がございます。

    従いまして、上述させて頂いたサンプルコードをご参考頂き、FLLの再起動(初期化)を
    お試し頂けませんでしょうか。
    FLLの再起動でも現象が改善しない場合は再度メーカへ問い合わせをさせて頂きたく存じます。

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

    #6353 返信

    kkk
    参加者

    確認が遅くなり、申し訳ありませんでした。
    ご紹介頂いたサンプルコードを参考にしてFLLの再起動(MCLK、SMCLK、ACLKの再設定)を行ったところ、消費電流が戻ることを確認しました。

    FLLの再起動のためクロックシステム制御レジスタ「UCSCTL*」の再設定を行いましたが、ご紹介頂いたサンプルコードのどの範囲がFLL再起動に必要な処理なのでしょうか?
    サンプルコードを添付いたします。

    • この返信は5 年、 5 ヶ月前に  kkk さんが編集しました。
    #6361 返信
    UNA
    UNA
    従業員

    kkk様

    サンプルコードでは、下記コード部分にてFLLの初期化を行っています。

    ========
    // Initialize DCO to 12MHz
    __bis_SR_register(SCG0); // Disable the FLL control loop
    UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
    UCSCTL1 = DCORSEL_5; // Select DCO range 24MHz operation
    UCSCTL2 = FLLD_1 + 374; // Set DCO Multiplier for 12MHz
    // (N + 1) * FLLRef = Fdco
    // (374 + 1) * 32768 = 12MHz
    // Set FLL Div = fDCOCLK/2

    __bic_SR_register(SCG0); // Enable the FLL control loop
    ========

    以上、宜しくお願いします。
    H.U

    #6368 返信

    kkk
    参加者

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

    サンプルコードではDCO安定待ちのために「while (SFRIFG1&OFIFG)」のループ処理がありますが、FLL初期化ではこのループ処理は実施しなくても良いでしょうか?

    #6369 返信
    UNA
    UNA
    従業員

    kkk様

    安定化処理は挿入いただいた方がより良いかと思います。

    以上、宜しくお願いします。
    H.U

    #6376 返信

    kkk
    参加者

    御回答ありがとうございます。

    UCSCTL7レジスタによってオシレータ障害の発生と解消を確認してからFLL再起動を行おうと考えていますが、FLL再起動にDCO安定化処理を加えると、オシレータ障害解消を確認後に再度オシレータ障害が発生した場合にDCO安定化処理での待ち時間が長くなることで製品機能に不具合が発生します。
    そのため、FLL再起動ではDCO安定化処理を実行しないことを検討しています。
    FLL再起動時にDCOが安定していなかった(OFIFG=1)としても、フェールセーフ機能によってクロックソースが32kHzの内蔵オシレータに切替わり通常通り処理が行われると考えていますが、このような動作になるのでしょうか?

    #6377 返信
    UNA
    UNA
    従業員

    kkk様

    再度オシレータ障害が発生した場合はフェールセーブ機能によって、
    再び内蔵オシレータに切り替わると考えられます。

    なお、外部クリスタルからクロック供給される場合は、安定的にクロックが供給されることをメーカとしても想定しておりますので、クリスタル周辺回路の見直しや、クリスタルのマッチングなどによってクロック障害が頻発する要因の解消をご検討いただけますようお願い致します。

    以上、宜しくお願いします。
    H.U

     

10件の投稿を表示中 - 16 - 25件目 (全25件中)