OSDN Git Service

timepulse1 1Hz: GPS時刻fixしなくても出力するようにした
authorNaoya Takamura <ntaka206@users.sourceforge.jp>
Thu, 15 Dec 2011 14:51:22 +0000 (23:51 +0900)
committerNaoya Takamura <ntaka206@users.sourceforge.jp>
Thu, 15 Dec 2011 14:51:22 +0000 (23:51 +0900)
ADbufType
  add __attribute__((__packed__))
  add rescode field
  add resdata[] field
SPI CMD rcv add

main.c
myad.c
myad.h
myspi.c
myspi.h
nbproject/Makefile-default.mk
nbproject/Makefile-genesis.properties
nbproject/configurations.xml
ublox.c
ublox.h

diff --git a/main.c b/main.c
index 9012b01..7e46115 100644 (file)
--- a/main.c
+++ b/main.c
@@ -44,12 +44,18 @@ _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2 )
  */
 #define ADBUF_BYTE  3   // AD 1CH 1sample dataのbyte数
 #define ADBUF_LEN   sizeof(ADbufType)   // 1dataの長さ byte $含まず
+#define RESDATA_LEN 17  // コマンドに対する返答データ 最大長さ
 
+// SPI送信にそのまま使われるので注意!
 typedef struct {
+    unsigned char   rescode;    // コマンドに対する返答 ACK/NAK/NUL
+    unsigned char   resdata[RESDATA_LEN];   // コマンドに対する返答データ
     UbloxNavTimeUtc t;  // タイムスタンプ
     long data1sec[AD_CHNUM];  // 1sec平均値
     unsigned char data[AD_CHNUM][ADBUF_BYTE*AD_SAMPLE];  // AD_SAMPLE[Hz]のデータ
+    int cheksum;
 } ADbufType;
+//} __attribute__((__packed__)) ADbufType;
 static ADbufType   adbuf[RING_NUM];
 
 // SPI外部送信用バッファ AD_SAMPLE[Hz]
@@ -109,8 +115,20 @@ inline void adbuf_time_write(char buf_no, UbloxNavTimeUtc *t)
     my_memcpy(adbuf_time_get(buf_no), t, sizeof(UbloxNavTimeUtc));
 }
 
-/**** ublox *************************************************/
+/**** SPI CMD受信バッファ
+ */
+#define SPI_RX_LEN   20  // Overoから受信するコマンド長 $含む
+static char spi_rx_buf[SPI_RX_LEN];
+static char spi_rx_cnt; // 受信文字数カウント
+
+#define CMD_STS_NONE    0   // 有効なコマンド無し
+#define CMD_STS_RCVD    1   // 有効なコマンド受け取った
+static char spi_cmd_sts;    // コマンド受信状態
 
+/**** ublox ************************************************
+ */
+static UbloxNavTimeUtc gpsNow;
+#if 0
 void test_ublox_rcv_mon(void)
 {
     unsigned char class, id;
@@ -135,7 +153,7 @@ void test_ublox_rcv_mon(void)
 
     }
 }
-static UbloxNavTimeUtc gpsNow;
+#endif
 static void ublox_rcv(void)
 {
     unsigned char class, id;
@@ -158,7 +176,6 @@ static void ublox_rcv(void)
 */
     }
 }
-
 /**** INT1/SPI1 ***********************************************/
 /*
  * INT1 Int及びSPI1 IntでADのデータを取得する
@@ -294,6 +311,34 @@ void test_spi_send(void)
     }
 
 }
+// ADレジスタgetして表示
+void test_ad_get_config(void)
+{
+    int cs = AD_CH1_CS;
+    int i;
+    unsigned char   reg[9];
+    char sz[64];
+
+    ad_cs(cs);
+        ad_spi_send(ADCMD_SDATAC);
+    ad_cs_dis();
+    ad_cs(cs);
+        ad_spi_rcv(ADCMD_RREG | 0); // Register read command
+        ad_spi_rcv(9 - 1);              // 9byte write
+#if 1
+        for(i = 0; i < 9; i++) {
+            reg[i] = ad_spi_rcv(0);
+        }
+#endif
+    ad_cs_dis();
+
+    for(i = 0; i < 9; i++) {
+        sprintf(sz, "%d: %02X\r\n", i, reg[i]);
+        PDEBUG(sz);
+    }
+
+}
+
 /*
  * main()
  */
