Software-TWI: enge Clock-Frequenz oder beliebige Zeiten?

OP #2477783
Lesenswert?
• ▲
▼
Hallo,
ich möchte einen PCF8574 per Software-TWI ansprechen, weil ich die lt. 
Manual vorgesehenen Ports später nicht verwenden möchte.
Mein Problem: bei der Übermittlung der Adresse erhalte ich immer eine 
Bestätigung (Ack), aber leider auch dann, wenn ich eine falsche Adresse 
angebe.
Zugegeben, ich bin mit den Clock-Frequenzen ganz unbedarft umgegangen, 
außer den Prescaler auf 64 zu stellen, habe ich nichts weiter 
eingestellt.
Bei der Ack-Abfrage ist ein stabiler Zustand von CLK nötig, aber da wird 
von einer leeren Operation bis zu einer Millisekunde kein Unterschied 
gemacht, also ist es wohl nicht zeitkritisch.

Vielleicht enthält mein Testprogramm gravierende Fehler?
Es soll durch zwei LED's signalisieren, ob ein Ack gesendet wird.
Ob sich das vielleicht jemand mit besseren Kenntnissen als ich mal 
ansehen könnte? Wurde mir sehr helfen, weil ich einfach nicht sehe, was 
da falsch ist.

Vielen Dank schon mal!
Alexander
Angehängte Dateien:
Gast #2478874
Lesenswert?
• ▲
▼
Hallo,

ein Fehler der mir sofort auffällt ist, dass du SCL als auch SDA sowohl 
auf Low als auch auf High schaltest.
Lasse den Port-output immer auf Low und  schalte nur die Datenrichtung.
Überlasse das High-Signal den Pullup-Widerständen
Output ist dann Low und Input bedeutet High (bzw. bei SDA das was der 
Slave sagt)
Damit hast du dann ein anständiges "wired OR" wie es bei I2C verlangt 
wird!
OP #2479015
Lesenswert?
• ▲
▼
Hallo Stefan

ich habe, wie Du geschrieben hast, weitgehend die Ports nicht mehr 
direkt geschaltet. An einigen Stellen, z.B. Adressübertragung, pulse() 
usw. geht es aber wahrscheinlich nicht anders.
Ist es wirklich so, daß ein Port, den ich als low schalte, durch den 
Pullup high wird? Wird die interne Stromsenke damit nicht fertig?
Bei i2cstart habe ich einfach nur die Ports als Ausgänge gesetzt, ob das 
richtig ist?

Gruß
Alexander

PS trotz der Änderungen ist das mißliche Verhalten geblieben.
Angehängte Dateien:
OP #2479322
Lesenswert?
• ▲
▼
Stefan schrieb:
> Hallo,
>
> es muss gehn, alles andere ist Mist !!!!
>
> Probiers mal nach angehängtem Vorbild

Hallo Stefan
Hand aufs Herz - bist Du sicher, daß Deine Version wirklich 
funktioniert?
(mir erscheint es auch plausibel).
Da ich aber immer noch kein Ack bekomme, muß es doch an der Hardware 
liegen.
Ich hatte, bevor ich mich an das Forum gewandt habe, geprüft, ob die 
Eingangssignale SCL und SDA bis zum PCF8574 gelangen ( sie taten es) und 
auch zweimal die PCF's getauscht und dann vermutet, es läge an meinem 
verunglückten Testprogramm.
Aber nachdem auch mit Deiner korrigierten Version kein Ack kommt, bleibt 
nur noch weitere Suche an der Hardware. Vielleicht muß ich einen 
separaten Teststand aufbauen.
Also, ich suche weiter.

Viele Grüße
Alexander
Gast #2479349
Lesenswert?
• ▲
▼
Hallo,

ich hab die Version nicht selbst ausprobiert ob sie funktioniert oder 
nicht. Es sollte nur eine Vorlage dafür sein wie man die Signale SCL/SDA 
erzeugt (Stichwort: "wired OR").

Der I2C Bus hat aber auch noch weitere Stolpersteine.

Du verwendest z.B. in deinem Program die Adresse 124 für den PCF8574, 
dies ist aber, gleich wie du ihn beschaltest, keine gültige Adresse.
Sie muss laut Datenblatt lauten L,H,L,L,A2,A1,A0,R/W (das ist irgendwas 
zwischen 40h-4fh, entsprechend 64-79 Dezimal)

Ferner ist das Timing (Anzahl der NOPs) nicht unbeding für deine 
Hardware passend!!!

Und, Und ....

Ein bisschen musst du schon noch arbeiten !!!

Gruss Stefan

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.