Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RX63NモニタLEDの利用について

初歩的な質問で申し訳ありません

現在使用しているボード(AP-RX63N-0A)では,PORTJ:PJ5にモニタLEDが実装されています.

マイコンについいて勉強するため,このLEDの点灯を行うプログラムを作成し実行したのですが正常に動作しませんでした.

 

I/Oポートの初期設定の仕方に間違いがあると考えたのですが自分で解決することができませんでした.わかる方ご教授ください.

また,ポート出力レジスタ(PODR)のLow出力・High出力について理解できていないので参考資料等あれば教えていただけると助かります.

 

I/Oポートの設定を行っているhwsetup.cのソースコードとmain.cを下に乗せます.

/*main.c*/

#include "iodefine.h"

void main(void);


void main(void)
{
    while(1){
       PORTJ.PODR.BIT.B5 = 1;
     }
}

 

/*hwsetup.c*/

#include "iodefine.h"
#include <machine.h>

void HardwareSetuo(Void);
void port_init(Void);

void HardwareSetup(void)
{
port_init();

}

void port_init(void){
   /*ポート出力データを設定*/
   PORTJ.PODR.BIT.B5 = 0; //MONITORLED LOW出力

   /*ポート入出方向を設定*/
   PORTJ.PDR.BIT.B5 = 1; //MONITORLED を出力に設定

   /*ポートモードを設定*/
   PORTJ.PMR.BIT.B5 = 0; //汎用入出力ポートとして使用
}

  • fizz さん
    ほや です。こんにちは。
    ボードのマニュアルの「2.5.1 モニタLED」にはLOWで点灯と書いてありますが、
    コードでは初期化時だけPODR = 0 にしているものの、すぐにmainのループ内で =1 にしてしまっています。
    それで消えた状態しか目に見えないのでは。

  • In reply to ほや:

    ほやさん回答ありがとうございます.
    ボードマニュアルを確認したところLOWで点灯となっていました.
    そこで,PODR=1で初期化しmainループ内でPODR = 1に更新するよう変更を行いましたがLEDは点灯しませんでした.
  • In reply to fizz:

    fizz さん
    Lowアクティブなら 0で点灯、1で消灯じゃないですかね。
    mainに来る前にport_initを通っている事は確認済ですか?
  • fizz さん

    なかなか大変ですね

    void main(void)
    {
     volatile int i;
     while(1){
      for(i=0; i<65535; i++){};
      PORTJ.PODR.BYTE =!PORTJ.PODR.BYTE;
     }
    }
    こんなことでもすれば、少し変化があるかもしれませんよ。

  • In reply to ほや:

    ほやさん
    すみません確認できていません.
    デバッグを行うとmainとする関数からデバッグがスタートしてしまうのですがhwsetup等の位置からデバッグを開始させることは可能なのでしょうか?
  • In reply to IKUZO:

    IKUZOさん返信ありがとうございます.
    試してみたのですが変化ありませんでした.
    使用するIOポートを変えて出力等を行いロジックアナライザで確認してみます.
  • In reply to fizz:

    fizz さん
    > デバッグを行うとmainとする関数からデバッグがスタートしてしまうのですがhwsetup等の位置からデバッグを開始させることは可能なのでしょうか?
    プロジェクト作成機能を使って作られたものか、何かのサンプルプロジェクトをベースにしたものなら、スタートアップコード(reset_program.asmとか resetprg.cとか)の中でHardwareSetupとmain関数が順に呼び出されているはずです。今は何を基に作られているでしょうか?
    スタートアップコード自体がなかったり、そもそも関数名が違っていたら、HardwareSetupは誰からも呼ばれない事になります。

  • In reply to ほや:

    ほやさん
    自分の勉強不足で迷惑をかけてしまってすみませんでした.
    今回は,プロジェクト作成機能を用いて作成しました.
    プロジェクト作成時に自動生成されるresetprg.c内でHardwareSetup関数が呼び出されるようになっていると勘違いをしていました.そのためほやさんが言っておられたようにport_initを通っていないことが原因だったようです.HardwareSetupを呼び出すことで解決しました.ありがとうございます.
  • In reply to IKUZO:

    わわいです

    >   PORTJ.PODR.BYTE =!PORTJ.PODR.BYTE;
    これは、
      PORTJ.PODR.BYTE = ~PORTJ.PODR.BYTE;
    でしょう。
    しかし、全ビット反転していいかどうかは回路図確認しといてください

    ---

    ちゃうわ
    PORTJ.PODR.BIT.B5 = !PORTJ.PODR.BIT.B5;
    なんですね

  • In reply to わわい:

    わわいさん
    自分の勉強不足で迷惑をかけてしまってすみませんでした.
    どうも。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page