Обновить сборку прошивки 166, TESTLAMP и кодировку исходников

Перенести настройки выпуска в JSON, добавить переносимый сценарий сборки и проверки BIN. Обновить конфигурации CCS, исходники в UTF-8, обработку TESTLAMP, образы прошивки и регрессионные проверки.
This commit is contained in:
2026-10-17 14:36:59 +03:00
parent 13f1a2c5fd
commit 31f92e89d9
56 changed files with 1493 additions and 776 deletions
+19 -19
View File
@@ -1,18 +1,18 @@
/* Подключается только из DAC.c; в host-тесте — с подменой GPIO/IRQ. */
/* Подключается только из DAC.c; в host-тесте — с подменой GPIO/IRQ. */
#ifndef UMP_CONTROL_IMPL_H
#define UMP_CONTROL_IMPL_H
/* Аппаратная обёртка автомата. Храним её в существующем DAC.c, чтобы
* старый проект CCS и новый CCS12 собирали одинаковый набор исходников.
* Все входы ниже сохраняют прежнюю маску IRQ; нельзя просто делать EINT
* при выходе, поскольку вызов возможен из уже защищённого обработчика. */
/* Аппаратная обёртка автомата. Храним её в существующем DAC.c, чтобы
* старый проект CCS и новый CCS12 собирали одинаковый набор исходников.
* Все входы ниже сохраняют прежнюю маску IRQ; нельзя просто делать EINT
* при выходе, поскольку вызов возможен из уже защищённого обработчика. */
static volatile UMP_PULSE_STATE ump_pulse;
static volatile unsigned int ump_pulse_enabled;
static void UMP_apply_outputs(unsigned int previous_output, unsigned int previous_relay)
{
if (previous_output != ump_pulse.output) {
/* Сначала снимаем старый сигнал, затем выставляем новый.
* Промежуточное состояние — оба выключены, а не оба включены. */
/* Сначала снимаем старый сигнал, затем выставляем новый.
* Промежуточное состояние — оба выключены, а не оба включены. */
clear_START_DPTB();
clear_STOP_DPTB();
if (ump_pulse.output == UMP_PULSE_START) set_START_DPTB();
@@ -22,8 +22,8 @@ static void UMP_apply_outputs(unsigned int previous_output, unsigned int previou
if (ump_pulse.relay) set_RES_OUT_2();
else clear_RES_OUT_2();
}
/* Старое имя оставлено для протокола логгера. Это теперь отражение
* таймера автомата, а не переменная, которую одновременно правит main. */
/* Старое имя оставлено для протокола логгера. Это теперь отражение
* таймера автомата, а не переменная, которую одновременно правит main. */
IMPowse = ump_pulse.remaining;
}
@@ -34,8 +34,8 @@ void UMP_pulse_init(void)
ump_pulse_init(&ump_pulse, Commands);
clear_START_DPTB(); clear_STOP_DPTB(); clear_RES_OUT_2();
IMPowse = 0;
/* Разрешаем обработку только после загрузки параметров и настройки
* ЦАП. Команды до этой точки не исполняются задним числом. */
/* Разрешаем обработку только после загрузки параметров и настройки
* ЦАП. Команды до этой точки не исполняются задним числом. */
ump_pulse_enabled = 1;
}
__restore_interrupts(saved);
@@ -47,9 +47,9 @@ void UMP_commands_write(unsigned int commands)
unsigned int output = ump_pulse.output, relay = ump_pulse.relay;
Commands = commands;
if (Desk == dsk_LOAD && ump_pulse_enabled) {
/* Выполняем фронт в момент принятия слова. Нет очереди, которую
* main должен опросить после длительного обращения к EEPROM.
* Здесь только несколько операций с памятью/GPIO, без ожиданий. */
/* Выполняем фронт в момент принятия слова. Нет очереди, которую
* main должен опросить после длительного обращения к EEPROM.
* Здесь только несколько операций с памятью/GPIO, без ожиданий. */
ump_pulse_accept(&ump_pulse, commands, (unsigned int)READY_FREQ);
UMP_apply_outputs(output, relay);
}
@@ -70,11 +70,11 @@ void UMP_pulse_tick(void)
void UMP_reset_parameter_commands(void)
{
unsigned int saved = __disable_interrupts();
/* EEPROM содержит параметры, но не является источником команд пуска.
* Сохраняем последние принятые START/STOP и историю фронтов автомата.
* Нельзя обнулить их при Load/Default: таймер ЦАП читает тот же уровень,
* а следующий повтор пакета с единицей не должен стать ложным фронтом.
* Другие режимы платы сохраняют прежнее поведение полного сброса. */
/* EEPROM содержит параметры, но не является источником команд пуска.
* Сохраняем последние принятые START/STOP и историю фронтов автомата.
* Нельзя обнулить их при Load/Default: таймер ЦАП читает тот же уровень,
* а следующий повтор пакета с единицей не должен стать ложным фронтом.
* Другие режимы платы сохраняют прежнее поведение полного сброса. */
if (Desk == dsk_LOAD) Commands &= UMP_START_MASK | UMP_STOP_MASK;
else Commands = 0;
__restore_interrupts(saved);