You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В int Oregon_NR::collect(byte* cdptr)
есть несколько мест, где есть циклы, ждущие нужное количество микросекунд:
*cdp = 0;
for (byte ckl = 0; ckl < 8; ckl++)
{ // Читаем 8 раз за полутакт
pre_marker += quant;
**while (micros() < pre_marker);**
if (digitalRead(RECEIVER_PIN)) *cdp += 0x10; // Измерения запиываем в старший полубайт
}
регулярно сталкиваюсь, что pre_marker уже у границы uint32_t (примерно 4.3 млрд), а micros() уже переполнился, и этот while тормозит на 4000 секунд, вызывая срабатывание сторожевого таймера.
для ESP32 можно заменить на ets_delay_us()
The text was updated successfully, but these errors were encountered:
В int Oregon_NR::collect(byte* cdptr)
есть несколько мест, где есть циклы, ждущие нужное количество микросекунд:
регулярно сталкиваюсь, что pre_marker уже у границы uint32_t (примерно 4.3 млрд), а micros() уже переполнился, и этот while тормозит на 4000 секунд, вызывая срабатывание сторожевого таймера.
для ESP32 можно заменить на ets_delay_us()
The text was updated successfully, but these errors were encountered: