Обновить сборку прошивки 166, TESTLAMP и кодировку исходников
Перенести настройки выпуска в JSON, добавить переносимый сценарий сборки и проверки BIN. Обновить конфигурации CCS, исходники в UTF-8, обработку TESTLAMP, образы прошивки и регрессионные проверки.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user