Hi zusammen,
mal ein aktueller Stand von mir:
in der Funktion "checkRP6Status" gibt es den folgenden Abschnitt:
Code:
// Check if there was a RC5 Reception:
uint8_t readBuf[2];
if(compare & MASK_RC5)
{
I2CTWI_transmitByte(I2C_RP6_BASE_ADR,I2C_REG_RC5_ADR);
I2CTWI_readBytes(I2C_RP6_BASE_ADR, readBuf, 2);
RC5data_t tmp;
tmp.data = (readBuf[0] << 6) | (readBuf[1]);
IRCOMM_RC5dataReadyHandler(tmp);
}
Wenn ich da das "I2CTWI_readBytes(I2C_RP6_BASE_ADR, readBuf, 2);" auskommentiere, dann gibt es keinen Reset.
Wenn ich es unter "if(compare & MASK_BUMPER)" einfüge, gibt es den Reset, beim Druck auf einen Bumper.
Wenn ich es mit einem Taster auf dem M32 aufrufe, gibt es keinen Reset.
Für mich sieht es im Moment so aus, als würde der Reset nur dann kommen, wenn durch ein Ereignis vom Slave mit "I2CTWI_readBytes" etwas gelesen werden soll. Wenn ich die Funktion nur über das M32 verwende (bspw. mit den Tastern) läuft alles normal weiter.
Hat jemand da eine Idee, was da schief laufen könnte?
Um das zu Umgehen würde ich dann versuchen, die Funktionen für die Fernsteuerung einfach in das Slave-Programm einzubauen. Ich denke, damit sollte ich dem Reset-Problem eigentlich aus dem Weg gehen können. Mal schauen ob das so klappt, wie ich mir das vorstelle.
Mich würde allerdings immer noch brennend interessieren, was genau denn da eigentlich miteinander kollidiert und mein Programm resettet
Lesezeichen