こんにちは。NoMaYです。RL78/G14でUART+DTCのサンプルコードを探していたのですが、見付かりませんでしたので、変わりに3線シリアルI/O+DTCのサンプルコードを見ていて気付いたのですが、通信割り込みルーチンのソースが間違っているのではないでしょうか、、、(ひょっとして、コード生成機能が生成したソースの通信割り込みルーチンを全面的に変更していて、ドキュメントでもサンプルコードのソースをコード生成されたソースで上書きしないよう注意していながら、アプリケーションノート作成者自身がうっかり上書きしてしまって、でも、それに気付かず公開してしまった、とかいうことはないでしょうか、、、)RL78/G14 DTCを使用したクロック同期式シリアルI/O 連続送受信 CC-RLwww.renesas.com/jp/ja/search/keyword-search.html#q=r01an2867ドキュメントwww.renesas.com/jp/ja/doc/products/mpumcu/apn/rl78/002/r01an2867jj0100_rl78.pdfサンプルコードwww.renesas.com/jp/ja/software/D3017442.html以下、ドキュメントの画面コピーです。(4枚目の画面コピーに赤枠を書き込んでいます。)以下、サンプルコードの抜粋です。(上記と対応する箇所で変だと感じている箇所を赤文字にしています。)an_r01an2867jj0100_rl78_serial\Workspace\CS+\r01an2867_serial\r_cg_serial.c
MD_STATUS R_CSI00_Send_Receive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf){ MD_STATUS status = MD_OK; if (tx_num < 1U) { status = MD_ARGERROR; } else { g_csi00_tx_count = tx_num; /* send data count */ gp_csi00_tx_address = tx_buf; /* send buffer pointer */ gp_csi00_rx_address = rx_buf; /* receive buffer pointer */ CSIMK00 = 1U; /* disable INTCSI00 interrupt */ if (0U != gp_csi00_tx_address) { SIO00 = *gp_csi00_tx_address; /* started by writing data to SDR[7:0] */ gp_csi00_tx_address++; } else { SIO00 = 0xFFU; } g_csi00_tx_count--; CSIMK00 = 0U; /* enable INTCSI00 interrupt */ } return (status);}
an_r01an2867jj0100_rl78_serial\Workspace\CS+\r01an2867_serial\r_cg_serial_user.c
static void __near r_csi00_interrupt(void){ uint8_t err_type; volatile uint8_t sio_dummy; err_type = (uint8_t)(SSR00 & _0001_SAU_OVERRUN_ERROR); SIR00 = (uint16_t)err_type; if (1U == err_type) { r_csi00_callback_error(err_type); /* overrun error occurs */ } else { if (g_csi00_tx_count > 0U) { if (0U != gp_csi00_rx_address) { *gp_csi00_rx_address = SIO00; gp_csi00_rx_address++; } else { sio_dummy = SIO00; } if (0U != gp_csi00_tx_address) { SIO00 = *gp_csi00_tx_address; gp_csi00_tx_address++; } else { SIO00 = 0xFFU; } g_csi00_tx_count--; } else { if (0U == g_csi00_tx_count) { if (0U != gp_csi00_rx_address) { *gp_csi00_rx_address = SIO00; } else { sio_dummy = SIO00; } } r_csi00_callback_receiveend(); /* complete receive */ } }}
[参考]RL78/G14のDTCのアプリケーションノート一覧UART+DTCのアプリケーションノートはありましたが概説のみでサンプルコードはありませんでしたwww.renesas.com/jp/ja/search/keyword-search.html#q=r01an0861r01an0861jj0100_rl78.pdf初めての RL78/G14 DTC アプリケーションノート
rsvさん、こんにちは。NoMaYです。ご連絡どうも有難う御座いました。(実は偶然なのですが、昨夜、チョコさんのRL78のI2CのサンプルプログラムやRenesasさんのI2Cのアプリケーションノートやらを調べていた時に気が付いて、リプライしようかなと考えていたところでした。)> 製品担当者より、アプリケーションノートの修正が完了したとの連絡を受けました。> 下記のURLになりますので、ご参照ください。> 件名:RL78/G14 DTCを使用したクロック同期形シリアルI/O連続送受信 CC-RL> URL:www.renesas.com/jp/ja/software/D6004193.html