test
Dependencies: FATFileSystem MPU9250_SPI mbed-src
Fork of SDFileSystem by
main.cpp
- Committer:
- rllamado
- Date:
- 2016-02-21
- Revision:
- 5:5bc32d021025
- Parent:
- 4:dfa8d9858dfb
File content as of revision 5:5bc32d021025:
#include "SDFileSystem.h" #include "MPU9250.h" #include "InterruptManager.h" #define BLENANO /* Pin Definitions */ #ifdef BLENANO #define MOSI p9 #define MISO p11 #define SCLK p8 #define CS_SD p10 #define CS_MPU p29 #define BUTTON p28 #define MIC p5 #define LOAD_CELL p4 #define LED p15 #else #define MOSI p20 #define MISO p22 #define SCLK p25 #define CS_SD p23 #define CS_MPU p21 #define BUTTON p17 #define MIC p5 #define LOAD_CELL p4 #define LED p15 #endif /* Un/comment to determine which tests will be run */ #define IMU_TEST //#define MIC_TEST //#define LOAD_TEST /* Parameters for sampling */ #define FILE_NAME "trick" #define SAMPLE_RATE 1000 /* Objects used */ DigitalOut led(LED); AnalogIn mic(MIC); InterruptIn button(BUTTON); Ticker timer; SPI spi(MOSI, MISO, SCLK); SDFileSystem sd(MOSI, MISO, SCLK, CS_SD, "sd"); mpu9250_spi imu(spi , CS_MPU); /* Flags for sampling */ #define IMU_FLAG (1<<1U) #define MIC_FLAG (1<<2U) #define CREATE_FILE (1<<3U) #define CLOSE_FILE (1<<4U) /* Status */ #define START_SAMPLE 1 #define END_SAMPLE 0 static uint16_t status = 0; static int button_status = START_SAMPLE; static uint16_t file_count = 0; static float sample_rate = (1/(float)SAMPLE_RATE) ; static FILE *fp = NULL; static char file_name[17]; static void openNextFile(void) { if( fp ){ fclose(fp); } snprintf(file_name, sizeof(file_name), "/sd/%s_%02d.txt", FILE_NAME, file_count++); fp = fopen(file_name, "w"); fprintf(fp, "Sample Rate: %d Hz\n", SAMPLE_RATE); } static void button_interrupt(void) { //CREATE FILE if ( button_status == START_SAMPLE ){ status |= CREATE_FILE; button_status = END_SAMPLE; //CLOSE FILE } else if ( button_status == END_SAMPLE ){ status |= CLOSE_FILE; button_status = START_SAMPLE; } } static void timer_interrupt(void) { if ( button_status == END_SAMPLE ){ //ENABLE SAMPLE FLAGS #ifdef IMU_TEST status |= IMU_FLAG; #endif #ifdef MIC_TEST status |= MIC_FLAG; #endif #ifdef LOAD_TEST status |= LOAD_FLAG; #endif } } int main() { #ifdef IMU_TEST //initialize imu imu.init(1, BITS_DLPF_CFG_2100HZ_NOLPF); #endif //set up button as active low to trigger file creation button.fall(&button_interrupt); timer.attach(&timer_interrupt, sample_rate ); led.write(0); snprintf(file_name, sizeof(file_name), "/sd/%s_%02d.txt", FILE_NAME, file_count++); fp = fopen(file_name, "w"); fprintf(fp, "Sample Rate: %d Hz\n", SAMPLE_RATE); while(1){ if ( status & CREATE_FILE ){ led.write(1); openNextFile(); status ^= CREATE_FILE; } #ifdef IMU_TEST if ( status & IMU_FLAG ){ led.write(!led.read()); imu.read_all(); #ifndef MIC_TEST fprintf(fp, "%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\n", (signed int) imu.gyroscope_data[0], (signed int) imu.gyroscope_data[1], (signed int) imu.gyroscope_data[2], (signed int) imu.accelerometer_data[0], (signed int) imu.accelerometer_data[1], (signed int) imu.accelerometer_data[2], (signed int) imu.Magnetometer[0], (signed int) imu.Magnetometer[1], (signed int) imu.Magnetometer[2] ); #endif status ^= IMU_FLAG; } #endif #ifdef MIC_TEST if ( status & MIC_FLAG ){ led.write(!led.read()); #ifndef IMU_TEST fprintf(fp, "%d\n", mic.read_u16()); #else fprintf(fp, "%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%5d\t%4d\n", (signed int) imu.gyroscope_data[0], (signed int) imu.gyroscope_data[1], (signed int) imu.gyroscope_data[2], (signed int) imu.accelerometer_data[0], (signed int) imu.accelerometer_data[1], (signed int) imu.accelerometer_data[2], (signed int) imu.Magnetometer[0], (signed int) imu.Magnetometer[1], (signed int) imu.Magnetometer[2], mic.read_u16() ); #endif status ^= MIC_FLAG; } #endif if ( status & CLOSE_FILE ){ led.write(0); fclose(fp); status ^= CLOSE_FILE; } } }