Forum: Mikrocontroller und Digitale Elektronik I2C und Drucksensor (Lib Peter Fleury)


von Elmar M. (Gast)


Lesenswert?

Hallo,
ich habe ein Grundlegendes Verständnisproblem.

Ich habe einen Drucksenor welcher laut Datenblatt:
>send 2 data bytes containing the current pressure value as a 15 bit
>information placed in their output registers.

Soweit so gut. Die Slave Adresse ist 1111000xb, also
>#define SENSOR  0x78

Mein Code sieht wie folgt aus, um den Slave Sensor mit meinem Atmega 128 
auszulesen.
1
  uint8_t byte1;
2
    uint8_t byte2;
3
4
    if(!(i2c_start(SQ277+I2C_READ))) //Slave bereit zum lesen?
5
    {
6
      byte1 = i2c_readAck();                   
7
      byte2 = i2c_readNak(); 
8
      i2c_stop();
9
    }else{
10
      //Errormeldung
11
    }
So um den Sensor jetzt nutzen richtig auslesen zu können, brauche ich 
sein Ergebnis als HEX oder Dezimalzahl. Die Ausgabewerte schwanken lt 
Datenblatt zwischen 0666 und 6CCC Hexadezimal.

Ich nehme an, dass der Code so richtig ist, und die Libary von Peter 
Fleury funktioniert. Leider bin ich nicht wirklich firm mit den Bit und 
Bytehandling in C.

Kann mir jemand einen Tipp geben, wie ich die Werte bekomme. Wenn ich 
den Wert mal als INT habe, komme ich weiter.

Danke schonmal.

von Elmar M. (Gast)


Lesenswert?

Wenn es von Bedeutung ist, es wird zuerst das MSB dann LSB übertragen.

von Elmar M. (Gast)


Lesenswert?

Manchmal muss man nur wissen wonach man suchen muss... MSB und LSB haben 
geholfen...

intresult=((int16_t)(byte1) << 8) | (int16_t)(byte2) ;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.