RL78コード生成IIC通信のIiica0_master_handler()関数

マイコンRL78G14 R5F104MG
コンパイラCC-RL 1.09.00
CS+ for CC V8.03.00

EEPROM(24C256)に接続しようと考えています。
このEEPROMのメモリアドレスは2バイト長です。
コード生成で生成された関数をしようしたいと思っています。
例えば、
EEPROMのアドレス0x0123に0xEEを書き込むとします。
ControlByteは 0b10100010 とします。(bit0は書込み命令)

【1】
コードは、
tx_buf[0] = 0x01  /*アドレス上位*/
tx_buf[1] = 0x23  /*アドレス下位*/
tx_buf[2] = 0xEE  /*書き込みたい値*/
iic_status = IICA0_Master_Send(CONTROLBYTE,  tx_buf, 3, 100);
と書けば良いのでしょうか?

【2】
r_cg_serial_user.cファイルのiica0_master_handler()関数がよく分からないです。
88行~120行間で
でアドレス上位下位までを送信して、
122行~123行間で書込みたいデータを送信すると思っていました。
しかし、92行目に
 g_iica0_master_status_flag |= _80_IICA_ADDRESS_COMPLETE;
と書かれており、
 g_iica0_master_status_flagのbit7に1が立ち、0x80という値になります、
そなると、次の割込みが来たとき、
88行目のif ((g_iica0_master_status_flag & _80_IICA_ADDRESS_COMPLETE) == 0U)ではじかれて

アドレス下位は122行~123行間で送信されることになります。
なんかおかしいような気がするのですが・・・・?



https://japan.renesasrulz.com/cafe_rene/f/forum18/1492/cubesuite-i2c
このWEBページを参考に見ています。

  • チョコです。

    【1】はその理解で問題ありません。

    【2】については少し誤解がありそうです。

    >88行~120行間ででアドレス上位下位までを送信して、

    これは誤解です。IICA割り込みの処理はデータ転送が完了したときの処理です。ここは、最初の送信データであるスレーブアドレス(ControlByte)の送信が完了したところの処理なのでこのようになっています。そのため、EEPROMの上位アドレスの送信を始めるだけです。EEPROMの下位アドレスは次の割り込みで送信するので、134行目で送信を開始することになります。(IICA0から見ると、EEPROMのアドレスは単なる転送データでしかありません。)