You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
2.3 KiB

#include "mcp4725.hpp"
#if 0
MCP4725::MCP4725(pwrd_md power_down_mode,
i2c_addr address,
I2C* i2c) :
power_down_mode(power_down_mode),
address(address),
i2c(i2c),
dac_value(0),
eeprom_value(0)
{
uint8_t temp[6];
temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1);
temp[1] = static_cast<uint8_t>(dac_value >> 4);
temp[2] = static_cast<uint8_t>(dac_value << 4);
temp[3] = temp[0];
temp[4] = temp[1];
temp[5] = temp[2];
//i2c_write(address, temp,6);
}
MCP4725::MCP4725(i2c_addr address,
I2C* i2c) :
power_down_mode(pwrd_md::normal),
address(address),
i2c(i2c),
dac_value(0),
eeprom_value(0)
{
uint8_t temp[6];
temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1);
temp[1] = static_cast<uint8_t>(dac_value >> 4);
temp[2] = static_cast<uint8_t>(dac_value << 4);
temp[3] = temp[0];
temp[4] = temp[1];
temp[5] = temp[2];
//i2c_write(address, temp, 6);
}
#endif
MCP4725::MCP4725()
{
}
MCP4725::MCP4725(I2C* i2c) :
power_down_mode(pwrd_md::normal),
address(addr_0x60),
i2c(i2c),
dac_value(0),
eeprom_value(0)
{
uint8_t temp[6];
temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1);
temp[1] = static_cast<uint8_t>(dac_value >> 4);
temp[2] = static_cast<uint8_t>(dac_value << 4);
temp[3] = temp[0];
temp[4] = temp[1];
temp[5] = temp[2];
i2c->writeBuffer(address, temp, 6);
}
//MCP4725::~MCP4725()
//{
//}
void MCP4725::operator=(uint16_t dac_value)
{
uint8_t temp[3];
this->dac_value = dac_value;
temp[0] = cmd_write_dac | (power_down_mode << 1);
temp[1] = static_cast<uint8_t>(dac_value >> 4);
temp[2] = static_cast<uint8_t>(dac_value << 4);
i2c->writeBuffer(address, temp, 3);
//i2c_write(address, temp, 3);
}
void MCP4725::operator==(uint16_t dac_and_eeprom_value)
{
uint8_t temp[6];
dac_value = dac_and_eeprom_value;
eeprom_value = dac_value;
temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1);
temp[1] = static_cast<uint8_t>(dac_and_eeprom_value >> 4);
temp[2] = static_cast<uint8_t>(dac_and_eeprom_value << 4);
temp[3] = temp[0];
temp[4] = temp[1];
temp[5] = temp[2];
i2c->writeBuffer(address, temp, 6);
}
#if 0
void MCP4725::write_dac(uint16_t dac_value)
{
&this = dac_value;
}
void MCP4725::write_dac_and_eeprom(uint16_t dac_and_eeprom_value)
{
&this == dac_and_eeprom_value;
}
#endif