Hallo, ich kämpfe gerade mit I²C bus. Ich steuer über ein Master, 2 Slaves. Der Master kommuniziert und der Slave empfängt(nur ein Slave empfängt und der zweiter reagiert nicht mal auf seine Adresse). Nun das Hauptproblem ist, soald ich den zweiten Slave dazu schalte, dass mein I²C Bus zusammenbricht. Ich habe die Platinen nach kurzschlüsse überprüft und die SCL und SDA Leitungen überprüft und nichts gefunden. Kann mir jem. helfen? Danke.
Zwei Sachen Spontan...hast Du Dein Slave wirklcih richtig beschaltet und hat es überhaupt ein I2C...(D- und D+ sieht mir nach was anderem aus)? Zum anderen, Wie groß sind Deine Pull-Up's und an was für einer Versorgungsspannung hängen die?
ich verwende ein Atmega 168 als slave. Die Pullups sind 15K(hatte kein 10K) Danke
Widerstände kleiner machen, das hilft die Kapazität der Leitung wieder schneller aufzuladen (glaube zwar nicht dasses das ist, aber man hat ja keine Angaben über deine Leitungslänge) Mit welcher Geschwindigkeit kommunizierst du?
Hallo Die Leitung ist nicht länger als 30cm. Ich kommuniziere mit 2kHz. Sobald ich den zweiten an die Leitung anschließe bircht der Bus zusammen. Ist mein Slave prog so richtig? oder habe ich da was vergessen? int main() { init_input(); TWAR = 0x80; //Slave address --> 0x40 TWCR = ((1<<TWEA)|(1<<TWEN)); // Activate slave acknowledge while(1) { data == TWDR; } switch(data) { case(0x80): { TWCR = ((1<<TWEA)|(1<<TWEN)); // Activate slave acknowledge dimming_function(); } break; case(0x20): { TWCR = ((1<<TWEA)|(1<<TWEN)); // Activate slave acknowledge pwm_function(); } break; } } Danke
Dimithri schrieb: > Ich kommuniziere mit 2kHz Schau dir die Spezifikationen an, ich denke 100kHz ist Standard. Versuchs mal damit.
Hi >Ist mein Slave prog so richtig? oder habe ich da was vergessen? Bitte lesen: http://www.atmel.com/Images/doc2565.pdf http://www.atmel.com/Images/AVR311.zip MfG Spess
weil laut DB muss ich nur den TWAR mit der Adresse und TWCR für ACK aktivieren. so wie es aussieht muss ich noch einiges beachten. danke
Kannst du die Slave's ansprechen, wenn immer nur einer am Bus hängt? Ich vermute einen Programmfehler der Slaves, die nach der ersten Kommunikation den Bus nicht wieder freigeben.
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.