www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C-Schnittstelle auslesen


Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
I2C_Start()
I2C_Write(SlaveIdRead)
MSB = I2C_Read_ACK()
LSB = I2C_Read_NACK()
I2C_Stop()

Entfernung = Makeint(LSB , MSB) 

Return Entfernung

End Sub

Sub Makeint(A As Byte , B As Byte) As Word
Dim tmp As Word
tmp = A 
tmp << 7 
tmp = tmp + B 
Return tmp
End Sub 

MfG
Basti

Autor: ROFL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.