Обновить логгер УМП и исправить запуск UART и EEPROM

Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
This commit is contained in:
2026-10-12 12:25:41 +03:00
parent f741741cf8
commit 1e911e5250
38 changed files with 2089 additions and 1485 deletions
+5 -5
View File
@@ -93,9 +93,9 @@ typedef unsigned int SE2P_SIZE;
/* Message declaration */
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct {
unsigned int *dataPtr; /* Data pointer */ /* Объявляет dataPtr — данные Ptr. Хранит указатель на данные. */
unsigned long nrData; /* number of data */ /* Объявляет nrData — nr данные. */
unsigned long se2pAddr; /* se2pAddr */ /* Объявляет se2pAddr — данные se2pAddr. */
unsigned int * volatile dataPtr; /* Указатель буфера публикуется до csr: volatile запрещает перенос его записи за ожидание Timer2. */
volatile unsigned long nrData; /* Число 16-битных слов записывается до флага запуска; Timer2 использует его для завершения передачи. */
volatile unsigned long se2pAddr; /* Байтовый адрес EEPROM публикуется до csr; прерывание должно получить адрес текущего задания. */
/* Продолжает список аргументов, полей или выражение }SE2P_DATA;; порядок элементов сохраняется. */
}SE2P_DATA;
@@ -103,8 +103,8 @@ typedef struct {
/* Object declaration */
/* Начинает объявление типа, используемого структурами и интерфейсами этого модуля. */
typedef struct {
/* Main loop publishes the descriptor before setting csr; Timer2 consumes it.
* Both accesses are volatile so optimization cannot publish the request first. */
/* Главный цикл заполняет volatile-поля задания, затем msgPtr и csr; Timer2 читает их после запроса.
* Одного volatile у msgPtr недостаточно: он защищает указатель, но не содержимое задания. */
/* Продолжает список аргументов, полей или выражение SE2P_DATA * volatile msgPtr;; порядок элементов сохраняется. */
SE2P_DATA * volatile msgPtr;
volatile unsigned int csr; /* control/status register */ /* Объявляет csr — данные csr. volatile требует фактического чтения или записи при каждом доступе. */