-
        

Ergebnis 1 bis 3 von 3

Thema: I2C: Errorcode 0x20 und 0x48

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    21
    Beiträge
    175

    I2C: Errorcode 0x20 und 0x48

    Anzeige

    Hallo,

    ich habe folgendes Programm für die M32 geschrieben, das die Lichtsensorenwerte von der Base ausliest:

    Code:
    #include "RP6ControlLib.h"
    #include "RP6I2CmasterTWI.h"
    
    #define RP6_I2C_ADDR 10
    
    
    void I2C_transmissionError(uint8_t errorState) 
     { 
      writeString_P("\nI2C ERROR - TWI STATE: 0x"); 
      writeInteger(errorState, HEX); 
      writeChar('\n');
      beep(200, 50);
     }
    
    
    void readLightSensors(void)
     {
      uint8_t Lichtsensoren[4];
      
      I2CTWI_transmitByte(RP6_I2C_ADDR, 13);
      I2CTWI_readBytes(RP6_I2C_ADDR, Lichtsensoren, 4);
      clearLCD();
      setCursorPosLCD(0,0);
      writeIntegerLCD(Lichtsensoren[0] + (Lichtsensoren[1]<<8), DEC);
      setCursorPosLCD(1,0);
      writeIntegerLCD(Lichtsensoren[2] + (Lichtsensoren[3]<<8), DEC);
        
     }
    
    int main(void)
     {
      initRP6Control();
      initLCD();
     
       
      //I2C-Bus initialisieren
      I2CTWI_initMaster(100);  
      I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); 
      
      startStopwatch1();
     
      while(true)
       {
        if(getStopwatch1()>100)
    	 {
    	  readLightSensors();
    	  setStopwatch1(0);
    	 }
    	
       }
      return 0;
     }
    Am Anfang bekomme ich immer drei Fehlermeldungen im Terminal:

    I2C ERROR - TWI STATE: 0x20
    I2C ERROR - TWI STATE: 0x20
    I2C ERROR - TWI STATE: 0x48

    danach funktioniert das Programm tadellos.
    Woran könnte das liegen?

    lg
    Michi

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    0x20 heisst, auf das Adressbyte (write) ist kein ACK zurückgekommen
    0x48 heisst, auf das Adressbyte (read) ist kein ACK zurückgekommen

    wenn es danach funzt, ist der Slave (die Base) offenbar erst etwas später bereit. Du kannst es in dieser Situation eigentlich ignorieren.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.04.2009
    Ort
    Wörgl
    Alter
    21
    Beiträge
    175
    danke!

    lg
    Michi

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •