Um nochmal etwas konkreter zu werden, ich benutze dieses Beipsiel für des Controler auf dem Hauptboard:
Code:
#include "RP6RobotBaseLib.h"
#include "RP6I2CslaveTWI.h" // I2C Library Datei einbinden (!!!)
// ACHTUNG: Das muss auch im Makefile eingetragen werden (!!!)
#define CMD_SET_LEDS 3 // LED Kommando, das über den I2C Bus
// empfangen werden soll.
int main(void)
{
initRobotBase();
I2CTWI_initSlave(10); // TWI initialisieren und Adresse 10 einstellen
powerON();
while(true)
{
// irgendein Kommando empfangen und KEIN Schreibzugriff aktiv?
if(I2CTWI_writeRegisters[0] && !I2CTWI_writeBusy)
{
// Register speichern:
uint8_t cmd = I2CTWI_writeRegisters[0];
I2CTWI_writeRegisters[0] = 0; // und zurücksetzen (!!!)
uint8_t param = I2CTWI_writeRegisters[1]; // Parameter
if(cmd == CMD_SET_LEDS) // LED Kommando empfangen?
setLEDs(param); // LEDs mit dem Parameter setzen
}
if(!I2CTWI_readBusy) // Kein Lesezugriff aktiv?
// Dann aktuellen LED Zustand ins Register 0 schreiben:
I2CTWI_readRegisters[0] = statusLEDs.byte;
}
return 0;
}
Lesezeichen