OSDN Git Service

CNINT: リングバッファにデータがまだある時は再びDRDY=Lにする処理を追加
authorNaoya Takamura <ntaka206@users.sourceforge.jp>
Tue, 20 Dec 2011 01:32:57 +0000 (10:32 +0900)
committerNaoya Takamura <ntaka206@users.sourceforge.jp>
Tue, 20 Dec 2011 01:32:57 +0000 (10:32 +0900)
SPI1INT: 49個目のデータを取得したらGPS時刻をタイムスタンプとして記録する処理追加

main.c

diff --git a/main.c b/main.c
index e9ea7af..c8c2887 100644 (file)
--- a/main.c
+++ b/main.c
@@ -474,9 +474,6 @@ void __attribute__((interrupt, no_auto_psv, shadow)) _INT0Interrupt(void)
     // AD個数カウンタ=SAMP_FREQ-1
     adint_cnt = AD_SAMPLE - 1;
 
-    // ADバッファにタイムスタンプ付ける
-    adbuf_time_write(ring_write_get(), &gpsNow);
-
     // AD START信号による同期
     if (sts_get() == STS_SYNCNOW0) {
         // AD STARTピン=L
@@ -519,6 +516,7 @@ void __attribute__((interrupt, no_auto_psv)) _INT1Interrupt(void)
     spi1_int_enable();
     // 送信
     spi1_putc(0);
+
 }
 /*
  * AD SPI1 Interrupt Handler
@@ -564,7 +562,10 @@ void __attribute__((interrupt, auto_psv)) _SPI1Interrupt(void)
             if (adint_ch >= AD_CHNUM) {
                 // 全CHデータgetした
                 adint_cnt++;
-                if (adint_cnt >= AD_SAMPLE) {
+                if (adint_cnt == AD_SAMPLE-1) {
+                    // ADバッファにタイムスタンプ付ける
+                    adbuf_time_write(ring_write_get(), &gpsNow);
+                } else if (adint_cnt >= AD_SAMPLE) {
                     // 1secぶんのデータgetした
                     // DRDY->H DRDY=Lの時でもDRDYのエッジを作るため
                     DRDY_OUT = 1;
@@ -676,6 +677,11 @@ void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void)
         spi2_putc(SPI_HEAD_CHAR);
         // リングバッファ読み込み位置+1
         ring_read1_plus();
+        // 送信データがリングバッファにあるとき
+        if (ring_num1_get() > 0) {
+            // DRDY->L
+            DRDY_OUT = 0;
+        }
     } else {
         // CS=L
         // リングバッファ読み込み位置get