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.
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
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. ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.