Prints signals from UM6 orientation sensor (CH Robotics) and GPS receiver, using MODSerial and MODgps. GPS causes UM6 signals to freeze on a fixed value, which timer and gps continue to print out.
Dependencies: MODGPS MODSERIAL mbed
main.cpp
- Committer:
- njewin
- Date:
- 2013-07-08
- Revision:
- 0:b9c0180d446f
File content as of revision 0:b9c0180d446f:
#include "mbed.h"
#include "MODSERIAL.h"
#include "UM6_usart.h" // UM6 USART HEADER
#include "UM6_config.h" // UM6 CONFIG HEADER
#include "GPS.h"
//------------ system and interface setup ----------------------------//
Serial pc(USBTX, USBRX); // sets up serial connection to pc terminal
//------------ Hardware setup ----------------------------------------//
DigitalOut pc_led(LED1); // LED1 = PC SERIAL
DigitalOut uart_led(LED2); // LED2 = UM6 SERIAL
GPS gps(NC,p27);
// 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();
}
}
//============= Main Program =========================================//
int main() {
Timer t;
GPS_Time q1;
GPS_VTG v1;
int Roll_Counter=0;
pc.baud(115200); // baud rate to pc interface
um6_uart.baud(115200); // baud rate to um6 interface
gps.baud(115200);
gps.format(8, GPS::None, 1);
//---- call interrupt functions --------------------------//
um6_uart.attach(&rxCallback, MODSERIAL::RxIrq); // attach interupt function to uart
t.start(); // start logging timer
//---- main while loop -------------------------------------------//
while(1) {
Roll_Counter++;
if (Roll_Counter > 10000000) {
gps.vtg(&v1);
pc.printf("time %f s, Yaw %f deg, speed %f, longitude %f \n ",t.read(),data.Yaw,v1.velocity_kph(),gps.longitude());
pc_led = !pc_led;
Roll_Counter = 0;
}
} // end while(1) loop
} // end main() program