Commit Graph

65 Commits

Author SHA1 Message Date
8f45f6e214 feat(rx): наблюдаемость приёма по состоянию + airtime кадра формулами
- IR_config.h: irFrameAirtimeUs/irFrameDecodeEndUs/irLockToDecodeEndUs/irLockLatencyUs,
  irMaxPackSize (31), irDataPackSize/irBackPackSize — все из констант FSM передатчика
  (преамбула 6×98 тактов, байт 11 бит × 74 такта, такт = полпериода несущей).
- IR_Encoder::calculateSendTime по той же формуле (раньше синхробиты считались один раз
  на кадр → занижение 21-26%, потребители компенсировали +30%).
- IR_DecoderRaw: rxLockSeq/rxLockTimeUs (лок преамбулы), rxMsgType, rxExpectedEndUs
  (по объявленной длине), rxLastEnd {seq, reason Ok/Crc/Timeout/Abort, msgType, packSize,
  tUs, expectedEndUs}. Терминалы: конец кадра, таймаут тишины, немедленный abort при
  sync-ошибке / длине <3 (в т.ч. 0) / переполнении — битый кадр больше не держит
  isReciving до конца чужой передачи + 30 мс.
- Порядок в tick: checkTimeout до listenStart (TIMEOUT-лог с реальной длиной), истечение
  кандидата преамбулы без фронтов, ложный PREAMB-инкремент на старте кандидата убран.
- rxMaxPackSize() = протокольные 31 (было 38 = размер буфера).

Совместимость: только добавления; существующие сигнатуры не тронуты. Собрано для G4 (Car)
и F4 (КУ).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeA1K5dBUKrnoXVwyoVjzq
2026-09-07 12:22:22 +03:00
96ffb91b97 fix(tx): приоритет IRQ DMA-TX явно ниже SysTick/EXTI — millis() замедлялся под передачей
HAL_NVIC_EnableIRQ без SetPriority оставлял DMA-каналы TX на приоритете 0 (уровень
SysTick на G4). Длинный refill кольца BSRR (полубуфер 2048 слов = ~3.3мс при HCLK
12МГц) не вытеснялся, тики SysTick слипались: millis() замедлялся в 1.6x (один
излучатель) / 2.2x (два) на всё время передачи. На машинке это ~37% вранья часов
в каждый ИК-кадр: PID dt, планировщик, тайминги протокола.

Мерено на стенде TofSickHunt 2026-08-11 (Car raw/idle_cur_vs_coup*): прогоны «60с»
шли 85-95 реальных секунд. Фикс: irproto::kDmaTxIrqPriority=8 — ниже EXTI приёмника
(6), выше дна; SysTick честный. ISR-TX путь (F401/КУ) не подвержен: его refill на
TIM-приоритете 14. Верификация дилатации на стенде — раунд 4 (прерван, перезапустить).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 18:33:07 +03:00
5bcaf4092a 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>
2026-07-28 18:22:44 +03:00
38d93edd1b upd 2026-04-20 17:47:33 +03:00
d788358ac8 add brightness controll 2026-04-17 09:45:32 +03:00
8631f23b53 fix overflow and mute 2026-04-14 09:36:27 +03:00
ddb8a9e143 Filters and stable 2026-04-08 16:11:10 +03:00
e7d7c0e1c1 dma fix priority and debug 2026-04-02 17:25:10 +03:00
af3e012aac fix msgTypeReceive and isReceive 2026-03-30 13:34:04 +03:00
fc1a3bacef upd 2026-03-11 16:57:55 +03:00
dec8467280 max pack 2025-08-22 15:33:19 +03:00
89d14919c9 fix isRecive 2025-03-12 16:15:35 +03:00
277985f79a update ir adress space 2025-01-30 16:17:45 +03:00
30ad816c2a fix redifinded 2025-01-22 17:31:14 +03:00
da152c65ee address space config 2024-09-20 09:35:27 +03:00
fd51a4935c small fix 2024-09-03 17:35:35 +03:00
c66d47e464 info 2024-07-08 17:14:49 +03:00
d46640b145 refactor 2024-04-24 10:34:57 +03:00
e951111c53 refactor 2024-04-23 13:35:49 +03:00
16a626db22 BRUTEFORCE_CHECK 2024-04-22 12:52:41 +03:00
e334625864 STM works 2024-04-22 11:20:53 +03:00
3b5045669b upd 2024-04-17 09:58:32 +03:00
27a5b28a17 STM First Test 2024-04-16 15:52:59 +03:00
ff306e7fae upd 2024-04-02 14:13:39 +03:00
3e3601e009 more buffer 2024-03-15 15:20:00 +03:00
c31be52d47 subBufferSize 25 2024-03-06 16:20:50 +03:00
d67a6fe4ac buffer 2024-03-01 17:54:30 +03:00
aed1543bd3 ifndef subBufferSize 2024-02-29 12:34:18 +03:00
434e1aaa90 little opti 2024-02-28 13:53:27 +03:00
f6bbd96a4c moved id to parrent class 2024-02-28 10:03:31 +03:00
f92851c55d rename checkAddressRuleApply 2024-02-28 09:44:13 +03:00
0166bbfa22 add crcID for accept 2024-02-27 13:02:30 +03:00
523bb0712c noDebug 2024-02-27 12:32:04 +03:00
9af3e95ec8 add customByte to Accept 2024-02-27 12:29:00 +03:00
4d92acf15b non virtual 2024-02-27 10:28:20 +03:00
1dc702f05d refactor working 2024-02-26 11:38:35 +03:00
e35bf7ae23 refactor 2024-02-22 16:52:55 +03:00
6f5bbac83c refactor 2024-02-22 14:01:27 +03:00
024888e841 addr check flag added 2024-02-20 16:35:02 +03:00
ff7b5dcaa4 add back 2024-02-20 15:00:42 +03:00
27dd448cb0 refactor 2024-02-20 15:00:00 +03:00
e4aa7b47c5 refactor 2024-02-19 15:45:11 +03:00
ba1d22ac29 clean 2024-02-19 10:07:21 +03:00
8525f8330c new pack info 2024-02-16 17:51:34 +03:00
b517e4e6ad debug startRX and m 2024-02-15 16:50:21 +03:00
882bd56d49 test 8Mhz fail 2024-02-14 17:19:53 +03:00
1ee3386c31 fix multiBlind 2024-02-13 14:33:17 +03:00
1c79b812d3 testMultiBlind 2024-02-12 16:41:16 +03:00
b272b6031c signal generator 2024-02-08 17:18:33 +03:00
e0fbc8502d MultiGen isr 2024-02-06 17:14:59 +03:00