Jo fast nur dass [out0_ptr+1] halt doch mal auf das letzte Element zeigen kann und mit +1 wäre das dann undefinierter Speicher, also lieber vorher prüfen z.B. so:
Code:
while (out0_ptr < in0_ptr)
{
uint8_t i = ++out0_ptr;
if (uart0_buffer[i++]== brake_pads_msg[0])
{
if (i >= UART_BUF_SIZE)
i = 0;
if (uart0_buffer[i++]== brake_pads_msg[1])
{
if (i >= UART_BUF_SIZE)
i = 0;
if (uart0_buffer[i++]== brake_pads_msg[2])
{
if (i >= UART_BUF_SIZE)
i = 0;
if (uart0_buffer[i++] == brake_pads_msg[3])
{
printf("BrakePads gefunden\n");
}
}
}
}
}
Blöde Frage aber kann das überhaupt funktionieren mit dem Ringpuffer bei
(out0_ptr < in0_ptr), wenn out0_ptr z.B. knapp UART_BUF_SIZE ist und in0_ptr z.B. 0 oder 1 ist? Nach der ISR oben is das zumindest möglich.
Grüsse, Stefan
Lesezeichen