Microchip MCP3208 Ansteuerung

OP #4863639
Hallo allerseits,

ich habe eigentlich keine komplizierte Frage zur Ansteuerung. Ich hab 
einen 12-Bit A/D Wandler MCP3208 und habe auch einen Code für ein Python 
Skript mit dem ich Daten auslese. Ich würde nur mal gerne wissen, wie 
dieser Code technisch interpretiert werden kann. Aus dem Datenblatt 
wurde ich nicht schlau...

Der Code, den ich zum Auslesen nutze lautet:

#################
import spidev

def readChannel(channel):
  val = spi.xfer2([6+((4&channel)>>2),(3&channel)<<6,0])
  data = ((val[1]&15) << 8) + val[2]
  return data
#################

Ich habe das gefunden
xfer2(list of values[, speed_hz, delay_usec, bits_per_word])

Ich denke, da es ein 12 Bit Wandler ist brauche ich zwei Bytes in val[] 
von denen ich 4 Stellen verwerfe. Aber die Rechnungen dahin habe ich 
nicht ganz verstanden...

Für Hilfe wäre ich dankbar,

Steven
Guck dir im Datenblatt das Figure 6-1 an.
http://ww1.microchip.com/downloads/en/devicedoc/21298c.pdf

Es werden in jeder Richtung 3 Bytes übertragen.
Die Bitshifterei für "channel" ist nötig, da das 3. Bit der Kanalnummer 
in Bit 0 des Bytes 0 (1. Byte) erwartet wird, und Bits 2 und 1 in Bit 7 
und 6 des Bytes 1 (2. Byte).
Das Addieren von 6 im ersten Byte setzt sowohl das Start-Bit als auch 
SGL/DIFF.

Der ADC Wert ist dann in den Rückgabe Bytes 1 und 2 (2. und 3. Byte) zu 
finden.
1
val[1] & 15
maskiert die untersten 4 Bits (15 = 0x0F), stellt also sicher, dass die 
oberen 4 Bits auf 0 gesetzt sind.
Diese 4 Bits werden dann um 8 nach links geshiftet, da sie ja die Bits 
8, 9, 10 und 11 des ADC Wertes sind.
1
val[2]
kann unverändert bleiben, da hier alle Bits schon an der richtigen 
Stelle sind.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.