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

Dependencies:   mbed SDFileSystem_

main.cpp

Committer:
tnanbu
Date:
2021-08-19
Revision:
7:b69fa9bb320d
Parent:
6:bf4321ef0330
Child:
8:7f80139df48d

File content as of revision 7:b69fa9bb320d:

#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"

H3LIS331DL  h3dacc(PB_7,PB_6);


RawSerial         pc(PA_9, PA_10,115200); //console UART
LowPowerTicker    interrput;
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     *fp;

int main()
{
    short x,y,z,count=0;
    float ox,oy,oz,oldacc = 0;
    double xyz[3],newacc=0;
    //int ret = 0;
    char buf[512];
    //char *retchar = NULL;
    //time_t t;//24H = 86400s
 
    initLIS3DH();
 
    h3dacc.init(H3LIS331DL_ODR_100Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_8);//これで初期化している FULLSCALE_8=400G
    h3dacc.setHPFMode(H3LIS331DL_HPM_NORMAL_MODE_RES);//High Pass Filter ON
 
    //pc.printf("\nSTM32 ADC internal channels reading example\r\n");
    //pc.printf("\nSTM32 3D acc sensor example\r\n");
    
    fp = fopen("/sd/testlog.txt", "a");             
         
    if (fp == NULL)
    {
      //pc.printf("open error!!\r\n");

    }     
    else
    {
      //pc.printf("SD opened\r\n");
      //fclose(fp);
      wait_ms(10);
    }
    
    while(1) {
//On board ACC sensor
        x=y=z=0;
        read3axes(&x,&y,&z);
        //readTemp(&tmp);
        //pc.printf("x=%d y=%d z=%d tmperature=%d\r\n", x,y,z,tmp);    
        //t = time(NULL);
        if(count == 5){
            ox = (float)x/1024.0f;
            oy = (float)y/1024.0f;
            oz = (float)z/1024.0f;
            ox = ox * ox;
            oy = oy * oy;
            oz = oz * oz;
            oldacc = sqrt(ox + oy + oz);
            
            //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)));    
            pc.printf("oldacc %ld, %f\r\n", time(NULL), oldacc);    
            //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);   
            count = 0;
        }
// Extra ACC sensor        
        //x=y=z=0;
        //h3dacc.readXYZ(&x, &y, &z);
        h3dacc.getAcceleration(xyz);
        //t = time(NULL);
        xyz[0] = xyz[0] * xyz[0];
        xyz[1] = xyz[1] * xyz[1];
        xyz[2] = xyz[2] * xyz[2];
        newacc = xyz[0] + xyz[1] + xyz[2];
        newacc = sqrt(newacc);
        //pc.printf("newacc %ld x=%lf, y=%lf, z=%lf \r\n", time(NULL), xyz[0], xyz[1], xyz[2]);
        pc.printf("newacc %ld, %lf\r\n", time(NULL), newacc);
        //ret = fprintf(fp, "x=%lf, y=%lf, z=%lf \r\n", xyz[0], xyz[1], xyz[2]);
        //pc.printf("fprintf ret:%d\r\n", ret);
        /*
        retchar = fgets(buf,64,fp);
        if(!retchar){
            if(fp){
                fclose(fp);
                fp = NULL;
            }
        }
        else{
            pc.printf("%s\r\n",buf);
        }
        */
        
        //pc.printf("High x=%d y=%d z=%d \r\n", x,y,z); 
              
        led = !led;
        count++;
        if(time(NULL) > 86400){
            //Create New File
            fclose(fp);
            //fp = fopen();
        }
        wait(0.2);
    }
}
/*********** 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, ...) {
}