This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

  • Resolved

MSP430: CCS Ver.5での64bit幅 double変数

Prodigy 110 points

Replies: 3

Views: 1436

ご存知の方、 ご教示下さい。 MSP430F5172+CCS5(5.3.0.00090)を使ってソフトウェアを開発しております。 上記組み合わせにおいて、64bit幅のdouble変数は使えるのでしょうか。 宜しくお願いします。

T.Hashimoto
  • CCSv7.1+MSP430F5529 を使い、下記の long double 64bit を確認しました。
    このようにしてCCSv5で確認していただけますか。
    (確かではないですが、CCSv5?では long のデバッガ表示がおかしかった記憶が有ります)

    解決しましたら、ログインして Verify をクリックお願いします。

    Kazuo Yamauchi

  • In reply to trout:

    返信誠にありがとうございます。
    またこちらからの確認結果のご連絡が遅くなりまして済みません。

    ご教示頂いた方法をMSP430F5172+CCS5(5.3.0.00090)で確認しました。
    結果、ご確認頂いたようにlong doubleは8バイト長にならず4バイト長のままでした。
    バイト長が8バイトであることをデバッガの表示ではない方法で確認するため、以下のようにunionを用意して確認しました。

    /*
    * main.c
    */
    volatile long double x1=0.1,x2=0.02,y1,y2;
    typedef union _testUnion {
    volatile long double tmpLongDouble;
    volatile unsigned char tmpChar[8];
    } testUnion;
    testUnion result;

    int main(void) {
    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

    y1 = x1 * x2;
    result.tmpLongDouble = y1;

    return 0;
    }

    return 0の部分でブレークさせてExpresionウィンドウからunionのキャラ配列の中身を確認しました結果、tmpChar[0]~tmpChar[3]までには値が入りましたがtmpChara[4]~tmpChar[7]までは未使用のままでした。
    CCS5では64bit幅のlong doubleはやはり使えないのでしょうか。
    ご教示頂けますと幸いです。
    T.Hashimoto
  • In reply to user1576639:

    USのE2Eを CCSv5 long で検索した結果、

    long long で32bitsしかデバッガー表示されないという、不具合1件の問い合わせがありました。
    回答は、レジスタ(32bits)2組使用しているが、1レジスタしか処理されていないバグがある とのことです。

    大変申し訳ありませんが、
    CCSv6かv7へ切り替えていただけないでしょうか。

    CCSv7/v6は、下記で説明しておりますがfreeでご利用できます。 
    https://e2e.ti.com/group/jp/f/969/t/580151 

    よろしくお願いいたします。

    Kazuo Yamauchi

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.