что то опять туплю или не понимаю, есть цикл
unsigned char cardState;
unsigned long waitState = 0x0FUL;
do {
if (!h743sendAndTestCMDtoSDcard(SD_CMD_SEND_STATUS, SDCard.RCA << 16, SD_WAITRESP_SHORT_CRC)) return false; // CMD13
delay_ms(1UL);
cardState = (((SDMMC1->RESP1) & SD_STATE_MASK) >> 9) & 0x000000FF; // Find out a card status
} while ((cardState |= needState) && ((--waitState) != 0));
if (cardState == needState) return true;
if (waitState) return true;
printf("-state %d to %d steps left %d wait %d-\r\n", (unsigned int)cardState, (unsigned int)needState, (unsigned int)repeatSteps, (unsigned int)waitState);
вывод:
- -state 7 to 4 steps left 4 wait 0-
-inited- 1
Все типа хорошо.
Комментирую строку 8 (которая и не нужна по факту)
//if (cardState == needState) return true;
и все ломается
-state 7 to 4 steps left 4 wait 0-
-state 4 to 4 steps left 3 wait 0-
-state 4 to 4 steps left 2 wait 0-
-state 4 to 4 steps left 1 wait 0-
-state 4 to 4 steps left 0 wait 0-
почему не отрабатывает условие?
(cardState |= needState)