@@ -357,12 +402,12 @@ int main(int argc, char** argv) {
     CNPU2bits.CN20PUE = 1;  // Pullup ON
     cnint_level_set(4);
 
-
     adint_cnt = 0;
     ad_cs_dis();
     sts_set(STS_NOSYNC);
     pps_intf_clear();
     DRDY_OUT = 1;
+    spi_cmd_sts = CMD_STS_NONE;
     
     // GPS UART1初期設定 BRGH=Standard mode
     // 9600bps 8bit nonparity 1stop nonflowcnt.
@@ -383,16 +428,9 @@ int main(int argc, char** argv) {
     spi2_init();
     spi1_int_disable();
     spi2_int_disable();
-    spi2_putc('$');
+    spi2_putc('$'); // 一番最初のデータ送信のためにセットしておく
 
     PDEBUG("START\r\n");
-    puts("START debug\r\n");
-    sprintf(sz, "RPINR20=%04X\r\n", RPINR20);
-    PDEBUG(sz);
-    sprintf(sz, "SPI1CON1=%04X\r\n", SPI1CON1);
-    PDEBUG(sz);
-    sprintf(sz, "SPI1CON2=%04X\r\n", SPI1CON2);
-    PDEBUG(sz);
     sprintf(sz, "sizeof(ADBUF)=%d\r\n", ADBUF_LEN);
     PDEBUG(sz);
 
@@ -416,6 +454,11 @@ int main(int argc, char** argv) {
     ublox_rcvbuf_clear();
     ublox_send_cfg_tp5_timepulse2();
     ublox_rcv_ack();
+    // TimePulse1をGPS時刻fixしなくても出力する
+    // pulse幅 unlocked=500msec locked=100msec
+    ublox_rcvbuf_clear();
+    ublox_send_cfg_tp5_timepulse1();
+    ublox_rcv_ack();
     // NAV-TIMEUTC出力させる
     ublox_send_cfg_msg();
     ublox_rcv_ack();
@@ -438,16 +481,17 @@ int main(int argc, char** argv) {
     // INT1ハンドラ内で有効にされる
     spi1_intf_clear();
     spi1_set_int_level(4);
+    // DataOut SPI2 割り込み許可しない CSのCN INTで許可するので
+    spi2_intf_clear();
+    spi2_set_int_level(4);
 
+    /**** ペリフェラル割り込み許可 INT1/INT0/CN ************************/
     // INT1割り込み許可
     int1_intf_clear();
     int1_int_enable();    // Int enable
     // INT0割り込み許可
     int0_intf_clear();
     int0_int_enable();    // Int enable
-    // DataOut SPI2 割り込み許可しない CSのCN INTで許可するので
-    spi2_intf_clear();
-    spi2_set_int_level(4);
     // ChangeNotification INT許可 SPI2(Overo) CS
     cnint_intf_clear();
     cnint_int_enable();
@@ -485,26 +529,14 @@ int main(int argc, char** argv) {
 #endif
             ring_read2_plus();
         }
-    }
-/*
-        if (pps_is_intf_enable()) {
-            pps_intf_clear();
-            PDEBUG("pps\r\n");
+        // SPIからコマンド受信
+        if (spi_cmd_sts == CMD_STS_RCVD) {
+            sprintf(sz, "CMD RCV: %02X %02X %02X %02X\r\n", spi_rx_buf[0], spi_rx_buf[1], spi_rx_buf[2], spi_rx_buf[3]);
+            PDEBUG(sz);
+            spi_cmd_sts = CMD_STS_NONE;
         }
-    i = 0;
-    while(1) {
-        if (ring_read_get() != ring_write_get()) {
-            char ch;
-            for(ch=0; ch<AD_CHNUM; ch++) {
-                sprintf(sz, "%+7ld,", adbuf_1sec[ring_read_get()][ch]);
-                PDEBUG(sz);
-            }
-            PDEBUG("\r\n");
 
-            ring_read_plus();
-        }
     }
-*/
     
     return (EXIT_SUCCESS);
 }
@@ -513,7 +545,7 @@ int main(int argc, char** argv) {
  * 
  *
  */
-void __attribute__((interrupt, no_auto_psv)) _INT0Interrupt(void)
+void __attribute__((interrupt, no_auto_psv, shadow)) _INT0Interrupt(void)
 {
     // AD STARTピン=H
     ad_start_ena();
@@ -533,8 +565,7 @@ void __attribute__((interrupt, no_auto_psv)) _INT0Interrupt(void)
         ad_start_dis();
         sts_set(STS_SYNCNOW1);
     } else if (sts_get() == STS_SYNCNOW1) {
-        // AD STARTピン=H
-//        ad_start_ena();
+        // AD STARTピン=H 関数先頭で行っているのでここではやらない
         sts_set(STS_SYNCWAIT);
     } else if (sts_get() == STS_SYNCWAIT) {
         sts_set(STS_SYNCED);
@@ -653,7 +684,6 @@ void __attribute__((interrupt, auto_psv)) _SPI1Interrupt(void)
  * DataOut SPI2 Interrupt Handler
  * TX FIFOに1byteの空きが出来ると発生
  */
-//static unsigned char   spi2c;
 void __attribute__((interrupt, no_auto_psv)) _SPI2Interrupt(void)
 {
     unsigned char   rx;
@@ -662,17 +692,24 @@ void __attribute__((interrupt, no_auto_psv)) _SPI2Interrupt(void)
     // 送信
     while(SPI2_TBF == 0) {
         if (dataout_cnt_get() <= 0) break;
-//        spi2_putc(spi2c++);
         spi2_putc(*dout_ptr++);
         dataout_cnt_minus();
     }
     // 受信
     while(SPI2_SRXMPT == 0) {
         rx = spi2_getc();
+        if (spi_cmd_sts == CMD_STS_NONE && spi_rx_cnt < SPI_RX_LEN) {
+            spi_rx_buf[spi_rx_cnt] = rx;
+            spi_rx_cnt++;
+            if (spi_rx_cnt >= SPI_RX_LEN) {
+                if (spi_rx_buf[0] != 0) {
+                    spi_cmd_sts = CMD_STS_RCVD;
+                }
+            }
+        }
     }
 
     // オーバーランエラーならばクリアする
-    // spi2_rx_is_overrun()
     if (SPI2STATbits.SPIROV == 1) SPI2STATbits.SPIROV = 0;
 
 }
@@ -703,15 +740,17 @@ void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void)
         // リングバッファ読み込み位置get
         dout_ptr = (char*)adbuf_get(ring_read1_get());
         // SPI送信の一番最初
-//        spi2c = 0;
         dataout_cnt_set(ADBUF_LEN);
         // SPI2 TX FIFOに送信データ書き込み
         while(SPI2_TBF == 0) {
             if (dataout_cnt_get() <= 0) break;
-//            spi2_putc(spi2c++);
             spi2_putc(*dout_ptr++);
             dataout_cnt_minus();
         }
+        if (spi_cmd_sts == CMD_STS_NONE) {
+            // SPI受信文字数カウンタクリア
+            spi_rx_cnt = 0;
+        }
         // SPI2割り込みON
         spi2_int_enable();
         // DRDY=H
diff --git a/myad.c b/myad.c
index 59e50d1..0271ef6 100644 (file)
--- a/myad.c
+++ b/myad.c
@@ -1,7 +1,8 @@
 /*
  * ADS1259
  * 
- * ADデータSPIエンディアン MSB first
+ * AD
+ * SPIエンディアン MSB first
  */
 #include <p24FJ64GA004.h>
 #include <libpic30.h>
 #include "myspi.h"
 #include "myad.h"
 
-
-#if 0
-// AD DRDY0 INTフラグ 1=INTかかった 0=なし
-static char ad_drdy0_int;
-// AD DRDY0 INTフラグ
-void ad_drdy0_intf_set(void)
-{
-    ad_drdy0_int = 1;
-}
-void ad_drdy0_intf_clear(void)
-{
-    ad_drdy0_int = 0;
-}
-char ad_is_drdy0_intf(void)
-{
-    if (ad_drdy0_int == 1) {
-        return 1;
-    }
-    return 0;
-}
-#endif
-
 void ad_cs_init(void)
 {
     asm("NOP");
@@ -41,50 +20,6 @@ void ad_cs_init(void)
     asm("NOP");
     CS_DATA = 0;
 }
-# if 0
-/*
- int cs: 0〜15
- */
-void ad_cs(unsigned char cs)
-{
-    unsigned char i;
-
-//CS_CLK = 1;
-    for(i = 16; i > 0; i--) {
-        if (i == cs+1) {
-            CS_DATA = 0;
-        } else {
-            CS_DATA = 1;
-        }
-        asm("NOP");
-        CS_CLK = 1;
-        CS_CLK = 0;
-    }
-    asm("NOP");
-    CS_RCLK = 1;
-    asm("NOP");
-    CS_DATA = 0;
-    asm("NOP");
-    CS_RCLK = 0;
-}
-
-void ad_cs_dis(void)
-{
-    unsigned char i;
-
-    CS_DATA = 1;
-    for(i = 16; i > 0; i--) {
-        CS_CLK = 1;
-        CS_CLK = 0;
-    }
-    asm("NOP");
-    CS_RCLK = 1;
-    asm("NOP");
-    CS_DATA = 0;
-    asm("NOP");
-    CS_RCLK = 0;
-}
-#endif
 
 void ad_reset(void)
 {
@@ -106,15 +41,15 @@ void ad_spi_send(unsigned char c)
     while(spi1_tx_fifo_is_full());
     spi1_putc(c);
 }
-// polling rcv
-unsigned char ad_spi_rcv(void)
+// polling send/rcv
+unsigned char ad_spi_rcv(unsigned char c)
 {
     spi1_rx_overrun_clear();
     while(spi1_tx_fifo_is_full());
     // 前に受信したデータをクリア
     spi1_getc();
     // 送信
-    spi1_putc(0);
+    spi1_putc(c);
     // 受信待ち
     while(!spi1_rx_fifo_is_full());
     return spi1_getc();
@@ -124,89 +59,89 @@ void ad_init(void)
 {
     int cs;
     int i;
-for(i = 0; i < AD_CHNUM; i++) {
-    cs = AD_CH1_CS + i;
-//1. Send the SDATAC command <11h>. This command cancels the RDATAC mode. RDATAC mode must be
-//cancelled before the register write commands.
-
-    ad_cs(cs);
-        ad_spi_send(ADCMD_SDATAC);
-    ad_cs_dis();
-//2. Send the register write command. The following example shows the register write as a block of nine bytes,
-//starting at register 0 (CONFIG0).
-    ad_cs(cs);
-        ad_spi_send(ADCMD_WREG | 0);   // Register write command
-        ad_spi_send(9 - 1);            // 9byte write
-        // CONFIG0: RFBIAS OFF, SPI timeout enable
-        // Bit 2 RBIAS: Internal reference bias
-        //  0 = Internal reference bias disabled
-        //  1 = Internal reference bias enabled (default)
-        // Bit 0 SPI: SCLK timeout of SPI interface
-        //  0 = SPI timeout disabled
-        //  1 = SPI timeout enabled (default), when SCLK is held low for 216 clock cycles
-        //         bit76543210
-        ad_spi_send(0b00000101);
-        // CONFIG1: sinc1 filter, EXTREF ON, START delay = 0
-        // Bit 6 CHKSUM: Checksum
-        //  0 = Disabled (default)
-        //  1 = Conversion data checksum byte included in readback
-        // Bit 4 SINC2: Digital filter mode
-        //  0 = sinc1 filter (default)
-        //  1 = sinc2 filter
-        // Bit 3 EXTREF: Reference select
-        //  0 = Internal
-        //  1 = External (default)
-        // Bits 2-0 DELAY[2:0]: START conversion delay
-        //  000 = No delay (default)
-        //         bit76543210
-        ad_spi_send(0b00001000);
-
-
-        // CONFIG2: SYNCOUT ON, Gate control, DataRate=10Hz
-        // Bit 5 SYNCOUT: SYNCOUT clock enable
-        //  0 = SYNCOUT disabled (default)
-        //  1 = SYNCOUT enabled
-        // Bit 4 PULSE: Conversion Control mode select
-        //  0 = Gate Control mode (default)
-        //  1 = Pulse Control mode
-        // Bits 2-0 DR[2:0] Data rate setting
-        //  000 = 10SPS (default)
-        //  001 = 16.6SPS
-        //  010 = 50SPS
-        //  011 = 60SPS
-        //  100 = 400SPS
-        //  101 = 1200SPS
-        //  110 = 3600SPS
-        //  111 = 14400SPS
-        //  NOTE: fCLK = 7.3728MHz
-        unsigned char rate_bit;
-        switch(AD_SAMPLE) {
-            case 50:
-                rate_bit = 0b00000010;
-                break;
-            case 400:
-                rate_bit = 0b00000100;
-                break;
-            default:
-            case 10:
-                rate_bit = 0b00000000;
-                break;
-        }
-        //         bit76543210
-        ad_spi_send(0b00100000 | rate_bit);
-
-        // OFC0,1,2: no offset correction
-        ad_spi_send(0);
-        ad_spi_send(0);
-        ad_spi_send(0);
+    for(i = 0; i < AD_CHNUM; i++) {
+        cs = AD_CH1_CS + i;
+    //1. Send the SDATAC command <11h>. This command cancels the RDATAC mode. RDATAC mode must be
+    //cancelled before the register write commands.
 
-    // FSC0,1,2: no full scale correction
-        ad_spi_send(0);
-        ad_spi_send(0);
-        ad_spi_send(0b01000000);
-    ad_cs_dis();
+        ad_cs(cs);
+            ad_spi_send(ADCMD_SDATAC);
+        ad_cs_dis();
+    //2. Send the register write command. The following example shows the register write as a block of nine bytes,
+    //starting at register 0 (CONFIG0).
+        ad_cs(cs);
+            ad_spi_send(ADCMD_WREG | 0);       // Register write command
+            ad_spi_send(9 - 1);                // 9byte write
+            // CONFIG0: RFBIAS OFF, SPI timeout enable
+            // Bit 2 RBIAS: Internal reference bias
+            //  0 = Internal reference bias disabled
+            //  1 = Internal reference bias enabled (default)
+            // Bit 0 SPI: SCLK timeout of SPI interface
+            //  0 = SPI timeout disabled
+            //  1 = SPI timeout enabled (default), when SCLK is held low for 216 clock cycles
+            //         bit76543210
+            ad_spi_send(0b00000101);
+            // CONFIG1: sinc1 filter, EXTREF ON, START delay = 0
+            // Bit 6 CHKSUM: Checksum
+            //  0 = Disabled (default)
+            //  1 = Conversion data checksum byte included in readback
+            // Bit 4 SINC2: Digital filter mode
+            //  0 = sinc1 filter (default)
+            //  1 = sinc2 filter
+            // Bit 3 EXTREF: Reference select
+            //  0 = Internal
+            //  1 = External (default)
+            // Bits 2-0 DELAY[2:0]: START conversion delay
+            //  000 = No delay (default)
+            //         bit76543210
+            ad_spi_send(0b00001000);
+
+
+            // CONFIG2: SYNCOUT ON, Gate control, DataRate=10Hz
+            // Bit 5 SYNCOUT: SYNCOUT clock enable
+            //  0 = SYNCOUT disabled (default)
+            //  1 = SYNCOUT enabled
+            // Bit 4 PULSE: Conversion Control mode select
+            //  0 = Gate Control mode (default)
+            //  1 = Pulse Control mode
+            // Bits 2-0 DR[2:0] Data rate setting
+            //  000 = 10SPS (default)
+            //  001 = 16.6SPS
+            //  010 = 50SPS
+            //  011 = 60SPS
+            //  100 = 400SPS
+            //  101 = 1200SPS
+            //  110 = 3600SPS
+            //  111 = 14400SPS
+            //  NOTE: fCLK = 7.3728MHz
+            unsigned char rate_bit;
+            switch(AD_SAMPLE) {
+                case 50:
+                    rate_bit = 0b00000010;
+                    break;
+                case 400:
+                    rate_bit = 0b00000100;
+                    break;
+                default:
+                case 10:
+                    rate_bit = 0b00000000;
+                    break;
+            }
+            //         bit76543210
+            ad_spi_send(0b00100000 | rate_bit);
+
+            // OFC0,1,2: no offset correction
+            ad_spi_send(0);
+            ad_spi_send(0);
+            ad_spi_send(0);
+
+            // FSC0,1,2: no full scale correction
+            ad_spi_send(0);
+            ad_spi_send(0);
+            ad_spi_send(0b01000000);
+        ad_cs_dis();
 
-}
+    }
     // 4. Take the START pin high or send the START command to start conversions.
     ad_start_ena(); // +AD START
 
@@ -221,45 +156,46 @@ for(i = 0; i < AD_CHNUM; i++) {
 
 }
 /*
-       PGA280 init
-       BUF OFF
+ * PGA280 init
+ * BUF OFF
+ * SYNCin enable
 */
 void pga_init(void)
 {
     int cs;
     int i;
-for(i = 0; i < AD_CHNUM; i++) {
-    cs = PGA_CH1_CS + i;
-    //Register 1
-    //Soft Reset
-    ad_cs(cs);
-        ad_spi_send(0x41);
-        ad_spi_send(0x01);
-    ad_cs_dis();
-    //waitいる?
-    delay_ms(1);
+    for(i = 0; i < AD_CHNUM; i++) {
+        cs = PGA_CH1_CS + i;
+        //Register 1
+        //Soft Reset
+        ad_cs(cs);
+            ad_spi_send(0x41);
+            ad_spi_send(0x01);
+        ad_cs_dis();
+        //waitいる?
+        delay_ms(1);
 
-    //Register 0
-    //Gain=1/4
-    ad_cs(cs);
-        ad_spi_send(0x40);  //(BUF OFF)
-        ad_spi_send(0x08);
-    ad_cs_dis();
+        //Register 0
+        //Gain=1/4
+        ad_cs(cs);
+            ad_spi_send(0x40);  //(BUF OFF)
+            ad_spi_send(0x08);
+        ad_cs_dis();
 
-    //Register 8: GPIO Configuration Register
-    //使わないpinはoutput(=1)にする
-    //bit6 GPIO6(SYNCIN) input(=0)
-    ad_cs(cs);
-        ad_spi_send(0x48);
-        ad_spi_send(0b00111111);
-    ad_cs_dis();
+        //Register 8: GPIO Configuration Register
+        //使わないpinはoutput(=1)にする
+        //bit6 GPIO6(SYNCIN) input(=0)
+        ad_cs(cs);
+            ad_spi_send(0x48);
+            ad_spi_send(0b00111111);
+        ad_cs_dis();
 
-    //Register 12: Special Functions Register
-    //bit6 SYNCin=1 SYNCIN(GPIO6) Enable
-    ad_cs(cs);
-        ad_spi_send(0x4C);
-        ad_spi_send(0b01000000);
-    ad_cs_dis();
-}
+        //Register 12: Special Functions Register
+        //bit6 SYNCin=1 SYNCIN(GPIO6) Enable
+        ad_cs(cs);
+            ad_spi_send(0x4C);
+            ad_spi_send(0b01000000);
+        ad_cs_dis();
+    }
 }
 
diff --git a/myad.h b/myad.h
index 29de4c5..2696057 100644 (file)
--- a/myad.h
+++ b/myad.h
 
 // SPI CMD
 #define        ADCMD_SDATAC    0x11
+#define        ADCMD_RREG      0x20
 #define        ADCMD_WREG      0x40
 #define        ADCMD_RDATAC    0x10
+#define        ADCMD_SDATAC    0x11
 
 // AD DRDY0 INTフラグ
 //void ad_drdy0_intf_set(void);
@@ -81,7 +83,7 @@ void ad_start(void);
 void ad_init(void);
 
 void ad_spi_send(unsigned char c);
-unsigned char ad_spi_rcv(void);
+unsigned char ad_spi_rcv(unsigned char c);
 
 void pga_init(void);
 
diff --git a/myspi.c b/myspi.c
index f551fa6..d4d04a5 100644 (file)
--- a/myspi.c
+++ b/myspi.c
@@ -2,6 +2,19 @@
 
 #include "myspi.h"
 
+
+void spi1_rx_fifo_clear(void)
+{
+    int i;
+    unsigned char   c;
+    for(i = 0; i < 16; i++) c = SPI1BUF;
+}
+void spi2_rx_fifo_clear(void)
+{
+    int i;
+    unsigned char   c;
+    for(i = 0; i < 16; i++) c = SPI2BUF;
+}
 /*
  AD SPI1 Init
  Enhanced Buffer OFF
@@ -21,8 +34,11 @@ int spi1_init(void)
     // bit12 DISSCK=0 0=Internal SPI clock is enabled
     // bit11 DISSDO=0 0 = SDOx pin is controlled by the module
     // bit10 MODE16=0 8bit
-    // bit9  SMP=1 1=Input data sampled at end of data output time @MasterMode
-    // bit8  CKE=0 DATA CHANGE=CLK LtoH
+    // bit9  SMP=0
+    //   @MasterMode
+    //   1 = Input data sampled at end of data output time
+    //   0 = Input data sampled at middle of data output time
+    // bit8  CKE=0 DATA CHANGE=CLK Idle to Active =LtoH
     // bit7  SSEN=0 SS pin disable
     // bit6  CKP=0 CLK IDLE=LOW
     // bit5  MSTEN=1 Master
@@ -37,7 +53,7 @@ int spi1_init(void)
     //  01 = Primary prescale 16:1
     //  00 = Primary prescale 64:1
     //           5432109876543210
-    SPI1CON1 = 0b0000001000111110;
+    SPI1CON1 = 0b0000000000111110;
 
     // Enahanced Buffer(FIFO) Disable
     // bit0 SPIBEN: Enhanced Buffer Enable bit
diff --git a/myspi.h b/myspi.h
index 188c9bd..5fe166c 100644 (file)
--- a/myspi.h
+++ b/myspi.h
@@ -2,6 +2,8 @@
 #include <p24FJ64GA004.h>
 
 #define __MYSPI_H__
+void spi1_rx_fifo_clear(void);
+void spi2_rx_fifo_clear(void);
 int spi1_init(void);
 int spi2_init(void);
 
index cf3047f..69b9b83 100644 (file)
@@ -93,110 +93,110 @@ ${OBJECTDIR}/byte2var.o: byte2var.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/byte2var.o.d 
        @${RM} ${OBJECTDIR}/byte2var.o.ok ${OBJECTDIR}/byte2var.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/byte2var.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/byte2var.o.d" -o ${OBJECTDIR}/byte2var.o byte2var.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/byte2var.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/byte2var.o.d" -o ${OBJECTDIR}/byte2var.o byte2var.c   -Winline
        
 ${OBJECTDIR}/myuart.o: myuart.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myuart.o.d 
        @${RM} ${OBJECTDIR}/myuart.o.ok ${OBJECTDIR}/myuart.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myuart.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myuart.o.d" -o ${OBJECTDIR}/myuart.o myuart.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myuart.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myuart.o.d" -o ${OBJECTDIR}/myuart.o myuart.c   -Winline
        
 ${OBJECTDIR}/debug_print.o: debug_print.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/debug_print.o.d 
        @${RM} ${OBJECTDIR}/debug_print.o.ok ${OBJECTDIR}/debug_print.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/debug_print.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/debug_print.o.d" -o ${OBJECTDIR}/debug_print.o debug_print.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/debug_print.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/debug_print.o.d" -o ${OBJECTDIR}/debug_print.o debug_print.c   -Winline
        
 ${OBJECTDIR}/mysts.o: mysts.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/mysts.o.d 
        @${RM} ${OBJECTDIR}/mysts.o.ok ${OBJECTDIR}/mysts.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/mysts.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/mysts.o.d" -o ${OBJECTDIR}/mysts.o mysts.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/mysts.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/mysts.o.d" -o ${OBJECTDIR}/mysts.o mysts.c   -Winline
        
 ${OBJECTDIR}/ublox.o: ublox.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/ublox.o.d 
        @${RM} ${OBJECTDIR}/ublox.o.ok ${OBJECTDIR}/ublox.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/ublox.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/ublox.o.d" -o ${OBJECTDIR}/ublox.o ublox.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/ublox.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/ublox.o.d" -o ${OBJECTDIR}/ublox.o ublox.c   -Winline
        
 ${OBJECTDIR}/myad.o: myad.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myad.o.d 
        @${RM} ${OBJECTDIR}/myad.o.ok ${OBJECTDIR}/myad.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myad.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myad.o.d" -o ${OBJECTDIR}/myad.o myad.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myad.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myad.o.d" -o ${OBJECTDIR}/myad.o myad.c   -Winline
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/main.o.d 
        @${RM} ${OBJECTDIR}/main.o.ok ${OBJECTDIR}/main.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c   -Winline
        
 ${OBJECTDIR}/ring.o: ring.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/ring.o.d 
        @${RM} ${OBJECTDIR}/ring.o.ok ${OBJECTDIR}/ring.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/ring.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/ring.o.d" -o ${OBJECTDIR}/ring.o ring.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/ring.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/ring.o.d" -o ${OBJECTDIR}/ring.o ring.c   -Winline
        
 ${OBJECTDIR}/myspi.o: myspi.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myspi.o.d 
        @${RM} ${OBJECTDIR}/myspi.o.ok ${OBJECTDIR}/myspi.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myspi.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myspi.o.d" -o ${OBJECTDIR}/myspi.o myspi.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myspi.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myspi.o.d" -o ${OBJECTDIR}/myspi.o myspi.c   -Winline
        
 else
 ${OBJECTDIR}/byte2var.o: byte2var.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/byte2var.o.d 
        @${RM} ${OBJECTDIR}/byte2var.o.ok ${OBJECTDIR}/byte2var.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/byte2var.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/byte2var.o.d" -o ${OBJECTDIR}/byte2var.o byte2var.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/byte2var.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/byte2var.o.d" -o ${OBJECTDIR}/byte2var.o byte2var.c   -Winline
        
 ${OBJECTDIR}/myuart.o: myuart.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myuart.o.d 
        @${RM} ${OBJECTDIR}/myuart.o.ok ${OBJECTDIR}/myuart.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myuart.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myuart.o.d" -o ${OBJECTDIR}/myuart.o myuart.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myuart.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myuart.o.d" -o ${OBJECTDIR}/myuart.o myuart.c   -Winline
        
 ${OBJECTDIR}/debug_print.o: debug_print.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/debug_print.o.d 
        @${RM} ${OBJECTDIR}/debug_print.o.ok ${OBJECTDIR}/debug_print.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/debug_print.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/debug_print.o.d" -o ${OBJECTDIR}/debug_print.o debug_print.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/debug_print.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/debug_print.o.d" -o ${OBJECTDIR}/debug_print.o debug_print.c   -Winline
        
 ${OBJECTDIR}/mysts.o: mysts.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/mysts.o.d 
        @${RM} ${OBJECTDIR}/mysts.o.ok ${OBJECTDIR}/mysts.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/mysts.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/mysts.o.d" -o ${OBJECTDIR}/mysts.o mysts.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/mysts.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/mysts.o.d" -o ${OBJECTDIR}/mysts.o mysts.c   -Winline
        
 ${OBJECTDIR}/ublox.o: ublox.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/ublox.o.d 
        @${RM} ${OBJECTDIR}/ublox.o.ok ${OBJECTDIR}/ublox.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/ublox.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/ublox.o.d" -o ${OBJECTDIR}/ublox.o ublox.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/ublox.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/ublox.o.d" -o ${OBJECTDIR}/ublox.o ublox.c   -Winline
        
 ${OBJECTDIR}/myad.o: myad.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myad.o.d 
        @${RM} ${OBJECTDIR}/myad.o.ok ${OBJECTDIR}/myad.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myad.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myad.o.d" -o ${OBJECTDIR}/myad.o myad.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myad.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myad.o.d" -o ${OBJECTDIR}/myad.o myad.c   -Winline
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/main.o.d 
        @${RM} ${OBJECTDIR}/main.o.ok ${OBJECTDIR}/main.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/main.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/main.o.d" -o ${OBJECTDIR}/main.o main.c   -Winline
        
 ${OBJECTDIR}/ring.o: ring.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/ring.o.d 
        @${RM} ${OBJECTDIR}/ring.o.ok ${OBJECTDIR}/ring.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/ring.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/ring.o.d" -o ${OBJECTDIR}/ring.o ring.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/ring.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/ring.o.d" -o ${OBJECTDIR}/ring.o ring.c   -Winline
        
 ${OBJECTDIR}/myspi.o: myspi.c  nbproject/Makefile-${CND_CONF}.mk
        @${MKDIR} ${OBJECTDIR} 
        @${RM} ${OBJECTDIR}/myspi.o.d 
        @${RM} ${OBJECTDIR}/myspi.o.ok ${OBJECTDIR}/myspi.o.err 
-       @${FIXDEPS} "${OBJECTDIR}/myspi.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -O1 -MMD -MF "${OBJECTDIR}/myspi.o.d" -o ${OBJECTDIR}/myspi.o myspi.c   -Winline
+       @${FIXDEPS} "${OBJECTDIR}/myspi.o.d" $(SILENT) -c ${MP_CC} $(MP_EXTRA_CC_PRE)  -g -omf=elf -x c -c -mcpu=$(MP_PROCESSOR_OPTION) -mlarge-data -O1 -MMD -MF "${OBJECTDIR}/myspi.o.d" -o ${OBJECTDIR}/myspi.o myspi.c   -Winline
        
 endif
 
index 26f6fea..5a5b8c5 100644 (file)
@@ -1,5 +1,5 @@
 #
-#Sat Dec 03 14:49:06 JST 2011
+#Thu Dec 15 23:32:46 JST 2011
 default.languagetoolchain.dir=/opt/microchip/mplabc30/v3.30c/bin
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=11bb82e71763925c87fa30f6c65473b1
 default.languagetoolchain.version=3_30
index 35a53cd..39c21c3 100644 (file)
@@ -86,7 +86,7 @@
         <property key="post-instruction-scheduling" value="default"/>
         <property key="enable-unroll-loops" value="false"/>
         <property key="enable-symbols" value="true"/>
-        <property key="data-model" value="default"/>
+        <property key="data-model" value="large-data"/>
         <property key="isolate-each-function" value="false"/>
         <property key="enable-fatal-warnings" value="false"/>
         <property key="enable-omit-frame-pointer" value="false"/>
         <property key="extra-include-directories-for-assembler" value=""/>
         <property key="preprocessor-macros" value=""/>
         <property key="list-file" value=""/>
-        <property key="list-assembly" value="false"/>
         <property key="list-source" value="false"/>
+        <property key="list-assembly" value="false"/>
         <property key="relax" value="false"/>
-        <property key="extra-include-directories-for-preprocessor" value=""/>
         <property key="warning-level" value="emit-warnings"/>
+        <property key="extra-include-directories-for-preprocessor" value=""/>
         <property key="list-section-info" value="false"/>
         <property key="omit-forms" value="false"/>
         <property key="list-symbols" value="false"/>
         <property key="enable-handles" value="true"/>
         <property key="enable-data-init" value="true"/>
         <property key="secure-flash" value="no_flash"/>
-        <property key="boot-write-protect" value="no_write_protect"/>
-        <property key="boot-flash" value="no_flash"/>
-        <property key="report-memory-usage" value="false"/>
         <property key="generate-cross-reference-file" value="false"/>
+        <property key="report-memory-usage" value="false"/>
+        <property key="boot-flash" value="no_flash"/>
+        <property key="boot-write-protect" value="no_write_protect"/>
         <property key="input-libraries" value=""/>
         <property key="secure-ram" value="no_ram"/>
         <property key="enable-check-sections" value="true"/>
         <property key="enable-default-isr" value="true"/>
         <property key="symbol-stripping" value="keep-all"/>
         <property key="boot-ram" value="no_ram"/>
-        <property key="secure-eeprom" value="no_eeprom"/>
         <property key="extra-lib-directories" value=""/>
+        <property key="secure-eeprom" value="no_eeprom"/>
       </C30-LD>
       <C30Global>
         <property key="fast-math" value="false"/>
-        <property key="output-file-format" value="elf"/>
         <property key="legacy-libc" value="false"/>
+        <property key="output-file-format" value="elf"/>
       </C30Global>
       <ICD3PlatformTool>
         <property key="UART 2" value="true"/>
         <property key="TIMER4" value="true"/>
         <property key="TIMER3" value="true"/>
         <property key="SPI 2" value="true"/>
-        <property key="TIMER2" value="true"/>
         <property key="SPI 1" value="true"/>
+        <property key="TIMER2" value="true"/>
         <property key="TIMER1" value="true"/>
         <property key="CRC" value="true"/>
         <property key="I2C2" value="true"/>
         <property key="I2C1" value="true"/>
-        <property key="Freeze All Other Peripherals" value="true"/>
         <property key="programoptions.preserveprogramrange.end" value="0xff"/>
+        <property key="Freeze All Other Peripherals" value="true"/>
       </ICD3PlatformTool>
     </conf>
   </confs>
diff --git a/ublox.c b/ublox.c
index 23abbf8..f5bfbd4 100644 (file)
--- a/ublox.c
+++ b/ublox.c
@@ -238,7 +238,7 @@ void ublox_send_cfg_tp5_timepulse1(void)
 
     payload[4] = 50;    // cable delay ns
 
-    payload[8] = 0x40;  // Period us
+    payload[8] = 0x40;  // Period 1,000,000us
     payload[9] = 0x42;
     payload[10] = 0x0F;
     payload[11] = 0x00;
@@ -248,16 +248,16 @@ void ublox_send_cfg_tp5_timepulse1(void)
     payload[14] = 0x0F;
     payload[15] = 0x00;
 
-    payload[16] = 0x00;   // Pulse width us
-    payload[17] = 0x00;
-    payload[18] = 0x00;
+    payload[16] = 0x20;   // Pulse width 500,000us
+    payload[17] = 0xA1;
+    payload[18] = 0x07;
     payload[19] = 0x00;
 
-//    payload[20] = 0xA0;   // Pulse width locked 100,000us
-//    payload[21] = 0x86;
-//    payload[22] = 0x01;
-//    payload[23] = 0x00;
-
+    payload[20] = 0xA0;   // Pulse width locked 100,000us
+    payload[21] = 0x86;
+    payload[22] = 0x01;
+    payload[23] = 0x00;
+#if 0
     payload[20] = 0x20;   // Pulse width locked 500,000us
     payload[21] = 0xA1;
     payload[22] = 0x07;
@@ -267,7 +267,7 @@ void ublox_send_cfg_tp5_timepulse1(void)
     payload[21] = 0x35;
     payload[22] = 0x0C;
     payload[23] = 0x00;
-
+#endif
 
     payload[28] = 0b11110111;   // Grid=GPS,Pol=Rise
 
@@ -424,11 +424,11 @@ int ublox_rcv_ack(void)
         ublox_rcv_pkt(&class, &id, &len, payload);
         if (class == 0x05 && id == 0x01) {
             // ACK
-            PDEBUG("ACK\r\n");
+//            PDEBUG("ACK\r\n");
             return 1;
         } else if (class == 0x05 && id == 0x00) {
             // NACK
-            PDEBUG("NACK\r\n");
+//            PDEBUG("NACK\r\n");
             return 0;
         }
     }
diff --git a/ublox.h b/ublox.h
index 3fa300a..3fc331e 100644 (file)
--- a/ublox.h
+++ b/ublox.h
@@ -18,6 +18,7 @@
 #define UBX_LEN_NAV_TIMEUTC 20
 
 // NAV-TIMEUTCパケットのデータ格納
+// SPI送信にそのまま使われるので注意!
 typedef struct {
     unsigned long   tow;    // ms GPS Millisecond Time of Week
     unsigned long   tacc;   // ns Time Accuracy Estimate