0x80 ist ein Statuscode, wenn der Controller als Slave arbeitet.
Bin mir gerade nicht ganz sicher, ober ein Slave ein Slave abfragen kann, da der pcf8591 ja auch als Slave am TWI angeschlossen wird.
Was für eine Bibliothek verwendes du?
Hi ich bekomme immer 0x80 zurückgeschickt.
weiss nicht mehr weiter hier mein code.
DankeCode:unsigned char read_pcf8591(unsigned char adc) { unsigned char ret; unsigned char byte = 0; ret = i2c_start(pcf8591_address+I2C_WRITE); // Sende Start Condition if(ret!=0) { i2c_stop(); uart_puts("Io1f"); return 0; } ret = i2c_write(0); // Senden des Control Bytes startet die A/D Wandlung i2c_stop(); // Sende Stop Condition, Bus freigeben*/ delay_ms(1); // Warten bis A/D Wandlung benedet (mind. 90µs) ret = i2c_start(pcf8591_address+I2C_READ); // Sende Start Condition // Mehrmaliges Lesen um alte A/D Werte zu ignorieren byte = i2c_readAck(); // Lese Byte + no acknowledge*/ byte = i2c_readNak(); // Lese Byte + no acknowledge*/ i2c_stop(); // Sende Stop Condition, Bus freigeben return byte; }
0x80 ist ein Statuscode, wenn der Controller als Slave arbeitet.
Bin mir gerade nicht ganz sicher, ober ein Slave ein Slave abfragen kann, da der pcf8591 ja auch als Slave am TWI angeschlossen wird.
Was für eine Bibliothek verwendes du?
Ich benutze die von Peter Fluery. Aber ich kann doch auch andere Geraete one Probleme abfragen??? Wieso soll das hier anders sein?
Ich fergas noch was zu sagen das ansprechen funktioniert, wenn ich den ic weg nehme bekomme ich eine fehler meldung siehe
if(ret!=0)
{
i2c_stop();
uart_puts("Io1f");
return 0;
}
Somit kann es ja nicht slave slave sein, und die variable adc ist auf 0 gesetzt um den ersten adc auszulesen Hilfe bitte Danke...
Hat wirklich keiner ne Idee ?
Fragen:
1. I2C-Adresse richtig? Adresspins richtig beschaltet?
2. Wirklich Stop-Bedingung nach Schreiben der Adresse? (Ich würde auch Rep-Start probieren)
3. Richtiger ADC beschaltet? Wie?
Gruß
Dirk
Ich werde Rep-Start mal testen.
Lesezeichen