Forum: Mikrocontroller und Digitale Elektronik MCP3561 seltsames Verhalten


von Luca E. (derlucae98)



Lesenswert?

Hallo zusammen,

ich versuche gerade einen MCP3561 ADC auszulesen. Der ADC ist über ein 
IsoSPI-Interface (LTC6820) mit dem Master verbunden. Daher kann ich die 
Interruptleitung nicht verwenden und muss pollen.
Ich nutze den ADC, weil er eine CRC Prüfsumme an die Daten anhängt (Ist 
eine Anforderung).

Nun zu dem Problem. Ich setze beim Start die Konfigurationsregister 
(Bild 1). Dabei nutzt der ADC seine interne Clock (Die auch 
funktioniert, vgl. Bild 3, Kanal 7. Frequenz = 4,2 MHz).

Ich setze dann periodisch das Mux-Register, gefolgt von Incremental 
Read-Kommandos ab Adresse 0 (ADCDATA) (Bild 2). Das mache ich so lange, 
bis das Bit /DR_STATUS (Data ready) im Status-Byte 0 ist (Bild 4).
So wie ich das Datenblatt verstehe, sollte der ADC mit der gesetzten 
Config selbstständig Messungen durchführen.

Zum testen setze ich den Mux auf die interne Temperaturmessung, um 
Fehler von Extern auszuschließen. Aber das Ergebnis ist eigentlich immer 
dasselbe.
Der gelesene ADC-Wert ist immer 0.

Aufgrund der Tatsache, dass es teilweise über eine Millisekunde dauert, 
bis das /DR_STATUS Bit auf 0 springt, gehe ich von einem 
Konfigurationsfehler aus.

Die Versorgungsspannung ist Ok und die Referenzspannung ist auch in 
Ordnung.

Vielleicht hat ja jemand eine Idee.

https://ww1.microchip.com/downloads/en/DeviceDoc/MCP3561-2-4-Two-Four-Eight-Channel-153.6-ksps-Low-Noise-24-Bit-Delta-Sigma-ADCs-DS20006181B.pdf

Edit: Ach mist, während der Beitrag noch nicht abgeschickt war, habe ich 
nochmal im Code rumgepfuscht. sensor_2.c ist die zum Thread passende 
Datei...

: Bearbeitet durch User
Beitrag #6790969 wurde von einem Moderator gelöscht.
von Roderik (Gast)


Lesenswert?

Hallo Luca,

spontan, ohne Deinen Code durchgegangen zu sein: Ich hatte mit dem 
verwandten 3564 ein ähnliches Problem. Es lag letztendlich daran, dass 
der ~IRQ-Pin im High-Z-Mode einen Pull-Up benötigt. Hatte ich zunächst 
im Datenblatt, Section 3.4, überlesen. Vielleich liegts daran?

Hier 
(https://stackoverflow.com/questions/62436715/adc-mcp3561-not-returning-conversion-values 
, versteckt im Post unter der Antwort) wurde ein ähnliches Problem u.a. 
wohl auch so behoben.


VG
Roderick

von Luca E. (derlucae98)


Lesenswert?

Hallo Roderik,

das kann tatsächlich das Problem sein. Der IRQ Pin ist aktuell 
unbeschaltet. Steht tatsächlich explizit im Datenblatt, dass der einen 
Pullup braucht. Klarer Fall von RTFM mal wieder...

Ich hatte in der Zwischenzeit sogar Kontakt mit Microchip. Dort hat man 
meinen Code getestet und keinen Fehler festgestellt. Hab dann 
letztendlich eine andere Lösung gefunden.

Ich probiere das die Tage mal aus. Dann kriege ich die ADCs, die hier 
jetzt rumliegen, vielleicht doch noch verbaut. ;-)

von Luca E. (derlucae98)


Lesenswert?

Das war der Fehler. Nun bekomme ich valide Werte. Danke für den Tipp!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.