FDA (30.09.2019 21:46, просмотров: 392) ответил Гудвин на По первому ни разу не замечал (хотя уже слышал от тебя). По второму - не пезапускаю. У меня поллинг и достаточно вот этого:
Хм... Я как раз по приёму такую проверку не делаю. Если что, по тайм-ауту отрабатываю, но надо будет попробовать и такой вариант. По передаче фактически аналогично сделано. Встречается не очень часто, но статистика показывает, что бывает.
uint16_t cnt = MAX_ATTEMPTS;
while ((encReadOp(ENC28J60_READ_CTRL_REG, ECON1) & ECON1_TXRTS) && (--cnt > 0))
CLRWDT();
if ((encRead(EIR) & EIR_TXERIF))
{
encWriteOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_TXRST);
encWriteOp(ENC28J60_BIT_FIELD_CLR, ECON1, ECON1_TXRST);
encWriteOp(ENC28J60_BIT_FIELD_CLR, EIR, EIR_TXERIF);
__delaywdt_ms(10);
++EncPackSendErrorCnt;
}