PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe PCF8591 C code probleme



xxfreshman
01.10.2013, 20:52
Hi ich bekomme immer 0x80 zurückgeschickt.

weiss nicht mehr weiter hier mein code.



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;
}


Danke :-)

Jimmybot
01.10.2013, 21:33
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?

xxfreshman
02.10.2013, 09:49
Ich benutze die von Peter Fluery. Aber ich kann doch auch andere Geraete one Probleme abfragen??? Wieso soll das hier anders sein?

xxfreshman
02.10.2013, 22:50
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...

xxfreshman
03.10.2013, 04:37
Hat wirklich keiner ne Idee ?

Dirk
03.10.2013, 08:49
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?

xxfreshman
04.10.2013, 09:04
Ich werde Rep-Start mal testen.