Forum: Mikrocontroller und Digitale Elektronik Atmega8 - BMP180 Luftdruck lässt sich nicht auslesen


von Thomas F. (thomas41587)


Lesenswert?

Hallo zusammen,

Ich habe bereits den SHT21 Temperatur und Feuchte Sensor per I2C an 
meinen Atmega8 angebunden. Jetzt benötige ich noch den BMP180 für den 
Lufdruck. Allerdings scheitere ich immer wieder am auslesen.
Die Temperatur und die Komponsationsdaten des BMP180 kann ich ohne 
Probleme auslesen und es kommt auch eine plausible Temperatur dabei 
raus.
Bei dem Luftdruck bekomme ich aber zum einen immer einen negativen Wert 
und zum anderen (was ich überhaupt nicht verstehe) funktioniert das 
Auslesen der Temperatur nicht mehr, sobald ich 1x versucht habe den 
Druck auszulesen. Erst ein Neustart des Atmega8 behebt das Problem (so 
lange, bis ich erneut versuche den Druck abzufragen).
Ich habe auch schon testweise die kompletten Berechnungen, die nach dem 
Datenempfang gemacht werden müssen, um den tatsächlichen Druck zu 
erhalten auskommentiert. Aber trotzdem "zerstört" der Aufruf von 
Bmp180Press() die Temperaturmessung des BMP180.
1
long Bmp180Press(){
2
  unsigned char ret;
3
  short data = NULL;
4
  long pressLong = NULL;
5
  short oss = 0;
6
  ret = i2c_start((0x77<<1)+I2C_WRITE);
7
  if ( ret ) {
8
    i2c_stop();
9
  }
10
  else{
11
    i2c_write(0xF4);
12
    i2c_write(0x34+(oss<<6));
13
    _delay_ms(6);
14
    i2c_rep_start((0x77<<1)+I2C_WRITE);
15
    i2c_write(0xF6);
16
    i2c_rep_start((0x77<<1)+I2C_READ);
17
    data = i2c_readAck();
18
    data = data << 8;
19
    data = data | i2c_readNak();
20
    i2c_stop();
21
  }
22
  pressLong = (data << 8);
23
  pressLong = pressLong >> (8-oss);
24
  ...
25
  //Berechnungen
26
  ...
27
  return pressLong;
28
}

Ich wäre für Ratschläge sehr dankbar, da ich überhaupt keine Idee mehr 
habe, wo der Fehler liegen könnte

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.