ホーム フォーラム Texas Instruments マイコン MSP430 RTCの割り込みタイミングについて

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

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

    kkk
    参加者

    RTCの割り込みタイミングについて

    デバイス型番:MSP430F5329

    RTCカレンダーモードのプリスケール・タイマ 1 によって、62.5msの割り込みを発生させています。
    62.5ms割り込みの発生間隔を測定すると62.5msになっているのですが、下記のようにモードを切り替えたタイミングから62.5ms割り込みが発生するまでの時間を測定すると、約31.25msとなっていました。
    モード切替後、最初の割り込み発生までの時間は設定値の半分になるのでしょうか?

    ・モード切替後の割り込み発生までの時間測定方法
    1.RTCHOLDによってRT0PSおよびRT1PSを停止する
    2.カウンタ・モードからカレンダー・モードに切り替えることでRT0PSおよびRT1PSを0にする
    3.RTCHOLDによってRT0PSおよびRT1PSの停止を解除してテストポートをH出力する
    4.62.5ms割り込み処理でテストポートをL出力する
    5.テストポートのH時間をオシロスコープで測定する

    #4873 返信
    UNA
    UNA
    従業員

    kkk様

    お問い合わせありがとうございます。

    カウンタ・モードから、カレンダー・モードに切り替えることによって割り込みタイミングが変わるとのことですが、カウンタ・モードを使用せずに、はじめからカレンダー・モードで初期化しても同様に31.25msの割り込みとなりますでしょうか?

    モード切り替えによる問題なのか、それとも初期設定の問題なのかの切り分けをさせて頂ければと思います。

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

    #4888 返信

    kkk
    参加者

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

    最初からカレンダーモードにして、プリスケールカウンタ RT0PS、RT1PS をゼロクリアしても、同様に最初だけ62.5ms割り込みが約31.25ms後に発生しました。
    確認方法は下記になります。

    1.カレンダーモードに切り替える
    2.RTCHOLDによってRT0PSおよびRT1PSを停止する
    3.RT0PSおよびRT1PSを0に設定する
    4.RTCHOLDによってRT0PSおよびRT1PSの停止を解除してテストポートをH出力する
    5.62.5ms割り込み処理でテストポートをL出力する
    6.テストポートのH時間をオシロスコープで測定する

    #4889 返信
    UNA
    UNA
    従業員

    kkk様

    ご返信頂きありがとうございます。

    最初の割り込みのみ62.5msで発生し、以降の割り込みは32.5ms間隔となっているとの理解であっておりますでしょうか。
    データシート等には割り込み周期が半分になるといった動作についての記載がありませため、原因について不明な状況でございます。

    大変お手数でございますが、現象が再現されるCCSプロジェクト(或いは、ソースコード)をご提示頂くことは可能でしょうか。

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

    #4894 返信

    kkk
    参加者

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

    発生している現象は「最初の割り込みのみ31.25ms程度で発生し、以降の割り込みは設定通り62.5ms間隔となる」ということです。

    RTC設定とRTC割り込み処理を抜粋したソースコードを提示します。
    提示していませんが、メイン処理で常に動作モードをLPM3に設定し、割り込み発生時にLPM3を解除しています。

    Attachments:
    1. test_RtcCtrl.c
    #4898 返信
    UNA
    UNA
    従業員

    kkk様

    ご連絡ありがとうございます。

    頂戴したソースコードをベースに弊社環境でも動作確認しましたところ、御社と同様の現状が再現されました。

    本件結論から申し上げますと、プリスケーラによる割り込み(RT1PSIFG)を用いる場合、はじめの割り込みが半分の周期となる現象は本RTCモジュールの仕様となります。

    例えば、プリスケーラのカウンタレジスタ(RT1PS)は、128Hzでカウントアップされますが、RT1IP=0x010とした場合、RT1PSの3bit目(Q2)がセットされたタイミングで割り込みを発生させます。
    RT1PSを”0″からスタートさせた場合、最初にQ2ビットがセットされるタイミングは31.25ms後になります。
    RT1PSのカウンタがインクリメントされていき、次にQ2ビットがセットされるタイミングは、Q2ビットが最初にセットされたタイミングから、62.5ms後となります。
    つまり、RT1IPレジスタの設定値は、Q2ビットがセットされてから再びセットされるまでのタイミング間を規定しているとお考えください。

    従いまして、もし最初の割り込みを62.5ms周期で発生させたい場合は、「RTCPS=0x0400」としてカウンタレジスタを初期化してください。或いは、周期割り込みをご使用される場合は、Timerモジュールをご検討頂けますでしょうか。

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

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