//********************************************************************** /*    『アナログデータロガー(SDカード対応)』  ■A/D変換の精度   ・10ビット  ■チャネル数   ・8チャネル  ■記録媒体   ・SDカード  ■記録形式   ・CSV形式  ■記録周期   ・約0.1秒 */ //********************************************************************** #define LED PORTB.F7 #define SW_START PORTB.F6 #define SW_STOP PORTB.F5 #define ON 1 #define OFF 0 #define CR 0x0d #define LF 0x0a //********************************************************************** void main() { static char buf[50]; short cnt, channel, len, pnt; unsigned ad; // ADCON1 = 0x10000000; TRISA = 0b11111111; TRISB = 0b01100000; // for (cnt = 0; cnt < 10; cnt++) { LED = ON; Delay_ms(50); LED = OFF; Delay_ms(50); } // Spi_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); if (!Mmc_Fat_Init(&PORTC, 2)) { Spi_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH); while (1) { while (SW_START == 1) { Delay_ms(10); } Mmc_Fat_Assign("log.csv", 0xA0); Mmc_Fat_Rewrite(); Mmc_Fat_Write("$START\r\n", 8); while (SW_STOP == 1) { pnt = 0; for (channel = 0; channel < 8; channel++) { ad = Adc_Read(channel); ad = (double)ad * 3.22265625; WordToStr(ad, &buf[pnt]); pnt += 6; } buf[5] = ','; buf[11] = ','; buf[17] = ','; buf[23] = ','; buf[29] = ','; buf[35] = ','; buf[41] = ','; buf[47] = CR; buf[48] = LF; Mmc_Fat_Write(buf, 49); // LED = ON; Delay_ms(100); LED = OFF; } Mmc_Fat_Write("$STOP\r\n", 7); // for (cnt = 0; cnt < 10; cnt++) { LED = ON; Delay_ms(50); LED = OFF; Delay_ms(50); } } } }//~! //**********************************************************************