Устранено выставление высокого уровня на линиях CAN при перезагрузке

This commit is contained in:
2026-09-07 15:47:22 +03:00
parent 3f5e355783
commit af73851fd7
216 changed files with 1604 additions and 49493 deletions

View File

@@ -3,6 +3,7 @@
extern int Mode,Desk,CanDevAdr,TermoAD,TermoRS,TermoSW;
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
@@ -56,6 +57,33 @@ static inline void clear_LED_OUT_2(void)
else GpioDataRegs.GPBSET.bit.GPIO63=1; }
static inline void toggle_LED_OUT_2(void)
{ GpioDataRegs.GPBTOGGLE.bit.GPIO63=1;}
// RES OUT 1 -----------------------------------------------------
static inline void dat_RES_OUT_1(int x)
{
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_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else
GpioDataRegs.GPBCLEAR.bit.GPIO58=1; }
static inline void clear_RES_OUT_1(void)
{
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_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else
GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;}
// RES OUT 2 -----------------------------------------------------
static inline void dat_RES_OUT_2(int x)
{ GpioDataRegs.GPBDAT.bit.GPIO61=x; }
static inline void set_RES_OUT_2(void)
{ GpioDataRegs.GPBCLEAR.bit.GPIO61=1; }
static inline void clear_RES_OUT_2(void)
{ GpioDataRegs.GPBSET.bit.GPIO61=1; }
static inline void toggle_RES_OUT_2(void)
{ GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;}
extern int ExtraCanal[];
void select_tpl_canal(int n_tpl);

View File

@@ -78,6 +78,13 @@ void main()
init_zone7();
get_Mode();
InitCan(0,CanDevAdr);
create_uart_vars(sizeof(CMD_TO_TMS));
setup_uart(COM_1,115200);
setup_uart(COM_2,115200);
InitSeeprom();
setup_leds_line();
led1_on();
led2_off();
@@ -89,17 +96,12 @@ void main()
}
led1_off();
led2_off();
unsetup_leds_line();
get_Mode();
set_cntrl_addr(Mode,16);
create_uart_vars(sizeof(CMD_TO_TMS));
setup_uart(COM_1,115200);
setup_uart(COM_2,115200);
InitSeeprom();
InitCan(0,CanDevAdr);
timer_Init();
clear_mem();
set_cntrl_addr(Mode,16);
timer_Init();
EnableInterrupts();
if(Desk!=dsk_PULT)
{
@@ -107,7 +109,6 @@ void main()
}
Init_sensors();
EnableInterrupts();
Load_params();

View File

@@ -11,9 +11,15 @@
int Mode,Desk,CanDevAdr,TermoAD=0,TermoRS=0,TermoSW=0;
int ExtraCanal[24];
int MUX_GPIO32,MUX_GPIO48,DIR_GPIO32,DIR_GPIO48;
void setup_leds_line()
{
MUX_GPIO32 = GpioCtrlRegs.GPBMUX1.bit.GPIO32;
MUX_GPIO48 = GpioCtrlRegs.GPBMUX2.bit.GPIO48;
DIR_GPIO32 = GpioCtrlRegs.GPBDIR.bit.GPIO32;
DIR_GPIO48 = GpioCtrlRegs.GPBDIR.bit.GPIO48;
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0;
@@ -22,13 +28,23 @@ void setup_leds_line()
EDIS;
}
void unsetup_leds_line()
{
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = MUX_GPIO32;
GpioCtrlRegs.GPBMUX2.bit.GPIO48 = MUX_GPIO48;
GpioCtrlRegs.GPBDIR.bit.GPIO32 = DIR_GPIO32;
GpioCtrlRegs.GPBDIR.bit.GPIO48 = DIR_GPIO48;
EDIS;
}
void get_Mode()
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11
GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27
GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFCC0; // 32<EFBFBD>34
GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFFC0; // 32—34
GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63
GpioCtrlRegs.GPADIR.bit.GPIO20 = 0;
@@ -53,6 +69,11 @@ void get_Mode()
if (Desk==dsk_COMM) { TermoSW = 2; TermoAD = 1;}
if (Desk==dsk_BKSD) { TermoSW = 1; TermoRS = 1;}
clear_LED_OUT_1();
clear_LED_OUT_2();
clear_RES_OUT_1();
clear_RES_OUT_2();
EALLOW;
switch(Desk)
{