Hallo,
Stimmt die Übertragungsgeschwindigkeit des II2-Buses?
In BMP180.c werden 8MHz als Systemtakt angenommen.
MfG Peter(TOO)
Hallo,
Stimmt die Übertragungsgeschwindigkeit des II2-Buses?
In BMP180.c werden 8MHz als Systemtakt angenommen.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Hallo Peter,
ich habe ja noch eine RTC mit an dem I²C Bus dass funktioniert klasse.
- - - Aktualisiert - - -
Um jetzt ein Ergebniss zu bekommen...
Welche Funktionen muss ich nacheinander aufrufen?
Bei deinen Funktionen gibt es "start_messung" | "start_temperatur"...
Was muss ich aufrufen um den Druck zu erhalten? (Sorry für die vielen Fragen!)
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
Wie würdest du das denn auf englisch formulieren? Steht doch bereits in meinem ersten Post.Was muss ich aufrufen um den Druck zu erhalten? (Sorry für die vielen Fragen!)
Du darfst auch gern in der Funktion den Quelltext lesen. Die Berechnung ist ans DB angelehnt und sollte für einen Eingelesenen verständlich sein.
雅思特史特芬
开发及研究
Ich fange gerade erst mit "C" richtig an.
Was muss ich denn für einen Parameter in der Funktion eingeben? Ich habe bisher nichts so wirklich mit "Pointern" gemacht.char bmp180_get_cal_param(bmp180_calc_t *cal)
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
bmp180_calc_t cal;
char id = 0;
if(bmp180_online(&id))
{
bmp180_get_cal_param(&cal);
...
}
// &cal liefert die Adresse vom Struct cal
Man lernt am Besten, wenn man seine Fehler selber macht.
雅思特史特芬
开发及研究
Muss erstmal mein ganzes Programm ausbauen.
Schade das du daraus keine fertige Library gemacht hast. Wenn ich es hin bekommen habe, melde ich mich zurück.
- - - Aktualisiert - - -
Ich bekomme es leider noch nicht so wirklich mit der Struktur auf die Kette, wollte aus deinen Routinen jetzt eine Library erstellen und die Variablen in der Header Datei für "extern" bekannt geben.
Was mache ich verkehrt ?
#define BMP180 0xEE
#define BMP180_SCO 5
typedef struct bmp180_calc
{
int AC1;
int AC2;
int AC3;
unsigned int AC4;
unsigned int AC5;
unsigned int AC6;
int B1;
int B2;
int MB;
int MC;
int MD;
}bmp180_calc_t;
extern bmp180_calc_t cal;
extern char bmp180_get_cal_param(bmp180_calc_t *cal);
extern char bmp180_readBytes(unsigned char *values, char length);
extern char bmp180_readInt(char address, int *value);
extern char bmp180_readUInt(char address, unsigned int *value);
extern char bmp180_readByte(char address, char *value);
extern char bmp180_readUByte(char address, unsigned char *value);
extern char bmp180_writeBytes(unsigned char *values, char length);
extern char bmp180_writeByte(char address, char value);
extern char bmp180_start_temp(int *value);
extern char bmp180_start_druck(long *value, unsigned char oss);
extern char bmp180_get_temp(bmp180_calc_t cal, long *temperatur);
extern char bmp180_get_druck(bmp180_calc_t cal, long *druck, unsigned char oss, long *temperatur, int *temp, long *press);
extern char bmp180_online(char *id);
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
Hallo,
Es gibt verschiedene maximale Geschwindigkeiten für den I2C.
Zudem ist auch das Detail-Timing etwas unterschiedlich.
Aufschluss geben die Datenblätter!
Der RTC kann z.B. für eine höhere Bus-Geschwindigkeit ausgelegt sein, als deine Sensoren.
Ursprünglich wurde der I2C mit 100kBit/s spezifiziert. Dann kamen 400kBit/s, 3,4 MBit/s, 1 MBit/s und als Letztes 5 MBit/s dazu. Wobei dies alles "bis zu" Werte sind, langsamer geht immer!
Protokolle gibt es auch noch unterschiedliche.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Sobald du die .h einbindest, hast du doch bereits das struct. Das ist die komplette .h nur ohne #ifdef. Da solltest du kein extern mehr benötigen für das struct. Und der Rest war in der .c was du auch nur noch zusammenkopieren musst. Dann includest du noch die .h und die I2C und twi Geschichten und ab geht er. Ich wollte jetzt hier eigentlich kein c Tutorial draus machen.
In deiner main.c brauchst du natürlich auch das bmp180.h als include.
雅思特史特芬
开发及研究
achsobesten dank
Geändert von Janiiix3 (19.05.2015 um 16:40 Uhr)
__________________________________________________ _________________
/*Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.*/
( <-- Das ist Glubschie, er ist nett )
Schon mal nicht verkehrt. Jetzt siehst du dir mal die i2cmaster.h an und überlegst, wozu da wohl die erste, zweite und letzte Zeile drin sind und wie du das eindeutig für dich anpassen kannst. Und dann kannst du die bmp180.h auch in die main includieren ohne das es gemeckertes gibt..
雅思特史特芬
开发及研究
Lesezeichen