- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 3 von 3

Thema: (eigentlich unwichtige) Fragen zu getCommand aus RP6Base_I2CSlave.c

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164

    (eigentlich unwichtige) Fragen zu getCommand aus RP6Base_I2CSlave.c

    Moin *,

    nur des Verständnisses wegen (weil ich gerade mit dem I2C-Bus kämpfe ).

    Zur Funktion:
    Code:
    uint8_t getCommand(void)
    {
    	if(I2CTWI_writeRegisters[I2C_REGW_CMD] && !I2CTWI_writeBusy) 
    	{
    		cmd = I2CTWI_writeRegisters[I2C_REGW_CMD]; // store command register
    		I2CTWI_writeRegisters[I2C_REGW_CMD] = 0; // clear command register (!!!)
    		param1 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM1]; // parameters 1-6...
    		param2 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM2];
    		param3 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM3];
    		param4 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM4];
    		param5 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM5];
    		param6 = I2CTWI_writeRegisters[I2C_REGW_CMD_PARAM6];
    		return true;
    	}
    	return false;
    }
    1. Die if-Bedingung würde ich umdrehen:
    Code:
    if (!I2CTWI_writeBusy && I2CTWI_writeRegisters[I2C_REGW_CMD])
    Wenn der Compiler optimiert, braucht der "teure" Indexzugriff nicht ausgeführt werden, wenn die erste Bedingung schon falsch ist. Oder?

    2. clear command register
    Code:
    I2CTWI_writeRegisters[I2C_REGW_CMD] = 0;
    Wenn ich das richtig verstanden habe, dann dient das Zurücksetzen dazu, dem Master zu signalisieren, dass der Slave den Befehl verstanden und die Parameter gespeichert hat. Sollte das denn nicht am Ende (nach den param-Zuweisungen) stehen? So wie oben könnte doch ein ungeduldiger Master die Parameter schon wieder überschrieben haben. Oder?

    Ja - ich weiß - es steht in vielen Kommentaren, dass die Programme Raum für Verbesserungen bieten (und SlyD hat das ja auch mehrfach betont!). Gehört diese Funktion auch dazu?

    viele Grüße
    Andreas
    Geändert von danimath (25.08.2011 um 18:23 Uhr)
    #define true ('/'/'/')
    #define false ('-'-'-')

Ähnliche Themen

  1. Was brauche ich eigentlich?
    Von tintenfrosch im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 21
    Letzter Beitrag: 16.09.2011, 23:27
  2. LDR auf SF08. Wieso eigentlich ?
    Von PicNick im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 30.09.2005, 07:56
  3. Was bracuhe ich eigentlich...
    Von Art im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 05.08.2005, 22:16
  4. [ERLEDIGT] was brauche ich eigentlich?
    Von im Forum Sensoren / Sensorik
    Antworten: 7
    Letzter Beitrag: 20.05.2005, 12:14
  5. Was ist eigentlich genau der Ankerstrom ?
    Von UGMode im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 28.04.2005, 19:53

Berechtigungen

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

Labornetzteil AliExpress