PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PCF 8574A an Mega8 ... suche Programmbeispiel



kowolfgang
14.02.2006, 14:05
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

albundy
14.02.2006, 15:08
... ein einfaches ganz minimalistisches I²C Bus Programm


Config Sda = Portx.x
Config Scl = Portx.y

Const Pcf8574 = &H40 'Adresse PCF8574
I2csend Pcf8574 , &HFF 'alle Ausgänge auf Height


Die Adresse $40 gilt, wenn A0, A1 und A2 auf GND liegen.

kowolfgang
15.02.2006, 10:54
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

Torsten_G
15.02.2006, 12:57
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

kowolfgang
15.02.2006, 13:41
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 O:) O:)

albundy
15.02.2006, 15:33
... nur irgendwie kommt am PCF nichts an.

Hast du die Pullup Widerstände an SCK und SCL gegen +5V drin, sonst kommt am PCF nichts an.

linux_80
15.02.2006, 19:48
Hallo,

wenn das wirklich ein PCF8574A war/ist, dann ist die Adresse $70, beim PCF8574 ohne A ist sie $40 !

kowolfgang
15.02.2006, 20:06
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 \:D/ \:D/ \:D/