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. > > > > Ich steuere eine I2C Porterweiterung mit meiner CCPro 128 und bekomme nur einmal Daten raus. > > Ich weiß nicht wieso! > > > > <b>Senderoutine:</b> > > void Write_pcf8574(byte Daten) > > { > > byte status, status_check; > > I2C_Start(); > > I2C_Write(0x4E); //0b01001110 > > // Adressierung PCF8574N Write 0100 start + [A2=1|A1=1|A0=1] + Write W=0 > > status = I2C_Status(); > > switch (status) > > { > > case 0x18://Fall 1.0 //SLA+W wurde gesendet, ACK wurde empfangen > > I2C_Write(Daten); //write Data > > status = I2C_Status(); //I2C Statusabfrage > > switch (status) > > { > > case 0x28://Fall 1.1 //Data byte wurde gesendet, ACK wurde empfangen > > I2C_Stop(); > > > > status_check = I2C_Status(); > > return (status_check); > > break; > > > > case 0x30://Fall 1.2 //Data byte wurde gesendet, NACK wurde empfangen > > Port_WriteBit(PORT_LED1,PORT_OFF); // LED2(rot) an > > break; > > > > default://Fehlermeldung über LED > > Port_WriteBit(PORT_LED1,PORT_OFF); // LED1(rot) an > > } > > break; > > > > case 0x20://Fall 2.0 //SLA+W wurde gesendet, NACK wurde empfangen > > Port_WriteBit(PORT_LED1,PORT_OFF); // LED2(rot) an > > break; > > > > default://Fehlermeldung über LED > > Port_WriteBit(PORT_LED2,PORT_OFF); // LED1(rot) an > > } > > } > > > > Bei der Routine wird mir immer, wenn was unsinniges im Status steht ein Fehlermeldung über LED > > ausgegeben. Diese ist aber aus, also müsste die Routine klappen. Das erste Datenbyte kommt auch > > an, aber ein zweites, das ich über eine Schleife schicke nicht. Auch direkt hintereinander im Progcode > > wird nicht verschickt. > > > > <b>Datenpacket:</b> > > var1 = 1; > > var2 = 2; > > > > while(1) > > { > > Daten = var1; > > Write_pcf8574(Daten); > > > > AbsDelay(100); //delay > > > > Daten = var2; > > Write_pcf8574(Daten); > > } > > } > > > > kann mir dabei weiterhelfen? > > Ich habe auch 2 Stueck PCF8574 benutzt. Ich habe eine Library dafuer geschrieben. Ebenso fuer > den PCF8583 und die fuer 24C64 und LCD_3x12 erweitert. Ich habe mich nicht um die > Reaktionen (Status) des Bausteins gekuemmert. Klappt prima. Den PCF8574 benutze ich > allerdings nur als Ausgang.