Mercurial > public > ostc4
view Small_CPU/Inc/i2c.h @ 474:4be72d55b09a Improve_Button_Sleep
Added error detection for reading of ADC values in sleep mode:
ADC value were used for pressure calculation without making sure that the I2C operations used for reading the values were called successfully. As result a invalid pressure could be calculated causing the OSTC to wakeup or (worstcase) to enter dive mode. To avoid this the return values are now evaluated and pressure calculation is only done if I2C signaled no error during transmission
author | ideenmodellierer |
---|---|
date | Tue, 12 May 2020 22:42:52 +0200 |
parents | c3d511365552 |
children | e595d2d1f77f |
line wrap: on
line source
/* Define to prevent recursive inclusion -------------------------------------*/ #ifndef I2C_H #define I2C_H /* Pressure Sensor */ #define DEVICE_PRESSURE_MS5803 0xEE // gen 1 and gen 2 use 0xEE (MS5803) #define DEVICE_PRESSURE_MS5837 0xEC // end-2019 hardware (gen 3) uses 0xEC (MS5837) /* Compass/Accelerometer */ #define COMPASS_NOT_RECOGNIZED 0xAA ///< id used with hardwareCompass #define compass_generation1 0x01 // Hardware gen 1 (Two chip solution with MMA8452Q and HMC5883L) #define compass_generation2 0x02 // Hardware gen 2 (Single chip solution LSM303D) #define compass_generation3 0x03 // Hardware gen 3 (Single chip solution LSM303AGR) #define DEVICE_ACCELARATOR_MMA8452Q 0x38 // Hardware gen 1 (Two chip solution with MMA8452Q and HMC5883L) #define DEVICE_COMPASS_HMC5883L 0x3C // Hardware gen 1 (Two chip solution with MMA8452Q and HMC5883L) #define DEVICE_COMPASS_303D 0x3C // Hardware gen 2 (Single chip solution LSM303D) #define DEVICE_COMPASS_303AGR 0x3C // Hardware gen 3 (Single chip solution LSM303AGR) #define DEVICE_ACCELARATOR_303AGR 0x32 // Hardware gen 3 (Single chip solution LSM303AGR) // Compass 3 defines (Can move in separate .h file...) #define WHOIAM_VALUE_LSM303AGR 0x33 /* Battery Gas Gauge */ #define DEVICE_BATTERYGAUGE 0xC8 // LTC2941 battery gauge /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" HAL_StatusTypeDef I2C_Master_Transmit( uint16_t DevAddress, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef I2C_Master_TransmitNoStop( uint16_t DevAddress, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef I2C_Master_Receive( uint16_t DevAddress, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef MX_I2C1_Init(void); void I2C_DeInit(void); HAL_StatusTypeDef I2C1_Status(void); GPIO_PinState MX_I2C1_TestAndClear(void); //void I2C_Error(void); #endif /* I2C_H */