XAro
01.01.2009, 22:01
Hallo,
ich bin ganz neu unter den "RP6-Besitzern". Ich habe seit Weihnachten den RP6 mit dem Erweiterungsmodul (RP6 CONTROL M32) + Display. Nun möchte ich gerne den Controler auf der Hauptplatine als Master und den auf der Zusatzplatine (M32) als Slave verwenden. Der Slave soll vorerst zu Testzwecken nur die 4 zusätzlichen LEDs aufleuchten lassen. Leider habe ich bisher keinen Erfolg. Ich habe die Beispielprogramme in beiden Beschreibungen (Basisbeschreibung + Beschreibung des M32) durchgearbeitet. Nur leider habe ich immernoch starke Probleme bzgl. des Verständnisses. Gibt es vielleicht weitere kommentierte Beispiele im Internet, oder aber erbarmt sich jemand von euch mir ein kurzes, hoffentlich leicht verständliches Beispiel zu geben?
Ich füge anbei noch meinen vermutlich sehr schlechten Versuch der Master-Slave-Programmierung an, wobei ihr bitte nicht vergessen sollte, dass ich absoluter Neuling bin (habt also bitte etwas Nachsehen mit mir)
Master
//Der erste Controler, ohne Display
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
int main(void)
{
initRobotBase();
I2CTWI_initMaster(100);
powerON();
I2CTWI_transmitByte(10, 2);
while(true)
{
task_I2CTWI();
}
}
Slave
//Der zweite Controler, mit dem Display
#include "RP6ControlLib.h"
#include "RP6I2CslaveTWI.h"
int main(void)
{
initRP6Control(); //Controler initialisieren
I2CTWI_initSlave(10); //Adresse 10
initLCD();
showScreenLCD("Hallo", "Test");
mSleep(3000);
int i = 0;
while(true)
{
if(I2CTWI_writeRegisters[0] && !I2CTWI_writeBusy) //irgendein Kommande empfangen und KEIN Schreibzugriff aktiv?
{
uint8_t kommando = I2CTWI_writeRegisters[0];
I2CTWI_writeRegisters[0] = 0; //zuruecksetzen
uint8_t param = I2CTWI_writeRegisters[1];
if(kommando == 2)
setLEDs(0b1111);
}
}
return 0;
}
Ich danke euch schon jetzt für eure Mühe!
lg
XAro
ich bin ganz neu unter den "RP6-Besitzern". Ich habe seit Weihnachten den RP6 mit dem Erweiterungsmodul (RP6 CONTROL M32) + Display. Nun möchte ich gerne den Controler auf der Hauptplatine als Master und den auf der Zusatzplatine (M32) als Slave verwenden. Der Slave soll vorerst zu Testzwecken nur die 4 zusätzlichen LEDs aufleuchten lassen. Leider habe ich bisher keinen Erfolg. Ich habe die Beispielprogramme in beiden Beschreibungen (Basisbeschreibung + Beschreibung des M32) durchgearbeitet. Nur leider habe ich immernoch starke Probleme bzgl. des Verständnisses. Gibt es vielleicht weitere kommentierte Beispiele im Internet, oder aber erbarmt sich jemand von euch mir ein kurzes, hoffentlich leicht verständliches Beispiel zu geben?
Ich füge anbei noch meinen vermutlich sehr schlechten Versuch der Master-Slave-Programmierung an, wobei ihr bitte nicht vergessen sollte, dass ich absoluter Neuling bin (habt also bitte etwas Nachsehen mit mir)
Master
//Der erste Controler, ohne Display
#include "RP6RobotBaseLib.h"
#include "RP6I2CmasterTWI.h"
int main(void)
{
initRobotBase();
I2CTWI_initMaster(100);
powerON();
I2CTWI_transmitByte(10, 2);
while(true)
{
task_I2CTWI();
}
}
Slave
//Der zweite Controler, mit dem Display
#include "RP6ControlLib.h"
#include "RP6I2CslaveTWI.h"
int main(void)
{
initRP6Control(); //Controler initialisieren
I2CTWI_initSlave(10); //Adresse 10
initLCD();
showScreenLCD("Hallo", "Test");
mSleep(3000);
int i = 0;
while(true)
{
if(I2CTWI_writeRegisters[0] && !I2CTWI_writeBusy) //irgendein Kommande empfangen und KEIN Schreibzugriff aktiv?
{
uint8_t kommando = I2CTWI_writeRegisters[0];
I2CTWI_writeRegisters[0] = 0; //zuruecksetzen
uint8_t param = I2CTWI_writeRegisters[1];
if(kommando == 2)
setLEDs(0b1111);
}
}
return 0;
}
Ich danke euch schon jetzt für eure Mühe!
lg
XAro