#include #include #include #include #include #include "sensorlib/i2cm_drv.h" #include "sensorlib/hw_mpu6050.h" #include "sensorlib/mpu6050.h" #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_sysctl.h" #include "inc/hw_types.h" #include "inc/hw_i2c.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_gpio.h" #include "driverlib/debug.h" #include "driverlib/interrupt.h" #include "driverlib/i2c.h" #include "driverlib/i2c.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "driverlib/pin_map.h" #include "uartstdio.h" tI2CMInstance g_sI2CMSimpleInst; volatile bool g_bMPU6050Done; void MPU6050Callback(void *pvCallbackData, uint_fast8_t ui8Status) { if(ui8Status != I2CM_STATUS_SUCCESS){ } g_bMPU6050Done = true; } void I2CMSimpleIntHandler(void) { // // Call the I2C master driver interrupt handler. // I2CMIntHandler(&g_sI2CMSimpleInst); } void MPU6050Example(void) { float fAccel[3], fGyro[3]; tI2CMInstance sI2CInst; tMPU6050 sMPU6050; g_bMPU6050Done = false; MPU6050Init(&sMPU6050, &g_sI2CMSimpleInst, 0x68, MPU6050Callback, 0); while(!g_bMPU6050Done){ } g_bMPU6050Done = false; MPU6050ReadModifyWrite(&sMPU6050, MPU6050_O_ACCEL_CONFIG, ~MPU6050_ACCEL_CONFIG_AFS_SEL_M, MPU6050_ACCEL_CONFIG_AFS_SEL_4G, MPU6050Callback,0); while(!g_bMPU6050Done){ } while(1) { g_bMPU6050Done = false; MPU6050DataRead(&sMPU6050, MPU6050Callback, 0); while(!g_bMPU6050Done) { } MPU6050DataAccelGetFloat(&sMPU6050, &fAccel[0], &fAccel[1], &fAccel[2]); MPU6050DataGyroGetFloat(&sMPU6050, &fGyro[0], &fGyro[1], &fGyro[2]); UARTprintf("A %02d %02d %02d\n", fGyro[0], fGyro[1], fGyro[2]); // printing value on serial monitor SysCtlDelay(16000000/3); UARTprintf("G %02d %02d %02d\n", fAccel[0], fAccel[1], fAccel[2]); // Prinitng values on serial monitor SysCtlDelay(16000000/3); } } int main() { SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinConfigure(GPIO_PA0_U0RX); GPIOPinConfigure(GPIO_PA1_U0TX); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTStdioConfig(0, 115200, SysCtlClockGet()); SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0); SysCtlPeripheralReset(SYSCTL_PERIPH_I2C0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinConfigure(GPIO_PB2_I2C0SCL); GPIOPinConfigure(GPIO_PB3_I2C0SDA); GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2); GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3); I2CMasterInitExpClk(I2C0_BASE, SysCtlClockGet(), true); HWREG(I2C0_BASE + I2C_O_FIFOCTL) = 80008000; I2CMInit(&g_sI2CMSimpleInst, I2C0_BASE, INT_I2C0, 0xff, 0xff, 16000000); MPU6050Example(); return(0); }