- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: SRF02 an RP6 Slave-ID ändern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63

    SRF02 an RP6 Slave-ID ändern

    Anzeige

    Praxistest und DIY Projekte
    Ich will die Slave-ID des SRF02 von 0xE0 auf 0xE2 ändern. Dafür habe ich folgenden Code:

    Code:
    // Uncommented Version of RP6Base_I2C_Master_01.c
    // written by Dominik S. Herwald
    // ------------------------------------------------------------------------------------------
    
    #include "RP6RobotBaseLib.h" 	
    #include "RP6I2CmasterTWI.h"   
    
    #define PCF8574_8LEDS_ADR  0x70
    
    void I2C_requestedDataReady(uint8_t dataRequestID)
    {
    }
    
    void I2C_transmissionError(uint8_t errorState)
    {
    	writeString_P("\nI2C ERROR - TWI STATE: 0x");
    	writeInteger(errorState, HEX);
    	writeChar('\n');
    }
    
    
    int main(void)
    {
    	initRobotBase();
    	writeString_P("Hello!\n");
    	mSleep(3000);
    	
    	I2CTWI_initMaster(100); 
    	I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
    	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
    	
    	powerON();
    	
    	writeString_P("Starting to change Slave-ID\n");
    	task_I2CTWI();
    	I2CTWI_transmitByte(0xE0, 0xA0);
    	mSleep(50);
    	I2CTWI_transmitByte(0xE0, 0xAA);
    	mSleep(50);
    	I2CTWI_transmitByte(0xE0, 0xA5);
    	mSleep(50);
    	I2CTWI_transmitByte(0xE0, 0xE2);
    	mSleep(50);
    	writeString_P("Done\n");
    	return 0;
    }
    Dieser läuft auch schön bis zum Ende durch(Am Ende wird "Done" ausgegeben). Wenn ich jetzt allerdings den Sensor abfragen will funktioniert das immernoch mit 0XE0, nicht mit 0XE2.

  2. #2
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Wie viele SRF02 hast du angeschlossen? Beim ändern der ID darf nur einer angeschlossen sein.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Zitat Zitat von ScummVM
    Wie viele SRF02 hast du angeschlossen?
    Einen

  4. #4
    Benutzer Stammmitglied Avatar von ScummVM
    Registriert seit
    02.04.2010
    Ort
    Österreich
    Beiträge
    79
    Guck dir mal das RP6Base_I2C_Master_03 an - da wird von einem SRF08 die ID geändert. Das Beispiel sollte auch fürn SRF02 funktionieren.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Zitat Zitat von ScummVM
    Guck dir mal das RP6Base_I2C_Master_03 an - da wird von einem SRF08 die ID geändert. Das Beispiel sollte auch fürn SRF02 funktionieren.
    Hat funktioniert

    Für alle, die auf den Thread stoßen, weil sie dasselbe Problem haben:

    Code:
     I2CTWI_transmitByte(0xE0, 0xA0); 
       mSleep(50); 
       I2CTWI_transmitByte(0xE0, 0xAA); 
       mSleep(50); 
       I2CTWI_transmitByte(0xE0, 0xA5); 
       mSleep(50);
    muss durch das hier ersetzt werden:

    Code:
    I2CTWI_transmit2Bytes(0xE0, 0, 0xA0); 
       mSleep(50); 
       I2CTWI_transmit2Bytes(0xE0, 0, 0xAA); 
       mSleep(50); 
       I2CTWI_transmit2Bytes(0xE0, 0, 0xA5); 
       mSleep(50);

Berechtigungen

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

LiFePO4 Speicher Test