いつもお世話になっております。
コード生成で生成したConfig_RIIC0を使用し開発を進めているのですが以下の現象が発生しておりご教授いただけますと幸いです。
【発生現象】
R_Config_RIIC0_Start()コール後に、r_Config_RIIC0_error_interrupt()が永遠に呼ばれる
r_Config_RIIC0_error_interrupt()を確認した所、どのif/else ifにも入らず、下記のelseに入っております。
:
else { /* Do nothing */ }
【備考】
コード生成のバグがあるようで下記のコードは削除しましたが、そもそもその条件成立しておりません。
https://www.renesas.com/jp/ja/doc/toolnews/jpn/2019/r20ts0462jj0100-cstnno.pdf
bunbunさん、こんにちは。NoMaYです。> 下記のコードを実施した際に、0x03を送信された際のSDA波形が0001 1101(0x1D)になります。> 但しr_Config_RIIC0_transmit_interrupt()内にBreakを貼り、1Byteずつ止めるとSDA波形は0x08, 0x02, 0x03と順次送信されました。提示されていたコードはスタック上に送信データの配列を確保していますが、送信完了待ちを、R_Config_RIIC0_Master_Send()を実行した関数から抜けた後で、やっていたりしないですか?
bunbunさん、こんにちは。NoMaYです。うまく意図が伝わらなかったと思われますので、言い方を変えてみます。
R_Config_RIIC0_Start();MD_STATUS status;uint8_t snd_dt[2] = {0x02, 0x03};if((status = R_Config_RIIC0_Master_Send(0x08, snd_dt, 2)) != MD_OK){ printf("[ERROR ] VL53L0X::writeReg() 0x%x\n", status);}
の後は、すぐ
while(1) ;
とか
for(;;) ;
のような無限ループでしょうか?