#include #include #include "platform.h" #include #include #include #include "stdatomic.h" #define MPU6050_ADDR 0x68 #define MPU6050_RA_ACCEL_XOUT_H 0x3B #define MPU6050_RA_ACCEL_XOUT_L 0x3C #define MPU6050_RA_ACCEL_YOUT_H 0x3D #define MPU6050_RA_ACCEL_YOUT_L 0x3E #define MPU6050_RA_ACCEL_ZOUT_H 0x3F #define MPU6050_RA_ACCEL_ZOUT_L 0x40 #define MPU6050_RA_TEMP_OUT_H 0x41 #define MPU6050_RA_TEMP_OUT_L 0x42 #define MPU6050_RA_GYRO_XOUT_H 0x43 #define MPU6050_RA_GYRO_XOUT_L 0x44 #define MPU6050_RA_GYRO_YOUT_H 0x45 #define MPU6050_RA_GYRO_YOUT_L 0x46 #define MPU6050_RA_GYRO_ZOUT_H 0x47 #define MPU6050_RA_GYRO_ZOUT_L 0x48 #define MPU6050_RA_PWR_MGMT_1 0x6B #define MPU6050_RA_WHO_AM_I 0x75 #define SDA PIN_8_OFFSET #define SCL PIN_9_OFFSET #define LONG 25 // Equals ~400KHz #define SHORT 5 //busy wait for the specified time void wait_ms(uint64_t ms) { static const uint64_t ms_tick = RTC_FREQ/1000; volatile uint64_t * mtime = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIME); uint64_t then = (ms_tick * ms) + *mtime; while(*mtime