Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: I2C (I²C / IIC) Kann nur eine Senderoutine rausschicken??? Kategorie: CC-Pro Unit & Appl.Board (von Gunter - 30.03.2008 20:55)
Als Antwort auf I2C (I²C / IIC) Kann nur eine Senderoutine rausschicken??? von ToKu - 21.11.2006 14:33
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
> Hallo.
>
> Ich steuere eine I2C Porterweiterung mit meiner CCPro 128 und bekomme nur einmal Daten raus.
> Ich weiß nicht wieso!
>
> Senderoutine:
> 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.
>
> Datenpacket:
>     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.


    Antwort schreiben


Antworten: