Hallo, ich bin echt ratlos. Ich weiss nicht, wo der Fehler liegt. Ich habe einen Drucksensor, der soweit auch funktioniert, allerdings zeigt er einen falschen Druck an (um die 30000 siehe Bild). Temperatur ist Okay, also kann es am I2C nicht liegen. Ich habe 2 Sensoren getestet und beide zeigen die gleichen Werte. Meiner Meinung nach sollten um die 10000 rauskommen. Hatte das schonmal jemand? Gruss
Stefan B. schrieb: > Hatte das schonmal jemand? Woher kommt denn die ca. 30000? Erzeugst du die Ausgabe mit einer Software und - wenn ja - wie sieht die aus?
Das sind die drei wesentlichen Teile. Ich verstehe nur nicht, warum die Temperatur stimmt. Die atmega_bmp085_lib.c habe ich auch schon nach Fehlern durchsucht, entweder ich habe da was übersehen oder meine Vermutung ist, dass der Drucksensor nen Schaden hat, wobei ich aber nicht verstehe, warum der andere Sensor das Gleiche anzeigt.
Stefan B. schrieb: > Das sind die drei wesentlichen Teile. Und welche Funktionen benutzt du davon in welcher Reihenfolge. Und was gibst du dann aufs LCD aus?
In der Main zuerst I2C: .... #include "camera/servo.h" #include "sendmail.h" #include "BMP085/atmega_bmp085_lib.h" int i2c_init(void); volatile unsigned int variable[MAX_VAR]; // RoBue: .... dann kurz vor while: .... ow_array[i]=OW_MINMAX; } DS18X20_start_meas( DS18X20_POWER_PARASITE, NULL ); for(a=0;a<1000000;a++){asm("nop");}; auslesen = 0; minmax = 1; #endif //----------------------------------------- // Allocate memory //----------------------------------------- int32_t temperature = 0; int32_t pressure = 0; int16_t BMP085_calibration_int16_t[8]; int16_t BMP085_calibration_uint16_t[3]; uint8_t error_code=0; //----------------------------------------- // Initialize Stuff //----------------------------------------- _delay_ms(11); i2c_init(); //Initialize TWI BMP085_Calibration(BMP085_calibration_int16_t, BMP085_calibration_uint16_t,&error_code);////Initialize BMP085 //Hauptschlfeife // ************* //WAIT(10000); while(1) { bmp085Convert(BMP085_calibration_int16_t, BMP085_calibration_uint16_t,&temperature, &pressure,&error_code); ...... und anschließend aufs LCD: ...... CX = LCD_C1; // erster LCD Controller lcd_clear(); lcd_print(3,0,"%i",pressure); lcd_print(3,7,"%i",temperature/10); lcd_print(3,11,"%i", bmp085CalcAltitude(pressure)); lcd_print(3,18,"%i",error_code); ....... Habe ich da was übersehen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.