Эта строка не работает должным образом:
uartPushPos = (uartPushPos + 1) % UART_TX_BUFF_LENGTH;
Однако это ниже, что в теории делает то же самое, работает:
//if (uartPushPos == UART_TX_BUFF_LENGTH - 1){
if (uartPushPos >= UART_TX_BUFF_LENGTH - 1){
uartPushPos = 0;
} else {
uartPushPos++;
}
UartPopPos является типом char, иUART_TX_BUFF_LENGTH - это переменная препроцессора, установленная на 16.
Почему работает второй сегмент кода, а не первый?
Если это имеет большое значение, я использую компилятор SourceBoost BoostCдля микроконтроллера PIC 16f.
спасибо