Twi hängt in der while Schleife..

Gast #3709783
Lesenswert?

Gute Tag, habe zwar schon paar Themen durch gelesen war bin aber nicht 
draus schlauer geworden, deswegen wollte ich hier selbst mal fragen.

Die Frage ist Hardware oder Software Fehler..evtl. hilft mir einer dies 
einzugrenzen.

Bevor ich mir eine Platine mit mehreren PCF8574 machen will, wollte ich 
mich erst mal mitn Code befassen. Und dies aufn Testboard mit einem PCF 
testen.

Er hängt hier
1
// send START condition
2
  TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
3

4
  // wait until transmission completed
5
  while(!(TWCR & (1<<TWINT)));

Benutzt wird die Routine von P.Fleury.

Im Anhang habe ich die 2 Text-Dateien ( die i2cmaster.c und meine Main )

Evtl seht ihr ja was.

Die 3 Adress Pin werden gegen GND Gezogen, und ich wollte einfach mal 
alle PINS aus/an schalten.

SDA SCL werden mit 4k7Ohm gegen Vcc gezogen. Ansonsten sind direkt 2 
kurze Strippe zum Atmega32. Die SDA und SCL haben sonst zu nichts 
Kontakt.

Hardware schließe ich eigentlich aus ,weil ich mir keinen großen Reim 
mehr drauf machen kann.
Angehängte Dateien:
#3709840
Lesenswert?

Hallo,

also wenn er wirklich in der gezeigten while hängt, dann schlägt schon 
das senden Startcondition fehl - das muss selbst ohne angeschlossenen 
Slave gehen, was eher auf einen Hardwarefehler hindeutet. Klemm den PCF 
mal ab - dann müsste er in der while nach dem senden der Deviceadresse 
hängen bleiben.
Gast #3710205
Lesenswert?

Welchen Pegel haben die beiden Leitungen SDA und SCL, während du am 
Mikrocontroller die Reset Taste gedrück hälst? Es sollten 5V sein (bzw 
wie hoch auch immer VCC ist).

Ist das dicke schwarze Kabel die GND Verbindung zwischen 
Mikrocontroller-Platine und Steckbrett? Wenn nicht, verbinde GND 
miteinander.
Gast #3710845
Lesenswert?

Ja, ist GND.

Wenn man nun misst wenn man nicht Debuggt, liegen so 4,85V am SDA um den 
dreh an.
Debuggt man, liegt am SDA 0,211V an ca.

Die SCL Leitung bleibt bei 5V.

Veränderung des PullUp's bewirkt keine änderung leider.
Gast #3711000
Lesenswert?

Ich hätte erwartet, dass SCL und SDA beide die gleiche Spannung haben, 
und zwar 5V oder knapp darunter.

Zu Beginn der Kommunikation müssten beide Leitungen auf Low gehen. Hast 
Du kein Oszilloskop oder wenigstens einen Logikanalyzer? Wenn nicht, 
könnte es hilfreich sein, auf software SPI umzusteigen, denn dann kannst 
Du bei jeden Teilschritt der Datenübertragung einen Breakpoint setzen 
und nachmessen.

Hast Du denn nun GND der beiden Platinen verbunden?
Gast #3711051
Lesenswert?

So hab nen Ozi geholt..uns gemessen.

Ich messe nur den Pegel SDA etwas unter 5V, wenn ich das Programm nicht 
starte. Starte ich nun das Programm habe ich ein Singal Rechtecke, also 
ein Signal überträgt er, allerdings nur 3,3V ca.

Die Clock Macht nix..aktivere ich die interne PullUps habe ich ein Clock 
bei 5V..ganz Komische Geschichte
Gast #3711324
Lesenswert?

JA tut mir leid für meine Fehlerbeschreibung.

Es geht auf einmal, frag bitte aber nicht warum.

Hab es beleidigt, Reset Taster 100x gedrückt und ein Kurzschluss 
zwischen SDA SCL verursacht und es ging plötzlich...aber ich bedanke 
mich für eure Hilfe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren