Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MODGPS MODSERIAL SDFileSystem mbed
Revision 5:ac633cdbb75c, committed 2013-05-25
- Comitter:
- njewin
- Date:
- Sat May 25 12:47:06 2013 +0000
- Parent:
- 4:8dcf0bdc25c8
- Child:
- 6:fae3d66a4e21
- Commit message:
- Prints time,yaw,accel to sd card at 10ms rate
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri May 24 12:47:22 2013 +0000
+++ b/main.cpp Sat May 25 12:47:06 2013 +0000
@@ -1,17 +1,19 @@
#include "mbed.h"
#include "SDFileSystem.h" // SD file system header from handbook/cookbook offical mbed library
#include "MODSERIAL.h"
+#include "UM6_usart.h" // UM6 USART HEADER
+#include "UM6_config.h" // UM6 CONFIG HEADER
//------------ system and interface setup ----------------------------//
-LocalFileSystem local("local"); // sets up local file on mbed
+//////////////////////////////////////LocalFileSystem local("local"); // sets up local file on mbed
MODSERIAL pc(USBTX, USBRX); // sets up serial connection to pc terminal
//------------ Hardware setup ----------------------------------------//
-DigitalOut led1(LED1); // debug LED
+DigitalOut pc_led(LED1); // LED1 = PC SERIAL
+DigitalOut uart_led(LED2); // LED2 = UM6 SERIAL
+DigitalOut log_led(LED3); // 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
@@ -21,6 +23,14 @@
int counter=0;
int flag=0;
+// interupt function for processing uart messages --------------------//
+void rxCallback(MODSERIAL_IRQ_INFO *q) {
+ if (um6_uart.rxBufferGetCount() >= MAX_PACKET_DATA) {
+ uart_led = !uart_led; // Lights LED when uart RxBuff has > 40 bytes
+ Process_um6_packet();
+ }
+}
+
//------------ LogData interrupt function ----------------------------//
void LogData() {
counter++;
@@ -30,6 +40,13 @@
//============= Main Program =========================================//
int main() {
pc.baud(115200); // baud rate to pc interface
+ um6_uart.baud(115200); // baud rate to um6 interface
+
+ t.start(); // start log time
+
+ //---- call interrupt functions -------------------------//
+ um6_uart.attach(&rxCallback, MODSERIAL::RxIrq); // attach interupt function to uart
+ tick.attach(&LogData, 0.01); // attaches LogData function to 'tick' ticker interrupt every 0.5s
//---------- setup sd card -----------------------------//
mkdir("/sd/mydir", 0777);
@@ -37,24 +54,35 @@
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
+//////////// FILE *fp = fopen("/local/log1.csv", "w");
+ fprintf(fp,"time(s),count,Yaw(deg),Accel(m/s2) \r");
+ //---- main while loop ----------------------------------//
+ //--(interrupt sets flag that causes variables to be logged)
while(1) {
if(flag==1) { // prints counter value every interrupt raises flag
- 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);
+ log_led=1; // turns on LED3 to indicate logging
+ float Yaw=data.Yaw;
+ float AccelX=data.Accel_Proc_X;
+ fprintf(fp,"%.3f,%d,%f,%f \r",t.read(),counter,Yaw,AccelX);
+ pc.printf("time %.3f, count %d,Yaw %f,Accel %f \n",t.read(),counter,Yaw,AccelX);
flag=0;
+ pc_led = !pc_led; // Lights LED1 when uart RxBuff has > 40 bytes
} // end if(flag=1) loop
- if(enable==0) {
+ if(enable==0) {
break; // breaks while loop in enable switched off
}
} // end while(1) loop
- fclose(fp);
- led1=0; // turns off LED when enable switch off
-} // end main() loop
+ pc.printf(" done. "); // prints 'done when logging is finished/enable switched off
+ log_led=0; // turns off LED logging is finished/enable switched off
+ wait(0.5); // debug wait for pc.printf
+ fclose(fp); // closes log file
+} // end main() program
+
+
+/* opening a file BEFORE calling interrupts OK
+ opening a file and print to it BEFORE calling interrupts NOT OK (stops rest of program)
+ open a (local) file and print to it AFTER calling interrupts NOT OK (stops rest of program)
+ open a (sd) file and print to it AFTER calling interrupts OK
+*/
\ No newline at end of file