Menu

Code Commit Log


Commit Date  
[r27] by dynamicsalex

Добавлена константа ERR_PACKET_THRESHOLD = 2. Теперь вы можете в одном месте задать правило: 1 (ошибка хотя бы в одном), 2 (ошибка в большинстве) или 3 (ошибка только если все 3 пакета битые).
Логика подсчета: введен счетчик err_packet_count. Он инкрементируется только один раз за попытку (за один req_idx), даже если в ответе пришло несколько байт ошибок. Это корректно считает именно количество пакетов, а не общее количество байт ошибок.
Финальное условие: переменная is_error теперь вычисляется как (!cycle_connected) || (err_packet_count >= ERR_PACKET_THRESHOLD). Это элегантно закрывает оба ваших требования (отсутствие связи = ошибка, наличие ошибок в N пакетах = ошибка).

2026-08-21 08:30:06 Tree
[r26] by dynamicsalex

[*] Experimental - версия прошивки

2026-08-21 07:03:55 Tree
[r25] by dynamicsalex
2026-08-21 07:01:27 Tree
[r24] by dynamicsalex

[*] Откат до рев. 20, в оптимизированной прошивке отображаются ошибки при печати

2026-08-20 13:48:15 Tree
[r23] by dynamicsalex

[*] откат к оптимизированной ИИ прошивке, увеличено время между запросами

2026-08-20 13:42:40 Tree
[r22] by dynamicsalex

[!] Откат до ревизии 20: ошибка в прошивке рев. 21: при печати монитор выдавал ошибку.

2026-08-20 12:32:26 Tree
[r21] by dynamicsalex

[*] Оптимизация прошивки с помощью Quen Chat:
Экономия RAM: static uint8_t rx_frame[16] вместо 64 байт в стеке. Это гарантирует, что твой код не упадет из-за нехватки памяти при вызове других функций.
Скорость: Замена uint32_t на uint16_t для времени. На 8-битном AVR вычитание двух 16-битных чисел занимает ~4-6 тактов, а 32-битных — ~12-16 тактов + лишняя память. Математика с переполнением (now - start >= period) работает безупречно.
Читаемость: Удалено ~15 строк дублирующегося кода. Логика "проверить данные или таймаут" теперь выражена в одном месте.
Надежность: ATOMIC_BLOCK гарантирует, что ты не сломаешь работу других прерываний, случайно включив их через sei().
Типы данных: req_idx изменен на uint8_t, так как он принимает значения только от 0 до 4. Нет смысла использовать int (который на AVR является 16-битным).
Примечание: Убедись, что константы UART_SEND_COMMAND_PERIOD, UART_PERIOD_BETWEEN_SEND_COMMAND и LED_BLINK_PERIOD в твоем TIME_CONSTANT.h не превышают 65000 (если они заданы в миллисекундах). Для 3000 мс и 500 мс это идеально.

2026-08-20 10:22:29 Tree
[r20] by dynamicsalex

[+] Версия 1.2.0 отправлена на производство

2026-06-25 17:49:51 Tree
[r19] by dynamicsalex

[*] Корректировки ПП

2026-06-25 13:47:21 Tree
[r18] by dynamicsalex

[*] Распиновка COM - порта приведена в соответствие с платой конвертера TTL/UART для последующей совместимости

2026-06-24 13:23:51 Tree
Older >