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

Committer:
njewin
Date:
Thu May 23 20:24:19 2013 +0000
Revision:
3:b3358ec2f57c
Parent:
2:4a6e89c2d82a
Child:
4:8dcf0bdc25c8
prints timer and counter to sd card and screen; (just added MODSERIAL library but not included in main)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
njewin 0:52295643d083 1 #include "mbed.h"
njewin 3:b3358ec2f57c 2 #include "SDFileSystem.h"
njewin 0:52295643d083 3
njewin 1:9fe40d9ac0f5 4 //------------ system and interface setup ----------------------------//
njewin 0:52295643d083 5 LocalFileSystem local("local"); // sets up local file on mbed
njewin 0:52295643d083 6 Serial pc(USBTX, USBRX); // sets up serial connection to pc terminal
njewin 0:52295643d083 7
njewin 1:9fe40d9ac0f5 8 //------------ Hardware setup ----------------------------------------//
njewin 3:b3358ec2f57c 9 DigitalOut led1(LED1); // debug LED
njewin 0:52295643d083 10 DigitalIn enable(p10); // enable signal for logging data to file
njewin 3:b3358ec2f57c 11 AnalogIn log1(p18); // dummy log signal1
njewin 3:b3358ec2f57c 12 AnalogIn log2(p19); // dummy log signal2
njewin 3:b3358ec2f57c 13 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
njewin 3:b3358ec2f57c 14
njewin 0:52295643d083 15
njewin 1:9fe40d9ac0f5 16 //------------ interrupt and variable setup --------------------------//
njewin 1:9fe40d9ac0f5 17 Ticker tick;
njewin 3:b3358ec2f57c 18 Timer t;
njewin 1:9fe40d9ac0f5 19 int counter=0;
njewin 1:9fe40d9ac0f5 20 int flag=0;
njewin 1:9fe40d9ac0f5 21
njewin 1:9fe40d9ac0f5 22 //------------ LogData interrupt function ----------------------------//
njewin 1:9fe40d9ac0f5 23 void LogData() {
njewin 1:9fe40d9ac0f5 24 counter++;
njewin 1:9fe40d9ac0f5 25 flag=1;
njewin 1:9fe40d9ac0f5 26 }
njewin 1:9fe40d9ac0f5 27
njewin 1:9fe40d9ac0f5 28 //============= Main Program =========================================//
njewin 0:52295643d083 29 int main() {
njewin 1:9fe40d9ac0f5 30 pc.baud(115200); // baud rate to pc interface
njewin 3:b3358ec2f57c 31
njewin 3:b3358ec2f57c 32 //---------- setup sd card -----------------------------//
njewin 3:b3358ec2f57c 33 mkdir("/sd/mydir", 0777);
njewin 3:b3358ec2f57c 34 FILE *fp = fopen("/sd/mydir/sdtest.csv", "w");
njewin 3:b3358ec2f57c 35 if(fp == NULL) {
njewin 3:b3358ec2f57c 36 error("Could not open file for write\n");
njewin 3:b3358ec2f57c 37 }
njewin 3:b3358ec2f57c 38 // FILE *fp = fopen("/local/ticker4.csv", "w");
njewin 3:b3358ec2f57c 39 fprintf(fp,"time,counter,log1,log2 \r");
njewin 3:b3358ec2f57c 40
njewin 3:b3358ec2f57c 41 t.start();
njewin 2:4a6e89c2d82a 42 tick.attach(&LogData, 0.01); // attaches LogData function to 'tick' ticker interrupt every 0.5s
njewin 1:9fe40d9ac0f5 43
njewin 1:9fe40d9ac0f5 44 while(1) {
njewin 1:9fe40d9ac0f5 45 if(flag==1) { // prints counter value every interrupt raises flag
njewin 3:b3358ec2f57c 46 led1=1;
njewin 3:b3358ec2f57c 47 fprintf(fp,"%.3f,%d,%f,%f \r",t.read(),counter,log1,log2);
njewin 3:b3358ec2f57c 48 pc.printf("%.3f, %d, %f, %f \n",t.read(),counter,log1,log2);
njewin 1:9fe40d9ac0f5 49 flag=0;
njewin 1:9fe40d9ac0f5 50 } // end if(flag=1) loop
njewin 3:b3358ec2f57c 51
njewin 3:b3358ec2f57c 52 if(enable==0) {
njewin 3:b3358ec2f57c 53 break; // breaks while loop in enable switched off
njewin 3:b3358ec2f57c 54 }
njewin 3:b3358ec2f57c 55 } // end while(1) loop
njewin 2:4a6e89c2d82a 56 fclose(fp);
njewin 3:b3358ec2f57c 57 led1=0; // turns off LED when enable switch off
njewin 1:9fe40d9ac0f5 58 } // end main() loop