... ein einfaches ganz minimalistisches I²C Bus ProgrammDie Adresse $40 gilt, wenn A0, A1 und A2 auf GND liegen.Code:Config Sda = Portx.x Config Scl = Portx.y Const Pcf8574 = &H40 'Adresse PCF8574 I2csend Pcf8574 , &HFF 'alle Ausgänge auf Height
Hallo,
ich hab mal ne kurze Frage (guter Witz). Hat jemand von euch ein einfaches ganz minimalistisches I²C Bus Programm (I²C Bus Softwaremäßig oder Hardware is mir bis jetzt wurscht so lange es läuft) für den PCF8574A ich bin hier langsam am Verzweifeln weil ich immer nur Beispiele mit nem EEPROM find und mich das kein bisschen weiter bringt.
Was ich bis jetzt herausgefunden hab is nur die Device ID (Also =0111) aber wie funktioniert das mit der Adressierung?? Man hat 3 Adresspins (A0, A1, A2) aber wie kommt man aus den Jumperstellungen von denen auf die Adresse und wie wird die Adresse dann im Programm verwendet??
Bitte Helft mir ich hab jetzt schon Tagelang daran rumgeknobelt und bin bis jetzt zu keinem Ergebnis gekommen, hab auch schon das ganze Forum durchsucht.
Danke im Voraus für eure antworten
Wolfgang
... ein einfaches ganz minimalistisches I²C Bus ProgrammDie Adresse $40 gilt, wenn A0, A1 und A2 auf GND liegen.Code:Config Sda = Portx.x Config Scl = Portx.y Const Pcf8574 = &H40 'Adresse PCF8574 I2csend Pcf8574 , &HFF 'alle Ausgänge auf Height
Danke Albundy
so etwas hab ich gesucht, hab garnicht gewusst das das so einfach ist. nur irgendwie macht mein controller da nicht mit. Also die Syntay is vollkommen OK das funktioniert alles (also das ganze $regfile .... und so) nur irgendwie kommt am PCF nichts an.
Um nochmal auf die Adressen zurück zu kommen, es gibt insgesamt ja 8 kombinationen und wie sind da dann die Adressen?
- A0, A1 und A2 = Vcc = Adresse ??
A0 und A1 = Vcc A2 = GND = Adresse ??
A0 = Vcc, A1 = GND, A2 = Vcc = Adresse ??
A0 = Vcc, A1 und A2 = GND = Adresse ??
A0 = GND , A1 und A2 = Vcc = Adresse ??
A0 = GND , A1 = Vcc , A2 = GND = Adresse??
A0 und A1 = GND, A2 = Vcc = Adresse ??
A0 , A1 und A2 = GND = Adresse &H40
Tut mir leid das ich euch mit solchen Fragen löchern muss aber ich hab nirgendwo mal eine Erklärung gefunden aus der klar wird wie man die Adresse bestimmt.
Wolfgang
Immer die Basisadresse (Siehe Datenblatt, HEX:40 = Dez:64)
+0 (A0, A1, A2 auf GND)
+2 (A0 auf VCC)
+4 (A1 auf VCC)
+8 (A2 auf VCC)
Dann hast Du die Schreibadresse, Lesedadresse ist immer Schreibadresse + 1.
Grüße
Torsten
Danke Torsten für die schnelle Antwort , mal schaun obs jetzt funzt, wobei ich schon das flaue gefühl hab das der PCF inzwischen abgekratzt is, da er an allen Ports high is obwohl der AVR immer alle Ports low sendet.
Tortzdem nochmal vielen dank, ich werde ggf. den thread fortsetzen wenns dann ans Lesen aus dem PCF geht
Hast du die Pullup Widerstände an SCK und SCL gegen +5V drin, sonst kommt am PCF nichts an.... nur irgendwie kommt am PCF nichts an.
Hallo,
wenn das wirklich ein PCF8574A war/ist, dann ist die Adresse $70, beim PCF8574 ohne A ist sie $40 !
Ja die Pullupwiderstände sind drinne (4,7K). Dann werd ich das ganze nochmal mit der $70 Probieren vielleicht klappt ja dann und der ist doch nicht abgeraucht.
Danköööö
wolfgang
EDIT: 17.2.2006
Der bus läuft, das am Anfang war meine eigene Blöödheit:
1. War das doch ein PCF8574 ohne A!!!
2. Waren die buswiderstände aus versehen nicht nach VCC sondern nach GND eingebaut
Tortzdem nochmal danke für eure behümungen \/ \/ \/
Lesezeichen