Hi,
ich versuch schon seit Stunden den Sensor auszulesen, aber bekomme einfach keine Antwort.
Vielleicht übersehe ich die ganze Zeit den Fehler, vielleicht ist der Sensor aber einfach defekt.
Hier der Code:
Code:
void Sensortest()
{
unsigned char xl,xm,yl,ym,zl,zm;
xl=0;xm=0;yl=0;ym=0;zl=0;zm=0;x=0;
while(1)
{
if(!(i2c_start(0x70))) // start I2C bus
{
i2c_write(2); // register
i2c_rep_start(0x70+I2C_READ); // restart
xl = i2c_readAck();
xm = i2c_readAck();
yl = i2c_readAck();
ym = i2c_readAck();
zl = i2c_readAck();
zm = i2c_readNak();
i2c_stop();
}
Kompass();// TEST
_delay_ms(1);
// Ausgabe am LCD
while (TWI_bereit()!=0)
_delay_ms(1);
i2c_start(0xb0);
i2c_write(1); // (ab) register 1
i2c_write(8); // Modus Sensortest
i2c_write(xl);
i2c_write(xm);
i2c_write(yl);
i2c_write(ym);
i2c_write(zl);
i2c_write(zm);
i2c_write(kompass_akt); // TEST
i2c_stop();
i2c_start(0xb0); // Register 200 auf 1 setzen = neue Werte
i2c_write(200);
i2c_write(1);
i2c_stop();
LED_rot_aus;
_delay_ms(300);
LED_rot_ein;
}
}
Die Ausgabe erfolgt über I2C an den Slave der das LCD ansteuert. Um sicher zu sein dass es hier keinen Fehler gibt, lese ich zusätzlich den Kompass aus (auch über I2C) und zeige auch dessen Wert am LCD an.
Die Kompasswerte sehe ich auch, aber vom Sensor nichts. Bzw wenn ich die Abfrage von if(!(i2c_start(0x70))) auf i2c_start_wait(0x70); abändere habe ich 6x den Wert 113, dh h70+1.
LG!
Lesezeichen