16 Bit ADC via I²C auslesen

nuppel

Neues Mitglied
14. Jan. 2009
5
0
0
Sprachen
hallo ich programmiere eigentlich nicht in Bascom jedeoch hat mein kollege hier was angefangen und ich arbeite ihm da etwas zu.
ich bin mir nicht sicher ob ich mich hier total mit den vorgefertigten funktionen des i²c verfranz habe oder einfach die variablen net stimmen.

also ziel ist es einen 16bit adc LTC2451 via i²c auszulesen.
http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1155,C1001,C1152,P54707,D25830

eigentlich sollte das ganze recht einfach sein aber naja.
also der adc sollte mir wenn ich das nicht falsch verstanden habe 16 bit ausgeben und zwar byteweise wobei jedes byte mit einem ACK-bit bestätigt wird.

die frage ist nun wie bekomme ich die ausgegeben daten nun in eine word-variable welche ja genau die richtige größe haben sollte.

wäre für ein kleine beispiel wo das prinzip ersichtlich ist sehr dankbar
 
Hallo nuppel,

vielleicht solltest Du Dir zunächst in BASCOM ansehen, wie die Programmiersprache I2C bzw. TWI (two wire interface) bedient. Hierzu kann ich Dir die Hilfe-Funktion oder das User-Manual empfehlen.

Wenn Du nicht weiter kommst kannst Du gerne Fragen aber vor den Erfolg haben die Götter den Schweiß gesetzt und ein bisschen Arbeit und Spass sollte ja auch dabei sein.

Aber....

wie prinzipiell mit dem TWI umgegangen werden kann und wie von BASCOM aus TWI Device programmiert werden findest Du an praxisnahen Beispielen wie:

Programmierung eines externen I2C EEPROM-Bausteins 24C512:
http://www.avr-praxis.de/forum/showthread.php?t=48

Programmierung eines RTC DS1307 mit I2C-Interface:
http://www.avr-praxis.de/forum/showthread.php?t=60

Mann kann ein I2C-Protokoll auch von Hand programmieren. Dies habe ich für den Baustein SHT71 getan, der sich nicht ganz I2C-Spec-Konform verhält. Zu finden ist das unter:
http://www.avr-praxis.de/forum/showthread.php?t=46


Konkrete Antworten zu Deinen Fragen:
1. Ja, der ADC sendet Dir auf Anfrage den quantisierten 16-Bit-Wert als 2 Byte mit MSB zuerst.
2. Die zwei Bytes (MSB und LSB) kannst Du in BASCOM mit der Funktion MAKEINT(LSB, MSB) zusammensetzen und einer Word-Variable zuweisen.

Ich würde sagen, schau Dir das zunächst an und wenn Du konkrete Fragen hast dann Frage wieder nach, wir helfen Dir gerne!

Grüße,
Markus
 
so glaube das ich mitlerweile die beiden bytes korrekt auslese.
wenn ich de per hand in binär wandel zusammenstelle und ausrechne dann kommen ergebnisse die ungefähr stimmen könnten.

mein code sieht bisher so aus

Dim Buf(10)as Byte
Buf(1) = 1 : Buf(2) = 2
I2creceive Slaveadc , Buf(1) , 0, 2
Lcd Buf(1)
Locate 2 , 1
Lcd Buf(2)

die frage ist nun wie ich die 2 byte variablen zu einer word verbinde
 
hier werden sie geholfen

Hi,
ist ja super wenn es funktioniert!
Grüße,
Markus

PS: Wenn noch Fragen sind komm einfach auf uns zu!
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)