I2C-Schnittstelle auslesen

Gast #1136999
Hi,

ich möchte einen Ultraschallsensor (SRF10), der über eine 
I2C-Schnittstelle Daten liefert, auslesen. Der Code ist schon fertig und 
es läuft alles. Ich möchte aber gerne mal verstehen, was da genau 
passiert.

Kann mir jemand einmal ganz knapp sagen, was im folgenden Code genau vor 
sich geht? Besonders die Funktion Makeint() ist mir noch sehr kryptisch.
1
I2C_Start()
2
I2C_Write(SlaveIdRead)
3
MSB = I2C_Read_ACK()
4
LSB = I2C_Read_NACK()
5
I2C_Stop()
6

7
Entfernung = Makeint(LSB , MSB) 
8

9
Return Entfernung
10

11
End Sub
12

13
Sub Makeint(A As Byte , B As Byte) As Word
14
Dim tmp As Word
15
tmp = A 
16
tmp << 7 
17
tmp = tmp + B 
18
Return tmp
19
End Sub

MfG
Basti
Gast #1137036
wenn du aus "tmp << 7" noch "tmp << 8" machst, wird's noch richtiger.

da ist auch irgendwo ein bytedreher drin.

Du liest ja MSB (=most significant byte) und LSB (=least significant 
byte) vom I2C Bus.

Makeint() setzt die beiden bytes dann zu einem 16 bit-Wort zusammen.

Also MSB * 256 + LSB

*256 kann man rechenzeitsparender durch 8x linksshiften (<<8) erreichen.

Da MSB in b landet und LSB in a, sollte die Funktion eigentlich heissen

wort = b<<8 + a

insofern stimmt da was mit deinem code nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.