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.

44 lines
871 B

/*
* 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 lb = (new_value << 2) & 0xFF;
init();
i2cStartTransmission(I2Cx_DAC, I2C_Direction_Transmitter, DAC_ADDR);
i2cWrite(I2Cx_DAC, &ub, 1, STANDARD_I2C_TIMEOUT);
i2cWrite(I2Cx_DAC, &lb, 1, STANDARD_I2C_TIMEOUT);
i2cEndTransmission(I2Cx_DAC);
}
uint16_t readDAC(void)
{
uint16_t dac_val = 1;
init();
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;
}