ads1115から正常にデータ取得できない件について

いま上記のプログラムでads1115とセンサを接続して通信を行っているのですが

実行してデバックコンソールを見るとstartと0しか表示されておらずセンサの値が取得できません。

どなたか原因がわかる方がいらっしゃったら教えていただけるとありがたいです。

Parents
  • チョコです。
    別のスレッドにもコメントしましたが、R_Config_RIIC0_Master_Send関数とR_Config_RIIC0_Master_Receive関数の使い方を間違えています。
    これらは、通信を起動するだけで、通信の完了は待ちません。従って、通信が完了するのをプログラムで待つ必要があります。このためには、通信完了フラグを準備しておき、r_Config_RIIC0_callback_receiveend関数とr_Config_RIIC0_callback_transmitend関数でこのフラグをセットするようにします。また、R_Config_RIIC0_Master_Receive関数とR_Config_RIIC0_Master_Send関数をお呼び出した後は、このフラグをクリアしてから、フラグがセットされるのを待つようにしてください。
  • チョコさん、回答ありがとうございます。

    R_Config_RIIC0_Master_Send関数とR_Config_RIIC0_Master_Receive関数が通信を起動させるだけのものだということはわかりました。では実際に通信自体はどのタイミングでおこなわれるのでしょうか?

    何度もすみません、よろしくお願いします。
  • たむらさん簡単なことですよ、
    r_Config_RIIC0_callback_transmitend()
    {
    flg=1;
    }
    としておき
    R_Config_RIIC0_Master_Send();
    flg=0;
    while(!flg);
    ここ送信完了
Reply Children
  • IKUZOさん、回答ありがとうございます。

    おっしゃられた通りにプログラムを組んだのですが
    while(!flg);の部分でループしてしまいます。
    原因はわかりますでしょうか?
    よろしくお願いします。以下がメインのプログラムです。

    #include "r_smc_entry.h"
    #include <stdio.h>
    #include <stdlib.h>
    void main(void);

    extern volatile uint8_t flgt;
    extern volatile uint8_t flgr;

    extern volatile uint8_t g_riic0_tx_buf[4];
    extern volatile uint8_t g_riic0_rx_buf[2];
    extern volatile uint16_t val;
    void main(void)
    {


    R_Config_RIIC0_Start();

    R_Config_RIIC0_Master_Send(0x48, (uint8_t *)g_riic0_tx_buf,3);
    flgt=0;
    while(!flgt);

    R_Config_RIIC0_Master_Receive(0x48,(uint8_t *)g_riic0_rx_buf,2);
    flgr=0;
    while(!flgr);
    printf("%x,\n",g_riic0_rx_buf[0]);



    }