I am having trouble writing to a DAC121C081. Waveforms are attached.
Channel 1 is SCK, Channel 2 is SDA, and Channel 3 is VOUT.
SCK frequency is 100 kHz exactly. I’m running a test loop with a PIC16F1829 that writes the DAC address (0x0D – I’m using the TSOT package with ADR0 grounded), followed by a DAC value that increments from 0 to 0x0FFF repeatedly. The software waits about 500 microseconds between writes. I’ve verified that the outputs are all open-drain. Pullups are 4.7kOhm. I’ve also tried replacing the DAC, with no effect. I’ve also isolated the DAC output in case there was a short to ground on the output.
As you can see, the DAC never responds to the address write with an ACK. (The scope interprets the 0x0D address, shifted left, with the Write bit as LSB as 0x1a in the screen shot.) Same with the data writes. The output stays stuck at 0V. The last thing I’ve tried is commanding an I2C read at address 0x7F (result is 0xFF on SDA) ten times at startup in an attempt to “flush the bus.” No effect.
Any ideas? Thanks!