![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
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
main.cpp@3:b3358ec2f57c, 2013-05-23 (annotated)
- 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?
User | Revision | Line number | New 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 |