This problem occurs with the Arduino UNO and a oscillator module I2C-OSC. I2C is used to send a two-byte count to the oscillator module. The count controls the output frequency. At times the count does not seem to get to the module.
The included program sends the maximum count to the module, then delays for several seconds, and then sends the minimum count to the module. The max count is often set successfully, but the min count is not. I have to power the module down and up and then push the UNO reset button to change from the max count. Sometimes the oscillator output is shutdown altogether.
Wire.endTransmission() returns: 2=NACK on address transmission, 3=NACK on data transmission, and 4=Other Error, with the NACK on data transmission being more frequent. With the 2 changes, the results are in pairs: sometimes 4 and 2, and 2 and 3. Sometimes 2 is the only error response.
How does one diagnose this?
On the other hand, The 2nd attached programs (I2C_OSCDecimalFreqSetter.ino) never shows an I2C error
Documentation:
See
http://www.gravitech.us/i2c1kto68pro.htmland find the User Manual and data sheet for the LTC6904 chip on which the module is based.
The data format is described in the data sheet.
I have attached the Arduino program that I'm using to test the set-up, and the schematic for the module itself.
I'm using the Arduino 1.0.1 IDE.
I have an oscilloscope.