Ich hab das Ganze nun probiert, hat aber leider nicht funktioniert.
Mein Code sieht jetzt so aus:
M32 - Master:
Code:
#include "RP6ControlLib.h"
#include "RP6I2CmasterTWI.h"
int main(void)
{
initRP6Control();
initLCD();
I2CTWI_initMaster(50);
int key;
while(true)
{
key=0;
showScreenLCD("Bitte Taster","druecken");
do
{
key=getPressedKeyNumber();
I2CTWI_transmitByte(10,0);
}
while (key==0);
switch(key)
{
case 1: //T1 - vorwärts
showScreenLCD("Daten werden","uebertragen");
I2CTWI_transmitByte(10,1);
showScreenLCD("...erfolgreich","");
break;
case 2: //T2 - rückwärts
showScreenLCD("Daten werden","uebertragen");
I2CTWI_transmitByte(10,2);
showScreenLCD("...erfolgreich","");
break;
case 3: //T3 - 20° rechts
showScreenLCD("Daten werden","uebertragen");
I2CTWI_transmitByte(10,3);
showScreenLCD("...erfolgreich","");
break;
case 4: //T4 - 20° links
showScreenLCD("Daten werden","uebertragen");
I2CTWI_transmitByte(10,4);
showScreenLCD("...erfolgreich","");
break;
default: I2CTWI_transmitByte(10,0);
break;
}
showScreenLCD("","Bitte warten");
mSleep(200);
key=0;
}
while(true)
{
showScreenLCD("Endlosschleife", "");
}
return 0;
}
Base - Slave:
Code:
#include"RP6RobotBaseLib.h"
#include "RP6I2CslaveTWI.h"
int main(void)
{
initRobotBase();
powerON();
setACSPwrOff();
uint8_t i;
I2CTWI_initSlave(10);
while (true)
{
if(I2CTWI_writeRegisters[0] && !I2CTWI_writeBusy)
{
// Register speichern:
i = I2CTWI_writeRegisters[0];
I2CTWI_writeRegisters[0] = 0;
}
switch (i)
{
case 1: task_motionControl();
move(30,FWD,DIST_MM(50),false);
break;
case 2: task_motionControl();
move(30,BWD,DIST_MM(50),false);
break;
case 3: task_motionControl();
rotate(30,LEFT,20,false);
break;
case 4: task_motionControl();
rotate(30,RIGHT,20,false);
break;
default: setLEDs(0b111111);
mSleep(200);
setLEDs(0b000000);
break;
}
}
while (true)
{
writeString_P("\n In Endlosschleife\n");
}
return 0;
}
Lesezeichen