*/
#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]
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;
}
}
-static UbloxNavTimeUtc gpsNow;
+#endif
static void ublox_rcv(void)
{
unsigned char class, id;
*/
}
}
-
/**** INT1/SPI1 ***********************************************/
/*
* INT1 Int及びSPI1 IntでADのデータを取得する
}
}
+// 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()
*/
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.
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);
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();
// 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();
#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);
}
*
*
*/
-void __attribute__((interrupt, no_auto_psv)) _INT0Interrupt(void)
+void __attribute__((interrupt, no_auto_psv, shadow)) _INT0Interrupt(void)
{
// AD STARTピン=H
ad_start_ena();
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);
* DataOut SPI2 Interrupt Handler
* TX FIFOに1byteの空きが出来ると発生
*/
-//static unsigned char spi2c;
void __attribute__((interrupt, no_auto_psv)) _SPI2Interrupt(void)
{
unsigned char rx;
// 送信
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;
}
// リングバッファ読み込み位置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
/*
* 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");
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)
{
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();
{
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
}
/*
- 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();
+ }
}
// 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);
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);
#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
// 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
// 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
#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);
@${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
#
-#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
<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>
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;
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;
payload[21] = 0x35;
payload[22] = 0x0C;
payload[23] = 0x00;
-
+#endif
payload[28] = 0b11110111; // Grid=GPS,Pol=Rise
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;
}
}
#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