+ * SPI FLAG test
+ */
+void test_spi_flag(void)
+{
+ char sz[128];
+ int in;
+ unsigned char txc = 0;
+ unsigned char rxc;
+
+ spi2_int_disable();
+ cnint_int_disable();
+ while(1) {
+ delay_ms(1000);
+ sprintf(sz, "SPI2STAT=%04X "
+ "SPIBEC=%d SRMPT=%d SPIROV=%d SRXMPT=%d TBF=%d RBF=%d\r\n"
+ , SPI2STAT
+ , SPI2STATbits.SPIBEC
+ , SPI2STATbits.SRMPT
+ , SPI2STATbits.SPIROV
+ , SPI2STATbits.SRXMPT
+ , SPI2STATbits.SPITBF
+ , SPI2STATbits.SPIRBF
+ );
+ PDEBUG(sz);
+ if ((in = uart2_rcvbuf_getc()) >= 0) {
+ uart2_myputc(in);
+ uart2_puts("\r\n");
+
+ switch(in) {
+ case 'r':
+ rxc = spi2_getc();
+ sprintf(sz, "RX=%02X\r\n", rxc);
+ uart2_puts(sz);
+ break;
+ case 't':
+ spi2_putc(txc++);
+ sprintf(sz, "TX=%02X\r\n", txc);
+ uart2_puts(sz);
+ break;
+ case 'v':
+ spi2_rx_overrun_clear();
+ break;
+ case 'x':
+ SPI2STATbits.SRXMPT = 0;
+ break;
+ case 'y':
+ SPI2STATbits.SRXMPT = 1;
+ break;
+ }
+ }
+ }
+}
+/*
+ * polling send/rcv
+ */
+void test_spi_send(void)
+{
+ unsigned char txc = 1;
+ unsigned char rxc;
+ char sz[128];
+
+ spi2_int_disable();
+ cnint_int_disable();
+// SPI2BUF = txc++;
+// rxc = SPI2BUF;
+ while(1) {
+ while(SPI2STATbits.SPITBF == 0) {
+ // TX
+ SPI2BUF = txc++;
+ }
+ if (SPI2STATbits.SRXMPT == 0) {
+ while(SPI2STATbits.SRXMPT == 0) {
+ // RX FIFO読み出し
+ rxc = SPI2BUF;
+ }
+#if 0
+ sprintf(sz, "SPI2STAT=%04X "
+ "SPIBEC=%d SRMPT=%d SPIROV=%d SRXMPT=%d TBF=%d RBF=%d\r\n"
+ , SPI2STAT
+ , SPI2STATbits.SPIBEC
+ , SPI2STATbits.SRMPT
+ , SPI2STATbits.SPIROV
+ , SPI2STATbits.SRXMPT
+ , SPI2STATbits.SPITBF
+ , SPI2STATbits.SPIRBF
+ );
+ PDEBUG(sz);
+#endif
+ }
+ }
+
+}
+/*