test
Dependencies: FATFileSystem MPU9250_SPI mbed-src
Fork of SDFileSystem by
main.cpp@5:5bc32d021025, 2016-02-21 (annotated)
- Committer:
- rllamado
- Date:
- Sun Feb 21 07:27:54 2016 +0000
- Revision:
- 5:5bc32d021025
- Parent:
- 4:dfa8d9858dfb
-Got data to print off BLENANO by commenting out serial_init() function in serial_api.c; -Was able to use successfully with test rig
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rllamado | 4:dfa8d9858dfb | 1 | #include "SDFileSystem.h" |
rllamado | 4:dfa8d9858dfb | 2 | #include "MPU9250.h" |
rllamado | 4:dfa8d9858dfb | 3 | #include "InterruptManager.h" |
rllamado | 4:dfa8d9858dfb | 4 | |
rllamado | 4:dfa8d9858dfb | 5 | #define BLENANO |
rllamado | 4:dfa8d9858dfb | 6 | |
rllamado | 4:dfa8d9858dfb | 7 | /* Pin Definitions */ |
rllamado | 4:dfa8d9858dfb | 8 | #ifdef BLENANO |
rllamado | 4:dfa8d9858dfb | 9 | #define MOSI p9 |
rllamado | 4:dfa8d9858dfb | 10 | #define MISO p11 |
rllamado | 4:dfa8d9858dfb | 11 | #define SCLK p8 |
rllamado | 4:dfa8d9858dfb | 12 | #define CS_SD p10 |
rllamado | 4:dfa8d9858dfb | 13 | #define CS_MPU p29 |
rllamado | 4:dfa8d9858dfb | 14 | #define BUTTON p28 |
rllamado | 4:dfa8d9858dfb | 15 | #define MIC p5 |
rllamado | 4:dfa8d9858dfb | 16 | #define LOAD_CELL p4 |
rllamado | 4:dfa8d9858dfb | 17 | #define LED p15 |
rllamado | 4:dfa8d9858dfb | 18 | #else |
rllamado | 4:dfa8d9858dfb | 19 | #define MOSI p20 |
rllamado | 4:dfa8d9858dfb | 20 | #define MISO p22 |
rllamado | 4:dfa8d9858dfb | 21 | #define SCLK p25 |
rllamado | 4:dfa8d9858dfb | 22 | #define CS_SD p23 |
rllamado | 4:dfa8d9858dfb | 23 | #define CS_MPU p21 |
rllamado | 4:dfa8d9858dfb | 24 | #define BUTTON p17 |
rllamado | 4:dfa8d9858dfb | 25 | #define MIC p5 |
rllamado | 4:dfa8d9858dfb | 26 | #define LOAD_CELL p4 |
rllamado | 4:dfa8d9858dfb | 27 | #define LED p15 |
rllamado | 4:dfa8d9858dfb | 28 | #endif |
rllamado | 4:dfa8d9858dfb | 29 | |
rllamado | 4:dfa8d9858dfb | 30 | /* Un/comment to determine which tests will be run */ |
rllamado | 5:5bc32d021025 | 31 | #define IMU_TEST |
rllamado | 5:5bc32d021025 | 32 | //#define MIC_TEST |
rllamado | 4:dfa8d9858dfb | 33 | //#define LOAD_TEST |
rllamado | 4:dfa8d9858dfb | 34 | |
rllamado | 4:dfa8d9858dfb | 35 | /* Parameters for sampling */ |
rllamado | 4:dfa8d9858dfb | 36 | #define FILE_NAME "trick" |
rllamado | 4:dfa8d9858dfb | 37 | #define SAMPLE_RATE 1000 |
rllamado | 4:dfa8d9858dfb | 38 | |
rllamado | 4:dfa8d9858dfb | 39 | /* Objects used */ |
rllamado | 4:dfa8d9858dfb | 40 | DigitalOut led(LED); |
rllamado | 4:dfa8d9858dfb | 41 | AnalogIn mic(MIC); |
rllamado | 4:dfa8d9858dfb | 42 | InterruptIn button(BUTTON); |
rllamado | 4:dfa8d9858dfb | 43 | Ticker timer; |
rllamado | 4:dfa8d9858dfb | 44 | SPI spi(MOSI, MISO, SCLK); |
rllamado | 4:dfa8d9858dfb | 45 | SDFileSystem sd(MOSI, MISO, SCLK, CS_SD, "sd"); |
rllamado | 4:dfa8d9858dfb | 46 | mpu9250_spi imu(spi , CS_MPU); |
rllamado | 4:dfa8d9858dfb | 47 | |
rllamado | 4:dfa8d9858dfb | 48 | /* Flags for sampling */ |
rllamado | 4:dfa8d9858dfb | 49 | #define IMU_FLAG (1<<1U) |
rllamado | 4:dfa8d9858dfb | 50 | #define MIC_FLAG (1<<2U) |
rllamado | 4:dfa8d9858dfb | 51 | #define CREATE_FILE (1<<3U) |
rllamado | 4:dfa8d9858dfb | 52 | #define CLOSE_FILE (1<<4U) |
rllamado | 4:dfa8d9858dfb | 53 | |
rllamado | 4:dfa8d9858dfb | 54 | /* Status */ |
rllamado | 4:dfa8d9858dfb | 55 | #define START_SAMPLE 1 |
rllamado | 4:dfa8d9858dfb | 56 | #define END_SAMPLE 0 |
rllamado | 4:dfa8d9858dfb | 57 | |
rllamado | 4:dfa8d9858dfb | 58 | static uint16_t status = 0; |
rllamado | 4:dfa8d9858dfb | 59 | static int button_status = START_SAMPLE; |
rllamado | 4:dfa8d9858dfb | 60 | static uint16_t file_count = 0; |
rllamado | 4:dfa8d9858dfb | 61 | |
rllamado | 4:dfa8d9858dfb | 62 | static float sample_rate = (1/(float)SAMPLE_RATE) ; |
rllamado | 4:dfa8d9858dfb | 63 | |
rllamado | 4:dfa8d9858dfb | 64 | static FILE *fp = NULL; |
rllamado | 4:dfa8d9858dfb | 65 | static char file_name[17]; |
rllamado | 4:dfa8d9858dfb | 66 | |
rllamado | 4:dfa8d9858dfb | 67 | static void openNextFile(void) |
rllamado | 4:dfa8d9858dfb | 68 | { |
rllamado | 4:dfa8d9858dfb | 69 | |
rllamado | 4:dfa8d9858dfb | 70 | if( fp ){ |
rllamado | 4:dfa8d9858dfb | 71 | fclose(fp); |
rllamado | 4:dfa8d9858dfb | 72 | } |
rllamado | 4:dfa8d9858dfb | 73 | |
rllamado | 5:5bc32d021025 | 74 | snprintf(file_name, sizeof(file_name), "/sd/%s_%02d.txt", FILE_NAME, file_count++); |
rllamado | 5:5bc32d021025 | 75 | fp = fopen(file_name, "w"); |
rllamado | 4:dfa8d9858dfb | 76 | fprintf(fp, "Sample Rate: %d Hz\n", SAMPLE_RATE); |
rllamado | 4:dfa8d9858dfb | 77 | |
rllamado | 4:dfa8d9858dfb | 78 | } |
rllamado | 4:dfa8d9858dfb | 79 | |
rllamado | 4:dfa8d9858dfb | 80 | static void button_interrupt(void) |
rllamado | 4:dfa8d9858dfb | 81 | { |
rllamado | 4:dfa8d9858dfb | 82 | |
rllamado | 4:dfa8d9858dfb | 83 | //CREATE FILE |
rllamado | 4:dfa8d9858dfb | 84 | if ( button_status == START_SAMPLE ){ |
rllamado | 4:dfa8d9858dfb | 85 | status |= CREATE_FILE; |
rllamado | 4:dfa8d9858dfb | 86 | button_status = END_SAMPLE; |
rllamado | 4:dfa8d9858dfb | 87 | |
rllamado | 4:dfa8d9858dfb | 88 | //CLOSE FILE |
rllamado | 4:dfa8d9858dfb | 89 | } else if ( button_status == END_SAMPLE ){ |
rllamado | 4:dfa8d9858dfb | 90 | status |= CLOSE_FILE; |
rllamado | 4:dfa8d9858dfb | 91 | button_status = START_SAMPLE; |
rllamado | 4:dfa8d9858dfb | 92 | } |
rllamado | 4:dfa8d9858dfb | 93 | |
rllamado | 4:dfa8d9858dfb | 94 | } |
rllamado | 4:dfa8d9858dfb | 95 | |
rllamado | 4:dfa8d9858dfb | 96 | static void timer_interrupt(void) |
rllamado | 4:dfa8d9858dfb | 97 | { |
rllamado | 4:dfa8d9858dfb | 98 | |
rllamado | 4:dfa8d9858dfb | 99 | if ( button_status == END_SAMPLE ){ |
rllamado | 4:dfa8d9858dfb | 100 | //ENABLE SAMPLE FLAGS |
rllamado | 4:dfa8d9858dfb | 101 | #ifdef IMU_TEST |
rllamado | 4:dfa8d9858dfb | 102 | status |= IMU_FLAG; |
rllamado | 4:dfa8d9858dfb | 103 | #endif |
rllamado | 4:dfa8d9858dfb | 104 | |
rllamado | 4:dfa8d9858dfb | 105 | #ifdef MIC_TEST |
rllamado | 4:dfa8d9858dfb | 106 | status |= MIC_FLAG; |
rllamado | 4:dfa8d9858dfb | 107 | #endif |
rllamado | 4:dfa8d9858dfb | 108 | |
rllamado | 4:dfa8d9858dfb | 109 | #ifdef LOAD_TEST |
rllamado | 4:dfa8d9858dfb | 110 | status |= LOAD_FLAG; |
rllamado | 4:dfa8d9858dfb | 111 | #endif |
rllamado | 4:dfa8d9858dfb | 112 | } |
rllamado | 4:dfa8d9858dfb | 113 | |
rllamado | 4:dfa8d9858dfb | 114 | } |
rllamado | 4:dfa8d9858dfb | 115 | |
rllamado | 4:dfa8d9858dfb | 116 | int main() |
rllamado | 4:dfa8d9858dfb | 117 | { |
rllamado | 4:dfa8d9858dfb | 118 | |
rllamado | 4:dfa8d9858dfb | 119 | #ifdef IMU_TEST |
rllamado | 4:dfa8d9858dfb | 120 | //initialize imu |
rllamado | 4:dfa8d9858dfb | 121 | imu.init(1, BITS_DLPF_CFG_2100HZ_NOLPF); |
rllamado | 4:dfa8d9858dfb | 122 | #endif |
rllamado | 4:dfa8d9858dfb | 123 | |
rllamado | 4:dfa8d9858dfb | 124 | //set up button as active low to trigger file creation |
rllamado | 4:dfa8d9858dfb | 125 | button.fall(&button_interrupt); |
rllamado | 4:dfa8d9858dfb | 126 | timer.attach(&timer_interrupt, sample_rate ); |
rllamado | 4:dfa8d9858dfb | 127 | led.write(0); |
rllamado | 4:dfa8d9858dfb | 128 | |
rllamado | 5:5bc32d021025 | 129 | snprintf(file_name, sizeof(file_name), "/sd/%s_%02d.txt", FILE_NAME, file_count++); |
rllamado | 5:5bc32d021025 | 130 | fp = fopen(file_name, "w"); |
rllamado | 4:dfa8d9858dfb | 131 | fprintf(fp, "Sample Rate: %d Hz\n", SAMPLE_RATE); |
rllamado | 4:dfa8d9858dfb | 132 | |
rllamado | 4:dfa8d9858dfb | 133 | while(1){ |
rllamado | 4:dfa8d9858dfb | 134 | |
rllamado | 4:dfa8d9858dfb | 135 | if ( status & CREATE_FILE ){ |
rllamado | 4:dfa8d9858dfb | 136 | led.write(1); |
rllamado | 4:dfa8d9858dfb | 137 | openNextFile(); |
rllamado | 4:dfa8d9858dfb | 138 | status ^= CREATE_FILE; |
rllamado | 4:dfa8d9858dfb | 139 | } |
rllamado | 4:dfa8d9858dfb | 140 | |
rllamado | 4:dfa8d9858dfb | 141 | #ifdef IMU_TEST |
rllamado | 4:dfa8d9858dfb | 142 | if ( status & IMU_FLAG ){ |
rllamado | 4:dfa8d9858dfb | 143 | led.write(!led.read()); |
rllamado | 4:dfa8d9858dfb | 144 | imu.read_all(); |
rllamado | 4:dfa8d9858dfb | 145 | |
rllamado | 4:dfa8d9858dfb | 146 | #ifndef MIC_TEST |
rllamado | 4:dfa8d9858dfb | 147 | 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], |
rllamado | 4:dfa8d9858dfb | 148 | (signed int) imu.gyroscope_data[1], |
rllamado | 4:dfa8d9858dfb | 149 | (signed int) imu.gyroscope_data[2], |
rllamado | 4:dfa8d9858dfb | 150 | (signed int) imu.accelerometer_data[0], |
rllamado | 4:dfa8d9858dfb | 151 | (signed int) imu.accelerometer_data[1], |
rllamado | 4:dfa8d9858dfb | 152 | (signed int) imu.accelerometer_data[2], |
rllamado | 4:dfa8d9858dfb | 153 | (signed int) imu.Magnetometer[0], |
rllamado | 4:dfa8d9858dfb | 154 | (signed int) imu.Magnetometer[1], |
rllamado | 4:dfa8d9858dfb | 155 | (signed int) imu.Magnetometer[2] ); |
rllamado | 4:dfa8d9858dfb | 156 | #endif |
rllamado | 4:dfa8d9858dfb | 157 | |
rllamado | 4:dfa8d9858dfb | 158 | status ^= IMU_FLAG; |
rllamado | 4:dfa8d9858dfb | 159 | } |
rllamado | 4:dfa8d9858dfb | 160 | #endif |
rllamado | 4:dfa8d9858dfb | 161 | |
rllamado | 4:dfa8d9858dfb | 162 | #ifdef MIC_TEST |
rllamado | 4:dfa8d9858dfb | 163 | if ( status & MIC_FLAG ){ |
rllamado | 5:5bc32d021025 | 164 | led.write(!led.read()); |
rllamado | 4:dfa8d9858dfb | 165 | |
rllamado | 4:dfa8d9858dfb | 166 | #ifndef IMU_TEST |
rllamado | 4:dfa8d9858dfb | 167 | fprintf(fp, "%d\n", mic.read_u16()); |
rllamado | 4:dfa8d9858dfb | 168 | |
rllamado | 4:dfa8d9858dfb | 169 | #else |
rllamado | 4:dfa8d9858dfb | 170 | 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], |
rllamado | 4:dfa8d9858dfb | 171 | (signed int) imu.gyroscope_data[1], |
rllamado | 4:dfa8d9858dfb | 172 | (signed int) imu.gyroscope_data[2], |
rllamado | 4:dfa8d9858dfb | 173 | (signed int) imu.accelerometer_data[0], |
rllamado | 4:dfa8d9858dfb | 174 | (signed int) imu.accelerometer_data[1], |
rllamado | 4:dfa8d9858dfb | 175 | (signed int) imu.accelerometer_data[2], |
rllamado | 4:dfa8d9858dfb | 176 | (signed int) imu.Magnetometer[0], |
rllamado | 4:dfa8d9858dfb | 177 | (signed int) imu.Magnetometer[1], |
rllamado | 4:dfa8d9858dfb | 178 | (signed int) imu.Magnetometer[2], |
rllamado | 4:dfa8d9858dfb | 179 | mic.read_u16() ); |
rllamado | 4:dfa8d9858dfb | 180 | #endif |
rllamado | 4:dfa8d9858dfb | 181 | |
rllamado | 4:dfa8d9858dfb | 182 | status ^= MIC_FLAG; |
rllamado | 4:dfa8d9858dfb | 183 | |
rllamado | 4:dfa8d9858dfb | 184 | } |
rllamado | 4:dfa8d9858dfb | 185 | #endif |
rllamado | 4:dfa8d9858dfb | 186 | |
rllamado | 4:dfa8d9858dfb | 187 | if ( status & CLOSE_FILE ){ |
rllamado | 4:dfa8d9858dfb | 188 | led.write(0); |
rllamado | 4:dfa8d9858dfb | 189 | fclose(fp); |
rllamado | 4:dfa8d9858dfb | 190 | status ^= CLOSE_FILE; |
rllamado | 4:dfa8d9858dfb | 191 | } |
rllamado | 4:dfa8d9858dfb | 192 | |
rllamado | 4:dfa8d9858dfb | 193 | } |
rllamado | 4:dfa8d9858dfb | 194 | |
rllamado | 4:dfa8d9858dfb | 195 | } |
rllamado | 4:dfa8d9858dfb | 196 |