I'm operating an AD7656 using all 6 channels in software mode over the 16 pin parallel interface. ConvstA is controlled by microcontroller, while ConvstB/C are tied low. Reset is performed after powerup, and before configuring the control Register. The layout uses and external reference, with the following control register configuration: REFBUF =0, REFEN = 0, RNGA =1, RNGB = 1, RNGC = 0, VA = 1, VB = 1, VC =1.
After reset and configuration, I can successfully clock in data using the following approach:
CS pin held low permanently. Set Conv A pin, wait for busy pin to go high then low. Next clock in 6 readings: clear read pin, grab data from 16 bit port set clear pin x 6. Finally clear Conv A pin.
This all works for a while, but periodically I get very strange and repeatable data showing up. I may run the application. taking readings every 40 microseconds, and once every few minutes I will get data that is consistently set to values of 16384 (0x4000) or sometimes 49151 (0xBFFF). (0x4000 happens to be ones complement of 0xBFFF...relevance?). Accurate data will appear on subsequent conversions, but I still get the periodic bad sample. I should note all 6 channels give bad data when one of these mishaps ocurrs.
The voltage at the input pins is tied to 0V during troubleshooting, so it seems that this is not noise on the input side (also the strange values are very consistently the exact same numbers). I've tried adding in delays between all operations for kicking off a conversion and clocking in data, so it doesn't seem to be a timing issue. I've double checked voltages at all pins, and everything seems to be ok with respect to the datasheet.
One thing to mention is that at some point the REFEN control register bit had been set to 1 while an external reference was connected. Would this damage the AD7656 and create the issue I am seeing?
I wish I could just throw out these bad samples and move forward, but my application relies on 100% good data.
Any help or suggestions would be greatly appreciated.