e2studioにてRX660とGCCコンパイラを使用して開発を行っているのですが
SCIの送信割り込みが実行されず悩んでいます。
初めてルネサスのマイコンを使っているため、初歩的なミスをしているかもしれませんが教えていただきたいです。
スマートコンフィギュレータのコンポーネントよりConfig_SCI0を追加し自動生成を行い生成された、r_Config_SCI0_transmit_interrupt()関数が実行されません。
R_Config_SCI0_Serial_Send()関数にて割り込み等の設定を行っているようですが他に設定するべきことはあるのでしょうか。
SCIの初期化処理として、R_Config_SCI0_Start()関数を実行後にR_Config_SCI0_Serial_Send()関数を実行しております。
MD_STATUS R_Config_SCI0_Serial_Send(uint8_t * const tx_buf, uint16_t tx_num){ MD_STATUS status = MD_OK;
if (1U > tx_num) { status = MD_ARGERROR; } else if (0U == IEN(SCI0, TXI0)) { status = MD_ERROR; } else { gp_sci0_tx_address = tx_buf; g_sci0_tx_count = tx_num; IEN(SCI0, TXI0) = 0U; SCI0.SCR.BYTE |= 0xA0U;
/* Set TXD0 pin */ PORT2.PMR.BYTE |= 0x01U; IEN(SCI0, TXI0) = 1U;
}
return (status);}
わわいです
RXで割り込みを使おうとする場合、割り込みコントローラ(ICU)の設定も必要となります
IPRレジスタで当該割り込みの割り込みレベルを設定
IERレジスタで当該割り込みの割り込みイネーブルを設定
必要とあればIRレジスタで当該割り込み要求をリセット
など。
デバッガで、SCI送信ルーチンで実行を止め、上記各レジスタの値が想定どおりとなっているか確認しましょう。