#ifndef _MCP4725_HPP_ #define _MCP4725_HPP_ #include #include class MCP4725 { public: typedef std::function i2c_write_n_t; // address list enum i2c_addr { addr_0x0 = 0b01100000, addr_0x1 = addr_0x0 + 1, addr_0x2 = addr_0x0 + 1, addr_0x3 = addr_0x0 + 1, addr_0x4 = addr_0x0 + 1, addr_0x5 = addr_0x0 + 1, addr_0x6 = addr_0x0 + 1, addr_0x7 = addr_0x0 + 1 }; // power down impedance modes enum pwrd_md { normal = 0x04, ohm_1k = 0x01, ohm_100k = 0x02, ohm_500k = 0x03 }; //using std::functional i2c_read_n_t; //using i2c_write_n_t = std::functional; /** * @brief Constructor of mcp4725 dac * * @param power_down_mode pwrd_md power down mode * @param address i2c_addr i2c address of the dac * @param i2c_write i2c_write_n_t callback for i2c writ */ MCP4725(pwrd_md power_down_mode, i2c_addr address, i2c_write_n_t i2c_write); MCP4725(i2c_addr address, i2c_write_n_t i2c_write); ~MCP4725(); void operator=(uint16_t dac_value); void operator==(uint16_t dac_and_eeprom_value); void write_dac_and_eeprom(uint16_t value); void set_powerdown_impedance(pwrd_md mode); i2c_addr get_i2c_addr(); //void set_power private: enum commands_t { cmd_fast_mode = 0x00, cmd_write_dac = 0x40, cmd_write_dac_and_eeprom = 0x60 }; i2c_addr address; pwrd_md power_down_mode; i2c_write_n_t i2c_write; uint16_t dac_value; uint16_t eeprom_value; }; #endif // _MCP4725_HPP_