mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2026-09-18 19:13:58 +00:00
perf(rx): батч-выемка фронтов в tick (IR_RX_TICK_BATCH=16) — приём развязан от частоты loop
Было: 1 сырой фронт за tick() -> RX-пропускная способность привязана к loop; медленный loop (телеметрия/дисплей/КУ-печать) переполнял ISR-буфер 250 фронтов (~120мс эфира) и кадры гибли молча (вероятная составляющая 'КУ отвечает не на каждый пакет'). Стало: до IR_RX_TICK_BATCH фронтов за tick; idle-семантика сохранена (flush пульс-фильтра только при пустом буфере; listenStart/ checkTimeout как раньше). Переопределяемо дефайном до include. Компил-чек: LaserTestCheck (G491) собирается. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -179,6 +179,13 @@ typedef uint16_t crc_t;
|
||||
#ifndef IR_INPUT_MIN_PULSE_US
|
||||
#define IR_INPUT_MIN_PULSE_US 0
|
||||
#endif
|
||||
/** Сколько сырых фронтов забирать из ISR-буфера за один tick() (батч-выемка).
|
||||
* 1 фронт/tick привязывал RX-пропускную способность к частоте loop: медленный
|
||||
* loop (телеметрия/дисплей) переполнял буфер 250 фронтов (~120мс эфира) и
|
||||
* кадры терялись молча. Батч развязывает приём от темпа loop. */
|
||||
#ifndef IR_RX_TICK_BATCH
|
||||
#define IR_RX_TICK_BATCH 16U
|
||||
#endif
|
||||
/** Сколько подтверждённых фронтов держать перед выпуском в декодер (потоковая задержка). */
|
||||
#ifndef IR_INPUT_FILTER_HOLDBACK_EDGES
|
||||
#define IR_INPUT_FILTER_HOLDBACK_EDGES 3U
|
||||
|
||||
Reference in New Issue
Block a user