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

I2C (I²C / IIC) Kann nur eine Senderoutine rausschicken??? Kategorie: Programmierung C (von ToKu - 21.11.2006 14:33)
Ich nutze:
C-Control Pro Mega128, eigenes 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?


    Antwort schreiben


Antworten:

Re: I2C (I²C / IIC) Kann nur eine Senderoutine rausschicken??? (von Gunter - 30.03.2008 20:55)