Hello!
I have recently assembled a new prototype development board for this IC.
I am experiencing some strange results from the DAC outputs with some preliminary software tests.
Before I pass this design onto my programming team I like to confirm all IO functionality.
I believe I have all configurations correct in the registers for individually targeting DAC channels for value updates.
For example, I can define the range of the DACs and enable/disable with the power down register.
I am not utilising TOGG controls.
What I find when DACs are enabled, their outputs float and fluctuate at random.
My SPI functions are simple. I simply transmit three consecutive bytes. First defining the offset of the target register then the two configuration bytes.
I will past below an excerpt of my process so far:
void setup(){ byte range = 0x11 // set range to 0-10V unipolar positive // range register DAC14_SETUP(0x0A, range, range); //DACRANGE0 DAC14_SETUP(0x0B, range, range); //DACRANGE1 DAC14_SETUP(0x0C, range, range); //DACRANGE2 DAC14_SETUP(0x0D, range, range); //DACRANGE3 //Power-up device DAC14_SETUP(0x03, 0x0A, 0x81); //Power-up all channels DAC14_SETUP(0x09, 0x00, 0x00); //Enable broadcast for all channels DAC14_SETUP(0x05, 0xFF, 0xFF); //Write code to all channels DAC14_SETUP(0x0F, 0xFF, 0xFF); } void loop(){ //DAC0 'blink' //Set DAC0 to max/10V DAC14_SETUP(0x10, 0xFF, 0xFF); delay(500); //delay half second //Set DAC0 to min/0V DAC14_SETUP(0x10, 0x00, 0x00); delay(500); //delay half second }
My DAC14_SETUP function simply transmits out the three arguments within the low CS state.
I expect I am missing something very obvious somewhere!
Any help would be greatly appreciated :)
Kind regards
Jason