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:
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

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