/*----------------------------------------------------------------------*/ void initEMIOS_0Image(void) { /* eMIOS0初始化80MHz分为10MHz */ EMIOS_0.MCR.B.GPRE= 7; /* GPRE+1=分频系数;/* Divide 80 MHz sysclk by 7+1 = 8 for 10MHz eMIOS clk */ EMIOS_0.MCR.B.GPREN = 1; /* Enable eMIOS clock */ EMIOS_0.MCR.B.GTBE = 1; /* Enable global time base */ EMIOS_0.MCR.B.FRZ = 1; /* Enable stopping channels when in debug mode */ //PA3场中断捕捉上升沿及下降沿 EMIOS_0.CH[3].CCR.B.MODE = 0x02; // Mode is SAIC, continuous EMIOS_0.CH[3].CCR.B.BSL = 0x01; /* Use counter bus B (default) */ EMIOS_0.CH[3].CCR.B.EDSEL = 1; //Both edges // EMIOS_0.CH[3].CCR.B.EDPOL=1; //Edge Select falling edge EMIOS_0.CH[3].CCR.B.FEN=1; //interupt enbale SIU.PCR[3].R = 0x0102; // Initialize pad for eMIOS channel Initialize pad for input INTC_InstallINTCInterruptHandler(FieldInputCapture,142,1); //PA7行中断捕捉上升沿 EMIOS_0.CH[7].CCR.B.MODE = 0x02; // Mode is SAIC, continuous EMIOS_0.CH[7].CCR.B.BSL = 0x01; /* Use counter bus B (default) */ EMIOS_0.CH[7].CCR.B.EDSEL = 0; EMIOS_0.CH[7].CCR.B.EDPOL=1; //Edge Select rising edge EMIOS_0.CH[7].CCR.B.FEN=1; //interupt enbale SIU.PCR[7].R = 0x0102; // Initialize pad for eMIOS channel Initialize pad for input INTC_InstallINTCInterruptHandler(RowInputCapture,144,3); //C10口二值化入口 SIU.PCR[42].R = 0x0102; // C9口二值化入口 }
void IntcInterruptLINFLEXHandlers(void) { /* Configure INTC */ INTC.MCR.R=0; /*ISRs*/ INTC_InstallINTCInterruptHandler(&LINFlex_0_RX_ISR, LINFLEX0_RX_Vector, 1); INTC_InstallINTCInterruptHandler(&LINFlex_0_TX_ISR, LINFLEX0_TX_Vector, 2); INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Err, LINFLEX0_ERR_Vector, 3); /* Masking Priority to Zero*/ INTC.CPR.R = 7; }
void IntcInterruptLINFLEXHandlers(void) { /* Configure options of the INTC */ INTC.MCR.R=0; /* Defines interruption function */ INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Rx, LINFLEX0_RX_Vector, 1); INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Tx, LINFLEX0_TX_Vector, 2); INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Err, LINFLEX0_ERR_Vector, 3); /* Masking Priority to Zero*/ INTC.CPR.R = 0; }
void initPIT(void) { /* NOTE: DIVIDER FROM SYSCLK TO PIT ASSUMES DEFAULT DIVIDE BY 1 */ PIT.PITMCR.R = 0x00000001; /* Enable PIT and configure timers to stop in debug mode */ PIT.CH[1].LDVAL.R = 0x7800; /* PIT1 timeout = 64000 sysclks x 1sec/64M sysclks = 1 msec */ PIT.CH[1].TCTRL.R = 0x000000003; /* Enable PIT1 interrupt and make PIT active to count */ INTC_InstallINTCInterruptHandler((void *)&Pit1ISR,60,0x03); /* NOTE: DIVIDER FROM SYSCLK TO PIT ASSUMES DEFAULT DIVIDE BY 1 */ PIT.CH[2].LDVAL.R = 300; /* PIT1 timeout = 64000 sysclks x 1sec/64M sysclks = 1 msec */ PIT.CH[2].TCTRL.R = 0x000000002; /* Enable PIT1 interrupt and leave PIT inactive to count */ INTC_InstallINTCInterruptHandler((void *)&Pit2ISR,61,0x01); }
static void init_INTC_ON(void) { SIU .DIRER.B.EIRE9 = 1; SIU .IFEER.B.IFEE9 = 1; SIU.PCR[13].R = 0x0900; INTC_InstallINTCInterruptHandler(INTC_wakeup, 50, 1); }
/************************************************************** * Name : LIN_init_Intrruptions * Description : Initializes interrution that will call when a transmition or * receptions are detected. * Parameters : [Input, Output, Input / output] * Return : * Critical/explanation : [yes / No] **************************************************************/ void LIN_init_Intrruptions( void ) { //INTC_InstallINTCInterruptHandler(&UART_TXCompleted, LINFLEX2_TX_Vector, PRIORITY10); INTC_InstallINTCInterruptHandler(&LIN_state_Machine, LINFLEX2_RX_Vector, PRIORITY10); }
/*-----------------------------------------------------------------------*/ void init_pit(void) { /* NOTE: DIVIDER FROM SYSCLK TO PIT ASSUMES DEFAULT DIVIDE BY 1 */ PIT.PITMCR.R = 0x00000001; /* Enable PIT and configure timers to stop in debug modem */ PIT.CH[1].LDVAL.R = 800000; /* 800000==10ms */ PIT.CH[1].TCTRL.R = 0x00000003; /* Enable PIT1 interrupt and make PIT active to count */ INTC_InstallINTCInterruptHandler(PitISR,60,1); /* PIT 1 interrupt vector with priority 1 */ }
/** * \brief PIT Channel Low level configuration * \author Abraham Tezmol * \param uint8_t channel - Channel to be configured * \param tCallbackFunction Callback - Function to invoke upon PIT count to zero event * \return void */ void PIT_channel_configure(uint8_t channel, tCallbackFunction Callback) { PIT.CH[channel].LDVAL.R = PIT_CHANNEL_VALUE; /* PIT1 timeout --> Refer to PIT.h file for calculations */ PIT_Callback[channel] = Callback; /* Initialize callback function */ /* Install Interrupt routine for this specific channel */ INTC_InstallINTCInterruptHandler(PIT_channel_0_isr,59,5); }
void TickTimer_SetFreqHz(int Freq) { PIT.PITMCR.B.MDIS_RTI=0;/*turn on PIT just for RTI*/ PIT.RTI.LDVAL.R=OSC_FREQUENCY*1000000/Freq-1; PIT.RTI.TCTRL.B.TIE=1; /*enable interrupt*/ PIT.RTI.TCTRL.B.TEN=1;/*turn on RTI*/ INTC_InstallINTCInterruptHandler(knl_timer_handler,305,1); INTC.CPR.B.PRI = 0;/* Lower INTC's current priority */ }
int main(void) { int i; InitModesClocks(); INTC_InitINTCInterrupts(); INTC_InstallINTCInterruptHandler(interrutsion,59,1); INTC.CPR.R=0; GPIOport(68); GPIOport(69); GPIOport(70); GPIOport(71); GPIO_out(68); GPIO_out(69); GPIO_out(70); GPIO_out(71); for( i = 0 ; i < E_TotalTsk ; i++ ) { ar_dynamic[i] = ar_tsk[i].offset; } PITconfig(); PITchannelinterrupt(0,1); PITchanneltimeout(0,64000); PITcounterReset(0); PITintflagReset(0); PITstart(0); while(1) { if(flagISR) { flagISR = 0; for( i = 0 ; i < E_TotalTsk ; i++ ) { if( ar_dynamic[i] > 0 ) { ar_dynamic[i]--; } else { ar_dynamic[i] = ar_tsk[i].period; ar_tsk[i].tskPtr(); } } } } }
void initPIT_RTI(void) { // PIT.MCR.R = 0X00000001; //RTI时钟使能,PIT定时器时钟使能,调试模式停止定时 PIT .PITMCR.R = 0X00000001; //RTI时钟使能,PIT定时器时钟使能,调试模式停止定时 PIT .RTI.LDVAL.R = 8000; //实时中断周期为1ms PIT .RTI.TCTRL.R = 0X00000003; //实时中断使能,定时器使能 INTC .PSR[305].R = 1; //实时中断优先级 INTC_InstallINTCInterruptHandler(RTI_ISR, 305, 1); //设置中断号 }
void start_PWM_MONITOR(void) { Sys_flag++; init_INTC_CP_C(); INTC_InstallINTCInterruptHandler(INTC_CP_C, 50, 1); if(!CP_flag) // 3周期没有信号 { if(Sys_flag>=3) CP_state = ACCP_NOLINK; } }
int main(void) { INIT(); //initialises the system modes (reloj interno, modos de ejecucion) init_leds (); STM_config_clock(); INTC.CPR.B.PRI = 0; INTC_InstallINTCInterruptHandler(function_time,30,1); scheduler(); }
/*functions*/ void init_PIT_RTI(void) { UINT8 i = 0; PIT .PITMCR.R = 0X00000001; //RTI时钟使能,PIT定时器时钟使能,调试模式停止定时 for (i = 0; i < 4; i++) { PIT .TIMER[i].LDVAL.R = 64000; //周期中断定时器通道1中断周期为1ms, PIT .TIMER[i].TCTRL.R = 0X00000003; //周期中断定时器通道1中断使能,定时器使能 //INTC.PSR[301+i].R = 1; //周期中断定时器通道1优先级 INTC_InstallINTCInterruptHandler(isr_pits[i], 301 + i, 2); //设置中断号 // INTC_InstallINTCInterruptHandler(RTI_ISR, 302, 1); //设置中断号 } }
/*----------------------------------------------------------------------*/ void initEMIOS_0Image(void) { //PA3场中断捕捉上升沿及下降沿 EMIOS_0.CH[3].CCR.B.MODE = 0x02; // Mode is SAIC, continuous EMIOS_0.CH[3].CCR.B.BSL = 0x01; /* Use counter bus B (default) */ EMIOS_0.CH[3].CCR.B.EDSEL = 1; //Both edges // EMIOS_0.CH[3].CCR.B.EDPOL=1; //Edge Select falling edge // EMIOS_0.CH[3].CCR.B.FEN=1; //interupt enbale SIU.PCR[3].R = 0x0102; // Initialize pad for eMIOS channel Initialize pad for input INTC_InstallINTCInterruptHandler(FieldInputCapture,142,2); //PA7行中断捕捉上升沿 EMIOS_0.CH[7].CCR.B.MODE = 0x02; // Mode is SAIC, continuous EMIOS_0.CH[7].CCR.B.BSL = 0x01; /* Use counter bus B (default) */ EMIOS_0.CH[7].CCR.B.EDSEL = 0; EMIOS_0.CH[7].CCR.B.EDPOL=1; //Edge Select rising edge // EMIOS_0.CH[7].CCR.B.FEN=1; //interupt enbale SIU.PCR[7].R = 0x0102; // Initialize pad for eMIOS channel Initialize pad for input INTC_InstallINTCInterruptHandler(RowInputCapture,144,3); //C10口二值化入口 SIU.PCR[42].R = 0x0102; // C9口二值化入口 }
void main(void) { volatile uint32_t IdleCtr = 0; initModesAndClks(); /* Initialize mode entries */ initPeriClkGen(); /* Initialize peripheral clock generation for LINFlex */ disableWatchdog(); /* Disable watchdog */ INTC_InitINTCInterrupts(); EXCEP_InitExceptionHandlers(); INTC.MCR.R=0; INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Rx, 79, 10); INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Tx, 80, 10); INTC_InstallINTCInterruptHandler(&Intc_LINFLEX_Err, 81, 10); INTC.CPR.R = 0; initLINFlex_0(9600); /* Initialize FLEXCAN 0 as master */ NormalModeLINFLEX_2(); //transmitLINframe(); /* Transmit one frame from master */ while (1) {IdleCtr++;} /* Idle loop: increment counter */ }
/*-----------------------------------------------------------------------*/ void init_serial_port_2(void) { LINFLEX_2.LINCR1.B.INIT=1; LINFLEX_2.LINCR1.R=0x00000011; LINFLEX_2.LINIER.B.DRIE=1; #ifndef PERIPH_SET_1_CLK_16M LINFLEX_2.LINIBRR.B.DIV_M= 520; LINFLEX_2.LINFBRR.B.DIV_F = 83; #else LINFLEX_2.LINIBRR.B.DIV_M= 52; LINFLEX_2.LINFBRR.B.DIV_F = 1; #endif LINFLEX_2.UARTCR.B.UART=1; LINFLEX_2.UARTCR.R=0x00000033; LINFLEX_2.LINCR1.B.INIT=0; SIU.PCR[40].R = 0x0400; /* MPC56xxB: Configure port C8 as LIN0TX */ SIU.PCR[41].R = 0x0103; /* MPC56xxB: Configure port C9 as LIN0RX */ INTC_InstallINTCInterruptHandler(intc_serial_port_2_RX, 119, 5); }
/*-----------------------------------------------------------------------*/ void init_serial_port_3(void) { LINFLEX_3.LINCR1.B.INIT=1; LINFLEX_3.LINCR1.R=0x00000011; LINFLEX_3.LINIER.B.DRIE=1; #ifndef PERIPH_SET_1_CLK_16M LINFLEX_3.LINIBRR.B.DIV_M= 520; LINFLEX_3.LINFBRR.B.DIV_F = 83; #else LINFLEX_3.LINIBRR.B.DIV_M= 104; LINFLEX_3.LINFBRR.B.DIV_F = 3; #endif LINFLEX_3.UARTCR.B.UART=1; LINFLEX_3.UARTCR.R=0x00000033; LINFLEX_3.LINCR1.B.INIT=0; SIU.PCR[74].R = 0x0400; //LINFLEX_3 TX PE10 SIU.PCR[75].R = 0x0103; //LINFLEX_3 RX PE11 涉及到引脚复用 SIU.PSMI[31].R = 1; INTC_InstallINTCInterruptHandler(intc_serial_port_3_RX, 122, 5); }
/*-----------------------------------------------------------------------*/ void init_serial_port_0(void) { LINFLEX_0.LINCR1.B.INIT=1; //进入初始化模式 LINFLEX_0.LINCR1.R=0x00000015; LINFLEX_0.LINIER.B.DRIE=1; //允许接收中断 /*波特率算法baud=Fperiph_clk/(16*LFDIV) DIV_M=LFDIV整数部分 DIV_F=LFDIV小数部分*16 */ //#ifndef PERIPH_SET_1_CLK_16M //80M LINFLEX_0.LINIBRR.B.DIV_M= 17; //115200 //波特率设置38400:80M-130+3 57600:80M-86+13 115200:80M-43+6 9600:80M-520+13 LINFLEX_0.LINFBRR.B.DIV_F = 6; //38400:64M-104+3 //#else // LINFLEX_0.LINIBRR.B.DIV_M= 17; //波特率设置 2400:416+11, 9600:104+3, 10417:96+0, 19200:52+1, 57600:17+6 // LINFLEX_0.LINFBRR.B.DIV_F = 6; //波特率设置 115200:8+11, 230400:4+5, 460800:2+3, 921600:1+1 //#endif LINFLEX_0.UARTCR.B.UART=1; LINFLEX_0.UARTCR.R=0x00000033;//8-bit data、UART mode LINFLEX_0.LINCR1.B.INIT=0; //退出初始化模式 SIU.PCR[18].R = 0x0400; /* MPC56xxB: Configure port B2 as LIN0TX */ SIU.PCR[19].R = 0x0103; /* MPC56xxB: Configure port B3 as LIN0RX */ INTC_InstallINTCInterruptHandler(intc_serial_port_0_RX,79,5); }
/*-----------------------------------------------------------------------*/ void init_serial_port_1(void) { LINFLEX_1.LINCR1.B.INIT=1; //进入初始化模式 LINFLEX_1.LINCR1.R=0x00000015; //#ifndef PERIPH_SET_1_CLK_16M // LINFLEX_1.LINIBRR.B.DIV_M= 520; //57600:86&13 9600:520&13 // LINFLEX_1.LINFBRR.B.DIV_F =13; //#else LINFLEX_1.LINIBRR.B.DIV_M= 26; //38400 LINFLEX_1.LINFBRR.B.DIV_F = 1; //#endif LINFLEX_1.UARTCR.B.UART=1; LINFLEX_1.UARTCR.R=0x00000033; LINFLEX_1.LINIER.B.DRIE=1; LINFLEX_1.LINCR1.B.INIT=0; //退出初始化模式 SIU.PCR[38].R = 0x0400; /* MPC56xxB: Configure port C6 as LIN1TX */ SIU.PCR[39].R = 0x0103; /* MPC56xxB: Configure port C7 as LIN1RX */ INTC_InstallINTCInterruptHandler(intc_serial_port_1_RX, 99, 5); }
void main (void) { volatile uint32_t i = 0; /* Dummy idle counter */ uint8_t success=0; uint8_t byteReceived=0; uint8_t opcode=0; uint8_t payload=0; char msg[32]; uint8_t msgLength=0; clock = 0; initModesAndClock(); /* MPC56xxP/B/S: Initialize mode entries, set sysclk = 64 MHz*/ initPeriClkGen(); /* Initialize peripheral clock generation for DSPIs */ disableWatchdog(); /* Disable watchdog */ EXCEP_InitExceptionHandlers(); /* Initialize exceptions: only need to load IVPR */ initADC(); initPIT(); /* Initialize PIT1 for 10Hz IRQ, priority 2 */ initPads(); /* Initialize software interrupt 4 */ initEMIOS_0(); /* Initialize eMIOS channels as counter, SAIC, OPWM */ initEMIOS_1(); /* Initialize eMIOS channels as counter, SAIC, OPWM */ initEMIOS_0ch0(); /* Initialize eMIOS 0 channel 0 as modulus counter*/ initEMIOS_0ch23(); /* Initialize eMIOS 0 channel 23 as modulus counter*/ initEMIOS_0ch8(); /* Initialize eMIOS 0 channel 8 as modulus counter*/ //just to make sure the wheels are facing straight initDrive(); Drive(); SIU.PCR[64].R = 0x0100; /* Program the drive enable pin of S1 (PE0) as input*/ while((SIU.PGPDI[2].R & 0x80000000) == 0x80000000); /*Wait until S1 switch is pressed*/ for(i=0;i<100000;i++); while((SIU.PGPDI[2].R & 0x80000000) != 0x80000000); /*Wait until S1 switch is released*/ INTC_InitVector(); INTC_InstallINTCInterruptHandler(&SwIrq4ISR,4,3); INTC_InstallINTCInterruptHandler(&EOC_ISR,62,5); INTC_InstallINTCInterruptHandler(&Pit1ISR,60,2); INTC_InstallINTCInterruptHandler(&Pit2ISR,61,4); INTC_InstallINTCInterruptHandler(&Pit3ISR,127,4); initSerial(); flag_lineDone = -1; initCamera(); initSteeringController(); INTC_InitINTCInterrupts(); INTC.CPR.B.PRI = 0; /* Single Core: Lower INTC's current priority */ initDrive(); // setPWMRw(48); // setPWMLw(48); setDirection(FORWARD); in = getInBuffer(); out = getOutBuffer(); MESSAGE("I'm running\n\r"); fifo_write(&out->fifo,msg,msgLength); while(isCameraReady()!=STATE_READY); for(;;) { if(!(flag_lineDone==1)) { Drive(); success=0; success = fifo_read(&in->fifo,&byteReceived,1); if(success==1) { if(opcode==0) { opcode = byteReceived; MESSAGE("Command Received: "); fifo_write(&out->fifo,msg,msgLength); } else { payload = byteReceived; switch(opcode) { case DRIVE: // TransmitData("Drive Command\n\r"); MESSAGE("Drive Command\n\r"); fifo_write(&out->fifo,msg,msgLength); setDirection(payload); break; case SET_SPEED: // TransmitData("Set Speed Command\n\r"); MESSAGE("Set Speed Command\n\r"); fifo_write(&out->fifo,msg,msgLength); setPWMRw(payload); setPWMLw(payload); break; case STEERING: // TransmitData("Set Steering Command\n\r"); MESSAGE("Set Steering Command\n\r"); fifo_write(&out->fifo,msg,msgLength); setAngle(payload); break; default: // TransmitData("Bad command\n\r"); MESSAGE("Bad command\n\r"); fifo_write(&out->fifo,msg,msgLength); break; } opcode = 0; } } } if(TRANSMISSION_DONE()&&(out->fifo.length>0)) Tx(); if(RECEPTION_DONE()&&(in->fifo.length<IN_BUFFER_SIZE)) Rx(); } }
/*============================================================================== * Function: Init_ISR * * Description: Interrupts Configuration for timer PIT. * ==============================================================================*/ void Init_ISR(void){ INTC_InstallINTCInterruptHandler(ISR_Tick,59,1); //Software Interrupt INTC.CPR.R = 0; }
int main(void) { volatile T_ULONG lul_InfLoop = 0; volatile T_ULONG lul_Validate = 0; volatile T_ULONG lul_ValidateUp = 0; volatile T_ULONG lul_ValidateDw = 0; T_UWORD luw_SwDwState; T_UWORD luw_SwUpState; WL_initModesAndClock(); WL_EIRQ_Init(); WL_STM_init(); WL_GPIO_Init(); init_ext_ints(); init_PIT(); asm(" wrteei 1"); INTC_InstallINTCInterruptHandler(WL_A_Pinch,EIRQ_2,1); /* vector 32 for STM[2] */ INTC.CPR.R = 0; /* Loop forever */ for (;;) { /*------------------------------*/ luw_SwDwState = GPIO_GetState(SW_DOWN); if (luw_SwDwState == 1) { lul_Validate = WL_CheckValid(); if (lul_Validate == 1) { lul_ValidateDw = WL_CheckAutoManualDw(); } else { /*DO NOTHING*/ } } else { /*DO NOTHING*/ } while (luw_SwDwState == 1){ if (lul_ValidateDw == 1) { WL_WinMDw(); } else { /*DO NOTHING*/ } if (lul_ValidateDw == 0) { WL_WinADw(); } else { /*DO NOTHING*/ } luw_SwDwState = GPIO_GetState(SW_DOWN); } /*------------------------------*/ luw_SwUpState = GPIO_GetState(SW_UP); if (luw_SwUpState == 1) { lul_Validate = WL_CheckValid(); if (lul_Validate == 1) { lul_ValidateUp = WL_CheckAutoManualUp(); } else { /*DO NOTHING*/ } } else { /*DO NOTHING*/ } while (luw_SwUpState == 1){ if (lul_ValidateUp == 1) { WL_WinMUp(); } else { /*DO NOTHING*/ } if (lul_ValidateUp == 0) { WL_WinAUp(); } else { /*DO NOTHING*/ } luw_SwUpState = GPIO_GetState(SW_UP); } GPIO_SetState(LED_DOWN, 0); GPIO_SetState(LED_UP, 0); lul_InfLoop++; WL_SetState(); } }
void main (void) { T_UWORD luw_i; T_UBYTE lub_CountIndice = 0; initModesAndClock(); /* Initialize mode entries and system clock */ INTC_InstallINTCInterruptHandler(isr,59,1); INTC.CPR.R = 0; initGPIO(); initPIT(ValTMR_0, ValTMR_1); while (1) { if(rub_FlagValUpAut || rub_FlagValUpMan){ if(rub_Fled){ rub_Fled = 0; SIU.GPDO[lub_CountIndice].B.PDO = 1; SIU.GPDO[10].B.PDO = 0; SIU.GPDO[11].B.PDO = 1; lub_CountIndice++; if(lub_CountIndice >= 10){ lub_CountIndice = 10; rub_FlagValUpAut = 0; rub_FValAutUP = 0; } } } /******************************************************************************/ else if(rub_FlagValDownAut || rub_FlagValDownMan){ if(rub_Fled){ rub_Fled = 0; if(lub_CountIndice <= 1) { lub_CountIndice = 1; rub_FlagValDownAut = 0; rub_FValAutDown = 0; SIU.GPDO[11].B.PDO = 1; } SIU.GPDO[lub_CountIndice-1].B.PDO = 0; SIU.GPDO[10].B.PDO = 1; SIU.GPDO[11].B.PDO = 0; lub_CountIndice--; if(lub_CountIndice == 0 && rub_FlagValAnPi){ SIU.GPDO[11].B.PDO = 1; PIT.CH[1].TCTRL.B.TEN = 0; PIT.CH[1].TCTRL.B.TEN = 1; PIT.CH[1].LDVAL.R = ValTMR_1; PIT.CH[1].TFLG.B.TIF = 1; rub_FlagValAnPi = 0; while(!PIT.CH[1].TFLG.B.TIF); PIT.CH[1].TFLG.B.TIF = 1; rub_Fled = 0; rub_FlagValDownAut = 0; rub_FlagValDownMan = 0; rub_FlagValUpAut = 0; rub_FlagValUpMan = 0; rub_FValAutDown = 0; rub_FValAutUP = 0; } } } //////////////////////////////////////////////// else if(!rub_FlagValUpAut && !rub_FlagValUpMan && !rub_FlagValDownAut && !rub_FlagValDownMan){ rub_Fled = 0; SIU.GPDO[10].B.PDO = 1; SIU.GPDO[11].B.PDO = 1; } } }