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

Dependencies:   mbed SDFileSystem_

Committer:
tnanbu
Date:
Thu Aug 19 08:38:59 2021 +0000
Revision:
7:b69fa9bb320d
Parent:
6:bf4321ef0330
Child:
8:7f80139df48d
Output acceleration test

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 7:b69fa9bb320d 3 #include "time.h"
hakusan270 0:b76e4ba14765 4 /*
hakusan270 0:b76e4ba14765 5 This basic example just shows how to read the ADC internal channels raw values.
hakusan270 0:b76e4ba14765 6 Please look in the corresponding device reference manual for a complete
hakusan270 0:b76e4ba14765 7 description of how to make a temperature sensor, VBat or Vref measurement.
hakusan270 0:b76e4ba14765 8 */
hakusan270 0:b76e4ba14765 9
hakusan270 0:b76e4ba14765 10 AnalogIn adc_temp(ADC_TEMP);
hakusan270 0:b76e4ba14765 11 AnalogIn adc_vref(ADC_VREF);
hakusan270 0:b76e4ba14765 12 /* UD-GS2 H/W define
hakusan270 0:b76e4ba14765 13 PIO_SWin PB_4
hakusan270 0:b76e4ba14765 14 PIO_wkup PA_4
hakusan270 0:b76e4ba14765 15 PIO_enable PB_0
hakusan270 0:b76e4ba14765 16 PIO_intout1 PB_2
hakusan270 0:b76e4ba14765 17 PIO_led PB_5
hakusan270 0:b76e4ba14765 18 PIO_v20v PC_13
hakusan270 0:b76e4ba14765 19 PIO_v18v PH_0
hakusan270 0:b76e4ba14765 20 PIO_intout2 PH_1
hakusan270 0:b76e4ba14765 21 PIO_spics PB_12
hakusan270 0:b76e4ba14765 22 PIO_battryMonEn PA_5
hakusan270 5:fbeb85ebd47b 23 PB_7 SDA
hakusan270 5:fbeb85ebd47b 24 PB_6 SCL
hakusan270 5:fbeb85ebd47b 25
hakusan270 0:b76e4ba14765 26 */
hakusan270 5:fbeb85ebd47b 27 //DigitalOut hx_clk(PB_7);
hakusan270 5:fbeb85ebd47b 28 //DigitalIn hx_dt(PB_6);
hakusan270 5:fbeb85ebd47b 29 //I2C i2cacc(p_sda, p_scl)
hakusan270 5:fbeb85ebd47b 30
hakusan270 5:fbeb85ebd47b 31 #include "H3LIS331DL.h"
hakusan270 5:fbeb85ebd47b 32
hakusan270 5:fbeb85ebd47b 33 H3LIS331DL h3dacc(PB_7,PB_6);
hakusan270 5:fbeb85ebd47b 34
hakusan270 0:b76e4ba14765 35
hakusan270 0:b76e4ba14765 36 RawSerial pc(PA_9, PA_10,115200); //console UART
hakusan270 0:b76e4ba14765 37 LowPowerTicker interrput;
hakusan270 0:b76e4ba14765 38 SPI STSPI(PB_15, PB_14, PB_13); //mosi,miso,clk
hakusan270 0:b76e4ba14765 39 DigitalOut STSPICS(PB_12);
rgoto 6:bf4321ef0330 40
rgoto 6:bf4321ef0330 41 SDFileSystem *sd = new SDFileSystem(PA_12, PA_11, PB_3, PA_15, "sd"); // mosi, miso, sclk, cs, name
rgoto 6:bf4321ef0330 42
hakusan270 0:b76e4ba14765 43 DigitalOut led(PB_5);
hakusan270 1:025596ffc973 44 int initLIS3DH();
hakusan270 1:025596ffc973 45 int read3axes(short *tx,short *ty,short *tz);
tnanbu 7:b69fa9bb320d 46 //int readTemp(short *tmp);
rgoto 6:bf4321ef0330 47 FILE *fp;
hakusan270 0:b76e4ba14765 48
hakusan270 0:b76e4ba14765 49 int main()
hakusan270 0:b76e4ba14765 50 {
tnanbu 7:b69fa9bb320d 51 short x,y,z,count=0;
tnanbu 7:b69fa9bb320d 52 float ox,oy,oz,oldacc = 0;
tnanbu 7:b69fa9bb320d 53 double xyz[3],newacc=0;
tnanbu 7:b69fa9bb320d 54 //int ret = 0;
tnanbu 7:b69fa9bb320d 55 char buf[512];
tnanbu 7:b69fa9bb320d 56 //char *retchar = NULL;
tnanbu 7:b69fa9bb320d 57 //time_t t;//24H = 86400s
hakusan270 2:42900b8c9a14 58
hakusan270 1:025596ffc973 59 initLIS3DH();
hakusan270 1:025596ffc973 60
tnanbu 7:b69fa9bb320d 61 h3dacc.init(H3LIS331DL_ODR_100Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_8);//これで初期化している FULLSCALE_8=400G
tnanbu 7:b69fa9bb320d 62 h3dacc.setHPFMode(H3LIS331DL_HPM_NORMAL_MODE_RES);//High Pass Filter ON
hakusan270 5:fbeb85ebd47b 63
tnanbu 7:b69fa9bb320d 64 //pc.printf("\nSTM32 ADC internal channels reading example\r\n");
tnanbu 7:b69fa9bb320d 65 //pc.printf("\nSTM32 3D acc sensor example\r\n");
rgoto 6:bf4321ef0330 66
rgoto 6:bf4321ef0330 67 fp = fopen("/sd/testlog.txt", "a");
rgoto 6:bf4321ef0330 68
rgoto 6:bf4321ef0330 69 if (fp == NULL)
rgoto 6:bf4321ef0330 70 {
tnanbu 7:b69fa9bb320d 71 //pc.printf("open error!!\r\n");
rgoto 6:bf4321ef0330 72
rgoto 6:bf4321ef0330 73 }
rgoto 6:bf4321ef0330 74 else
rgoto 6:bf4321ef0330 75 {
tnanbu 7:b69fa9bb320d 76 //pc.printf("SD opened\r\n");
tnanbu 7:b69fa9bb320d 77 //fclose(fp);
rgoto 6:bf4321ef0330 78 wait_ms(10);
rgoto 6:bf4321ef0330 79 }
rgoto 6:bf4321ef0330 80
hakusan270 0:b76e4ba14765 81 while(1) {
hakusan270 5:fbeb85ebd47b 82 //On board ACC sensor
hakusan270 5:fbeb85ebd47b 83 x=y=z=0;
hakusan270 1:025596ffc973 84 read3axes(&x,&y,&z);
tnanbu 7:b69fa9bb320d 85 //readTemp(&tmp);
tnanbu 7:b69fa9bb320d 86 //pc.printf("x=%d y=%d z=%d tmperature=%d\r\n", x,y,z,tmp);
tnanbu 7:b69fa9bb320d 87 //t = time(NULL);
tnanbu 7:b69fa9bb320d 88 if(count == 5){
tnanbu 7:b69fa9bb320d 89 ox = (float)x/1024.0f;
tnanbu 7:b69fa9bb320d 90 oy = (float)y/1024.0f;
tnanbu 7:b69fa9bb320d 91 oz = (float)z/1024.0f;
tnanbu 7:b69fa9bb320d 92 ox = ox * ox;
tnanbu 7:b69fa9bb320d 93 oy = oy * oy;
tnanbu 7:b69fa9bb320d 94 oz = oz * oz;
tnanbu 7:b69fa9bb320d 95 oldacc = sqrt(ox + oy + oz);
tnanbu 7:b69fa9bb320d 96
tnanbu 7:b69fa9bb320d 97 //pc.printf("oldacc %ld %f",time(NULL),sqrt(powf((float)x/1024.0f,2) + powf((float)y/1024.0f,2) + powf((float)z/1024.0f,2)));
tnanbu 7:b69fa9bb320d 98 pc.printf("oldacc %ld, %f\r\n", time(NULL), oldacc);
tnanbu 7:b69fa9bb320d 99 //pc.printf("oldacc %ld x=%f y=%f z=%f\r\n", time(NULL), (float)x/1024.0f,(float)y/1024.0f,(float)z/1024.0f);
tnanbu 7:b69fa9bb320d 100 count = 0;
tnanbu 7:b69fa9bb320d 101 }
hakusan270 5:fbeb85ebd47b 102 // Extra ACC sensor
tnanbu 7:b69fa9bb320d 103 //x=y=z=0;
tnanbu 7:b69fa9bb320d 104 //h3dacc.readXYZ(&x, &y, &z);
tnanbu 7:b69fa9bb320d 105 h3dacc.getAcceleration(xyz);
tnanbu 7:b69fa9bb320d 106 //t = time(NULL);
tnanbu 7:b69fa9bb320d 107 xyz[0] = xyz[0] * xyz[0];
tnanbu 7:b69fa9bb320d 108 xyz[1] = xyz[1] * xyz[1];
tnanbu 7:b69fa9bb320d 109 xyz[2] = xyz[2] * xyz[2];
tnanbu 7:b69fa9bb320d 110 newacc = xyz[0] + xyz[1] + xyz[2];
tnanbu 7:b69fa9bb320d 111 newacc = sqrt(newacc);
tnanbu 7:b69fa9bb320d 112 //pc.printf("newacc %ld x=%lf, y=%lf, z=%lf \r\n", time(NULL), xyz[0], xyz[1], xyz[2]);
tnanbu 7:b69fa9bb320d 113 pc.printf("newacc %ld, %lf\r\n", time(NULL), newacc);
tnanbu 7:b69fa9bb320d 114 //ret = fprintf(fp, "x=%lf, y=%lf, z=%lf \r\n", xyz[0], xyz[1], xyz[2]);
tnanbu 7:b69fa9bb320d 115 //pc.printf("fprintf ret:%d\r\n", ret);
tnanbu 7:b69fa9bb320d 116 /*
tnanbu 7:b69fa9bb320d 117 retchar = fgets(buf,64,fp);
tnanbu 7:b69fa9bb320d 118 if(!retchar){
tnanbu 7:b69fa9bb320d 119 if(fp){
tnanbu 7:b69fa9bb320d 120 fclose(fp);
tnanbu 7:b69fa9bb320d 121 fp = NULL;
tnanbu 7:b69fa9bb320d 122 }
tnanbu 7:b69fa9bb320d 123 }
tnanbu 7:b69fa9bb320d 124 else{
tnanbu 7:b69fa9bb320d 125 pc.printf("%s\r\n",buf);
tnanbu 7:b69fa9bb320d 126 }
tnanbu 7:b69fa9bb320d 127 */
tnanbu 7:b69fa9bb320d 128
tnanbu 7:b69fa9bb320d 129 //pc.printf("High x=%d y=%d z=%d \r\n", x,y,z);
hakusan270 5:fbeb85ebd47b 130
hakusan270 0:b76e4ba14765 131 led = !led;
tnanbu 7:b69fa9bb320d 132 count++;
tnanbu 7:b69fa9bb320d 133 if(time(NULL) > 86400){
tnanbu 7:b69fa9bb320d 134 //Create New File
tnanbu 7:b69fa9bb320d 135 fclose(fp);
tnanbu 7:b69fa9bb320d 136 //fp = fopen();
tnanbu 7:b69fa9bb320d 137 }
tnanbu 7:b69fa9bb320d 138 wait(0.2);
hakusan270 0:b76e4ba14765 139 }
hakusan270 0:b76e4ba14765 140 }
hakusan270 1:025596ffc973 141 /*********** porting **************/
tnanbu 7:b69fa9bb320d 142
hakusan270 1:025596ffc973 143 void spiFormat(int b,int m) {
hakusan270 1:025596ffc973 144 STSPI.format(b,m); /* 8bit */
hakusan270 1:025596ffc973 145 }
hakusan270 1:025596ffc973 146 void spiFrequency(int f){
hakusan270 1:025596ffc973 147 STSPI.frequency(f); /* 1Mbps */
hakusan270 1:025596ffc973 148 }
hakusan270 1:025596ffc973 149 void spiWriteCS(int cs) {
hakusan270 1:025596ffc973 150 STSPICS=cs;
hakusan270 1:025596ffc973 151 }
hakusan270 1:025596ffc973 152 int spiWrite(int wd) {
hakusan270 1:025596ffc973 153 return ( STSPI.write(wd));
hakusan270 1:025596ffc973 154 }
tnanbu 7:b69fa9bb320d 155
tnanbu 7:b69fa9bb320d 156 void error(const char* format, ...) {
tnanbu 7:b69fa9bb320d 157 }