The device driver correctly resets the device by writing the requisite 32 1s on initialization, but the ADC will fail to produce a valid device ID sometimes.
Device will work as expected for some time, then after performing hard reboots or some output relay switching,, it will stop producing a valid device ID and will return some non-expected, but generally similar, device ID (like 0x48 when 0x49 is as expected). Once this occurs, no amount of resets or initializations will correct the issue, and the ADC is seemingly damaged (though not destroyed as it still communicates).
We have used AD7799 for several years on another hardware platform without issue, so I assume the problem is within our design.
Can unexpected transients cause the device id register to become corrupt?