Burr-Brown ADS1212 read errors



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: sergsky_at_nospam_yahoo.com (Sergiy Skugaryev)
Subject: Burr-Brown ADS1212 read errors
Date: 15 Feb 2002 07:33:13 -0800


Dear Colleagues,

I'm using Burr-Brown ADS1212 ADC in Temperature Meter hendheld device.

I found that sometimes (in few percents of all cases) microcontroller
reads wrong data from the DOR, in most of the erroneous cases theses
are
0x00, 0x00, 0x00, sometimes 0xFF, 0xFF, 0xFF, and in rare cases
some other garbage values.

I can't find any solution/explaination for this.
Can you please help me?
I would appreciate it very much, as I've been experimenting with this
problem
for a week, and have no more hope to find a solution myself.


Measurement is done as follows:

1. ADC Power on (ADM663 is used as +5V power supply,
for both analog and digital parts of ADS1212,
with additional RC filter for analog one)

2. Wait 100 ms for power supply to stabilize
(actually 20 ms would be enough, as ADM663 sets up within 10-15
ms.)

3. Send reset sequence via SCLK (we're in Slave mode)

4. Wait 100 ms for Uref to stabilize
(this is for purity, 10-20 ms would be enough)

6. Wait for DRDY=0, Send initialization sequence: 0x64, 0x4A, 0x10,
0x00, 0x26
(for Fdata = 200 Hz)

7. Wait for DRDY=0, Send self-calibration command: 0x05, 0x30

8. Wait for DRDY=0, Read CMR (for debugging, always read correctly (as
written):
0x4A, 0x10, 0x00, 0x26)

9. Wait for DRDY=0, Read DOR. Most of times correct values a read,
but sometimes 0x00, 0x00, 0x00 or 0xFF, 0xFF, 0xFF
(this is the MAIN PROBLEM i'm asking you to help me with)

10. Wait for DRDY=0, Read OCR and FCR (for debugging). Most of times
correct values a read,
but in rare cases we get erroneous reads in DOR, FCR contains
strange values
as well (please see reading log example)

11. ADC Power off (to save battery, ADC Sleep mode is not enough for
our application)

12 Wait 1 minute for next measurement, then goto step 1.



I noticed that if I don't turn off ADC +5V supply, DOR is read
correctly.
This makes me think that the problem is with power-up sequence or
calibration.
(as OCF and FCR registers contain significantly different values (from
the notmal ones)
in THOSE EXCACT CASES when we read wrong values from DOR)

I use fast Atmel RISC AVR microcontoller, without interrupts
(polling DRDY waiting for DRDY=0), all interrupts in microcontroller
are disabled while waiting. Programming language - assembler,
I'm sure I have full control of what microcontroller is doing.

Additional info:
Clock frequency - 1 MHz, ceramic oscillator with 6 pf capasitors.
Digital I/O levels: 0V and +3V (microcontroller is powered with +3V)
Microcontroller: AT90S8515 (Atmel AVR RISC) at 1 MHz (separate
oscillator)

Example read log:
(Registrs a read Least Significant Byte first)

Correct read session:
0x26, 0x00, 0x10, 0x4A - always correct CMR (as written)
0xCD, 0xA5, 0x12 - correct DOR (based on actual input voltage)
0x80, 0xF8, 0xFF - some OCR value, have no idea if it's correct
0xF6, 0x2d, 0x6A - correct FCR (this value: 0x6A appears
always, in all correct cases)

Erroneous read session:
0x26, 0x00, 0x10, 0x4A - always correct CMR (as written)
0x00, 0x00, 0x00 - erroneous DOR
0x80, 0xDB, 0x73 - some OCR value, have no idea if it's correct
0x00, 0x00, 0xE0 - erroneous FCR (this value: 0x00, 0x00, 0xE0 appears
often, in most of erroneous cases)


I can provide program code if needed.

Thank you.