mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Sensor Probleme


Autor: steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Liebe Community

Habe einen Drucksensor DRMOD-I2C-RV1 von der Firma Hygrosens und bekomme 
keine Daten :-(

Datenleitung und Clockleitung sind über 1,9kOhm an 5V

Hier mein Code:

$programmer = 1

$regfile = "M32def.dat"                                     ' the used 
chip
$crystal = 16000000                                         ' frequency 
used
$baud = 9600

$lib "i2c_twi.lbx"                                          ' Für 
Hardware TWI

Config Twi = 400000                                         ' Init TWBR 
und TWSR

' TWI gleich einschalten, das macht Bascom ansonsten erst beim I2CStart 
!
Twcr = &B00000100                                  ' nur TWEN setzen


Dim Druck As Word
Dim Msb_druck As Byte
Dim Lsb_druck As Byte

' Startausgabe

Do
    I2cinit
    I2cstart
    I2cwbyte &HF1
    I2crbyte Msb_druck
    I2crbyte Lsb_druck
    I2cstop

    Print Msb_druck
    Print Lsb_druck
    Waitms 2000


Loop

End

Wenn ich Msb_Druck und Lsb_Druck ausgebe steht nur "30 0D 0A"

Enthält der Code einen Fehler?

mfg

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
steff schrieb:
> Wenn ich Msb_Druck und Lsb_Druck ausgebe steht nur "30 0D 0A"

Das heisst im Klartext (ASCII): "0" CR LINEFEED

Bascom kenne ich nicht, weiß also auch nicht, was laut code ausgegeben 
werden soll. Es könnte aber sein, dass du nur die Ausgabe eines der 
Print-Kommandos angegeben hast und "30 0D 0A" zweimal ausgegeben wird. 
Ist dies der Fall, bedeutet das nur, dass Msb_Druck und Lsb_Druck gleich 
0x00 sind.

Autor: steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Link zum Datenblatt

http://www2.produktinfo.conrad.com/datenblaetter/5...

stimmt den die Adresse mit dem ich den Sensor anspreche? wenn ich statt 
&HF1, &H78 einsetze, dann bekomme ich die gleiche ausgabe.

Wenn ich wie hier 
http://www.mikrocontroller.net/attachment/46717/50... 
beschrieben bei

I2crbyte Msb_druck

ein ",ack" einfüge, bekomme ich garkeine Wert mehr angezeigt am Pc

Was um Himmelwillen mach ich da bloß falsch?

Autor: Filth __ (filth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Do
    I2cinit
    I2cstart
    I2cwbyte &H78
    I2crbyte Msb_druck, ack
    I2crbyte Lsb_druck, nack
    I2cstop

    Print Msb_druck
    Print Lsb_druck
    Waitms 2000


Loop

End

Probier es mal so. Die Adresse war meiner meinung nach flasch

Autor: steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x78 ist generell laut Aufbaublatt die Adresse. dann muss noch eine 1 
oder 0 für lesen oder schreiben gesendet werden.

Was bedeutet im Datenblatt "Die Adresse ist als 7 bit Adresse zu 
verstehen, linksbündig und mit maskiertem R/W-Bit lautet die 
Read-Adresse 0xF1" ?

Habe Datenleitung und Clockleitung mit je 1,9kOhm and 5V+ angeschlossen.
Ist das zu wenig/zu viel?

Autor: steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie fügt man dann MSB_Druck und LSB_Druck zusammen?

Laut Datenblatt Soll das erste Bit (1 bei Fehler) und die letzten 3 
Bit's weggelassen werden.
Da hät ich mir gedacht die Variablen einfach in ein Array schreiben und 
das Array wieder in eine Variable (Word). Wenn in der Word variable aber 
nur Bit's ( 1 und 0) stehen, wie bekomme ich dann eine Dezimalzahl 
draus?

Fragen über Fragen...

Hoffe ihr könnt mir helfen!

mfg

Autor: Steff Muerzi (muerzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex (und auch alle die das lesen)

Hab deinen Code ausprobiert, funktioniert aber trozdem noch immer nicht. 
Hab Datenleitung und Clockleitung mit je 1K9 (1,9kOhm) an +5 V gehängt.
Hab auch schon andere Ports am AVR probiert.....

Kommunikation sollte so sein (laut Datenblatt)

|----------------------------------------------------------------------- |
|Slaveadress | R/W Bit |  A  | Daten |   A  | Daten | ......... | STOP  |
|master      | master  |slave| slave |master| slave | ......... | master|
|----------------------------------------------------------------------- |

Slaveadresse: 0x78 und mit R/W Bit 0xF1

Wo liegt denn da jetzt der Fehler?

mfg

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich weiß sind die Sensoren keine echten i2c-kompatiblen 
Bausteine. Du wirst dich also stoisch an die Angaben des Herstellers 
halten müssen und alle vorgefertigten i2c-Routinen beiseite legen 
müssen.

Autor: Timo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prüf doch mal die Systemvariable "Err"; ist diese ungleich 0, liegt ein 
Fehler im Busverkehr vor. Im Zweifelsfall nach jedem I2C Zugriff 
auswerten. Damit solltest Du empirisch in der Lage sein, den Fehler 
(wenn es einer in der Kommunikation ist) auszuwerten.
Ich hab das Datenblatt nicht angesehen, aber Du solltest checken, ob ACK 
oder NACK bei den Leseinstruktuionen gebraucht wird. Normalerweise 
ACK...

Zum Thema Adresse: Normalerweise wird für Lesen das LSB gesetzt, d.h. 
Deine Adresse sollte wahrscheinlich &H79 lauten

Timo

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.