サブCPU2010のPICプログラム
ADデータ取得とGPS時刻付けを行いLinux部にデータを出力します。
Revisão | fdf2a337333a5a2f7b88ca5d27a0debae6c9a019 (tree) |
---|---|
Hora | 2011-11-30 11:57:49 |
Autor | Naoya Takamura <ntaka206@user...> |
Commiter | Naoya Takamura |
11/11/30 12H serial csv out.
@@ -44,12 +44,24 @@ _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2 ) | ||
44 | 44 | */ |
45 | 45 | #define ADBUF_BYTE 3 // AD 1CH 1sample dataのbyte数 |
46 | 46 | |
47 | +typedef struct { | |
48 | + UbloxNavTimeUtc t; // タイムスタンプ | |
49 | + long data1sec[AD_CHNUM]; // 1sec平均値 | |
50 | + unsigned char data[AD_CHNUM][ADBUF_BYTE*AD_SAMPLE]; // AD_SAMPLE[Hz]のデータ | |
51 | +} ADbufType; | |
52 | +static ADbufType adbuf[RING_NUM]; | |
53 | + | |
47 | 54 | // SPI外部送信用バッファ AD_SAMPLE[Hz] |
48 | -static char adbuf[RING_NUM][AD_CHNUM][ADBUF_BYTE*AD_SAMPLE]; | |
55 | +//static char adbuf[RING_NUM][AD_CHNUM][ADBUF_BYTE*AD_SAMPLE]; | |
49 | 56 | // 1sec平均値 |
50 | -static long adbuf_1sec[RING_NUM][AD_CHNUM]; | |
57 | +//static long adbuf_1sec[RING_NUM][AD_CHNUM]; | |
51 | 58 | // timestamp |
52 | -static UbloxNavTimeUtc adbuf_t[RING_NUM]; | |
59 | +//static UbloxNavTimeUtc adbuf_t[RING_NUM]; | |
60 | + | |
61 | +#define adbuf_get(buf_no) (&adbuf[buf_no]) | |
62 | +#define adbuf_data_get(buf_no) (adbuf[buf_no].data) | |
63 | +#define adbuf_1sec_get(buf_no) (adbuf[buf_no].data1sec) | |
64 | +#define adbuf_time_get(buf_no) (&(adbuf[buf_no].t)) | |
53 | 65 | |
54 | 66 | inline void my_memcpy(void *dest0, void *src0, int len) |
55 | 67 | { |
@@ -76,14 +88,15 @@ inline void adbuf_write(unsigned char buf_no, unsigned char ch, int cnt, long *d | ||
76 | 88 | { |
77 | 89 | unsigned char *ptr = (unsigned char*)data; |
78 | 90 | unsigned char i; |
91 | + | |
79 | 92 | for(i = 0; i < ADBUF_BYTE; i++) { |
80 | - adbuf[buf_no][ch][ADBUF_BYTE*cnt + i] = *(ptr++); | |
93 | + adbuf->data[ch][ADBUF_BYTE*cnt + i] = *(ptr++); | |
81 | 94 | } |
82 | 95 | } |
83 | 96 | // 1 |
84 | 97 | inline void adbuf_1sec_write(char buf_no, long *data) |
85 | 98 | { |
86 | - my_memcpy(adbuf_1sec[buf_no], data, sizeof(long) * AD_CHNUM); | |
99 | + my_memcpy(adbuf_1sec_get(buf_no), data, sizeof(long) * AD_CHNUM); | |
87 | 100 | /* char ch; |
88 | 101 | for(ch = 0; ch < AD_CHNUM; ch++) |
89 | 102 | adbuf_1sec[buf_no][ch] = data[ch]; |
@@ -91,7 +104,8 @@ inline void adbuf_1sec_write(char buf_no, long *data) | ||
91 | 104 | } |
92 | 105 | inline void adbuf_time_write(char buf_no, UbloxNavTimeUtc *t) |
93 | 106 | { |
94 | - my_memcpy(&adbuf_t[buf_no], t, sizeof(UbloxNavTimeUtc)); | |
107 | +// my_memcpy(&adbuf_t[buf_no], t, sizeof(UbloxNavTimeUtc)); | |
108 | + my_memcpy(adbuf_time_get(buf_no), t, sizeof(UbloxNavTimeUtc)); | |
95 | 109 | } |
96 | 110 | |
97 | 111 | /**** ublox *************************************************/ |
@@ -166,6 +180,9 @@ static char pps_intf; | ||
166 | 180 | #define pps_intf_set() pps_intf = 1 |
167 | 181 | #define pps_is_intf_enable() (pps_intf != 0) |
168 | 182 | |
183 | +/* | |
184 | + * main() | |
185 | + */ | |
169 | 186 | int main(int argc, char** argv) { |
170 | 187 | unsigned int i; |
171 | 188 | // UART2 DebugPort |
@@ -310,8 +327,8 @@ int main(int argc, char** argv) { | ||
310 | 327 | } |
311 | 328 | if (ring_read_get() != ring_write_get()) { |
312 | 329 | // タイムスタンプget |
313 | - gps = &adbuf_t[ring_read_get()]; | |
314 | - sprintf(sz, "%04u/%02d/%02d %02d:%02d:%02d.%09ld %6lums %6luns %02X\r\n", | |
330 | + gps = adbuf_time_get(ring_read_get()); | |
331 | + sprintf(sz, "%04u/%02d/%02d %02d:%02d:%02d.%09ld,%6lums,%6luns,%02X", | |
315 | 332 | gps->year, gps->month, gps->day, gps->hour, gps->min, gps->sec, gps->nano, |
316 | 333 | gps->tow, gps->tacc, gps->valid |
317 | 334 | ); |
@@ -320,8 +337,10 @@ int main(int argc, char** argv) { | ||
320 | 337 | #if 1 |
321 | 338 | // AD data get |
322 | 339 | char ch; |
340 | + long *lp; | |
341 | + lp = adbuf_1sec_get(ring_read_get()); | |
323 | 342 | for(ch=0; ch<AD_CHNUM; ch++) { |
324 | - sprintf(sz, "%+7ld,", adbuf_1sec[ring_read_get()][ch]); | |
343 | + sprintf(sz, ",%+7ld", lp[ch]); | |
325 | 344 | PDEBUG(sz); |
326 | 345 | } |
327 | 346 | PDEBUG("\r\n"); |