Устранена зависимость дискретов СИФУ от основного цикла в 166
Фронты START/STOP обрабатываются при принятии командного слова CAN/RS, а окончание импульса обслуживается таймером. STOP имеет приоритет, перекрытие выходов исключено, сохранена защита от самопуска при включении. Загрузка параметров больше не подменяет живые команды нагрузки. Добавлены подробные русские комментарии во все собственные C-модули и основные заголовки, описание поведения и host-тест автомата. Обновлены файлы прошивки. Полная сборка TI 22.6.1.LTS и тесты пройдены; проверка на физической плате не выполнялась.
This commit is contained in:
+10
-23
@@ -1,3 +1,9 @@
|
||||
/* Инициализация и фоновый цикл платы. После настройки GPIO, обмена,
|
||||
* параметров и ЦАП UMP_pulse_init разрешает свежие команды СИФУ.
|
||||
* В main остаются телеметрия, EEPROM и разбор готовых RS-пакетов.
|
||||
* CAN-пуск и окончание импульса работают в IRQ, не ожидая main.
|
||||
* RS-команда ещё должна пройти проверку CRC в get_command из main.
|
||||
*/
|
||||
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
|
||||
|
||||
#include "cntrl_adr.h"
|
||||
@@ -39,8 +45,6 @@ void main()
|
||||
{
|
||||
int i,j,mask;
|
||||
static unsigned int cancount[2], cancell[2];
|
||||
static int preCstart=1,preCstop=1;
|
||||
int umpstart,umpstop;
|
||||
RS_DATA * rs;
|
||||
int presbyt=0;
|
||||
|
||||
@@ -96,6 +100,8 @@ void main()
|
||||
if(Desk==dsk_LOAD)
|
||||
Setup_DAC_time();
|
||||
|
||||
/* Завершена начальная настройка: только теперь разрешаем дискреты. */
|
||||
UMP_pulse_init();
|
||||
LastMode = Mode;
|
||||
|
||||
EALLOW;
|
||||
@@ -163,27 +169,8 @@ void main()
|
||||
presbyt = bTermoCal;
|
||||
}
|
||||
|
||||
if(Desk==dsk_LOAD)
|
||||
{
|
||||
umpstart = cUMPstart;
|
||||
umpstop = cUMPreset;
|
||||
|
||||
if(umpstart & !preCstart)
|
||||
{
|
||||
set_START_DPTB(); set_RES_OUT_2();
|
||||
IMPowse = READY_FREQ;
|
||||
}
|
||||
preCstart = umpstart;
|
||||
|
||||
if(umpstop & !preCstop)
|
||||
{
|
||||
set_STOP_DPTB(); clear_RES_OUT_2();
|
||||
IMPowse = READY_FREQ;
|
||||
}
|
||||
preCstop = umpstop;
|
||||
|
||||
if(!IMPowse) { clear_START_DPTB(); clear_STOP_DPTB(); }
|
||||
}
|
||||
/* START/STOP исполняются при приёме CAN/RS, снимаются таймером.
|
||||
* Здесь больше нет опроса уровня: main может ожидать EEPROM. */
|
||||
|
||||
/* Ñíèìîê ïîñëå îáíîâëåíèÿ âõîäîâ è ôîðìèðîâàíèÿ ïóñêîâûõ âûõîäîâ. */
|
||||
ump_log_io();
|
||||
|
||||
Reference in New Issue
Block a user