Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > > > > Hallo Zusammen! > > > > > > > > > > > > > > > > > > > > > > > > ...in der Doku zum PCF8574 hab ich gelesen, daß man die Ports auch einzeln ansteuern kann (Bit) > > > > > > > > so wie die Ports der Mega 128, (z.B.Port_WriteBit(15,1) ). Im Forum CC2 gibt es einen Treiber für > > > > > > > > der Ports. Ist dies auch bei der Mega128 möglich, wenn ja wie? > > > > > > > > > > > > > > > > Danke für die Hilfe! > > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > ich habe die Doku kurz angeschaut und nur gesehen, das man immer ein komplettes Byte an I2C > > > > > > > schickt. Du mußt Dir halt einfach den Zustand aller Ports merken, und dann veränderst Du halt > > > > > > > nur ein Bit für den zu ändernden Port im gesendeten Byte. > > > > > > > > > > > > > > Siehe auch: http://www.mikrocontroller.net/articles/Port-Expander_PCF8574 > > > > > > > > > > > > > > Gruss Peter > > > > > > > > > > > > Hallo Peter! > > > > > > > > > > > > ...danke für die Antwort. Ich hab auch nichts weiteres dazu gefunden, man kann bei der Mega 128 > > > > > > wohl nur ein komplettes Byte senden. > > > > > > Da ich Anfänger bin, könntest Du mir kurz erklären, wie ich nur ein Bit verändere. > > > > > > Ich lese mit I2C_Read_ACK das Byte und will z.b.das erste Bit von 0 >1 setzen... > > > > > > wie mach ich das??? Evtl. kleines Demo Programm?! > > > > > > > > > > > > Bytes an den PCF8574 zu senden und zu lesen ist kein Problem, aber dafür hab ich keine Idee... > > > > > > > > > > > > Danke erstmal... > > > > > > > > > > > > > > > > > > Gruß Wolfgang > > > > > > > > > > Hallo Wolfgang, > > > > > > > > > > man kann bei I2C immer nur komplette Bytes senden, und nicht einzelne Bits. Schau Dir am besten > > > > > das I2C Protokoll genauer an. Links: > > > > > > > > > > http://de.wikipedia.org/wiki/I%C2%B2C > > > > > http://www.mikrocontroller.net/articles/I2C > > > > > > > > > > Du schickst an den PCF8574 immer ein Byte mit allen Werten für alle 8 Portbits. Wenn Du nur einen > > > > > Portausgang verändern möchtest, so änderst Du auch nur das Bit an der jeweiligen Stelle in dem > > > > > Byte was Du schickst. > > > > > > > > > > I2C_Init(I2C_100kHz); // I2C Bit Rate: 100 kHz - nur einmal im Programm aufrufen > > > > > > > > > > // Wert an PCF8574 schicken > > > > > I2C_Start(); > > > > > I2C_Write(0x40); // DEVICE ADDRESS : 0x40 + untere Addressbits > > > > > I2C_Write(portvalue); // Bit Werte von allen 8 portbits > > > > > I2C_Stop(); > > > > > > > > > > Du mußt auf jeden Fall das I2C Protokoll verstanden haben, sonst kommst Du auf Dauer nicht > > > > > weiter. Es gibt in den Demoprogrammen auch ein Projekt, welches auf ein I2C EEPROM zugreift. > > > > > Zusammen mit dem 24C64 Datenblatt hilft das zusätzlich den Zugriff zu verstehen. > > > > > > > > > > Gruss Peter > > > > > > > > > > > > > > > P.S. Lautet Deine email Adresse nun "a-puetz@a.." oder "j-meinberg@a.."? :-) > > > > > > > > > > > > Danke für die schnelle Antwort....ich glaube ich hab mein Problem schlecht, mißverständlich > > > > beschrieben.....das Problem ist folgendes: > > > > Verschiedene Byte auf den PCF8574 schreiben uind lesen ist kein Problem. > > > > > > > > Ich möchte eigentlich folgendes machen: > > > > > > > > Ich schreibe ein Byte, sagen wir 00000001 zum PCF8547. Wenn dann z.B. "Taster1" = 0 > > > > dann soll das vierte Bit zu "1" wechseln, die "1" des ersten Bit´s soll unverändert bleiben. > > > > ( 00001001) > > > > > > > > Mein Gedanke ist zuerst das Byte vom PCF8574 zu lesen, im Byte > > > > das 4.Bit auf "1" setzen und dann wieder in den PCF zurückzuschreiben...theoretisch... > > > > > > > > Mein Problem ist eigentlich "nur" wie verändere ich im Programm das gelesene Byte? > > > > > > > > Gelesen 00000001...."wenn Taster1 betätigt" dann soll vom > > > > gelesenen Byte das 4.Bit "1" werden> 00001001 > > > > > > > > Danke nochmal! Werde auch mal in Deinen Links mich schlau machen! > > > > > > > > Gruß Wolfgang > > > > > > Hallo Wolfgang, > > > > > > laut Doku ist das lesen vom PCF8547 nur für Eingänge gedacht, es wird wohl nicht > > > funktionieren die Konfiguration der Ausgänge rücklesen zu wollen. Du mußt Dir halt in > > > einer byte Variable den Zustand merken. So ändert man einzelne Bits in Bytes: > > > > > > var= var|0x08; // 0x08 = 4. Bit wird gesetzt oder > > > var= var|(1<<3); // 4. Bit wird gesetzt > > > > > > var= var&(~0x08); // 0x08 = 4. Bit wird zurückgesetzt - ausmaskieren mit dem Inversen > > > > > > Ausmaskieren heißt hier ein Undieren mit allen Bits = 1, außer dem Bit was ich zurücksetzen > > > will. Schau Dir mal die Boolesche Algebra an und wie man in Programmiersprachen damit umgeht. > > > > > > Gruss Peter > > > > Hallo Peter! > > > > ...danke für Deine Hilfe! > > > > Werde mich jetzt intensiv damit auseinandersetzen und meine Erfolge oder? Mißerfolge mitteilen! > > > > Gruß Wolfgang > > > > ...hier noch meine E-Mail-Adresse: j-meinberg@alice.de > > Hallo Wolfgang, > ich kann Dir einen Auszug aus einem Programm mit PCF 8574 schicken, > wenn Du noch interessiert bist. > Dazu meine mail-adresse: manfred.d.schulz@gmx.net > gruss > manfred