Files
Balsam_167/Source/Internal/Include/peripher.h
andrey eb2ff79932 Устранена зависимость дискретов СИФУ от основного цикла в 166
Фронты START/STOP обрабатываются при принятии командного слова CAN/RS,
а окончание импульса обслуживается таймером. STOP имеет приоритет,
перекрытие выходов исключено, сохранена защита от самопуска при включении.
Загрузка параметров больше не подменяет живые команды нагрузки.

Добавлены подробные русские комментарии во все собственные C-модули
и основные заголовки, описание поведения и host-тест автомата.
Обновлены файлы прошивки. Полная сборка TI 22.6.1.LTS и тесты пройдены;
проверка на физической плате не выполнялась.
2026-09-23 01:28:11 +03:00

157 lines
6.2 KiB
C

/* Ôèçè÷åñêèå GPIO ñ ó÷¸òîì ðåæèìà è ïîëÿðíîñòè. set îçíà÷àåò
* àêòèâèðîâàòü ôóíêöèþ, íå âñåãäà âûñòàâèòü 1. START/STOP íàãðóçêè
* àêòèâíû åäèíèöåé, RES_OUT_2 íóë¸ì. Äèñêðåòàìè âëàäååò àâòîìàò ÑÈÔÓ.
*/
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
extern int Mode,Desk,TermoAD,TermoRS,TermoSW,Kurrent,Kalibro;
void setup_leds_line(void);
void unsetup_leds_line(void);
#define led1_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO32=1
#define led2_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO48=1
#define led1_off() GpioDataRegs.GPBSET.bit.GPIO32=1
#define led2_off() GpioDataRegs.GPBSET.bit.GPIO48=1
#define led1_on() GpioDataRegs.GPBCLEAR.bit.GPIO32=1
#define led2_on() GpioDataRegs.GPBCLEAR.bit.GPIO48=1
// READY ---------------------------------------------------------
static inline void dat_READY(int x)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBDAT.bit.GPIO61=!x; else
GpioDataRegs.GPBDAT.bit.GPIO59=!x; }
static inline void set_READY(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBCLEAR.bit.GPIO61=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO59=1; }
static inline void clear_READY(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBSET.bit.GPIO61=1; else
GpioDataRegs.GPBSET.bit.GPIO59=1; }
static inline void toggle_READY(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;else
GpioDataRegs.GPBTOGGLE.bit.GPIO59=1;}
// PULT READY -----------------------------------------------------
static inline void dat_ONLINE(int x)
{ GpioDataRegs.GPADAT.bit.GPIO0=!x; }
static inline void set_ONLINE(void)
{ GpioDataRegs.GPASET.bit.GPIO0=1; }
static inline void clear_ONLINE(void)
{ GpioDataRegs.GPACLEAR.bit.GPIO0=1; }
static inline void toggle_ONLINE(void)
{ GpioDataRegs.GPATOGGLE.bit.GPIO0=1; }
// LED OUT 1 -----------------------------------------------------
static inline void dat_LED_OUT_1(int x)
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
GpioDataRegs.GPBDAT.bit.GPIO60=!x; else
if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO7=!x; else
GpioDataRegs.GPBDAT.bit.GPIO60=x; }
static inline void set_LED_OUT_1(void)
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; else
if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO7=1; else
GpioDataRegs.GPBSET.bit.GPIO60=1; }
static inline void clear_LED_OUT_1(void)
{ if(Desk==dsk_BKST || Desk==dsk_COMM)
GpioDataRegs.GPBSET.bit.GPIO60=1; else
if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO60=1; }
static inline void toggle_LED_OUT_1(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO7=1; else
GpioDataRegs.GPBTOGGLE.bit.GPIO60=1;}
// LED OUT 2 -----------------------------------------------------
static inline void dat_LED_OUT_2(int x)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPADAT.bit.GPIO1=!x; else
if(Desk==dsk_BKST) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
if(Desk==dsk_COMM) GpioDataRegs.GPBDAT.bit.GPIO63=!x; else
GpioDataRegs.GPBDAT.bit.GPIO63=x; }
static inline void set_LED_OUT_2(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPACLEAR.bit.GPIO1=1; else
if(Desk==dsk_BKST) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
if(Desk==dsk_COMM) GpioDataRegs.GPBCLEAR.bit.GPIO63=1; else
GpioDataRegs.GPBSET.bit.GPIO63=1; }
static inline void clear_LED_OUT_2(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPASET.bit.GPIO7=1; else
if(Desk==dsk_BKST) GpioDataRegs.GPBSET.bit.GPIO62=1; else
if(Desk==dsk_COMM) GpioDataRegs.GPBSET.bit.GPIO63=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO63=1; }
static inline void toggle_LED_OUT_2(void)
{ if(Desk==dsk_LOAD) GpioDataRegs.GPATOGGLE.bit.GPIO1=1; else
if(Desk==dsk_BKST) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
GpioDataRegs.GPBTOGGLE.bit.GPIO63=1;}
// RES OUT 1 -----------------------------------------------------
static inline void dat_RES_OUT_1(int x)
{
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPADAT.bit.GPIO9=!x; else
if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else
GpioDataRegs.GPBDAT.bit.GPIO58=!x; }
static inline void set_RES_OUT_1(void)
{
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPACLEAR.bit.GPIO9=1; else
if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
static inline void clear_RES_OUT_1(void)
{
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPASET.bit.GPIO9=1; else
if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else
GpioDataRegs.GPBSET.bit.GPIO58=1; }
static inline void toggle_RES_OUT_1(void)
{
if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPATOGGLE.bit.GPIO9=1; else
if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
// RES OUT 2 -----------------------------------------------------
static inline void dat_RES_OUT_2(int x)
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPADAT.bit.GPIO3=!x; else
GpioDataRegs.GPBDAT.bit.GPIO61=x; }
static inline void set_RES_OUT_2(void)
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPACLEAR.bit.GPIO3=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO61=1; }
static inline void clear_RES_OUT_2(void)
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPASET.bit.GPIO3=1; else
GpioDataRegs.GPBSET.bit.GPIO61=1; }
static inline void toggle_RES_OUT_2(void)
{ if(Desk==dsk_LOAD || Desk==dsk_EPLT)
GpioDataRegs.GPATOGGLE.bit.GPIO3=1; else
GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;}
// START DPTB -----------------------------------------------------
static inline void dat_START_DPTB(int x)
{ GpioDataRegs.GPBDAT.bit.GPIO62=x; }
static inline void set_START_DPTB(void)
{ GpioDataRegs.GPBSET.bit.GPIO62=1; }
static inline void clear_START_DPTB(void)
{ GpioDataRegs.GPBCLEAR.bit.GPIO62=1; }
static inline void toggle_START_DPTB(void)
{ GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;}
// STOP DPTB -----------------------------------------------------
static inline void dat_STOP_DPTB(int x)
{ GpioDataRegs.GPBDAT.bit.GPIO58=x; }
static inline void set_STOP_DPTB(void)
{ GpioDataRegs.GPBSET.bit.GPIO58=1; }
static inline void clear_STOP_DPTB(void)
{ GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
static inline void toggle_STOP_DPTB(void)
{ GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
extern LONGE DigErr;
void select_tpl_canal(int n_tpl);
void get_Mode(void);
void get_Buttons(void);