Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem_
main.cpp
- Committer:
- tnanbu
- Date:
- 2021-08-30
- Revision:
- 11:2d5fcf102778
- Parent:
- 8:7f80139df48d
- Child:
- 13:df67ca499051
File content as of revision 11:2d5fcf102778:
#include "mbed.h" #include "SDFileSystem.h" #include <time.h> /* This basic example just shows how to read the ADC internal channels raw values. Please look in the corresponding device reference manual for a complete description of how to make a temperature sensor, VBat or Vref measurement. */ AnalogIn adc_temp(ADC_TEMP); AnalogIn adc_vref(ADC_VREF); /* UD-GS2 H/W define PIO_SWin PB_4 PIO_wkup PA_4 PIO_enable PB_0 PIO_intout1 PB_2 PIO_led PB_5 PIO_v20v PC_13 PIO_v18v PH_0 PIO_intout2 PH_1 PIO_spics PB_12 PIO_battryMonEn PA_5 PB_7 SDA PB_6 SCL */ //DigitalOut hx_clk(PB_7); //DigitalIn hx_dt(PB_6); //I2C i2cacc(p_sda, p_scl) #include "H3LIS331DL.h" #define TIMEINTERVAL H3LIS331DL h3dacc(PB_7,PB_6); RawSerial pc(PA_9, PA_10,115200); //console UART LowPowerTicker interrupt; //Ticker interrupt; SPI STSPI(PB_15, PB_14, PB_13); //mosi,miso,clk DigitalOut STSPICS(PB_12); SDFileSystem *sd = new SDFileSystem(PA_12, PA_11, PB_3, PA_15, "sd"); // mosi, miso, sclk, cs, name DigitalOut led(PB_5); int initLIS3DH(); int read3axes(short *tx,short *ty,short *tz); //int readTemp(short *tmp); FILE *fp1,*fp2;//fp1:H3LIS331DL, fp2:LIS3DH int timecount = 0; //static uint8_t buffer[512] = {}; //char buffer1[512] = {}; //char buffer2[512] = {}; //char stracc[32] = {}; //bool write1 = false,write2 = false; //double xyz[3] = {}; /* void timer(void) { short x=0,y=0,z=0; float lis3dh_acc = 0; double xyz[3]= {},h3lis331dl_acc=0; //char stracc[32] = {}; //H3LIS331DL h3dacc.getAcceleration(xyz); //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!!! h3lis331dl_acc = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1] + xyz[2]*xyz[2]); sprintf(stracc1,"%ld,%lf\r\n",timecount*200,h3lis331dl_acc); pc.printf("h3lis331dl:%s",stracc1); if(strlen(buffer1)+strlen(stracc1) > 512) { //pc.printf("buffer over. write file2\r\n"); write1 = true; } else { sprintf(buffer1,"%s%s",buffer1,stracc1); } if(timecount == 10) { //pc.printf("calc lis3dh acc\r\n"); //LIS3DH read3axes(&x,&y,&z); lis3dh_acc = sqrt( (float)x/1024.0f * (float)x/1024 + (float)y/1024.0f * (float)y/1024 + (float)z/1024.0f * (float)z/1024); sprintf(stracc2,"%ld,%lf\r\n",time(NULL),lis3dh_acc); pc.printf("lis3dh:%s",stracc2); if(strlen(buffer1)+ strlen(stracc1)> 512) { write2 = true; } else { sprintf(buffer2,"%s%s",buffer2,stracc2); } timecount = 0; } timecount++; } */ int main() { int lognum1 = 0, lognum2 = 0; char filename1[32]= {}; char filename2[32]= {}; int ret = 0; short x=0,y=0,z=0; double xyz[3] = {}, h3lis331dl_acc = 0; float lis3dh_acc = 0; int count = 0; char buffer1[512] = {}; char buffer2[512] = {}; char stracc1[32] = {}, stracc2[32] = {}; initLIS3DH(); h3dacc.init(H3LIS331DL_ODR_50Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_8);//これで初期化している FULLSCALE_8=400G h3dacc.setHPFMode(H3LIS331DL_HPM_NORMAL_MODE_RES);//High Pass Filter ON //h3dacc.setHPFCutOFF(H3LIS331DL_HPFCF_1); sprintf(filename1,"/sd/lis3dh_%d",lognum1); sprintf(filename2,"/sd/h3lis_%d",lognum2); fp1 = fopen(filename1,"a"); if(!fp1) { pc.printf("fp1(%s) open failed\r\n",filename1); } fp2 = fopen(filename2,"a"); if(!fp2) { pc.printf("fp2(%s) open failed\r\n",filename2); } //interrupt.attach_us(&timer,200000);//200ms while(1) { //H3LIS331DL h3dacc.getAcceleration(xyz); //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!!! h3lis331dl_acc = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1] + xyz[2]*xyz[2]); sprintf(stracc1,"%ld,%lf\r\n",count*20,h3lis331dl_acc); //pc.printf("h3lis331dl:%s",stracc1); if(strlen(buffer1)+strlen(stracc1) > 512) { //pc.printf("buffer over. write file2\r\n"); ret = fprintf(fp1,"%s",buffer1); memset(buffer1,0,sizeof(buffer1)); sprintf(buffer1,"%s",stracc1); //write1 = false; } else { sprintf(buffer1,"%s%s",buffer1,stracc1); } if(count == 10) { //LIS3DH read3axes(&x,&y,&z); lis3dh_acc = sqrt( (float)x/1024.0f * (float)x/1024 + (float)y/1024.0f * (float)y/1024 + (float)z/1024.0f * (float)z/1024); sprintf(stracc2,"%ld,%lf\r\n",timecount*20*10,lis3dh_acc); //pc.printf("lis3dh:%s",stracc2); if(strlen(buffer2)+ strlen(stracc2)> 512) { ret = fprintf(fp2,"%s",buffer2); //pc.printf("write buffer:%d\r\n",ret); memset(buffer2,0,sizeof(buffer2)); sprintf(buffer2,"%s",stracc2); } else { sprintf(buffer2,"%s%s",buffer2,stracc2); } count = 0; } if(time(NULL) > 86400){ //Create New File set_time(NULL); timecount = 0; fclose(fp1); fclose(fp2); lognum1++; lognum2++; sprintf(filename1,"/sd/lis3dh_%d",lognum1); sprintf(filename2,"/sd/h3lis331dl_%d",lognum2); fp1 = fopen(filename1,"a"); if(!fp1){ pc.printf("fp1 create file failed\r\n"); } fp2 = fopen(filename2,"a"); if(!fp2){ pc.printf("fp2 create file failed\r\n"); } } led = !led; timecount++; count++; wait_ms(20); } } /*********** porting **************/ void spiFormat(int b,int m) { STSPI.format(b,m); /* 8bit */ } void spiFrequency(int f) { STSPI.frequency(f); /* 1Mbps */ } void spiWriteCS(int cs) { STSPICS=cs; } int spiWrite(int wd) { return ( STSPI.write(wd)); } void error(const char* format, ...) { return; }