So hier Code des Tests, der sehr viele Fehler bringt:
Code:
void TestI2CLEDs(void)
{
TestStart("I2CLED Test"); //Unwichtig, dient nur der Kommunikation mit Remotrol
uint8_t testResult = 1;
uint8_t runningLight = 1;
uint16_t cnt;
uint16_t errorcount = 0;
for(cnt = 0; cnt < 2400; cnt++) //"400 Durchläufe
{
writeIntegerLength(cnt,DEC,3); //Aktuelle Werte ausgeben
writeChar(':');
writeIntegerLength(runningLight,DEC,3);
writeChar(',');
writeChar(' ');
setRP6LEDs(runningLight); //RP6 LEDs über I2C setzen
//mSleep(50); //Hierran scheitert es prinzipiell, es wäre aber sehr schön, wenn man solche Delays nicht brauchen würde
I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 29); //Aktuelle LEDs des RP6 wieder auslesen
uint8_t result = I2CTWI_readByte(I2C_RP6_BASE_ADR);
if(result != runningLight)
{
writeString_P("\nTWI TEST FEHLER!\n");
writeString_P("Value: ");
writeInteger(runningLight,DEC);
writeString_P(" - Result: ");
writeInteger(result,DEC);
writeString_P("\r\n");
errorcount++;
testResult = 0;
}
runningLight <<= 1;
if(runningLight > 32)
runningLight = 1;
if((cnt+1) % 6 == 0) writeChar('\n');
if(cnt % 20 == 0)//Unwichtig, dient nur der Kommunikation mit Remotrol
{
SerialHeartBeat();
}
//mSleep(100);
}
if(!testResult)
{
writeString_P("Anzahl Fehler: ");
writeInteger(errorcount, DEC);
writeString_P("\r\n");
}
setRP6LEDs(0);
TestEnd(testResult);//Unwichtig, dient nur der Kommunikation mit Remotrol
}
Das Problem an sich ist klar... Er überrent halt dauerhaft die Hardware.
Es wäre aber prinzipiell sehr schön, wenn man die statischen Delays hier weglassen könnte.
Dann wäre die Lib perfekt
Lesezeichen