A project similar to http://mbed.org/users/lhiggs/code/UM6_IMU_AHRS_2012/, where I'm trying to log data from a UM6 (CH Robotics orientation sensor) and a GPS transceiver to an sd card. I've adapted LHiggs code to include ModGPS. For sum reason a soon as I pick up a gps signal the UM6 data freezes i.e. the time and gps signals continue to print out but the UM6 signals fixes on a single value.
Dependencies: MODGPS MODSERIAL SDFileSystem mbed
Diff: main.cpp
- Revision:
- 3:b3358ec2f57c
- Parent:
- 2:4a6e89c2d82a
- Child:
- 4:8dcf0bdc25c8
--- a/main.cpp Thu May 23 15:02:07 2013 +0000 +++ b/main.cpp Thu May 23 20:24:19 2013 +0000 @@ -1,15 +1,21 @@ #include "mbed.h" +#include "SDFileSystem.h" //------------ system and interface setup ----------------------------// LocalFileSystem local("local"); // sets up local file on mbed Serial pc(USBTX, USBRX); // sets up serial connection to pc terminal //------------ Hardware setup ----------------------------------------// -DigitalOut myled(LED1); // debug LED +DigitalOut led1(LED1); // debug LED DigitalIn enable(p10); // enable signal for logging data to file +AnalogIn log1(p18); // dummy log signal1 +AnalogIn log2(p19); // dummy log signal2 +SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board + //------------ interrupt and variable setup --------------------------// Ticker tick; +Timer t; int counter=0; int flag=0; @@ -22,21 +28,31 @@ //============= Main Program =========================================// int main() { pc.baud(115200); // baud rate to pc interface - FILE *fp = fopen("/local/ticker4.txt", "w"); - + + //---------- setup sd card -----------------------------// + mkdir("/sd/mydir", 0777); + FILE *fp = fopen("/sd/mydir/sdtest.csv", "w"); + if(fp == NULL) { + error("Could not open file for write\n"); + } +// FILE *fp = fopen("/local/ticker4.csv", "w"); + fprintf(fp,"time,counter,log1,log2 \r"); + + t.start(); tick.attach(&LogData, 0.01); // attaches LogData function to 'tick' ticker interrupt every 0.5s while(1) { - while(enable) { if(flag==1) { // prints counter value every interrupt raises flag - myled=1; - fprintf(fp,"%d \n",counter); - pc.printf("%d \n",counter); + led1=1; + fprintf(fp,"%.3f,%d,%f,%f \r",t.read(),counter,log1,log2); + pc.printf("%.3f, %d, %f, %f \n",t.read(),counter,log1,log2); flag=0; } // end if(flag=1) loop - } // end while(enable) loop + + if(enable==0) { + break; // breaks while loop in enable switched off + } + } // end while(1) loop fclose(fp); - myled=0; // turns off LED when enable switch off - counter=0; // resets counter - } // end while(1) loop + led1=0; // turns off LED when enable switch off } // end main() loop