Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Grove-Barometric_Pressure_Sensor_Example
HP206C.h
- Committer:
- pmic
- Date:
- 2019-06-26
- Revision:
- 6:470f31efa042
- Parent:
- 4:a2b79f08ad14
File content as of revision 6:470f31efa042:
// source: https://os.mbed.com/users/ElectronicsSanta/code/HP206C_barometer/file/0a071ea90726/main.cpp/ #ifndef _HP206C #define _HP206C #include "mbed.h" #define I2C_BAROMETER_ADDRESS 0x76 << 1 // 0xEC, device adress #define HP20X_SOFT_RST 0x06 // for initializing, takes longer than next #define HP20X_ANA_CAL 0x28 // recalibrate analog internal circuitries, for unstable environment #define HP20X_WR_CONVERT_CMD 0x40 #define HP20X_READ_PT 0x10 // read pressure and altitude command #define HP20X_READ_A 0x31 // read altitude command #define HP20X_WR_REG_MODE 0xC0 #define HP20X_RD_REG_MODE 0x80 #define HP20X_OK_DEV 0X80 // successfully initialized #define HP20X_REG_PARA 0X0F // status register #define HP20X_CONVERT_OSR4096 0 << 2 #define HP20X_CONVERT_OSR2048 1 << 2 #define HP20X_CONVERT_OSR1024 2 << 2 #define HP20X_CONVERT_OSR512 3 << 2 #define HP20X_CONVERT_OSR256 4 << 2 #define HP20X_CONVERT_OSR128 5 << 2 /* ADC is parametrizised through OSR_CFG HP20X_CONVERT_OSR128 -> OSR_ConvertTime = 5; // 4.1 ms -> ~200 Hz for control loop HP20X_CONVERT_OSR256 -> OSR_ConvertTime = 9; // 8.2 ms -> ~100 Hz HP20X_CONVERT_OSR512 -> OSR_ConvertTime = 17; // 16.4 ms -> ~ 50 Hz HP20X_CONVERT_OSR1024 -> OSR_ConvertTime = 34; // 32.8 ms -> ~ 20 Hz HP20X_CONVERT_OSR2048 -> OSR_ConvertTime = 67; // 65.6 ms -> ~ 10 Hz HP20X_CONVERT_OSR4096 -> OSR_ConvertTime = 132; // 131.1 ms -> ~ 5 Hz */ #define OSR_CFG HP20X_CONVERT_OSR1024 class HP206C { public: HP206C(PinName p_sda, PinName p_scl); float operator()() { return readAltitude(); } virtual ~HP206C(); void reset(); float readAltitude(); private: I2C i2c; float altitude; bool baro_found; uint8_t OSR_ConvertTime; void setConversionTime(); unsigned char readRegister(unsigned char reg); void writeRegister(unsigned char reg, unsigned char data); void enableCompensation(); void disableCompensation(); void softReset(); void recalibrate(); uint32_t readData3Bytes(); void readTemperatureAndPressure(); void updateAltitude(); }; #endif