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@2:4a6e89c2d82a, 2013-05-23 (annotated)
- Committer:
- njewin
- Date:
- Thu May 23 15:02:07 2013 +0000
- Revision:
- 2:4a6e89c2d82a
- Parent:
- 1:9fe40d9ac0f5
- Child:
- 3:b3358ec2f57c
prints counter to pc and local file; - opens file once (problems with continuously opening and closing local file)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
njewin | 0:52295643d083 | 1 | #include "mbed.h" |
njewin | 0:52295643d083 | 2 | |
njewin | 1:9fe40d9ac0f5 | 3 | //------------ system and interface setup ----------------------------// |
njewin | 0:52295643d083 | 4 | LocalFileSystem local("local"); // sets up local file on mbed |
njewin | 0:52295643d083 | 5 | Serial pc(USBTX, USBRX); // sets up serial connection to pc terminal |
njewin | 0:52295643d083 | 6 | |
njewin | 1:9fe40d9ac0f5 | 7 | //------------ Hardware setup ----------------------------------------// |
njewin | 0:52295643d083 | 8 | DigitalOut myled(LED1); // debug LED |
njewin | 0:52295643d083 | 9 | DigitalIn enable(p10); // enable signal for logging data to file |
njewin | 0:52295643d083 | 10 | |
njewin | 1:9fe40d9ac0f5 | 11 | //------------ interrupt and variable setup --------------------------// |
njewin | 1:9fe40d9ac0f5 | 12 | Ticker tick; |
njewin | 1:9fe40d9ac0f5 | 13 | int counter=0; |
njewin | 1:9fe40d9ac0f5 | 14 | int flag=0; |
njewin | 1:9fe40d9ac0f5 | 15 | |
njewin | 1:9fe40d9ac0f5 | 16 | //------------ LogData interrupt function ----------------------------// |
njewin | 1:9fe40d9ac0f5 | 17 | void LogData() { |
njewin | 1:9fe40d9ac0f5 | 18 | counter++; |
njewin | 1:9fe40d9ac0f5 | 19 | flag=1; |
njewin | 1:9fe40d9ac0f5 | 20 | } |
njewin | 1:9fe40d9ac0f5 | 21 | |
njewin | 1:9fe40d9ac0f5 | 22 | //============= Main Program =========================================// |
njewin | 0:52295643d083 | 23 | int main() { |
njewin | 1:9fe40d9ac0f5 | 24 | pc.baud(115200); // baud rate to pc interface |
njewin | 2:4a6e89c2d82a | 25 | FILE *fp = fopen("/local/ticker4.txt", "w"); |
njewin | 2:4a6e89c2d82a | 26 | |
njewin | 2:4a6e89c2d82a | 27 | tick.attach(&LogData, 0.01); // attaches LogData function to 'tick' ticker interrupt every 0.5s |
njewin | 1:9fe40d9ac0f5 | 28 | |
njewin | 1:9fe40d9ac0f5 | 29 | while(1) { |
njewin | 1:9fe40d9ac0f5 | 30 | while(enable) { |
njewin | 1:9fe40d9ac0f5 | 31 | if(flag==1) { // prints counter value every interrupt raises flag |
njewin | 1:9fe40d9ac0f5 | 32 | myled=1; |
njewin | 2:4a6e89c2d82a | 33 | fprintf(fp,"%d \n",counter); |
njewin | 2:4a6e89c2d82a | 34 | pc.printf("%d \n",counter); |
njewin | 1:9fe40d9ac0f5 | 35 | flag=0; |
njewin | 1:9fe40d9ac0f5 | 36 | } // end if(flag=1) loop |
njewin | 1:9fe40d9ac0f5 | 37 | } // end while(enable) loop |
njewin | 2:4a6e89c2d82a | 38 | fclose(fp); |
njewin | 1:9fe40d9ac0f5 | 39 | myled=0; // turns off LED when enable switch off |
njewin | 1:9fe40d9ac0f5 | 40 | counter=0; // resets counter |
njewin | 2:4a6e89c2d82a | 41 | } // end while(1) loop |
njewin | 1:9fe40d9ac0f5 | 42 | } // end main() loop |