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







Zitieren

Lesezeichen