ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
mpu6050.c File Reference
#include "mpu6050.h"

Go to the source code of this file.

Functions

uint16_t swap (uint16_t num)
 
void MPU6050_Write (uint8_t addr, uint8_t dat)
 
uint8_t MPU6050_Read (uint8_t addr)
 
uint16_t MPU6050_ReadInt (uint8_t addr)
 
void MPU6050_ReadAll (uint16_t *buf)
 
void MPU6050_Init (void)
 
void MPU6050_Reset (void)
 
void MPU6050_EnterSleepMode (void)
 
void MPU6050_DisableTemperature (HAL_State_t state)
 
void MPU6050_EnableLowPowerMode (MPU6050_Wakeup_Freq_t freq)
 
void MPU6050_DisableLowPowerMode (void)
 
void MPU6050_SetSampleRateDiv (uint8_t div)
 
void MPU6050_SetDLPF (MPU6050_DLPF_t filter)
 
void MPU6050_SetGyroFullScaleRange (MPU6050_Gyro_FullScaleRange_t range)
 
void MPU6050_SetAccFullScaleRange (MPU6050_Acc_FullScaleRange_t range)
 

Function Documentation

◆ MPU6050_DisableLowPowerMode()

void MPU6050_DisableLowPowerMode ( void  )

Definition at line 78 of file mpu6050.c.

78 {
81}
void MPU6050_Write(uint8_t addr, uint8_t dat)
Definition: mpu6050.c:23
#define MPU6050_REG_PWR_MGMT_2
Definition: mpu6050.h:102
#define MPU6050_REG_PWR_MGMT_1
Definition: mpu6050.h:101

◆ MPU6050_DisableTemperature()

void MPU6050_DisableTemperature ( HAL_State_t  state)

Definition at line 68 of file mpu6050.c.

68 {
70 MPU6050_Write(MPU6050_REG_PWR_MGMT_1, reg & ~0x08 | (state << 3));
71}
unsigned char uint8_t
Definition: fw_types.h:18
uint8_t MPU6050_Read(uint8_t addr)
Definition: mpu6050.c:28

◆ MPU6050_EnableLowPowerMode()

void MPU6050_EnableLowPowerMode ( MPU6050_Wakeup_Freq_t  freq)

Definition at line 73 of file mpu6050.c.

73 {
74 MPU6050_Write(MPU6050_REG_PWR_MGMT_1, 0x28); // 0010,1000 sleep:0, cycle:1, dis_temp:1
75 MPU6050_Write(MPU6050_REG_PWR_MGMT_2, freq << 6 | 0x03); // STBY_XG, STBY_YG, STBY_ZG -> 1
76}

◆ MPU6050_EnterSleepMode()

void MPU6050_EnterSleepMode ( void  )

Definition at line 64 of file mpu6050.c.

◆ MPU6050_Init()

void MPU6050_Init ( void  )

Definition at line 52 of file mpu6050.c.

52 {
58}
void MPU6050_DisableLowPowerMode(void)
Definition: mpu6050.c:78
void MPU6050_SetAccFullScaleRange(MPU6050_Acc_FullScaleRange_t range)
Definition: mpu6050.c:103
void MPU6050_SetDLPF(MPU6050_DLPF_t filter)
Definition: mpu6050.c:93
void MPU6050_SetSampleRateDiv(uint8_t div)
Definition: mpu6050.c:88
void MPU6050_SetGyroFullScaleRange(MPU6050_Gyro_FullScaleRange_t range)
Definition: mpu6050.c:98
@ MPU6050_Acc_FullScaleRange_4g
Definition: mpu6050.h:138
@ MPU6050_Gyro_FullScaleRange_500dps
Definition: mpu6050.h:130
@ MPU6050_DLPF_Delay2ms
Definition: mpu6050.h:119

◆ MPU6050_Read()

uint8_t MPU6050_Read ( uint8_t  addr)

Definition at line 28 of file mpu6050.c.

29{
30 uint8_t ret;
31 I2C_Read(MPU6050_ADDR, addr, &ret, 1);
32 return ret;
33}
uint8_t I2C_Read(uint8_t devAddr, uint8_t memAddr, uint8_t *buf, uint16_t size)
Definition: fw_i2c.c:36
uint8_t addr[8]
Definition: main.c:28
#define MPU6050_ADDR
Definition: mpu6050.h:21

◆ MPU6050_ReadAll()

void MPU6050_ReadAll ( uint16_t buf)

Definition at line 42 of file mpu6050.c.

43{
44 uint8_t i;
46 for (i = 0; i < 7; i++)
47 {
48 *(buf + i) = swap(*(buf + i));
49 }
50}
uint8_t __XDATA i
uint16_t swap(uint16_t num)
Definition: mpu6050.c:18
#define MPU6050_REG_ACCEL_XOUT_H
Definition: mpu6050.h:56

◆ MPU6050_ReadInt()

uint16_t MPU6050_ReadInt ( uint8_t  addr)

Definition at line 35 of file mpu6050.c.

36{
37 uint16_t ret;
38 I2C_Read(MPU6050_ADDR, addr, (uint8_t *)&ret, 2);
39 return swap(ret); // swap high/low bits for correct order
40}
unsigned short uint16_t
Definition: fw_types.h:19

◆ MPU6050_Reset()

void MPU6050_Reset ( void  )

Definition at line 60 of file mpu6050.c.

◆ MPU6050_SetAccFullScaleRange()

void MPU6050_SetAccFullScaleRange ( MPU6050_Acc_FullScaleRange_t  range)

Definition at line 103 of file mpu6050.c.

104{
106}
#define MPU6050_REG_ACCEL_CONFIG
Definition: mpu6050.h:32

◆ MPU6050_SetDLPF()

void MPU6050_SetDLPF ( MPU6050_DLPF_t  filter)

Definition at line 93 of file mpu6050.c.

94{
96}
#define MPU6050_REG_CONFIG
Definition: mpu6050.h:30

◆ MPU6050_SetGyroFullScaleRange()

void MPU6050_SetGyroFullScaleRange ( MPU6050_Gyro_FullScaleRange_t  range)

Definition at line 98 of file mpu6050.c.

99{
101}
#define MPU6050_REG_GYRO_CONFIG
Definition: mpu6050.h:31

◆ MPU6050_SetSampleRateDiv()

void MPU6050_SetSampleRateDiv ( uint8_t  div)

Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV) where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or 7), and 1kHz when the DLPF is enabled

Definition at line 88 of file mpu6050.c.

89{
91}
#define MPU6050_REG_SMPLRT_DIV
Definition: mpu6050.h:29

◆ MPU6050_Write()

void MPU6050_Write ( uint8_t  addr,
uint8_t  dat 
)

Definition at line 23 of file mpu6050.c.

24{
26}
__CODE int8_t dat[20]
uint8_t I2C_Write(uint8_t devAddr, uint8_t memAddr, uint8_t *dat, uint16_t size)
Definition: fw_i2c.c:18

◆ swap()

uint16_t swap ( uint16_t  num)

Definition at line 18 of file mpu6050.c.

19{
20 return (num >> 8) | (num << 8);
21}