• R/O
  • HTTP
  • SSH
  • HTTPS

cpu2010: Commit

サブCPU2010のPICプログラム
ADデータ取得とGPS時刻付けを行いLinux部にデータを出力します。


Commit MetaInfo

Revisão5bcd41ca54bcf38ba507dd05b3a50834837deeab (tree)
Hora2011-12-20 10:32:57
AutorNaoya Takamura <ntaka206@user...>
CommiterNaoya Takamura

Mensagem de Log

CNINT: リングバッファにデータがまだある時は再びDRDY=Lにする処理を追加
SPI1INT: 49個目のデータを取得したらGPS時刻をタイムスタンプとして記録する処理追加

Mudança Sumário

Diff

--- a/main.c
+++ b/main.c
@@ -474,9 +474,6 @@ void __attribute__((interrupt, no_auto_psv, shadow)) _INT0Interrupt(void)
474474 // AD個数カウンタ=SAMP_FREQ-1
475475 adint_cnt = AD_SAMPLE - 1;
476476
477- // ADバッファにタイムスタンプ付ける
478- adbuf_time_write(ring_write_get(), &gpsNow);
479-
480477 // AD START信号による同期
481478 if (sts_get() == STS_SYNCNOW0) {
482479 // AD STARTピン=L
@@ -519,6 +516,7 @@ void __attribute__((interrupt, no_auto_psv)) _INT1Interrupt(void)
519516 spi1_int_enable();
520517 // 送信
521518 spi1_putc(0);
519+
522520 }
523521 /*
524522 * AD SPI1 Interrupt Handler
@@ -564,7 +562,10 @@ void __attribute__((interrupt, auto_psv)) _SPI1Interrupt(void)
564562 if (adint_ch >= AD_CHNUM) {
565563 // 全CHデータgetした
566564 adint_cnt++;
567- if (adint_cnt >= AD_SAMPLE) {
565+ if (adint_cnt == AD_SAMPLE-1) {
566+ // ADバッファにタイムスタンプ付ける
567+ adbuf_time_write(ring_write_get(), &gpsNow);
568+ } else if (adint_cnt >= AD_SAMPLE) {
568569 // 1secぶんのデータgetした
569570 // DRDY->H DRDY=Lの時でもDRDYのエッジを作るため
570571 DRDY_OUT = 1;
@@ -676,6 +677,11 @@ void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void)
676677 spi2_putc(SPI_HEAD_CHAR);
677678 // リングバッファ読み込み位置+1
678679 ring_read1_plus();
680+ // 送信データがリングバッファにあるとき
681+ if (ring_num1_get() > 0) {
682+ // DRDY->L
683+ DRDY_OUT = 0;
684+ }
679685 } else {
680686 // CS=L
681687 // リングバッファ読み込み位置get
Show on old repository browser