I2C Sensor Probleme

Gast #1571387
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
Persönliche Seite #1571397
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.
Gast #1571528
Lesenswert?

Hier der Link zum Datenblatt

http://www2.produktinfo.conrad.com/datenblaetter/500000-524999/502447-da-01-de-DRUCKMODUL_I2C_DRMOD_12C_R10B.pdf

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/501994_Serial_20Digital_20Interface.pdf 
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?
Gast #1571542
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?
Gast #1571644
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
#1574624
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
Gast #1575773
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren