Avatar billede sonped Nybegynder
24. oktober 2007 - 19:49 Der er 1 løsning

i2c acknowledge signal

Hej

Jeg har problemer med at sende et ACK signal fra master til slave. Efter at master har modtaget en byte vil jeg gerne sende et ACK signal til min eeprom for at indikere at jeg gerne vil have en byte mere.
Jeg kan dog ikke få det at sende ACK signal til at virke, i vært fald modtager jeg ikke byte nr. 2

unsigned char readDataACK(void)
{
    unsigned char readDataIn;       
    int k = SDATA;                // Put data pin into read mode

    readDataIn = 0x00;
   
    for(k = 0; k < 8; k++)         // read 8 bits from the I2C Bus
    {
        SCLK = HIGH;          // Clock the data into the I2C Bus
        SCLK = HIGH;          // Clock the data into the I2C Bus
        readDataIn <<= 1;    // Shift the byte left by one bit
        readDataIn |= SDATA;  // Input the data from the I2C Bus  |= bitvis tilføjelse
        SCLK = LOW;
        SCLK = LOW;
    }
               
    // "0" ACK Signal to eeprom
    SDATA = LOW;
    SCLK = HIGH;                       
    SCLK = HIGH;
    SCLK = LOW;
    SCLK = LOW;
   
    k=SDATA;              //pin into HiZ
   
    return readDataIn;
}

Hvad er det jeg gør galt her?
Avatar billede sonped Nybegynder
31. oktober 2007 - 15:30 #1
Har fundet ud af det.
k=SDATA slipper ikke udgang, der skal skrives "0" til den.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester