/* * dac101c085.c * * Created on: 21 Jul 2019 * Author: maximilian */ #include "dac101c085.h" static uint8_t i2c_initialized = 0; void init(void) { if (!i2c_initialized) { i2cInit(I2Cx_DAC); i2c_initialized = 1; } } void setDAC(uint16_t new_value) { uint8_t ub = (new_value >> 6) & 0x0F; //uint8_t ub = 0x10; uint8_t lb = (new_value << 2) & 0xFF; init(); osPrintf("Upper %d\n", ub); osPrintf("Lower %d\n", lb); i2cStartTransmission(I2Cx_DAC, I2C_Direction_Transmitter, DAC_ADDR); i2cWrite(I2Cx_DAC, &ub); i2cWrite(I2Cx_DAC, &lb); i2cEndTransmission(I2Cx_DAC); } uint16_t readDAC(void) { uint16_t dac_val = 1; i2cStartTransmission(I2Cx_DAC, I2C_Direction_Receiver, DAC_ADDR); i2cAckOn(I2Cx_DAC); dac_val = i2cRead(I2Cx_DAC); i2cAckOff(I2Cx_DAC); dac_val = (dac_val<<8); dac_val |= i2cRead(I2Cx_DAC); i2cEndTransmission(I2Cx_DAC); return dac_val>>2; }