Communication program for the chrobotics UM6 9-DOF IMU AHRS.

Dependencies:   MODSERIAL mbed

main.cpp

Committer:
lhiggs
Date:
2012-09-28
Revision:
0:03c649c76388

File content as of revision 0:03c649c76388:

#include "mbed.h"          // MBED LIBRARY
#include "MODSERIAL.h"     // MBED BUFFERED SERIAL

#include "UM6_usart.h"     // UM6 USART HEADER
#include "UM6_config.h"    // UM6 CONFIG HEADER

/////////////////////////////////////////////////////////////////////////////////////////////
// SETUP (ASSIGN) SERIAL COMMUNICATION PINS ON MBED
/////////////////////////////////////////////////////////////////////////////////////////////
MODSERIAL pc(USBTX, USBRX);  // PC SERIAL OVER USB PORT ON MBED

////////////////////////////////////////////////////////////////////////////////////////////////
// SETUP (ASSIGN) MBED LED (1 thru 3) FOR VISUAL DEBUGGING ON MBED
////////////////////////////////////////////////////////////////////////////////////////////////
DigitalOut pc_activity(LED1);    // LED1 = PC SERIAL
DigitalOut uart_activity(LED2);  // LED2 = UM6 SERIAL


void rxCallback(MODSERIAL_IRQ_INFO *q) {
    if (um6_uart.rxBufferGetCount() >=  MAX_PACKET_DATA) {
        uart_activity = !uart_activity;  // Lights LED when uart RxBuff has > 40 bytes
        Process_um6_packet();
    }
}
 

int main() {

/////////////////////////////////////////////////////////////////////////////////////////////////////
//          SET SERIAL UART BAUD RATES
/////////////////////////////////////////////////////////////////////////////////////////////////////

    // set UM6 serial uart baud 9600
    um6_uart.baud(9600);
    pc.baud(9600);  // pc baud for UM6 to pc interface

    // attach interupt function to uart
    um6_uart.attach(&rxCallback, MODSERIAL::RxIrq);

    int Roll_Counter = 0;

    while (1) {
         Roll_Counter++;      
         if (Roll_Counter > 5000000) {
          pc.printf("Gyro_Proc_X %f deg/s, ",data.Gyro_Proc_X);
          pc.printf("Gyro_Proc_Y %f deg/s, ",data.Gyro_Proc_Y);
          pc.printf("Gyro_Proc_Z %f deg/s, ",data.Gyro_Proc_Z);
          pc.printf("Roll %f deg, ",data.Roll);
          pc.printf("Pitch %f deg, ",data.Pitch);
          pc.printf("Yaw %f deg \r\n",data.Yaw);
          pc_activity = !pc_activity;  // Lights LED when uart RxBuff has > 40 bytes
          Roll_Counter = 0;
         }
  
    }  // end while(1) loop

}  // end main()