I-O DATA DEV2 / Mbed 2 deprecated ud-gs4-R_400G_SD_Log_No2

Dependencies:   mbed SDFileSystem_

Committer:
tnanbu
Date:
Mon Aug 30 08:40:28 2021 +0000
Revision:
11:2d5fcf102778
Parent:
8:7f80139df48d
Child:
13:df67ca499051
b1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hakusan270 0:b76e4ba14765 1 #include "mbed.h"
rgoto 6:bf4321ef0330 2 #include "SDFileSystem.h"
tnanbu 8:7f80139df48d 3 #include <time.h>
tnanbu 8:7f80139df48d 4
hakusan270 0:b76e4ba14765 5 /*
hakusan270 0:b76e4ba14765 6 This basic example just shows how to read the ADC internal channels raw values.
hakusan270 0:b76e4ba14765 7 Please look in the corresponding device reference manual for a complete
hakusan270 0:b76e4ba14765 8 description of how to make a temperature sensor, VBat or Vref measurement.
hakusan270 0:b76e4ba14765 9 */
hakusan270 0:b76e4ba14765 10
hakusan270 0:b76e4ba14765 11 AnalogIn adc_temp(ADC_TEMP);
hakusan270 0:b76e4ba14765 12 AnalogIn adc_vref(ADC_VREF);
tnanbu 11:2d5fcf102778 13 /* UD-GS2 H/W define
tnanbu 11:2d5fcf102778 14 PIO_SWin PB_4
tnanbu 11:2d5fcf102778 15 PIO_wkup PA_4
hakusan270 0:b76e4ba14765 16 PIO_enable PB_0
hakusan270 0:b76e4ba14765 17 PIO_intout1 PB_2
hakusan270 0:b76e4ba14765 18 PIO_led PB_5
hakusan270 0:b76e4ba14765 19 PIO_v20v PC_13
hakusan270 0:b76e4ba14765 20 PIO_v18v PH_0
hakusan270 0:b76e4ba14765 21 PIO_intout2 PH_1
hakusan270 0:b76e4ba14765 22 PIO_spics PB_12
hakusan270 0:b76e4ba14765 23 PIO_battryMonEn PA_5
hakusan270 5:fbeb85ebd47b 24 PB_7 SDA
hakusan270 5:fbeb85ebd47b 25 PB_6 SCL
tnanbu 11:2d5fcf102778 26
hakusan270 0:b76e4ba14765 27 */
hakusan270 5:fbeb85ebd47b 28 //DigitalOut hx_clk(PB_7);
hakusan270 5:fbeb85ebd47b 29 //DigitalIn hx_dt(PB_6);
hakusan270 5:fbeb85ebd47b 30 //I2C i2cacc(p_sda, p_scl)
hakusan270 5:fbeb85ebd47b 31
hakusan270 5:fbeb85ebd47b 32 #include "H3LIS331DL.h"
hakusan270 5:fbeb85ebd47b 33
tnanbu 11:2d5fcf102778 34 #define TIMEINTERVAL
tnanbu 11:2d5fcf102778 35
hakusan270 5:fbeb85ebd47b 36 H3LIS331DL h3dacc(PB_7,PB_6);
hakusan270 5:fbeb85ebd47b 37
hakusan270 0:b76e4ba14765 38 RawSerial pc(PA_9, PA_10,115200); //console UART
tnanbu 11:2d5fcf102778 39 LowPowerTicker interrupt;
tnanbu 11:2d5fcf102778 40 //Ticker interrupt;
hakusan270 0:b76e4ba14765 41 SPI STSPI(PB_15, PB_14, PB_13); //mosi,miso,clk
hakusan270 0:b76e4ba14765 42 DigitalOut STSPICS(PB_12);
rgoto 6:bf4321ef0330 43
rgoto 6:bf4321ef0330 44 SDFileSystem *sd = new SDFileSystem(PA_12, PA_11, PB_3, PA_15, "sd"); // mosi, miso, sclk, cs, name
rgoto 6:bf4321ef0330 45
hakusan270 0:b76e4ba14765 46 DigitalOut led(PB_5);
hakusan270 1:025596ffc973 47 int initLIS3DH();
hakusan270 1:025596ffc973 48 int read3axes(short *tx,short *ty,short *tz);
tnanbu 7:b69fa9bb320d 49 //int readTemp(short *tmp);
tnanbu 11:2d5fcf102778 50 FILE *fp1,*fp2;//fp1:H3LIS331DL, fp2:LIS3DH
tnanbu 8:7f80139df48d 51 int timecount = 0;
tnanbu 8:7f80139df48d 52 //static uint8_t buffer[512] = {};
tnanbu 11:2d5fcf102778 53 //char buffer1[512] = {};
tnanbu 11:2d5fcf102778 54 //char buffer2[512] = {};
tnanbu 11:2d5fcf102778 55 //char stracc[32] = {};
tnanbu 11:2d5fcf102778 56 //bool write1 = false,write2 = false;
tnanbu 11:2d5fcf102778 57 //double xyz[3] = {};
tnanbu 8:7f80139df48d 58
tnanbu 11:2d5fcf102778 59 /*
tnanbu 11:2d5fcf102778 60 void timer(void)
tnanbu 8:7f80139df48d 61 {
tnanbu 8:7f80139df48d 62 short x=0,y=0,z=0;
tnanbu 8:7f80139df48d 63 float lis3dh_acc = 0;
tnanbu 11:2d5fcf102778 64 double xyz[3]= {},h3lis331dl_acc=0;
tnanbu 8:7f80139df48d 65 //char stracc[32] = {};
tnanbu 8:7f80139df48d 66
tnanbu 11:2d5fcf102778 67 //H3LIS331DL
tnanbu 8:7f80139df48d 68 h3dacc.getAcceleration(xyz);
tnanbu 11:2d5fcf102778 69 //pc.printf("x:%f,y:%f,z:%f\r\n",(float)xyz[0],(float)xyz[1],(float)xyz[2]); //!!!If you read here, you cannot get acceleration!!!
tnanbu 11:2d5fcf102778 70 h3lis331dl_acc = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1] + xyz[2]*xyz[2]);
tnanbu 11:2d5fcf102778 71 sprintf(stracc1,"%ld,%lf\r\n",timecount*200,h3lis331dl_acc);
tnanbu 11:2d5fcf102778 72 pc.printf("h3lis331dl:%s",stracc1);
tnanbu 11:2d5fcf102778 73 if(strlen(buffer1)+strlen(stracc1) > 512) {
tnanbu 8:7f80139df48d 74 //pc.printf("buffer over. write file2\r\n");
tnanbu 11:2d5fcf102778 75 write1 = true;
tnanbu 11:2d5fcf102778 76 } else {
tnanbu 11:2d5fcf102778 77 sprintf(buffer1,"%s%s",buffer1,stracc1);
tnanbu 11:2d5fcf102778 78 }
tnanbu 11:2d5fcf102778 79
tnanbu 11:2d5fcf102778 80 if(timecount == 10) {
tnanbu 8:7f80139df48d 81 //pc.printf("calc lis3dh acc\r\n");
tnanbu 8:7f80139df48d 82 //LIS3DH
tnanbu 8:7f80139df48d 83 read3axes(&x,&y,&z);
tnanbu 8:7f80139df48d 84 lis3dh_acc = sqrt( (float)x/1024.0f * (float)x/1024 + (float)y/1024.0f * (float)y/1024 + (float)z/1024.0f * (float)z/1024);
tnanbu 11:2d5fcf102778 85 sprintf(stracc2,"%ld,%lf\r\n",time(NULL),lis3dh_acc);
tnanbu 11:2d5fcf102778 86 pc.printf("lis3dh:%s",stracc2);
tnanbu 11:2d5fcf102778 87 if(strlen(buffer1)+ strlen(stracc1)> 512) {
tnanbu 11:2d5fcf102778 88 write2 = true;
tnanbu 11:2d5fcf102778 89 } else {
tnanbu 11:2d5fcf102778 90 sprintf(buffer2,"%s%s",buffer2,stracc2);
tnanbu 11:2d5fcf102778 91 }
tnanbu 11:2d5fcf102778 92 timecount = 0;
tnanbu 11:2d5fcf102778 93 }
tnanbu 11:2d5fcf102778 94
tnanbu 11:2d5fcf102778 95 timecount++;
tnanbu 8:7f80139df48d 96 }
tnanbu 11:2d5fcf102778 97 */
hakusan270 0:b76e4ba14765 98
hakusan270 0:b76e4ba14765 99 int main()
hakusan270 0:b76e4ba14765 100 {
tnanbu 11:2d5fcf102778 101 int lognum1 = 0, lognum2 = 0;
tnanbu 11:2d5fcf102778 102 char filename1[32]= {};
tnanbu 11:2d5fcf102778 103 char filename2[32]= {};
tnanbu 8:7f80139df48d 104 int ret = 0;
tnanbu 11:2d5fcf102778 105 short x=0,y=0,z=0;
tnanbu 11:2d5fcf102778 106 double xyz[3] = {}, h3lis331dl_acc = 0;
tnanbu 11:2d5fcf102778 107 float lis3dh_acc = 0;
tnanbu 11:2d5fcf102778 108 int count = 0;
tnanbu 11:2d5fcf102778 109 char buffer1[512] = {};
tnanbu 11:2d5fcf102778 110 char buffer2[512] = {};
tnanbu 11:2d5fcf102778 111 char stracc1[32] = {}, stracc2[32] = {};
tnanbu 11:2d5fcf102778 112
hakusan270 1:025596ffc973 113 initLIS3DH();
tnanbu 11:2d5fcf102778 114
tnanbu 11:2d5fcf102778 115 h3dacc.init(H3LIS331DL_ODR_50Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_8);//これで初期化している FULLSCALE_8=400G
tnanbu 7:b69fa9bb320d 116 h3dacc.setHPFMode(H3LIS331DL_HPM_NORMAL_MODE_RES);//High Pass Filter ON
tnanbu 8:7f80139df48d 117 //h3dacc.setHPFCutOFF(H3LIS331DL_HPFCF_1);
tnanbu 11:2d5fcf102778 118
tnanbu 11:2d5fcf102778 119 sprintf(filename1,"/sd/lis3dh_%d",lognum1);
tnanbu 11:2d5fcf102778 120 sprintf(filename2,"/sd/h3lis_%d",lognum2);
tnanbu 11:2d5fcf102778 121
tnanbu 8:7f80139df48d 122 fp1 = fopen(filename1,"a");
tnanbu 11:2d5fcf102778 123 if(!fp1) {
tnanbu 8:7f80139df48d 124 pc.printf("fp1(%s) open failed\r\n",filename1);
tnanbu 8:7f80139df48d 125 }
tnanbu 8:7f80139df48d 126 fp2 = fopen(filename2,"a");
tnanbu 11:2d5fcf102778 127 if(!fp2) {
tnanbu 8:7f80139df48d 128 pc.printf("fp2(%s) open failed\r\n",filename2);
tnanbu 8:7f80139df48d 129 }
tnanbu 11:2d5fcf102778 130
tnanbu 11:2d5fcf102778 131 //interrupt.attach_us(&timer,200000);//200ms
tnanbu 11:2d5fcf102778 132
hakusan270 0:b76e4ba14765 133 while(1) {
tnanbu 11:2d5fcf102778 134 //H3LIS331DL
tnanbu 11:2d5fcf102778 135 h3dacc.getAcceleration(xyz);
tnanbu 11:2d5fcf102778 136 //pc.printf("x:%f,y:%f,z:%f\r\n",(float)xyz[0],(float)xyz[1],(float)xyz[2]); //!!!If you read here, you cannot get acceleration!!!
tnanbu 11:2d5fcf102778 137 h3lis331dl_acc = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1] + xyz[2]*xyz[2]);
tnanbu 11:2d5fcf102778 138 sprintf(stracc1,"%ld,%lf\r\n",count*20,h3lis331dl_acc);
tnanbu 11:2d5fcf102778 139 //pc.printf("h3lis331dl:%s",stracc1);
tnanbu 11:2d5fcf102778 140 if(strlen(buffer1)+strlen(stracc1) > 512) {
tnanbu 11:2d5fcf102778 141 //pc.printf("buffer over. write file2\r\n");
tnanbu 8:7f80139df48d 142 ret = fprintf(fp1,"%s",buffer1);
tnanbu 8:7f80139df48d 143 memset(buffer1,0,sizeof(buffer1));
tnanbu 8:7f80139df48d 144 sprintf(buffer1,"%s",stracc1);
tnanbu 11:2d5fcf102778 145 //write1 = false;
tnanbu 11:2d5fcf102778 146
tnanbu 11:2d5fcf102778 147 } else {
tnanbu 11:2d5fcf102778 148 sprintf(buffer1,"%s%s",buffer1,stracc1);
tnanbu 7:b69fa9bb320d 149 }
tnanbu 11:2d5fcf102778 150
tnanbu 11:2d5fcf102778 151 if(count == 10) {
tnanbu 11:2d5fcf102778 152 //LIS3DH
tnanbu 11:2d5fcf102778 153 read3axes(&x,&y,&z);
tnanbu 11:2d5fcf102778 154 lis3dh_acc = sqrt( (float)x/1024.0f * (float)x/1024 + (float)y/1024.0f * (float)y/1024 + (float)z/1024.0f * (float)z/1024);
tnanbu 11:2d5fcf102778 155 sprintf(stracc2,"%ld,%lf\r\n",timecount*20*10,lis3dh_acc);
tnanbu 11:2d5fcf102778 156 //pc.printf("lis3dh:%s",stracc2);
tnanbu 11:2d5fcf102778 157 if(strlen(buffer2)+ strlen(stracc2)> 512) {
tnanbu 11:2d5fcf102778 158 ret = fprintf(fp2,"%s",buffer2);
tnanbu 11:2d5fcf102778 159 //pc.printf("write buffer:%d\r\n",ret);
tnanbu 11:2d5fcf102778 160 memset(buffer2,0,sizeof(buffer2));
tnanbu 11:2d5fcf102778 161 sprintf(buffer2,"%s",stracc2);
tnanbu 11:2d5fcf102778 162 } else {
tnanbu 11:2d5fcf102778 163 sprintf(buffer2,"%s%s",buffer2,stracc2);
tnanbu 7:b69fa9bb320d 164 }
tnanbu 11:2d5fcf102778 165 count = 0;
tnanbu 11:2d5fcf102778 166 }
tnanbu 11:2d5fcf102778 167
tnanbu 8:7f80139df48d 168 if(time(NULL) > 86400){
tnanbu 8:7f80139df48d 169 //Create New File
tnanbu 8:7f80139df48d 170 set_time(NULL);
tnanbu 11:2d5fcf102778 171 timecount = 0;
tnanbu 8:7f80139df48d 172 fclose(fp1);
tnanbu 8:7f80139df48d 173 fclose(fp2);
tnanbu 8:7f80139df48d 174 lognum1++;
tnanbu 8:7f80139df48d 175 lognum2++;
tnanbu 8:7f80139df48d 176 sprintf(filename1,"/sd/lis3dh_%d",lognum1);
tnanbu 8:7f80139df48d 177 sprintf(filename2,"/sd/h3lis331dl_%d",lognum2);
tnanbu 8:7f80139df48d 178 fp1 = fopen(filename1,"a");
tnanbu 8:7f80139df48d 179 if(!fp1){
tnanbu 11:2d5fcf102778 180 pc.printf("fp1 create file failed\r\n");
tnanbu 8:7f80139df48d 181 }
tnanbu 8:7f80139df48d 182 fp2 = fopen(filename2,"a");
tnanbu 11:2d5fcf102778 183 if(!fp2){
tnanbu 11:2d5fcf102778 184 pc.printf("fp2 create file failed\r\n");
tnanbu 11:2d5fcf102778 185 }
tnanbu 7:b69fa9bb320d 186 }
tnanbu 11:2d5fcf102778 187
tnanbu 11:2d5fcf102778 188 led = !led;
tnanbu 11:2d5fcf102778 189 timecount++;
tnanbu 11:2d5fcf102778 190 count++;
tnanbu 11:2d5fcf102778 191 wait_ms(20);
hakusan270 0:b76e4ba14765 192 }
hakusan270 0:b76e4ba14765 193 }
tnanbu 11:2d5fcf102778 194 /*********** porting **************/
tnanbu 7:b69fa9bb320d 195
tnanbu 11:2d5fcf102778 196 void spiFormat(int b,int m)
tnanbu 11:2d5fcf102778 197 {
tnanbu 11:2d5fcf102778 198 STSPI.format(b,m); /* 8bit */
hakusan270 1:025596ffc973 199 }
tnanbu 11:2d5fcf102778 200 void spiFrequency(int f)
tnanbu 11:2d5fcf102778 201 {
hakusan270 1:025596ffc973 202 STSPI.frequency(f); /* 1Mbps */
hakusan270 1:025596ffc973 203 }
tnanbu 11:2d5fcf102778 204 void spiWriteCS(int cs)
tnanbu 11:2d5fcf102778 205 {
hakusan270 1:025596ffc973 206 STSPICS=cs;
hakusan270 1:025596ffc973 207 }
tnanbu 11:2d5fcf102778 208 int spiWrite(int wd)
tnanbu 11:2d5fcf102778 209 {
tnanbu 11:2d5fcf102778 210 return ( STSPI.write(wd));
tnanbu 11:2d5fcf102778 211 }
tnanbu 7:b69fa9bb320d 212
tnanbu 11:2d5fcf102778 213 void error(const char* format, ...)
tnanbu 11:2d5fcf102778 214 {
tnanbu 8:7f80139df48d 215 return;
tnanbu 7:b69fa9bb320d 216 }