いつもお世話になっております。
RX231 北斗電子製評価ボードのセットアップを行っているのですが『シリアル0の受信割り込みが発生しません』
ご教授いただけますと幸いです。(プロジェクトを新規で作成し、スマートコンフィグレータで生成されたコードを使用しております(CS+/E2Lite使用))
(PCのシリアル通信ソフトからデータを送信しているのに)自動生成されたr_Config_SCI0_transmit_interrupt()に入りません。
※PCからデータ送信されている事は他の開発ボード(Arduino)とつなげてみて受信できる事を確認済。
#if FAST_INTERRUPT_VECTOR == VECT_SCI0_TXI0#pragma interrupt r_Config_SCI0_transmit_interrupt(vect=VECT(SCI0,TXI0),fint)#else#pragma interrupt r_Config_SCI0_transmit_interrupt(vect=VECT(SCI0,TXI0))#endifstatic void r_Config_SCI0_transmit_interrupt(void)
●わかっている事
①自動生成されたR_Systeminit()が呼ばれ、R_Config_SCI0_Create()内でシリアル0の設定およびピン設定(27,28)はされている
/*--------------------------------------------------------*/
void R_Systeminit(void){ /* Enable writing to registers related to operating modes, LPC, CGC and software reset */ SYSTEM.PRCR.WORD = 0xA50FU;
/* Enable writing to MPC pin function control registers */ MPC.PWPR.BIT.B0WI = 0U; MPC.PWPR.BIT.PFSWE = 1U;
/* Initialize clocks settings */ R_CGC_Create();
/* Set peripheral settings */ R_Config_SCI0_Create();
/* Register undefined interrupt */ R_BSP_InterruptWrite(BSP_INT_SRC_UNDEFINED_INTERRUPT,(bsp_int_cb_t)r_undefined_exception);
/* Disable writing to MPC pin function control registers */ MPC.PWPR.BIT.PFSWE = 0U; MPC.PWPR.BIT.B0WI = 1U;
/* Enable protection */ SYSTEM.PRCR.WORD = 0xA500U;}
void R_Config_SCI0_Create(void){ /* Cancel SCI stop state */ MSTP(SCI0) = 0U;
/* Set interrupt priority */ IPR(SCI0,TXI0) = _0F_SCI_PRIORITY_LEVEL15;
/* Clear the control register */ SCI0.SCR.BYTE = 0x00U;
/* Set clock enable */ SCI0.SCR.BYTE = _00_SCI_INTERNAL_SCK_UNUSED;
/* Clear the SIMR1.IICM, SPMR.CKPH, and CKPOL bit, and set SPMR */ SCI0.SIMR1.BIT.IICM = 0U; SCI0.SPMR.BYTE = _00_SCI_RTS | _00_SCI_CLOCK_NOT_INVERTED | _00_SCI_CLOCK_NOT_DELAYED;
/* Set control registers */ SCI0.SMR.BYTE = _01_SCI_CLOCK_PCLK_4 | _00_SCI_MULTI_PROCESSOR_DISABLE | _00_SCI_STOP_1 | _00_SCI_PARITY_DISABLE | _00_SCI_DATA_LENGTH_8 | _00_SCI_ASYNCHRONOUS_OR_I2C_MODE; SCI0.SCMR.BYTE = _00_SCI_SERIAL_MODE | _00_SCI_DATA_INVERT_NONE | _00_SCI_DATA_LSB_FIRST | _10_SCI_DATA_LENGTH_8_OR_7 | _62_SCI_SCMR_DEFAULT; SCI0.SEMR.BYTE = _00_SCI_BIT_MODULATION_DISABLE | _10_SCI_8_BASE_CLOCK | _00_SCI_NOISE_FILTER_DISABLE | _00_SCI_BAUDRATE_SINGLE | _00_SCI_LOW_LEVEL_START_BIT;
/* Set bit rate */ SCI0.BRR = 0x0AU;
/* Set RXD0 pin */ MPC.P21PFS.BYTE = 0x0AU; PORT2.PMR.BYTE |= 0x02U;
/* Set TXD0 pin */ MPC.P20PFS.BYTE = 0x0AU; PORT2.PODR.BYTE |= 0x01U; PORT2.PDR.BYTE |= 0x01U;
R_Config_SCI0_Create_UserInit();
}
②main()で呼んだR_Config_SCI0_Start()にもちゃんときており、ポーリングもちゃんとされている。
void R_Config_SCI0_Start(void){ /* Clear interrupt flag */ IR(SCI0,TXI0) = 0U; IR(SCI0,RXI0) = 0U;
/* Enable SCI interrupt */ IEN(SCI0,TXI0) = 1U; IEN(SCI0,TEI0) = 1U; IEN(SCI0,RXI0) = 1U; IEN(SCI0,ERI0) = 1U;}
bunbunさん、こんにちは。NoMaYです。今回は、それを敢えて(というか、やむを得ず、というべきな事情で)呼ばないようにしていた場合の案件、ということですね。私の、ちょっと待った、は、ここまでです。どうも、おじゃましました。>(コード生成で吐き出された受信ロジックは、目的のシステム要件にはあわない為> r_Config_SCI0_transmit_interrupt()やR_Config_SCI0_Serial_Receive()は使用しない予定でして。。。)