From 9edbff9afd0a9e6f2fc133b89f5746757928d9d2 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 13 Mar 2019 14:07:02 +0200 Subject: Stub for dispenser GPIO --- .../Modules/Stubs_Handler/Stub_Dispenser.c | 47 ++++++++++++++++++---- .../Embedded/Modules/Stubs_Handler/Stub_Heater.c | 1 + 2 files changed, 40 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c index 7c0a4c980..0f9d9d418 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c @@ -11,18 +11,18 @@ #include "drivers/adc_sampling/adc.h" #include "modules/ids/ids_ex.h" - +#include #include "Stub_Status.h" #include void Stub_DispenserRequest(MessageContainer* requestContainer) { - uint32_t status = NOT_SUPPORTED; + uint32_t status = PASSED; MessageContainer responseContainer; StubDispenserRequest* request = stub_dispenser_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - +/* ADCAcquireInit(); SysCtlDelay(10000); ADCAcquireStart(0,1); @@ -32,9 +32,36 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) ADC0SS0Handler(); SysCtlDelay(100000); +*/ + + TCA9534Regs* Regs; + + status |= TCA9534Init(request->dispenserid, Regs); + if(request->start == 1) + { + TCA9534ByPass(request->dispenserid, Regs,ENABLE); + } + else + TCA9534ByPass(request->dispenserid, Regs,DISABLE); + delayms(5); + + if(request->setdirection == 1) + { + TCA9534TestRelay(request->dispenserid, Regs,ENABLE); + } + else + TCA9534TestRelay(request->dispenserid, Regs,DISABLE); + + delayms(5); + if(request->setmicrostepdivision == 1) + TCA9534TestByPassTestRelay(request->dispenserid, Regs); + delayms(5); + if(request->setspeed == 1) + test_IO(); + delayms(5); //request->dispenserid //request->start //request->setdirection @@ -46,15 +73,19 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) response.dispenserid = (uint32_t)((round)(CalculateDispenserPressure(0x00000004)));//CHAN_DISPENSE_PRESSURE_6); + + status |= TCA9534SetReadInputReg(request->dispenserid); + status |= TCA9534ReadInputReg(request->dispenserid, Regs); + - //response.dispenserid = request->dispenserid; + response.dispenserid = request->dispenserid; response.has_dispenserid = true; - //response.dispenserposition - response.has_dispenserposition = false; + response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, Regs)); + response.has_dispenserposition = true; - //response.inkworninglevel - response.has_inkworninglevel = false; + response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, Regs)); + response.has_inkworninglevel = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c index 7735c9955..6848dd1cf 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c @@ -22,6 +22,7 @@ #include "Drivers/Heater/Heater.h" #include "../control/control.h" #include "Drivers/Heater/TemperatureSensor.h" +#include "Modules/heaters/heaters_ex.h" void Stub_HeaterRequest(MessageContainer* requestContainer) { -- cgit v1.3.1 From b40a16bd00381b710196b2db6bad08e875d90184 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 13 Mar 2019 14:28:15 +0200 Subject: update dispenser stub --- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 25 +++++++++++----------- .../Dispenser_Card/IO_Ports/Dispenser_IO.h | 10 +++++---- .../Modules/Stubs_Handler/Stub_Dispenser.c | 20 ++++++++--------- 3 files changed, 28 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 1b2fe3c29..6d032fe64 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -15,7 +15,6 @@ #include #include - uint8_t TCA9534Init(uint8_t Dispenser_ID, TCA9534Regs* Regs)//1 { uint8_t status = PASSED; @@ -121,7 +120,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -138,7 +137,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -157,7 +156,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -265,20 +264,20 @@ uint8_t test_IO() { uint8_t status = PASSED; - TCA9534Regs* Regs; + TCA9534Regs Regs; uint8_t i; for(i=0;i<8;i++) { - status |= TCA9534Init(i, Regs); + status |= TCA9534Init(i, &Regs); status |= TCA9534SetReadInputReg(i); - status |= TCA9534ReadInputReg(i, Regs); - status |= TCA9534TestRelay(i, Regs,ENABLE); - status |= TCA9534ByPass(i, Regs,ENABLE); - Read_Notification_Disp_UP(i, Regs); - Read_Notification_Disp_Down(i, Regs); - Read_Notification_Realy_On(i, Regs); - Read_Notification_Over_Press(i, Regs); + status |= TCA9534ReadInputReg(i, &Regs); + status |= TCA9534TestRelay(i, &Regs, ENABLE); + status |= TCA9534ByPass(i, &Regs, ENABLE); + Read_Notification_Disp_UP(i, &Regs); + Read_Notification_Disp_Down(i, &Regs); + Read_Notification_Realy_On(i, &Regs); + Read_Notification_Over_Press(i, &Regs); } return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h index 2105434d2..af1470da5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h @@ -11,7 +11,7 @@ /************************** I2C Address ***************************************/ -#define TCA9534_ADDRESS 0x40 // I2C Address 0100 + ADDR + R/W - ADDR tied to GND (permanent) +#define TCA9534_ADDRESS 0x40 // I2C Address 0100 + ADDR + R/W - ADDR tied to GND (permanent) /************************** I2C Registers *************************************/ #define TCA9534_INPUT_REG 0x00 // Input status register @@ -19,9 +19,11 @@ #define TCA9534_POLARITY_REG 0x02 // Polarity inversion register. BIT '1' inverts input polarity of register 0x00 #define TCA9534_CONFIG_REG 0x03 // Configuration register. BIT = '1' sets port to input BIT = '0' sets port to output -#define TCA9534_INPUT 0x01 -#define TCA9534_OUTPUT 0x00 -#define TCA9534_All_INPUT 0xFF +#define TCA9534_INPUT 0x01 +#define TCA9534_OUTPUT 0x00 +#define TCA9534_All_INPUT 0xFF + +#define Relay_Operate_time 5 //mSec typedef struct { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c index 0f9d9d418..eb1de19ad 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c @@ -34,30 +34,30 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) SysCtlDelay(100000); */ - TCA9534Regs* Regs; + TCA9534Regs Regs; - status |= TCA9534Init(request->dispenserid, Regs); + status |= TCA9534Init(request->dispenserid, &Regs); if(request->start == 1) { - TCA9534ByPass(request->dispenserid, Regs,ENABLE); + TCA9534ByPass(request->dispenserid, &Regs, ENABLE); } else - TCA9534ByPass(request->dispenserid, Regs,DISABLE); + TCA9534ByPass(request->dispenserid, &Regs, DISABLE); delayms(5); if(request->setdirection == 1) { - TCA9534TestRelay(request->dispenserid, Regs,ENABLE); + TCA9534TestRelay(request->dispenserid, &Regs,ENABLE); } else - TCA9534TestRelay(request->dispenserid, Regs,DISABLE); + TCA9534TestRelay(request->dispenserid, &Regs,DISABLE); delayms(5); if(request->setmicrostepdivision == 1) - TCA9534TestByPassTestRelay(request->dispenserid, Regs); + TCA9534TestByPassTestRelay(request->dispenserid, &Regs); delayms(5); if(request->setspeed == 1) test_IO(); @@ -75,16 +75,16 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) status |= TCA9534SetReadInputReg(request->dispenserid); - status |= TCA9534ReadInputReg(request->dispenserid, Regs); + status |= TCA9534ReadInputReg(request->dispenserid, &Regs); response.dispenserid = request->dispenserid; response.has_dispenserid = true; - response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, Regs)); + response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, &Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, &Regs)); response.has_dispenserposition = true; - response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, Regs)); + response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, &Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, &Regs)); response.has_inkworninglevel = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); -- cgit v1.3.1 From 581fc5ccade02a541b9e9fff2ab8c34bf6deef2c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 14 Mar 2019 23:56:45 +0200 Subject: version 1.3.7.9 --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 1 + .../Embedded/Drivers/SSI_Comm/Dancer/Dancer.c | 5 + .../Embedded/Drivers/SSI_Comm/Dancer/Dancer.h | 1 + Software/Embedded_SW/Embedded/Embedded.cfg | 1 + .../Embedded/Modules/Control/MillisecTask.c | 4 +- .../Modules/Diagnostics/DiagnosticActions.c | 6 ++ .../Embedded/Modules/Heaters/Heaters_print.c | 4 + Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 1 - .../Embedded/Modules/IDS/IDS_dispenser.c | 10 +- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 4 + .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 27 +++++- .../Embedded/Modules/Thread/ThreadLoad.c | 34 +++---- .../Embedded/Modules/Thread/Thread_Winder.c | 25 +++-- .../Embedded/Modules/Thread/Thread_print.c | 4 +- .../Embedded/StateMachines/Printing/JobSTM.c | 105 +++++++++++---------- 16 files changed, 149 insertions(+), 85 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 15e9fe828..5efeaa71d 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,3,7,88}; +TangoVersion_t _gTangoVersion = {1,3,7,9}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 7599c10db..ecc70765b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -201,6 +201,7 @@ uint32_t MotorMovetoBreakSensor (TimerMotors_t _motorId,bool direction, uint32_t uint32_t MotorMovetoDancerPosition (TimerMotors_t _motorId,bool direction, uint32_t Freq,uint32_t DancerId,bool dancervaluedirection, callback_fptr callback,uint32_t timeout); uint32_t MotorAbortMovetoLimitSwitch (TimerMotors_t _motorId); uint32_t MotorMoveToStopper (TimerMotors_t _motorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout); +uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callback,uint32_t timeout); uint32_t MotorGoTo(TimerMotors_t _motorIdn, uint32_t Steps); #endif /* DRIVERS_MOTOR_H_ */ diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c index 6c692ed10..de2ceb698 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c @@ -84,6 +84,11 @@ uint32_t Read_Dryer_ENC_Position () FPGA_SSI_Dryer_ENC_Transnit(); return Dryer_ENC.Position; } +uint32_t Control_Read_Dryer_Position(HardwareDancerType DancerId, uint32_t Parameter1) +{ + return Dryer_ENC.Position; + //return SSI_enc.Position; +} void Loop_SSI() { diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h index bc03b3e9e..7a843b1c1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h @@ -12,6 +12,7 @@ uint32_t Read_Dancer_Position (HardwareDancerType DancerId); uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2); uint32_t Read_Dryer_ENC_Position (); +uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1, uint32_t Parameter2); void Loop_SSI(); diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index ea7a370b8..89aff2c92 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -60,6 +60,7 @@ Program.global.timer1 = Hwi.create(37, "&MillisecInterrupt", hwi6Params); var hwi17Params = new Hwi.Params(); hwi17Params.instance.name = "timer3"; hwi17Params.arg = 3; +hwi17Params.priority = 96; Program.global.timer3 = Hwi.create(51, "&ScrewTimerInterrupt", hwi17Params); /* diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5fe242436..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -499,9 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - /*temp = Read_Fans_Tacho(); + temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; - SystemFansStatus = temp & 0xE0;*/ + SystemFansStatus = temp & 0xE0; KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index e3f593924..425894857 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -254,6 +254,12 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) else Valve_Set(VALVE_MIXCHIP_WASTECH,0); break; + case INTERFACE_IOS__GPO_BLOWER_PWM: + if (request->value == true) + Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100%(); + else + Control_Dryer_Fan(STOP,0);//use START or STOP, 0 - 100%(); + break; default: responseContainer.has_error = true; responseContainer.error = ERROR_CODE__GENERAL_ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 3f62fc3b6..a6fbe3ebc 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -782,6 +782,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) if (readValue > HeaterCmd[index].targettemperatue) { DeActivateHeater(index); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); } return ERROR; } @@ -795,6 +797,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary); DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain); //Heaters OFF until coming into the proportional band + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); return OK; } // if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index d27fb7c56..e7e6f3ff6 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -31,7 +31,6 @@ void IDS_Dispenser_Set_Flow_Params (char DispenserId,double NanoLitterPerPulse,c void IDS_Dispenser_RefillStarted (char DispenserId); void IDS_Dispenser_RefillEnded (char DispenserId); void IDS_Dispenser_MovingDirection (char DispenserId, bool direction); -uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); #endif //MODULES_IDS_IDS_H_ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index acaf19744..abfabe17d 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -62,10 +62,15 @@ uint32_t IdsGetMotorSpeed(uint32_t DispenserId) uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) { + uint32_t status; DispenserPrepareTime[DispenserId]+=DispenserPrepareTimeLag; if ((GetDispenserPressure(DispenserId)>=DispenserPreparePressure)||(DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout)) { + if (DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout) + status = ERROR; + else + status = OK; if (SafeRemoveControlCallback(DispenserControlId[DispenserId], IDS_Dispenser_Build_Pressure_Callback )==OK) DispenserControlId[DispenserId] = 0xFF; else @@ -76,11 +81,12 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re if (DispenserCallback[DispenserId]) { - DispenserCallback[DispenserId](DispenserId,ReadValue); + + DispenserCallback[DispenserId](DispenserId,status); DispenserCallback[DispenserId] = 0; } } - return OK; + return status; } uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index bf73ed7fa..b201e6611 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -39,6 +39,9 @@ uint32_t IDSSegmentState(void *JobDetails, int SegmentId); uint32_t IDSDistanceToSpoolState(void); uint32_t IDSEndState(void *JobDetails); +uint32_t IDS_StartLubrication(void); +uint32_t IDS_StopLubrication(void); + uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request); uint32_t IDS_DispenserControlInit(); @@ -49,6 +52,7 @@ uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID); uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID); uint32_t IDS_CheckDispenserLimitSwitch (LimitSwitchAlarms LS_Id); +uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout); void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 2be233962..0a9d40a15 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -31,11 +31,12 @@ typedef struct PID_Config_Params m_params; }DispenserControlConfig_t; HardwarePidControl *DispensersControl;// = (HardwarePidControl *)GENHWCFG_MAP_IN_FLASH + 0x4000; - +#define LUBRICANT_DISPENSER 7 +#define MAX_DYE_DISPENSERS 7 int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0}; int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0}; double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0}; - +double lubricant_speed = 0.0; HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { HARDWARE_PID_CONTROL_TYPE__Dispenser1,HARDWARE_PID_CONTROL_TYPE__Dispenser2,HARDWARE_PID_CONTROL_TYPE__Dispenser3,HARDWARE_PID_CONTROL_TYPE__Dispenser4,HARDWARE_PID_CONTROL_TYPE__Dispenser5,HARDWARE_PID_CONTROL_TYPE__Dispenser6,HARDWARE_PID_CONTROL_TYPE__Dispenser7,HARDWARE_PID_CONTROL_TYPE__Dispenser8}; bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; @@ -160,6 +161,13 @@ void DispenserPrepareReady(void) if (JobTicket->segments[Segment_i]->brushstops[Brush_i]->dispensers[Dispenser_i]->nanolitterpersecond>0.0) { DispenserUsedInJob[DispenserId] = true; + if(DispenserId == LUBRICANT_DISPENSER) + { + lubricant_speed = JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanolitterpersecond/ + JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanoliterperpulse; + REPORT_MSG (lubricant_speed*100, "LUBRICANT_SPEED*100"); + } + } }//for dispenser }//if dispensers @@ -522,3 +530,18 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) return OK; } +uint32_t IDS_StartLubrication(void) +{ + IDS_Dispenser_Start_Motor_and_Open_Valve(LUBRICANT_DISPENSER,lubricant_speed,NULL); + Lubricant_2Way_Valve (START); + return OK; +} +uint32_t IDS_StopLubrication(void) +{ + if(DispenserUsedInJob[LUBRICANT_DISPENSER]) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); + Lubricant_2Way_Valve (STOP); + } + return OK; +} diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index a82fe37e6..ff319918e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -38,21 +38,21 @@ /* typedef enum { 0 THREAD_LOAD_INIT, - 1 THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, - 2 THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY - 3 THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position - 4 THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID + 1 THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, + 2 THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION, //USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY + 3 THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position + 4 THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID 5 THREAD_LOAD_LIFT_DANCERS, - 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE - 7 THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND + 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE + 7 THREAD_LOAD_INITIAL_TENSION, //CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND 8 THREAD_LOAD_CLOSE_ROCKERS, - 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD + 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD 10 THREAD_LOAD_CLOSE_LIDS, 11 THREAD_LOAD_RESUME_HEATING, - 12 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION - 13 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 - //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER - 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING + 12 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION + 13 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 + //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER + 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING 15 THREAD_LOAD_END }THREAD_LOAD_STAGES_ENUM;*/ THREAD_LOAD_STAGES_ENUM LoadStages = THREAD_LOAD_INIT; @@ -222,9 +222,9 @@ else { LoadStages++; - if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this satge we should wait for user call + if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this stage we should wait for user call { - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } } } @@ -340,7 +340,7 @@ { Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100% LoadStages++; - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } return OK; } @@ -371,7 +371,7 @@ LoadStages++; if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this satge we should wait for user call { - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } } } @@ -417,7 +417,7 @@ //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; - //LoadArmInfo.LoadArmRounds = 0xFF; + LoadArmInfo.LoadArmRounds = 0xFF; FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath); return OK; } @@ -428,7 +428,7 @@ ControlId = 0xFF; ThreadAbortJoggingFunc(); LoadStages++; - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); return OK; } uint32_t Thread_Load_Jog_Thread(void) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index c598e0c55..0277d1daa 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -40,6 +40,8 @@ void ScrewsStartControlTimer (void); bool Winder_ScrewHoming = false; bool ScrewCurrentDirection = false; //holds current screw direction uint32_t ScrewDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone +uint32_t ScrewChangeCounter = 0; +uint32_t ScrewChangeLimit = 0; uint32_t CalculationDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone uint16_t WinderMotorSpeed[MAX_WINDER_SPEED_CALCULATION]; uint16_t WinderMotorSpeedCounter = 0; @@ -196,13 +198,17 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) double RotationsPerSecond; int32_t Averagewinderspeed = 0; - TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter]; - WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR]; - TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter]; - if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) + ScrewChangeCounter++; + if ((ScrewChangeCounter>3)&&(ScrewChangeCounter<(ScrewChangeLimit-2))) //do not take the winder speed near the limits { - WinderMotorSpeedCounter=0; - WinderMotorSpeedRollOver=true; + TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter]; + WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR]; + TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter]; + if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) + { + WinderMotorSpeedCounter=0; + WinderMotorSpeedRollOver=true; + } } if (ScrewDirectionChangeCounter == CalculationDirectionChangeCounter) @@ -260,7 +266,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) //Report(TempScrewStr,__FILE__,__LINE__,0,RpWarning,0, 0); //Report(ScrewStr,__FILE__,__LINE__,ScrewCurrentDirection,RpWarning,CalculationDirectionChangeCounter, 0); //REPORT_MSG(temp , "new winder speed"); - Report("new winder speed",__FILE__,__LINE__,temp,RpWarning,ScrewSpeed,0); + Report("new winder speed",__FILE__,ScrewNumberOfSteps,temp,RpWarning,ScrewSpeed,0); } /********************************************************************************/ @@ -397,6 +403,7 @@ void ScrewsStartControlTimer (void) //ROM_TimerConfigure(Screw_timerBase, TIMER_CFG_PERIODIC); // 32 bits Timer TimerEnable(Screw_timerBase, TIMER_A); ROM_IntEnable(INT_TIMER3A); + //IntPrioritySet(Screw_timerBase, 0x40); ROM_TimerIntEnable(Screw_timerBase, TIMER_TIMA_TIMEOUT); ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)1200000/*10 millisec*/ ); Report("ScrewsStartControlTimer direction,speed ", __FILE__,__LINE__,ScrewCurrentDirection, RpMessage, ScrewSpeed, 0); @@ -410,9 +417,11 @@ void ScrewTimerInterrupt(int ARG0) if (SCREW_TimerActivated == true) { + ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime); MotorSetDirection (HARDWARE_MOTOR_TYPE__MOTO_SCREW, ScrewCurrentDirection); MotorSetSpeedDirect(HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewSpeed); - ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime); + ScrewChangeCounter = 0; + ScrewChangeLimit = ScrewRunningTime/12000000; ScrewDirectionChangeCounter++; } else diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 6a8474438..f4dc6a170 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -30,6 +30,7 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "modules/heaters/heaters.h" #include "modules/General/process.h" +#include "modules/ids/ids_ex.h" #include "Modules/AlarmHandling/AlarmHandling.h" #include "Control/MillisecTask.h" @@ -708,6 +709,7 @@ uint32_t ThreadPreSegmentState(void *JobDetails, uint32_t SegmentId) MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); } + IDS_StartLubrication(); } // activate control fr all motors //set speed for both rocker motors @@ -807,7 +809,7 @@ char Endstr[150]; } MotorStop(HARDWARE_MOTOR_TYPE__MOTO_RLOADING,Hard_Hiz); MotorStop(HARDWARE_MOTOR_TYPE__MOTO_LLOADING,Hard_Hiz); - + IDS_StopLubrication(); return OK; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 8c3d127ab..05ed98abd 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -587,70 +587,73 @@ void JobRequestFunc(MessageContainer* requestContainer) ErrorCode error = ERROR_CODE__NONE; JobEndReasonEnum JobAlarmReason = JOB_OK; - JobRequest* request = job_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - if (request != NULL) - { - ustrncpy (JobToken, requestContainer->token,36); - previousJobLength = 0.0; - JobTicket *Ticket = request->jobticket; - int TicketSize = job_ticket__get_packed_size(Ticket); - if (TicketSize >= MAX_TICKET_SIZE) - { - LOG_ERROR (TicketSize, "job ticket message too long"); - status = FAILED; - error = ERROR_CODE__BAD_CRC; - usnprintf(ErrorMsg, 100, "job ticket message too long"); - } - else + if (JobActive == false) + { + JobRequest* request = job_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + if (request != NULL) { - //memcpy(CurrentJob, Ticket,TicketSize); - CurrentJob = Ticket; - if (CurrentRequest!= NULL) - job_request__free_unpacked(CurrentRequest,NULL); - CurrentRequest = request; - - status = PASSED; - JobEndReason = JOB_OK; - JobAlarmReason = AlarmHandlingPrepareJob(CurrentJob); - if (JobAlarmReason ==OK) + ustrncpy (JobToken, requestContainer->token,36); + previousJobLength = 0.0; + JobTicket *Ticket = request->jobticket; + int TicketSize = job_ticket__get_packed_size(Ticket); + if (TicketSize >= MAX_TICKET_SIZE) { -#warning Process parameters in job request are not handled. push separately for now - if (Ticket->processparameters) + LOG_ERROR (TicketSize, "job ticket message too long"); + status = FAILED; + error = ERROR_CODE__BAD_CRC; + usnprintf(ErrorMsg, 100, "job ticket message too long"); + } + else + { + //memcpy(CurrentJob, Ticket,TicketSize); + CurrentJob = Ticket; + if (CurrentRequest!= NULL) + job_request__free_unpacked(CurrentRequest,NULL); + CurrentRequest = request; + + status = PASSED; + JobEndReason = JOB_OK; + JobAlarmReason = AlarmHandlingPrepareJob(CurrentJob); + if (JobAlarmReason ==OK) { - if (HandleProcessParameters(Ticket->processparameters)!= OK) + #warning Process parameters in job request are not handled. push separately for now + if (Ticket->processparameters) { - status = FAILED; - error = ERROR_CODE__INVALID_PARAMETER; - usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + if (HandleProcessParameters(Ticket->processparameters)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + } } - } - REPORT_MSG(0,"Process parameters in job request are not handled. push separately for now"); - if (Ticket->spool) - { - if (InternalWindingConfigMessage(Ticket->spool)!= OK) + REPORT_MSG(0,"Process parameters in job request are not handled. push separately for now"); + if (Ticket->spool) { - status = FAILED; - error = ERROR_CODE__INVALID_PARAMETER; - usnprintf(ErrorMsg, 100, "spool parameters error"); + if (InternalWindingConfigMessage(Ticket->spool)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + usnprintf(ErrorMsg, 100, "spool parameters error"); + } } - } + } + else + { + status = FAILED; + error = JobError_to_ErrorCode[JobAlarmReason]; + usnprintf(ErrorMsg, 100, "Existing alarms prevent running"); + } } - else + if (status == PASSED) { - status = FAILED; - error = JobError_to_ErrorCode[JobAlarmReason]; - usnprintf(ErrorMsg, 100, "Existing alarms prevent running"); + Report("Job Request ",__FILE__,__LINE__,Ticket->processparameters->dyeingspeed,RpWarning,Ticket->n_segments, Ticket->intersegmentlength); + StartJob(CurrentJob); } } - if (status == PASSED) - { - Report("Job Request ",__FILE__,__LINE__,Ticket->processparameters->dyeingspeed,RpWarning,Ticket->n_segments, Ticket->intersegmentlength); - StartJob(CurrentJob); - } + else + status = FAILED; } - else - status = FAILED; JobResponse response = JOB_RESPONSE__INIT; JobStatus jobStatus = JOB_STATUS__INIT; -- cgit v1.3.1 From 0e214df453878313d70065f68679a5a0267b0591 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 17 Mar 2019 09:43:29 +0200 Subject: fix bug (typo) in the address of F1_GPO_02_bus, F1_Tacho_reg8 , F1_Tacho_reg9 --- Software/Embedded_SW/Embedded/DataDef.h | 2 + Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 46 ++++++++--- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h | 2 +- .../Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h | 6 +- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 21 ++--- Software/Embedded_SW/Embedded/Main.c | 2 + .../Embedded/Modules/Control/MillisecTask.c | 2 +- Software/Stubs Collection/stubs/NewSpeedSensor.cs | 45 +++++++++++ .../stubs/new dispenser card GPIO.cs | 90 ++++++++++++++++++++++ 9 files changed, 193 insertions(+), 23 deletions(-) create mode 100644 Software/Stubs Collection/stubs/NewSpeedSensor.cs create mode 100644 Software/Stubs Collection/stubs/new dispenser card GPIO.cs (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 3b62a0489..a85ea7024 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -141,6 +141,8 @@ enum //#define FPGA_Reg_Size_Bits 16 +#define FPGA_Freq 29166667 + #define MIDTANK_DIRECTION 0 #define MIXER_DIRECTION 1 diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 0b98891c5..b5525252c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -202,14 +202,14 @@ uint8_t Read_Fans_Tacho() #ifndef EVALUATION_BOARD // The big Fan in the drawer - Fans_Speed_RPM[DRAWER_B] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); - Fans_Speed_RPM[DRAWER_S0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg1); - Fans_Speed_RPM[DRAWER_S1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg2); - Fans_Speed_RPM[DRAWER_S2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg3); - Fans_Speed_RPM[DRAWER_S3] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg4); - Fans_Speed_RPM[SYSTEM_0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg5); - Fans_Speed_RPM[SYSTEM_1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg6); - Fans_Speed_RPM[SYSTEM_2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg7); + Fans_Speed_RPM[DRAWER_B] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); + Fans_Speed_RPM[DRAWER_S0] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg1); + Fans_Speed_RPM[DRAWER_S1] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg2); + Fans_Speed_RPM[DRAWER_S2] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg3); + Fans_Speed_RPM[DRAWER_S3] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg4); + Fans_Speed_RPM[SYSTEM_0] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg5); + Fans_Speed_RPM[SYSTEM_1] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg6); + Fans_Speed_RPM[SYSTEM_2] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg7); if( Fans_Speed_RPM[DRAWER_B] < 1000 ) // need to work around 3000 RPM Fans_Status.bit.DRAWER_BIG = ERROR;// not working / Low Speed @@ -342,7 +342,7 @@ uint32_t Read_Dryer_Fan_Tacho() uint32_t Drayer_Fan_Speed_RPM = 0; - Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(29166666, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); + Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(FPGA_Freq, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); return Drayer_Fan_Speed_RPM; @@ -398,3 +398,31 @@ void Machine_Idle_Breathing_Led() //if (Ten_msTick) } } + +uint32_t Read_Speed_Sensor_TypeII(uint32_t Counter, uint32_t Prescaler) +/* Counter - Increase the number to higher resolution * + * Prescaler - Deccrease the number to higher resolution*/ +{ + + uint32_t Speed_Hz; + + F1_Prescaler1_reg6 = Prescaler; + F1_gpo_cnt_A_reg = Counter; + + uint32_t i,temp,temp1; + for(i = 0 ; i< 10000; i++) + { + temp = F1_Tacho_reg9; + temp1 = FPGA_Freq; + temp1*=Counter; + temp1/=temp; + temp1/=Prescaler; + Speed_Hz = temp1; + //Speed_Hz = (FPGA_Freq * Counter) /(temp * Prescaler); + delayms(100); + } + #warning change the speed from Hz to Cm/Sec + + return Speed_Hz; +} + diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h index 1c2bbfb1a..c3c427933 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h @@ -15,7 +15,7 @@ void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent); void Machine_Idle_Breathing_Led(); uint32_t Read_Dryer_Fan_Tacho(); - +uint32_t Read_Speed_Sensor_TypeII(uint32_t Counter, uint32_t Prescaler); #endif //FPGA_H diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h index 752773c0d..9ddbbe485 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h @@ -147,9 +147,9 @@ #define F1_LDANCER1_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | 0x1CE))) //This register triggers a TX transmission //FPGA VER 050219 -#define F1_GPO_02_bus (*((volatile short *)(FPGA3_BASE | 0x1D0))) //General purpose GPIO register -#define F1_Tacho_reg8 (*((volatile short *)(FPGA3_BASE | 0x1E0))) //This Register stores the Tacho counter -#define F1_Tacho_reg9 (*((volatile short *)(FPGA3_BASE | 0x1E2))) //This Register stores the Tacho counter A to A +#define F1_GPO_02_bus (*((volatile short *)(FPGA1_BASE | 0x1D0))) //General purpose GPIO register +#define F1_Tacho_reg8 (*((volatile short *)(FPGA1_BASE | 0x1E0))) //This Register stores the Tacho counter +#define F1_Tacho_reg9 (*((volatile short *)(FPGA1_BASE | 0x1E2))) //This Register stores the Tacho counter A to A // //SPI_MOTO_RLOADING_A1 #define F1_MOTO_RLOADING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | 0x200))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first. diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 6d032fe64..6a747ba61 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -269,15 +269,18 @@ uint8_t test_IO() for(i=0;i<8;i++) { - status |= TCA9534Init(i, &Regs); - status |= TCA9534SetReadInputReg(i); - status |= TCA9534ReadInputReg(i, &Regs); - status |= TCA9534TestRelay(i, &Regs, ENABLE); - status |= TCA9534ByPass(i, &Regs, ENABLE); - Read_Notification_Disp_UP(i, &Regs); - Read_Notification_Disp_Down(i, &Regs); - Read_Notification_Realy_On(i, &Regs); - Read_Notification_Over_Press(i, &Regs); + if(Dispenser_struct[i].Type == DISP_TYPE_EEPROM128KB) + { + status |= TCA9534Init(i, &Regs); + status |= TCA9534SetReadInputReg(i); + status |= TCA9534ReadInputReg(i, &Regs); + status |= TCA9534TestRelay(i, &Regs, ENABLE); + status |= TCA9534ByPass(i, &Regs, ENABLE); + //Read_Notification_Disp_UP(i, &Regs); + //Read_Notification_Disp_Down(i, &Regs); + //Read_Notification_Realy_On(i, &Regs); + //Read_Notification_Over_Press(i, &Regs); + } } return status; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index fc3d09402..45aad656f 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -215,6 +215,8 @@ int main(void) // //test_avi(); //example for shai + //Read_Speed_Sensor_TypeII(2,2); + //Test_ADS120_Internal_Temperature_Sensor(0); #ifndef EVALUATION_BOARD diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5fe242436..3ccb523c6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -447,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i,temp; + uint8_t Motor_i,Disp_i,Heater_i;//,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; diff --git a/Software/Stubs Collection/stubs/NewSpeedSensor.cs b/Software/Stubs Collection/stubs/NewSpeedSensor.cs new file mode 100644 index 000000000..02f8384bc --- /dev/null +++ b/Software/Stubs Collection/stubs/NewSpeedSensor.cs @@ -0,0 +1,45 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +const UInt32 Freq = 29166667;//FPGA Freq + +const UInt32 F1_Tacho_reg9 = 0x1E2;//Time of Tacho / No of clk in one cycle +const UInt32 F1_gpo_cnt_A_reg = 0x3B0;// how many pulses to count +//const Int32 F1_Prescaler1_reg5 = 0x3E8; //OLD FPGA 05.022019 +const UInt32 F1_Prescaler1_reg6 = 0x3EA; //New FPGA + +const UInt32 CNT = 4;//bigger number for resolution +const UInt32 Presc = 2;//Lower number for resolution +UInt32 temp; + +public void OnExecute(StubManager stubManager) +{ + stubManager.Run("StubFpgaWriteRegRequest" ,0x60000000 + F1_Prescaler1_reg6, Presc);//for new FPGA use reg6!! + var response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_Prescaler1_reg6);//for new FPGA use reg6!!! + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg); + stubManager.Run("StubFpgaWriteRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg, CNT); + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg); + + for(int i =0;i<1000;i++) + { + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_Tacho_reg9); + + + temp = (Freq * CNT) /((UInt32)response.Value * Presc); + + stubManager.Write(temp); + stubManager.Write(" Hz, "); + stubManager.WriteHex((response.Value & 0xffff),4); + stubManager.WriteLine(""); + Thread.Sleep(100); //Sleep for 100 milli. + } +} \ No newline at end of file diff --git a/Software/Stubs Collection/stubs/new dispenser card GPIO.cs b/Software/Stubs Collection/stubs/new dispenser card GPIO.cs new file mode 100644 index 000000000..43d0dd76a --- /dev/null +++ b/Software/Stubs Collection/stubs/new dispenser card GPIO.cs @@ -0,0 +1,90 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + // Request ---- + // UInt32 : DispenserId + // Boolean : Start --- true for ByPass + // Boolean : SetDirection --- true for TestRelay + // UInt32 : SetMicrostepDivision -- 1 for TestByPassTestRelay + // Int32 : SetSpeed + + // Response ---- + // UInt32 : DispenserId + // UInt32 : DispenserPosition --- MSB for Disp_UP, LSB for Disp_Down + // UInt32 : InkWorningLevel ---- MSB for Realy_On, LSB for Over_Press + // String : Status + // UInt32 : StatusWord + + stubManager.Write("read inputs "); + stubManager.WriteLine(""); + var response = stubManager.Run("StubDispenserRequest" ,3, false, false, 0, 0);//read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("TestRelay + read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, true, 0, 0);//TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("ByPass + TestRelay + read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, true, true, 0, 0);//ByPass + TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("Remove ByPass (TestRelay + read inputs) "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, true, 0, 0);//TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + + stubManager.Write("Rempve TestRelay and read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, false, 0, 0);//read input + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + +} \ No newline at end of file -- cgit v1.3.1 From c8629b193fd4fa38f72905f1c33abe737f81a340 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 17 Mar 2019 12:01:28 +0200 Subject: Add default value of No_Safety_Event for I/O in old dispensers --- Software/Embedded_SW/Embedded/DataDef.h | 6 +- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 298 +++++++++++---------- .../Embedded/Modules/Control/MillisecTask.c | 2 +- 3 files changed, 164 insertions(+), 142 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index a85ea7024..66a5aa74f 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -128,8 +128,7 @@ enum #define DOUBLE_BUFFER 2 -#define No_Safety_Event 1 -#define Safety_Event_Occurred 0 + #define CurrentMotDriver 0x08 #define VoltageMotDriver 0x00 @@ -296,6 +295,9 @@ typedef union #define LIMIT 0 // Limit Switch #define NO_LIMIT 1 +#define No_Safety_Event 1 +#define Safety_Event_Occurred 0 + //#define INVERSION_POLARITY_LIMIT 1 // Limit Switch //#define INVERSION_POLARITY_NO_LIMIT 0 diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 6a747ba61..6376228cc 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -19,17 +19,25 @@ uint8_t TCA9534Init(uint8_t Dispenser_ID, TCA9534Regs* Regs)//1 { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + uint8_t Write_Buf[2]; + + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + //Set all GPIO to Input + Regs->Config[Dispenser_ID].Uchar = TCA9534_All_INPUT; - //Set all GPIO to Input - Regs->Config[Dispenser_ID].Uchar = TCA9534_All_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + Regs->Input[Dispenser_ID].bit.DISP_UP = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.DISP_DOWN = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.RELAY_ON = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.OVER_PRESS = No_Safety_Event; return status; @@ -40,15 +48,16 @@ uint8_t TCA9534SetReadInputReg(uint8_t Dispenser_ID)//2 set before read { uint8_t status = PASSED; - uint8_t Write_Buf[1]; - - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - - Write_Buf[0] = TCA9534_INPUT_REG; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + uint8_t Write_Buf[1]; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 1); + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + Write_Buf[0] = TCA9534_INPUT_REG; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 1); + } return status; } @@ -56,10 +65,12 @@ uint8_t TCA9534ReadInputReg(uint8_t Dispenser_ID, TCA9534Regs* Regs)//3 read { uint8_t status = PASSED; - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - - status |= I2C_Read(I2C_ID_DISP_MUX, TCA9534_ADDRESS + 1, Regs->Input[Dispenser_ID].Uchar, 1); + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + status |= I2C_Read(I2C_ID_DISP_MUX, TCA9534_ADDRESS + 1, Regs->Input[Dispenser_ID].Uchar, 1); + } return status; } @@ -69,103 +80,106 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } - //Set RELAY_TEST to output: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set RELAY_TEST to output: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set the test pin to LOW - Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set the test pin to LOW + Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //deley - delayms(5); + //deley + delayms(5); - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) - { - status |= FAILED; - } + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) + { + status |= FAILED; + } - //---------------------- test ByPass ---------------------- - //Set BYPASS to output: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - - //Set the BYPASS pin to LOW - Regs->Output[Dispenser_ID].bit.BYPASS = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - - //deley - delayms(Relay_Operate_time); - - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //---------------------- test ByPass ---------------------- + //Set BYPASS to output: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set BYPASS to input: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set the BYPASS pin to LOW + Regs->Output[Dispenser_ID].bit.BYPASS = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //deley - delayms(Relay_Operate_time); + //deley + delayms(Relay_Operate_time); - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) - { - status |= FAILED; - } + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } - //--------------------------------------------------------- + //Set BYPASS to input: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set RELAY_TEST to input: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //deley + delayms(Relay_Operate_time); - //deley - delayms(Relay_Operate_time); + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) + { + status |= FAILED; + } - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //--------------------------------------------------------- + + //Set RELAY_TEST to input: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + //deley + delayms(Relay_Operate_time); + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } + } return status; } @@ -174,33 +188,36 @@ uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableTes { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - if(EnableTestRelay) - { - //Set RELAY_TEST to output: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + if(EnableTestRelay) + { + //Set RELAY_TEST to output: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the RELAY_TEST pin to LOW + Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - //Set the RELAY_TEST pin to LOW - Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + //Set RELAY_TEST to input: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); } - - //Set RELAY_TEST to input: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - return status; } @@ -209,33 +226,36 @@ uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableByPass { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - if(EnableByPass) - { - //Set BYPASS to output: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + if(EnableByPass) + { + //Set BYPASS to output: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the BYPASS pin to LOW + Regs->Output[Dispenser_ID].bit.BYPASS = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - //Set the BYPASS pin to LOW - Regs->Output[Dispenser_ID].bit.BYPASS = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + //Set BYPASS to input: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); } - - //Set BYPASS to input: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - return status; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 59aebd21a..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -447,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i;//,temp; + uint8_t Motor_i,Disp_i,Heater_i,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; -- cgit v1.3.1 From aa9853ff33557531d89d8ce4f2eb196f45b0a591 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 17 Mar 2019 14:21:22 +0200 Subject: fix heaters error (DC, hot activation) --- .../Embedded/Modules/Heaters/Heaters_print.c | 7 +- .../stubs/technician view files/lp4 Tech Board.tpf | 143 ++++++++++----------- 2 files changed, 77 insertions(+), 73 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 3f62fc3b6..230df628b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -518,7 +518,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) return ERROR; } - //Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); + Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); //start thread control for all motors HeaterPIDConfig[HeaterId].m_params.MAX = HeaterControl[HeaterId].outputproportionalpowerlimit*100; @@ -699,6 +699,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t eadValue) } } DeActivateHeater(index); + HeaterRecalculateHeaterParams(index, 0); HeaterMaxTempFlag[index] = true; //LOG_ERROR ((MinreadValue/100), "Heater Over the max temperature, turned off"); Report("Heater Over the max temperature, turned off",__FILE__,__LINE__,index,RpWarning,HeaterPreviousRead[index], HeaterControl[index].sensormaxvalue); @@ -782,6 +783,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) if (readValue > HeaterCmd[index].targettemperatue) { DeActivateHeater(index); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); } return ERROR; } @@ -795,6 +798,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary); DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain); //Heaters OFF until coming into the proportional band + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); return OK; } // if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) diff --git a/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf b/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf index 31d4041ee..94d383b94 100644 --- a/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf +++ b/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf @@ -26,11 +26,11 @@ 0 D7585119-4A42-4370-8F1E-F3E62553E588 -14774017 - 1 701 0 300 true + 1 ba743caa-95f2-4b20-8c32-8e5943ada3fc @@ -41,9 +41,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -124,7 +124,7 @@ DryerAirHeater 0 - 23.74 + 23.97 false false true @@ -143,7 +143,7 @@ DryerMainHeater 0 - 77.21 + 24.889999999999997 false false true @@ -162,7 +162,7 @@ DryerSecondaryHeater 0 - -2 + 24.779999999999998 false false true @@ -181,7 +181,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -200,7 +200,7 @@ HeaterZone2 0 - 70.73 + 27.279999999999998 false false true @@ -219,7 +219,7 @@ HeaterZone1 0 - 77.05 + 26.299999999999997 false false true @@ -238,7 +238,7 @@ MixerHeater 0 - 49.069999999999993 + 24.419999999999998 false false true @@ -257,7 +257,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -276,7 +276,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -295,7 +295,7 @@ HeaterZone6 0 - 77.28 + 26.229999999999997 false false true @@ -421,7 +421,7 @@ 96B89605-F999-43FE-A1CD-2645BFB33A36 -1 10 - 2 + 0 6be024c6-3d1b-4267-9b77-44473aba56b7 @@ -433,7 +433,7 @@ FC60060A-3736-4910-B41A-FF6DABDF0E9E -1 10 - 2 + 0 7c720f3b-00e1-49dd-92f9-fdd1e9686623 @@ -445,7 +445,7 @@ 4CE6A82E-D841-4D33-BBB2-11F0743A441C -1 10 - 2 + 0 3ebd6759-521b-4ed1-a353-ee1ad7801f28 @@ -456,11 +456,11 @@ 0 D126DB23-784B-4F0C-8F88-D89A65A7549F -14774017 - 1 1460 0 16384 true + 1 984b4126-3dda-4624-a79f-0646eb0e1358 @@ -471,11 +471,11 @@ 0 10102BC3-0EAE-47FF-A8E5-8640780CAA3D -14774017 - 1 1516 0 16384 true + 1 8ebc3ab7-a02d-4b12-93b3-2563443831d7 @@ -486,11 +486,11 @@ 0 C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C -14774017 - 1 1398 0 16384 true + 1 acafb268-5e97-4277-8dc8-173250a9e3f8 @@ -501,22 +501,11 @@ 0 9FBC5460-BA59-486B-8D85-BD7D8A959F98 -14774017 - 1 1273 0 100 true - - - 3ccb1485-b0e9-4d36-a931-a1b3865edeaa - 460 - 38.28761061946841 - 267 - 221.90707964601768 - 0 - 08d15ca1-d7d1-460f-8f37-42c37c287cd1 - -1 - 952.3546144121359 + 1 be4cb8d9-b516-4604-a6a5-1638cbc50251 @@ -527,11 +516,11 @@ 0 4CE6A82E-D841-4D33-BBB2-11F0743A441C -14774017 - 1 514 0 100000 true + 1 75b99507-4eba-4b11-b52e-26732d4c5479 @@ -542,11 +531,11 @@ 0 F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F -14774017 - 4 1398 0 100 true + 4 a30e48de-be76-4230-92d0-d27d6f37b940 @@ -557,11 +546,11 @@ 0 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 -14774017 - 4 1398 0 100 true + 4 5ac4b368-093a-4192-98d4-e9d24f229b13 @@ -572,11 +561,11 @@ 0 84CF23C9-D20D-4C08-BE1D-80201FC43C06 -14774017 - 4 1398 0 100 true + 4 9c34dc69-cfaa-48b4-9d02-8f0d9bba79dd @@ -588,6 +577,16 @@ -1 + + b083f678-c5ea-4700-bfa2-ca51ed62cf4b + 480 + 23.300884955752224 + 317 + 192.52212389380532 + 0 + -1 + 20 + @@ -814,9 +813,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -850,11 +849,11 @@ 0 D023F15D-3555-48E9-A9E9-5DF99F60D791 0 - 1 10 0 100 true + 1 46bdfce3-1c69-45dd-bbe9-582d1ac1e6f2 @@ -1068,7 +1067,7 @@ 167.26548672566202 0 -1 - 40 + 20 92607e12-2dd6-41c9-8f89-f051f386b734 @@ -1170,11 +1169,11 @@ 0 D7585119-4A42-4370-8F1E-F3E62553E588 -14774017 - 2 2962 0 300 true + 2 c4e19f7c-e6e9-4f45-987e-f124456b2529 @@ -1185,11 +1184,11 @@ 0 A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 -14774017 - 3 2817 0 300 true + 3 b8b24455-1c20-417d-bd78-5fe4c7e3d023 @@ -1200,11 +1199,11 @@ 0 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 -14774017 - 2 2982 0 300 true + 2 2129a0cd-454f-4834-8197-3b048bf4b978 @@ -1215,11 +1214,11 @@ 0 098F7CAB-030C-46B0-B2B8-A85AF2253032 -14774017 - 2 2949 0 100 true + 2 892fabb7-01fa-4b39-a19e-a557fafae0ac @@ -1230,11 +1229,11 @@ 0 DACEBF90-E2B4-4CC9-A973-B8B429AA0089 -14774017 - 2 2628 0 300 true + 2 4859974c-7224-42d5-97ca-0e2e549372f5 @@ -1245,11 +1244,11 @@ 0 246C2551-5EFD-48E9-94F6-6313C5E5018F -14774017 - 2 3153 0 300 true + 2 81b78212-14d8-4a66-bf3a-eeea9900e0d6 @@ -1320,11 +1319,11 @@ 0 AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1 -14774017 - 2 3153 0 300 true + 2 9330a6be-17f1-4ecb-978d-719adf9fec1f @@ -1335,11 +1334,11 @@ 0 9A3877B2-9F98-4A5C-9A93-DECA2836FA8A -14774017 - 2 3153 0 300 true + 2 3228b2ba-83f3-4eb2-a6d2-7200301758a4 @@ -1373,7 +1372,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -1392,7 +1391,7 @@ HeaterZone1 0 - 77.05 + 26.299999999999997 false false true @@ -1411,7 +1410,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -1430,7 +1429,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -1449,7 +1448,7 @@ MixerHeater 0 - 49.069999999999993 + 24.419999999999998 false false true @@ -1468,7 +1467,7 @@ HeaterZone2 0 - 70.73 + 27.279999999999998 false false true @@ -1487,7 +1486,7 @@ HeaterZone6 0 - 77.28 + 26.229999999999997 false false true @@ -1506,7 +1505,7 @@ DryerAirHeater 0 - 23.74 + 23.97 false false true @@ -1538,11 +1537,11 @@ 0 098F7CAB-030C-46B0-B2B8-A85AF2253032 -14774017 - 1 10 0 100 true + 1 3bf6782d-117d-4589-a1d6-6454b67e3862 @@ -1553,11 +1552,11 @@ 0 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 -14774017 - 1 10 0 300 true + 1 c7a89d21-7383-4caa-941e-b42e1109b16a @@ -1568,11 +1567,11 @@ 0 246C2551-5EFD-48E9-94F6-6313C5E5018F -14774017 - 1 10 0 300 true + 1 4c789472-cb4f-4ede-b22a-c733591117c8 @@ -1586,7 +1585,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -1605,7 +1604,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -1624,7 +1623,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -1765,9 +1764,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -1784,11 +1783,11 @@ 0 A499E5E0-A812-4032-8F96-B38C6762C4BD -14774017 - 3 3600 0 100 true + 3 aae29286-81b3-476a-9f58-c0fd246cae96 @@ -1799,11 +1798,11 @@ 0 F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE -14774017 - 3 3600 0 100 true + 3 7d94c7c4-1288-4f9d-b0e6-a06794829642 @@ -1886,11 +1885,11 @@ 0 1F0F907A-EC16-4386-AFC8-B2B156F2A822 -14774017 - 3 3600 0 100 true + 3 1c254a92-c075-453f-9667-cdcc91cf8e6a @@ -1923,11 +1922,11 @@ 0 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB -14774017 - 3 3600 0 100 true + 3 0bef6e9d-6da0-4f06-9e1a-c00142bde4c1 @@ -1960,11 +1959,11 @@ 0 19645882-6587-4A50-BD85-AF06617DC654 -14774017 - 3 3600 0 100 true + 3 39f6a02c-c4d9-47d0-b92d-bdea0ed5d3ce @@ -2032,11 +2031,11 @@ 0 96B89605-F999-43FE-A1CD-2645BFB33A36 -14774017 - 1 10 0 100000 true + 1 3d0f66be-0002-403d-8d4b-0d49d85c0570 @@ -2047,11 +2046,11 @@ 0 D126DB23-784B-4F0C-8F88-D89A65A7549F -14774017 - 1 10 0 16384 true + 1 6ce9bf4a-e710-4bc6-bcc1-e8055b77530c @@ -2062,11 +2061,11 @@ 0 FC60060A-3736-4910-B41A-FF6DABDF0E9E -14774017 - 1 10 0 100000 true + 1 da0aa379-4643-40cb-b990-45574e5545df @@ -2077,11 +2076,11 @@ 0 10102BC3-0EAE-47FF-A8E5-8640780CAA3D -14774017 - 1 10 0 16384 true + 1 09b31ecb-8eaf-4c70-8057-1a11b5f10bad @@ -2092,11 +2091,11 @@ 0 89B7B89D-8050-4188-B568-35B1910CFB6F -14774017 - 1 10 0 100000 true + 1 2a970ff9-b593-4df4-977f-7d29ce25d0c6 @@ -2107,11 +2106,11 @@ 0 84CF23C9-D20D-4C08-BE1D-80201FC43C06 -14774017 - 1 10 0 100 true + 1 eebe8aa9-cff0-45ef-b1dd-d71cbe3b2947 @@ -2158,5 +2157,5 @@ - 2 + 1 \ No newline at end of file -- cgit v1.3.1 From a1be0b0db7f8284cac6a9b5c3aecd1c9968c82ce Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 17 Mar 2019 14:31:59 +0200 Subject: cancel heaters activation upon parameters push --- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 230df628b..8b9db2126 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -385,7 +385,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) PrepareHeater(HeaterId,Temperature); //prepare the heaters control info //set the power balance handler (if not set yet) // if the heater is off (?) start it. - ActivateHeater(HeaterId); + //ActivateHeater(HeaterId); //set the heater operation mode to fast heating - depended on the current temperature // timers are prepared but not started yet!!! only when the system is hot. -- cgit v1.3.1