This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RH850 タイマアレイユニットD サンプルソース

今までマイコン開発をしていない初心者です。

CS+ でE1Testerを使用し開発環境を整えました。

最終的にはUART通信と任意波形生成をしたいと考えております。

まずは任意波形生成のプログラムを作ろうとしています。

波形は10kHzで動作するため、0.1mm周期で、指定のポートを

H->L->H->H->L->L->H->L->H->H->L

といった感じで動作させようとしています。

動作はタイマアレイユニットDのインターバルタイマの割り込みでHL切り替えをしていこうと考えています。

そこで、CS+環境でOS未実装でタイマアレイユニットの割り込みを制御しているサンプルソースなど

参考になる情報をどこかで入手できないかを確認したいです。

今現在対応できているのはPIN設定、クロック設定のみで、

割り込み周りタイマアレイユニットD周りの設定がいまいち理解できません。

したがって、サンプルソースなどがあればもっと分かり易いかと思い投稿してみました。

Parents
  • 管理人のAyrです。

    申し訳ございませんがRH850は車載専用製品なので情報を一般公開していません。

    購入元の特約店経由でお問い合わせいただくようお願いいたします。

  • 初歩的なことも分からず申し訳ございません。

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

  • NAKAです。

    かふぇルネでRH850はタブーなんでしょうか?ダメだったらごめんなさい消してください。

    RH850/F1でLEDチカチカしてみました。

    手元にもうボードが無いので、TAU-Dで動作確認できませんので、以前使ったOSタイマーをインターバル割り込みで使った例です。

    ★☆良くあるベクターっぽく使ってみました。

    void OSTMTINT(void);

    #pragma interrupt OSTMTINT

    ★☆OSタイマーの初期設定です。

    void fn_Init_OSTM0(void)

    {

     OSTM0.CMP = 0x00009C3F;   //OSTM0のコンペアレジスタ設定1ms/(1/40MHz)=0x9C40 - 1

     OSTM0.CNT = 0x00000000;   //OSTM0のカウンタークリア

     OSTM0.TT = 0x01;          //カウント停止

     OSTM0.CTL = 0x01;         //カウンター制御レジスタ 00:インターバル,割り込み禁止 01:インターバル,割り込み許可

     ICOSTM0 = 0x1003;         //割り込み制御レジスタ設定

                               //CT=0: エッジ検出

                               //RF=1: 割り込み要求あり

                               //MK=0: 割り込み処理を許可

                               //TB=0: 優先度の基づいた直接分岐方式

     OSTM0.TS = 0x01;          //カウント開始

    }

    ★☆メインルーチンの中で割り込みのフラグをポーリングしてます。

    main()

    {

     while(1)

     {

        if(f_OSTM0_1ms == 1)     //OSタイマー割り込みによるタイミング

        {

           f_OSTM0_1ms=0;

    i++;

           if(i >= 1000)

           {

               i = 0;

               PNOT8 = 0x0090;     //LED1,4を反転

           }

        }

     }

    }

    ★☆割り込み処理です。(フラグを立てているだけですが!!!)

    void OSTMTINT( void )

    {

     f_OSTM0_1ms = 1;

    }

    ★☆そうそう!忘れちゃいけない

    boot.asmの中のベクターに割り込みのラベルを設定してきます。

    .align 16

    jr32 _Dummy_EI ; INTn(priority2)

    .align 16

    ;jr32 _Dummy_EI ; INTn(priority3)

    jr32 _OSTMTINT ; INTn(priority3)

    .align 16

    jr32 _Dummy_EI ; INTn(priority4)

    これでLEDを1秒毎にチカチカ!です。

    もし、参考になれば............

    P.S.

    ★☆って田宮模型のマークみたい!

Reply
  • NAKAです。

    かふぇルネでRH850はタブーなんでしょうか?ダメだったらごめんなさい消してください。

    RH850/F1でLEDチカチカしてみました。

    手元にもうボードが無いので、TAU-Dで動作確認できませんので、以前使ったOSタイマーをインターバル割り込みで使った例です。

    ★☆良くあるベクターっぽく使ってみました。

    void OSTMTINT(void);

    #pragma interrupt OSTMTINT

    ★☆OSタイマーの初期設定です。

    void fn_Init_OSTM0(void)

    {

     OSTM0.CMP = 0x00009C3F;   //OSTM0のコンペアレジスタ設定1ms/(1/40MHz)=0x9C40 - 1

     OSTM0.CNT = 0x00000000;   //OSTM0のカウンタークリア

     OSTM0.TT = 0x01;          //カウント停止

     OSTM0.CTL = 0x01;         //カウンター制御レジスタ 00:インターバル,割り込み禁止 01:インターバル,割り込み許可

     ICOSTM0 = 0x1003;         //割り込み制御レジスタ設定

                               //CT=0: エッジ検出

                               //RF=1: 割り込み要求あり

                               //MK=0: 割り込み処理を許可

                               //TB=0: 優先度の基づいた直接分岐方式

     OSTM0.TS = 0x01;          //カウント開始

    }

    ★☆メインルーチンの中で割り込みのフラグをポーリングしてます。

    main()

    {

     while(1)

     {

        if(f_OSTM0_1ms == 1)     //OSタイマー割り込みによるタイミング

        {

           f_OSTM0_1ms=0;

    i++;

           if(i >= 1000)

           {

               i = 0;

               PNOT8 = 0x0090;     //LED1,4を反転

           }

        }

     }

    }

    ★☆割り込み処理です。(フラグを立てているだけですが!!!)

    void OSTMTINT( void )

    {

     f_OSTM0_1ms = 1;

    }

    ★☆そうそう!忘れちゃいけない

    boot.asmの中のベクターに割り込みのラベルを設定してきます。

    .align 16

    jr32 _Dummy_EI ; INTn(priority2)

    .align 16

    ;jr32 _Dummy_EI ; INTn(priority3)

    jr32 _OSTMTINT ; INTn(priority3)

    .align 16

    jr32 _Dummy_EI ; INTn(priority4)

    これでLEDを1秒毎にチカチカ!です。

    もし、参考になれば............

    P.S.

    ★☆って田宮模型のマークみたい!

Children
  • NAKA 様

    管理人のAyrです。

    タブーというわけではありませんが車載専用品は技術情報を一般公開していないのとサポートが購入ルートになりますので、

    ここでの論議に向いていないと判断しています。

    お書きになった内容は特に問題ないので消しませんが念のためスレッドを書き込み禁止にさせていただきます