From e094952954ec5b1f643bc42581cfe46be15816e0 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 25 Mar 2020 16:20:57 +0200 Subject: Version 1.4.6.19 new RML parameters, tension spring handling, some bug fixing --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 0e95f4053..52775b6ab 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -118,7 +118,6 @@ static GateMutex_Handle gateMillisecDB; uint32_t Millisec_timerBase = TIMER1_BASE; //Timer handle /******************** Functions ********************************************/ -void CalculateVOCAlarms(void); //********************************************************************** /******************** CODE ********************************************/ //********************************************************************** @@ -749,7 +748,8 @@ uint32_t MillisecLowLoop(uint32_t tick) MotorGetStatusFromFPGA(Motor_i); }*/ midtankDisplay = 1-midtankDisplay; - Gas_PPM_Info = Calculate_Gas_Power_Consumption(); + if (WHS_Type == WHS_TYPE_UNKNOWN) + Gas_PPM_Info = Calculate_Gas_Power_Consumption(); //Trigger_WHS_MAX11614_Read_allADC(); #ifdef CONTROL_DEBUG ResetControlTime(); -- cgit v1.3.1 From d1af5a24303a036cc2ede7e7c3c0c7b0036016e7 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 29 Mar 2020 19:57:58 +0300 Subject: evb support + inlock on flash actions --- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 9 +-- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 73 ++++++++++++++++++++-- .../Embedded_SW/Embedded/Drivers/Heater/Heater.c | 4 ++ .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 3 +- .../Head_Card/EEPROM/Head_EEPROM.c | 2 + .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 8 +++ .../Embedded/Drivers/flash_ram/FlashProgram.c | 6 +- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 25 +++++++- Software/Embedded_SW/Embedded/Embedded.cfg | 1 + Software/Embedded_SW/Embedded/Main.c | 2 + .../Embedded/Modules/Control/MillisecTask.c | 4 +- .../Embedded/Modules/Stubs_Handler/Stub_Motor.c | 2 +- 12 files changed, 125 insertions(+), 14 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index e2e71c4cc..21056e162 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -370,11 +370,11 @@ void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent)// 0 - 100% if(PWM_Command_Precent > 100) PWM_Command_Precent = 100; - +#ifndef EVALUATION_BOARD GPO_BLOWER_PWM_FREQ = Freq; GPO_BLOWER_PWM_LOW = PWM_Command_Precent + 1; GPO_BLOWER_PWM_HIGH = 101 - PWM_Command_Precent; - +#endif // low + high = 0xFF in order use the same freq (and change the freq only by Add 0x112). // there is option to change only the high (low + freq constasnt) this will chnga the freq } @@ -424,7 +424,8 @@ void Set_Speed_Sensor_TypeII_Registers(uint32_t Counter, uint32_t Prescaler) uint32_t Read_Speed_Sensor_TypeII()//must be delay between Set_Speed_Sensor_TypeII_Registers to Read_Speed_Sensor_TypeII { - uint32_t Speed_Hz, temp, temp1; + uint32_t Speed_Hz = 0, temp, temp1; +#ifndef EVALUATION_BOARD temp = F1_Tacho_reg9; temp1 = FPGA_Freq; @@ -432,7 +433,7 @@ uint32_t Read_Speed_Sensor_TypeII()//must be delay between Set_Speed_Sensor_Type temp1/=temp; temp1/=F1_Prescaler1_reg6; Speed_Hz = temp1; - +#endif #warning change the speed from Hz to Cm/Sec return Speed_Hz; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index 00b48d3d8..f8f0fb4c6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -124,6 +124,7 @@ LS_DRYER_DH Ls_Dryer_Dh; void FPGA_Read_LS_Safty_Ind_Reg() { // uint8_t temp[8] = {0,0,0,0,0,0,0,0},i; +#ifndef EVALUATION_BOARD LS_Left.ushort = F1_GPI_LS2_D; Ls_Right_Screw_Spool.ushort = F1_GPI_LS3_D; @@ -154,6 +155,7 @@ void FPGA_Read_LS_Safty_Ind_Reg() Dispenser_struct[i].Status = LS_STATUS_OK; } */ +#endif } bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID)//0..7 @@ -162,6 +164,7 @@ bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID)//0..7 assert(Dispenser_ID < MAX_DISPENSER_NUM); +#ifndef EVALUATION_BOARD switch(Dispenser_ID) { case 0: @@ -191,6 +194,7 @@ bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID)//0..7 default: break; } +#endif return Safety_Indication; } @@ -505,15 +509,19 @@ MOT_SW1 F1_Mot_Dr_SW1; uint32_t ActivateCoolerPump() //WHS - Pump the waste accumulated in cooler to the waste tank { +#ifndef EVALUATION_BOARD F1_Mot_Dr_SW1.bits.GPO_DH_MAGNET = ON; //TBD verify polarity F1_Moto_Driver_SW1 = F1_Mot_Dr_SW1.ushort; +#endif return OK; } uint32_t DeActivateCoolerPump() //WHS - Pump the waste accumulated in cooler to the waste tank { +#ifndef EVALUATION_BOARD F1_Mot_Dr_SW1.bits.GPO_DH_MAGNET = OFF; //TBD verify polarity F1_Moto_Driver_SW1 = F1_Mot_Dr_SW1.ushort; +#endif return OK; } uint32_t MagnetControlId = 0xFF; @@ -544,8 +552,10 @@ uint32_t ActivateHeadMagnet() Trigger_Head_Magnet(CLOSE_MAGNET); else { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort &= ~SPARE_SSR13_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif } if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) { @@ -575,8 +585,10 @@ uint32_t DeActivateHeadMagnet() } else { +#ifndef EVALUATION_BOARD F2_CTRL_Reg.ushort |= SPARE_SSR13_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; +#endif } Report("DeActivateHeadMagnet - open the lid magnet",__FILE__,__LINE__,(int)HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,RpWarning,(int)DH_LID_CLOSE,0); if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) @@ -594,7 +606,11 @@ uint32_t DeActivateHeadMagnet() uint32_t ReadHeadMagnetBit() { +#ifndef EVALUATION_BOARD return (F2_CTRL & BIT0);//SSR13 is not in the WD therefore it it possible to read the bit +#else + return 0; +#endif } uint32_t DeActivateAllSSR() @@ -729,39 +745,66 @@ F3_GPI_01 F3_GPI_01_Reg; void WHS_Read_GPI_Registers() { +#ifndef EVALUATION_BOARD F2_GPI_Reg.ushort = F2_GPI_REGISTER1_Direct; F3_GPI_01_Reg.ushort = F3_GPI_01_D; +#endif } bool WHS_GPI_CHILLER_FAULT() { +#ifndef EVALUATION_BOARD return F2_GPI_Reg.bits.F2_GPI_CHILLER_FAULT; +#else + return false; +#endif + } bool WHS_GPI_WASTE_OVERFULL()//waste tank overflow { //#warning NA need to check the DISP_SAFETY_STOP_IND of all the connected dispensers done +#ifndef EVALUATION_BOARD return F2_GPI_Reg.bits.F2_WASTE_OVERFULL_NO; +#else + return false; +#endif } bool WHS_GPI_SW_FILTER_PRES() { +#ifndef EVALUATION_BOARD return F3_GPI_01_Reg.bits.F3_GPI_SW_FILTER_PRES; +#else + return false; +#endif } bool WHS_GPI_WCONTAINER_FULL()//waste tank full { +#ifndef EVALUATION_BOARD return F3_GPI_01_Reg.bits.F3_GPI_WCONTAINER_FULL; +#else + return false; +#endif } bool WHS_GPI_WCONTAINER_WARN()//waste tank empty { +#ifndef EVALUATION_BOARD return F3_GPI_01_Reg.bits.F3_GPI_WCONTAINER_WARN; +#else + return false; +#endif } bool WHS_GPI_WASTE_FLOW_SWITCH()// DRyer air { +#ifndef EVALUATION_BOARD return F2_GPI_Reg.bits.F2_WASTE_FLOW_SW_NO; +#else + return false; +#endif } uint8_t GPO_Waste_Pressure_Software_Stop(uint8_t TrueToStop) @@ -769,6 +812,7 @@ uint8_t GPO_Waste_Pressure_Software_Stop(uint8_t TrueToStop) //GPO_SPARE1_1 (New BP: DISP_SAFETY_STOP_INPUT) Connected to WASTE_PRESS_SW and Stop from MCU uint8_t Status = OK; +#ifndef EVALUATION_BOARD switch(TrueToStop) { case true: @@ -781,6 +825,7 @@ uint8_t GPO_Waste_Pressure_Software_Stop(uint8_t TrueToStop) Status = ERROR; break; } +#endif return Status; } @@ -789,6 +834,7 @@ bool Get_COVER_1_State(COVERS_ENUM CoverId) { assert (CoverId VALVE_DISPENSER_8) return ERROR; +#ifdef EVALUATION_BOARD + return OK; +#endif VALVE_BUSY_REG Valve_Busy_Reg; Valve_Busy_Reg.ushort = F2_DISPENSER_VALVE_IN_Direct; @@ -346,7 +352,9 @@ void EnableDisableDispenserValve(Valves_t Valve_Id, bool EnableOrDisable ) break; } +#ifndef EVALUATION_BOARD F2_DISPENSER_VALVE_OUT = Dispenser_Valve_GPO_Reg.ushort; +#endif } // diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index 240585e43..5daec00ed 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -104,7 +104,9 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b // block passed to the flash function must be divisible by 4. // - status = FlashProgram((uint32_t *)ui32BufferAddr, ui32ProgAddr,(ui32DataSize + 3) & ~3); + ROM_IntMasterDisable(); + status = ROM_FlashProgram((uint32_t *)ui32BufferAddr, ui32ProgAddr,(ui32DataSize + 3) & ~3); + ROM_IntMasterEnable(); if (status) Report("FlashProgram Error", __FILE__,status,ui32ProgAddr , RpMessage, (ui32DataSize + 3) & ~3, 0); @@ -161,9 +163,11 @@ void FlashInit(void) if (RxIndex++>=MAX_CONT_LOG) RxIndex = 0; #endif + ROM_IntMasterDisable(); for(ui32Idx = FLASH_RAM_BASE; ui32Idx < FLASH_RAM_BASE+FLASH_SIZE; ui32Idx += 1024) { FlashErase(ui32Idx); } + ROM_IntMasterEnable(); } diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index dd55f4f91..2ebcbc130 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -27,8 +27,11 @@ uint32_t MCU_E2PromProgram(int Address,uint32_t Data) } Report("MCU_E2PromProgram",__FILE__,__LINE__,Address,RpWarning,Data,0); - +#ifdef EVALUATION_BOARD + return 0; +#else return (EEPROMProgram((uint32_t *)&Buffer, Address*4, 4)); +#endif } uint32_t MCU_E2PromRead(int Address,uint32_t *Data) { @@ -37,7 +40,9 @@ uint32_t MCU_E2PromRead(int Address,uint32_t *Data) Report("MCU_E2PromRead Error",__FILE__,__LINE__,Address,RpWarning,*Data,0); return ERROR; } +#ifndef EVALUATION_BOARD EEPROMRead((uint32_t *)Data,Address*4, 4); +#endif Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,*Data,0); return OK; @@ -52,13 +57,17 @@ void MCU_E2PromProgramMidTank(int midtankId,float a,float b) A = a; Report("MCU_E2PromProgramMidTank",__FILE__,midtankId,Address,RpWarning,(int)(a*1000),0); +#ifndef EVALUATION_BOARD EEPROMProgram((uint32_t *)&A, Address*4, 4); +#endif Address = EEPROM_STORAGE_MIDTANK_1_B+2*midtankId; B = b; Report("MCU_E2PromProgramMidTank",__FILE__,midtankId,Address,RpWarning,(int)(b*1000),0); +#ifndef EVALUATION_BOARD EEPROMProgram((uint32_t *)&B, Address*4, 4); +#endif } float MCU_E2PromReadMidtank_A(int MidtankId) { @@ -69,7 +78,9 @@ float MCU_E2PromReadMidtank_A(int MidtankId) Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)MidtankId,0); return ERROR; } +#ifndef EVALUATION_BOARD EEPROMRead((uint32_t *)&Data,Address*4, 4); +#endif Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)(Data*1000),0); return (Data); @@ -83,7 +94,9 @@ float MCU_E2PromReadMidtank_B(int MidtankId) Report("MCU_E2PromReadMidtank error",__FILE__,__LINE__,Address,RpWarning,(int)MidtankId,0); return ERROR; } +#ifndef EVALUATION_BOARD EEPROMRead((uint32_t *)&Data,Address*4, 4); +#endif Report("MCU_E2PromRead",__FILE__,__LINE__,Address,RpWarning,(int)(Data*1000),0); return (Data); @@ -124,13 +137,17 @@ uint32_t MCU_E2PromDryerBacklashProgram(char *Data) Report("MCU_E2PromDryerBacklashProgram length error",__FILE__,__LINE__,len,RpWarning,(int)0,0); return ERROR; } +#ifndef EVALUATION_BOARD EEPROMProgram((uint32_t *)Backlash, EEPROM_STORAGE_DRYER_BACKLASH*4, 4); +#endif return OK; } float MCU_E2PromDryerBacklashRead() { float Data; +#ifndef EVALUATION_BOARD EEPROMRead((uint32_t *)&Data,EEPROM_STORAGE_DRYER_BACKLASH*4, 4); +#endif Report("MCU_E2PromDryerBacklashRead length ",__FILE__,__LINE__,EEPROM_STORAGE_DRYER_BACKLASH*4,RpWarning,(int)(Data*100),0); @@ -147,13 +164,17 @@ uint32_t MCU_E2PromEmbeddedVersionProgram(void) return ERROR; } memcpy((uint8_t*)&Data,&_gTangoVersion,size); +#ifndef EVALUATION_BOARD EEPROMProgram((uint32_t *)&Data, EEPROM_STORAGE_EMBEDDED_VERSION*4, 4); +#endif return OK; } uint32_t MCU_E2PromEmbeddedVersionRead() { uint32_t Data; +#ifndef EVALUATION_BOARD EEPROMRead((uint32_t *)&Data,EEPROM_STORAGE_EMBEDDED_VERSION*4, 4); +#endif Report("MCU_E2PromEmbeddedVersionRead length ",__FILE__,__LINE__,EEPROM_STORAGE_EMBEDDED_VERSION*4,RpWarning,(int)(Data),0); @@ -165,6 +186,8 @@ uint32_t MCU_E2PromEmbeddedVersionRead() //twice before FlashErase is called. void MCU_E2PromInit(void) { +#ifndef EVALUATION_BOARD EEPROMInit(); +#endif } diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index a9a958a55..016bacc9c 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -2,6 +2,7 @@ var Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi'); var Clock = xdc.useModule('ti.sysbios.knl.Clock'); var Seconds = xdc.useModule('ti.sysbios.hal.Seconds'); var BIOS = xdc.useModule('ti.sysbios.BIOS'); +BIOS.libType = BIOS.LibType_Debug; var SysMin = xdc.useModule('xdc.runtime.SysMin'); var System = xdc.useModule('xdc.runtime.System'); var Error = xdc.useModule('xdc.runtime.Error'); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 2a1913b0a..551caa544 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -357,7 +357,9 @@ int main(void) IDLE_TASK_package_init(); +#ifndef EVALUATION_BOARD Start_InitSequence(); +#endif PowerIdleInit(); BIOS_start(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 52775b6ab..a5421e60a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -150,7 +150,7 @@ void MillisecInit(void) System_abort("Could not create USB Wait gate"); } - ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); + ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); ROM_TimerConfigure(Millisec_timerBase, TIMER_CFG_PERIODIC); // 32 bits Timer //TimerIntRegister(Millisec_timerBase, TIMER_A, Timer0Isr); // Registering isr ROM_TimerEnable(Millisec_timerBase, TIMER_A); @@ -636,7 +636,9 @@ uint32_t MillisecLowLoop(uint32_t tick) if (Hundred_msTick) { Speed_Data = Calculate_Speed_Sensor_Velocity(); +#ifndef EVALUATION_BOARD Read_Buttons_Reg(); +#endif //Ink_Cart_Led(); /////////////////////////////////////////////////////////////////// diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c index 1c39385d4..1663219bd 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c @@ -283,13 +283,13 @@ void Stub_MotorStopRequest(MessageContainer* requestContainer) Stop_Command = (STOP_TYPE_ENUM)request->stop_cmd; + TimerMotors_t Motor_Id = (TimerMotors_t)request->motor_id; //to remove warning #ifdef EVALUATION_BOARD uint32_t read_status; //SPI_Control(SKIP_INIT); Mot_Stop(); #else - TimerMotors_t Motor_Id = (TimerMotors_t)request->motor_id; //to remove warning MotorStop(Motor_Id, Stop_Command); #endif if ((Motor_Id >= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)&&(Motor_Id <= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8)) -- cgit v1.3.1