OSDN Git Service

まだデバッグ途中。TXの割り込み数がおかしい
authorsuikan <suikan@users.sourceforge.jp>
Tue, 19 May 2015 13:45:18 +0000 (22:45 +0900)
committersuikan <suikan@users.sourceforge.jp>
Tue, 19 May 2015 13:45:18 +0000 (22:45 +0900)
trx305/framework.c
trx305/framework.h

index 689c835..fd447c7 100644 (file)
@@ -105,6 +105,7 @@ void rx_if_task(VP_INT exinf)
     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
@@ -124,8 +125,22 @@ void rx_if_task(VP_INT exinf)
     *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 );
+
+    }
 
 
 
@@ -417,14 +432,19 @@ void sport0_rx_int_handler(void)
 {
         // 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;
 
 }
 
@@ -439,18 +459,17 @@ void sport0_tx_int_handler(void)
         // 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;
-     }
 }
 
 /**
@@ -586,7 +605,7 @@ static void init_sport0_tx(void)
     *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
 
 
index a598313..1698e5f 100644 (file)
  *
  *
  */
-#define AF_QUESIZE          40      /* 送受信タスクの間のキューの長さ。8サンプルが最長割り込み周期と仮定してさらにマージンをもたせている */
+#define AF_QUESIZE          80      /* 送受信タスクの間のキューの長さ。8サンプルが最長割り込み周期と仮定してさらにマージンをもたせている */
 
 #define WIDE_FM_OVERSAMPE   8       /* AF1サンプルあたりのWide FM サンプル数 */