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
... 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:)
... 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/
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.