aircode
09.12.2009, 21:01
Hallo I2C Profis,
schön langsam komme ich mit dem I2C klar und ich kann vom Slave zum Master und umgekehrt Werte hin und her verschieben wie ich will. Allerdings leider nur Werte bis 255! Eigentlich eh klar, da ja das Leseregister mit 8Bit deklariert ist, sehe ich das richtig?
Wie sieht es aber dann aus, wenn ich 16Bit Variablen in das Leseregister schreiben will?
Zur Veranschaulichung hier ein kleines Beispiel -> siehe mein Kommentar!
Danke...
#include "RP6RobotBaseLib.h"
#include "RP6I2CslaveTWI.h"
// ************************************************** ************************************************** ******
// ************************************************** ************************************************** ******
// ****************************************** ***********************************************
// ****************************************** Hauptprogramm ***********************************************
// ****************************************** ***********************************************
// ************************************************** ************************************************** ******
// ************************************************** ************************************************** ******
int main(void)
{
initRobotBase();
I2CTWI_initSlave(10);
powerON();
task_ADC();
while(true)
{
if(!I2CTWI_readBusy)
I2CTWI_readRegisters[0] = 255; // Alles funktioniert so lange der Wert <=255 ist - leider ;-)
if (bumper_left) // wird der Bumper gedrückt wird der Wert im Terminal ausgegeben
{
writeString("\n");
writeString("Wert: ");writeIntegerLength(I2CTWI_readRegisters[0], DEC, 5);writeString("\n");
}
task_Bumpers();
}
return 0;
}
schön langsam komme ich mit dem I2C klar und ich kann vom Slave zum Master und umgekehrt Werte hin und her verschieben wie ich will. Allerdings leider nur Werte bis 255! Eigentlich eh klar, da ja das Leseregister mit 8Bit deklariert ist, sehe ich das richtig?
Wie sieht es aber dann aus, wenn ich 16Bit Variablen in das Leseregister schreiben will?
Zur Veranschaulichung hier ein kleines Beispiel -> siehe mein Kommentar!
Danke...
#include "RP6RobotBaseLib.h"
#include "RP6I2CslaveTWI.h"
// ************************************************** ************************************************** ******
// ************************************************** ************************************************** ******
// ****************************************** ***********************************************
// ****************************************** Hauptprogramm ***********************************************
// ****************************************** ***********************************************
// ************************************************** ************************************************** ******
// ************************************************** ************************************************** ******
int main(void)
{
initRobotBase();
I2CTWI_initSlave(10);
powerON();
task_ADC();
while(true)
{
if(!I2CTWI_readBusy)
I2CTWI_readRegisters[0] = 255; // Alles funktioniert so lange der Wert <=255 ist - leider ;-)
if (bumper_left) // wird der Bumper gedrückt wird der Wert im Terminal ausgegeben
{
writeString("\n");
writeString("Wert: ");writeIntegerLength(I2CTWI_readRegisters[0], DEC, 5);writeString("\n");
}
task_Bumpers();
}
return 0;
}