Also ich hab das nun mal ein bissl umgeändert und probier das wie folgt:
Code:
#include "RP6ControlLib.h"
#include "RP6I2CmasterTWI.h"
#include "RP6Control_I2CMasterLib.h"
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
char receiveBuffer[UART_RECEIVE_BUFFER_SIZE+1];
uint8_t getInputLine(void)
{
clearLCD();
writeStringLCD("getinput");
mSleep(500);
static uint8_t buffer_pos = 0;
if(getBufferLength())
{
receiveBuffer[buffer_pos] = readChar();
if(receiveBuffer[buffer_pos]=='\r')
{
receiveBuffer[buffer_pos]='\0';
buffer_pos = 0;
return 1;
}
else if(buffer_pos >= 32)
{
receiveBuffer[32]='\0';
buffer_pos = 0;
return 2;
}
buffer_pos++;
}
return 0;
}
uint8_t setonce2=false, setonce3=false;
/*
LCD Texte einmalig setzen bei betreten des Zustandes
LCD-Display 2*16 Zeichen
*/
void LCDText(uint8_t nmbr)
{
switch (nmbr)
{
case 1:
showScreenLCD("Starting up! One", "moment please.");
break;
case 2:
setonce3=false;
if (!setonce2)
{
setonce2=true;
showScreenLCD("################","################");
}
break;
case 3:
setonce2=false;
if (!setonce3)
{
setonce3=true;
showScreenLCD("################","################");
}
break;
}
}
uint8_t speed_max=200;
int main(void)
{
initRP6Control();
initLCD();
mSleep(500);
I2CTWI_initMaster(100);
I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
LCDText(1);
setLEDs(0);
mSleep(500);
sound(180,80,25);
sound(220,80,0);
while(1)
{
task_checkINT0();
task_I2CTWI();
clearLCD();
writeStringLCD("fertig");
mSleep(500);
if(getInputLine())
{
if(strcmp(receiveBuffer, "Ein")==0)
{
clearLCD();
writeStringLCD("ein");
mSleep(500);
}
if(strcmp(receiveBuffer, "Aus")==0)
{
clearLCD();
writeStringLCD("aus");
mSleep(500);
}
}
}
return 0;
}
aber irgendwie klappt da gar nix.
Der RP6 rennt zwar sein Programm durch und zeigt mir auch die Textausgaben "fertig" und "getinputline" an so wie er soll, aber die ankommenden daten wertet er irgendwie nicht aus.
Die Daten schicke ich mittels eines bluetooth moduls das ich auch schon mal als schleife ans notebook gehängt hab, das klappt so wie es soll.
Hab auch die baudrate im rp6 auf 19200 geändert wie das modul derzeit eingestellt ist.
Aber selbst wenn ich das eigene UART interface benutze, und das dann auch mit der normalen baudrate im RP6 funktioniert das nicht.
ich hab das gefühl der hat irgendein problem mit dem datenempfang.
Lesezeichen