init_sport0_tx(); // 送信DMA開始。割り込みはまだ生成しない
init_sport0_rx(); // 受信DMA開始。割り込みイネーブル。
+#if 1
// AF送信を開始する。ただし、送信DMA割り込みはまだ発生しない。
*pDMA2_CONFIG |= DMAEN; // TX SPORT DMA Enable
*pSPORT0_TCR1 |= RSPEN; // TX SPORT Enable
*pDMA1_CONFIG |= DMAEN; // RX SPORT DMA Enable
*pSPORT0_RCR1 |= RSPEN; // RX SPORT Enable
ssync();
+#else
+ syscall(act_tsk(TASK_AF)); // AFデータ送信タスクをアクティブにする
+ *pDMA1_CONFIG = 0; // RX SPORT DMA Disable
+ *pDMA2_CONFIG = 0;
+ *pSPORT0_TCR1 |= RSPEN; // TX SPORT Enable
+ *pSPORT0_RCR1 |= RSPEN; // RX SPORT Enable
+ ssync();
+#endif
+ while(1)
+ {
+ tslp_tsk(1000);
+ syslog( LOG_INFO, "TX: %d, RX: %d", debug_tx_counter, debug_rx_counter );
+
+ }
{
// DMA割り込みをクリアする。
*pDMA1_IRQ_STATUS = DMA_DONE;
-
+#if 1
// タスクにSPORT0受信DMAのバッファが埋まったと知らせる。
- syscall(isig_sem(SEM_SPORT0_RX));
+// syscall(isig_sem(SEM_SPORT0_RX)); // デバッグとりあえずタスクは殺しておく。
+#else
+ int dummy;
+ dummy = pSPORT0_RX32;
+#endif
// ペリフェラルへの書き込みを待つ。
ssync();
debug_rx_counter++;
+ debug_counter-=0;
}
// DMA割り込みをクリアする。
*pDMA2_IRQ_STATUS = DMA_DONE;
+#if 1
// タスクにSPORT0送信DMAのバッファが空いたと知らせる。
- syscall(isig_sem(SEM_SPORT0_TX));
-
+// syscall(isig_sem(SEM_SPORT0_TX));
+#else
+ *pSPORT0_TX32 = 0;
+#endif
// ペリフェラルへの書き込みを待つ。
ssync();
+ debug_counter++;//=AF_BUFSIZE/2;
debug_tx_counter++;
- if ( debug_tx_counter > 31000)
- {
- syslog( LOG_INFO, "TX, SIC_ISR:x08", *pSIC_ISR );
- debug_tx_counter = 0;
- }
}
/**
*pSPORT0_TCR2 =
0 << 10 | // TRFST, 0:left streo ch first, 1:right stereo ch first
0 << 9 | // TSFESE, 0:normal frame sync, 1:LR frame clock
- 0 << 8 | // TXSE, 0:secondary ch disable, 1:secondary ch enable
+ 1 << 8 | // TXSE, 0:secondary ch disable, 1:secondary ch enable
30 << 0 ; // SLEN 0-1:not allowed,2-31:Serial word length - 1