From b3589be05166fdd15692a9a835262d6e04e56bd2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 5 Feb 2020 16:00:59 +0200 Subject: fix continuous bug, alarm handling timing, control timing, initialization. --- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 9 ++++-- .../Embedded/Modules/Control/MillisecTask.c | 4 +++ .../Embedded_SW/Embedded/Modules/Control/control.c | 36 ++++++++++++++++++---- .../Embedded/Modules/Diagnostics/Diagnostics.c | 4 ++- .../Modules/Diagnostics/DiagnosticsHoming.c | 6 +++- .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded/Modules/General/MachineStatus.c | 6 ++-- .../Embedded/Modules/Heaters/Heaters_init.c | 2 -- .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 6 ++-- .../Embedded/Modules/Thread/ThreadLoad.c | 1 + 10 files changed, 58 insertions(+), 17 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index c2e121348..9fe67d773 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -924,10 +924,12 @@ uint32_t AlarmHandling_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue) { AlarmHandlingMessageStruc Message; + if (AlarmHandlingActive == false) + return; //send message to the Millisec task Message.messageId = AlarmHandlingTrigger; Message.msglen = sizeof(AlarmHandlingMessageStruc); - AlarmHandlingTick +=10; + AlarmHandlingTick +=100; Message.tick = AlarmHandlingTick; if (AlarmHandlingMsgQ != NULL) Mailbox_post(AlarmHandlingMsgQ , &Message, BIOS_NO_WAIT); @@ -1007,7 +1009,7 @@ uint32_t AlarmHandlingStart(void) if ( AlarmHandlingActive == false) { AlarmHandlingActive = true; - AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eHundredMillisecond,TemplateDataReadCBFunction,0,0,0); + //AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eHundredMillisecond,TemplateDataReadCBFunction,0,0,0); } return OK; } @@ -1466,7 +1468,9 @@ uint32_t AlarmHandlingLoop(uint32_t tick) ReportWithPackageFilter(AlarmFilter,"Error in alarms data!!!!!!!!! ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpFatalError, 0, Alarm_i); if ((tick%eOneSecond == 0)&&(EventsNotificationRequestAccepted==true)) + { SendEventNotifications(); + } return OK; } /****************************************************************************** @@ -1567,6 +1571,7 @@ void SendEventNotifications(void) } Task_restore(Key); responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &EventsResponse, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index fdd5feef9..a9b539690 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -623,6 +623,10 @@ uint32_t MillisecLowLoop(uint32_t tick) Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec) //Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec) } + if(m70msecTick) + { + AlarmHandling_ControlTrigger(0,0); + } if (m90msecTick) { for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index e85a36057..02a216ba6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -65,9 +65,10 @@ #include "MillisecTask.h" - +//#define CONTROL_DEBUG +#define DURATION_LIMIT 5 /******************** Definitions ********************************************/ -#define MAX_TANGO_CONTROL_DEVICES 120 +#define MAX_TANGO_CONTROL_DEVICES 100 /******************** STRUCTURES AND ENUMs ********************************************/ @@ -383,6 +384,7 @@ uint32_t AddControlCallback(char* Name, ControlCBFunction Callback, uint32_t Ct if (deviceId == 0xFF) { LOG_ERROR(deviceId, "Add Callback failed"); + AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,true); return 0xFF; } key = GateMutex_enter(gateControlDB); @@ -564,12 +566,16 @@ void ResetControlTime(void) } uint32_t ControlLowLoop(uint32_t tick) { - uint32_t tempp,tempq,delta; uint32_t skipped_ticks = 0; +#ifdef CONTROL_DEBUG + uint32_t tempp,tempq,delta; + uint32_t sys_ticks_start = msec_millisecondCounter,sys_ticks_end,max = 0,dev = 0; +#endif if (tick-prevtick>1) { skipped_ticks = tick-prevtick-1; - //Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); + if (tick-prevtick>10) + Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); } prevtick = tick; @@ -586,8 +592,9 @@ uint32_t ControlLowLoop(uint32_t tick) ControlBacklog[backlogindex]=ControlLowDevice_i; if ( ++backlogindex >= MAX_BACKLOG_SIZE) backlogindex = 0; - +#ifdef CONTROL_DEBUG tempp = HibernateRTCSSGet(); +#endif if(ControlArray[ControlLowDevice_i].ControlDataReadPtr) ControlDatalog[ControlLowDevice_i] = ControlArray[ControlLowDevice_i].ControlDataReadPtr( ControlArray[ControlLowDevice_i].Parameter1); else @@ -596,6 +603,7 @@ uint32_t ControlLowLoop(uint32_t tick) ControlArray[ControlLowDevice_i].ControlCallbackPtr(ControlArray[ControlLowDevice_i].IfIndex, ControlDatalog[ControlLowDevice_i]); else LOG_ERROR (ControlLowDevice_i, "Invalid callback ptr"); +#ifdef CONTROL_DEBUG tempq = HibernateRTCSSGet(); if (tempq < tempp) { @@ -603,14 +611,30 @@ uint32_t ControlLowLoop(uint32_t tick) } else delta = tempq - tempp; - if (ControlTime[ControlLowDevice_i] DURATION_LIMIT) + { + Report("ControlLowLoop long",__FILE__,sys_ticks_end-sys_ticks_start,(int)sys_ticks_end,RpWarning,(int)sys_ticks_start,0); + for (ControlLowDevice_i = 0; ControlLowDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlLowDevice_i++) + { + if (ControlTime[ControlLowDevice_i]>max) + { + max = ControlTime[ControlLowDevice_i]; + dev = ControlLowDevice_i; + } + } + Report(ControlArray[dev].Name,__FILE__,__LINE__,dev,RpWarning,max,0); + } +#endif //ROM_IntMasterEnable(); return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index e63314bac..5a0432389 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -524,6 +524,8 @@ void DiagnosticOneMinuteCollection(void) void DiagnosticOneSecCollection(void) { int i; + memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); + if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) { DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); @@ -625,7 +627,6 @@ void DiagnosticsReset(void) memset(MotorCounterIndex,0,sizeof(MotorCounterIndex)); memset(DancerErrorCounterIndex,0,sizeof(DancerErrorCounterIndex)); SpeedCounterIndex = 0; - memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); DiagnosticsIndex = 0; DiagnosticsMonitor.n_dancer1angle = 0; DiagnosticsMonitor.n_dancer2angle = 0; @@ -912,6 +913,7 @@ void SendDiagnostics(void) // diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); diagnosticsresponseContainer = createAllocatedContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size,diagnostics_response_ptr); + diagnosticsresponseContainer.has_continuous = true; diagnosticsresponseContainer.continuous = true; if (diagnosticsresponseContainer.data.data) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index c58d54a8c..674135180 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -45,6 +45,7 @@ uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -141,6 +142,7 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID; responseContainer.errormessage = "Job Active or incorrect motor ID"; responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, requestContainer->token, true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -186,6 +188,7 @@ uint32_t DispenserHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) //MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep); responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, HomingToken[MotorId], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -212,7 +215,8 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer) if (speed == 0) speed = 150; responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, requestContainer->token, false, &response, &dispenser_homing_response__pack, &dispenser_homing_response__get_packed_size); - responseContainer.continuous = true; + responseContainer.has_continuous = true; +responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index b05cb61e1..828961d17 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -145,6 +145,7 @@ uint32_t HWConfigurationInit(void) if (buffer) free (buffer); + Trigger_Head_Init_PT100();//OK //EmbeddedParametersInit(); IDS_Dispenser_Content_Init(); //ProcessParamsInit(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c index 157841365..3f557496c 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c @@ -48,10 +48,10 @@ int MachineUpdateResponseFunc(void) return OK; StartMachineStatusUpdateResponse response = START_MACHINE_STATUS_UPDATE_RESPONSE__INIT; - MachineStatus MachineStatus; + MachineStatus MachineStatus = MACHINE_STATUS__INIT; response.status = &MachineStatus; - machine_status__init(&MachineStatus); + //machine_status__init(&MachineStatus); MachineStatus.has_state = true; MachineStatus.state = StoredMachineStatus; MachineStatus.n_idspackslevels = 0; @@ -83,6 +83,7 @@ int MachineUpdateResponseFunc(void) responseContainer = /*MachineUpdate*/createContainer(MESSAGE_TYPE__StartMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &start_machine_status_update_response__pack, &start_machine_status_update_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; //if (responseContainer.data.data) { @@ -138,6 +139,7 @@ uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer) //TODO Handle the request!!!! MachineUpdateStopReporting(); responseContainer = createContainer(MESSAGE_TYPE__StopMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &stop_machine_status_update_response__pack, &stop_machine_status_update_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index a91919bc4..237722779 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -63,8 +63,6 @@ uint32_t Heaters_Init(void) int i; //ROM_TimerDisable(Heater_timerBase, TIMER_A); - Trigger_Head_Init_PT100();//OK - FPGA_SensorInitConfig(); memset(HeaterControl,0,sizeof(HeaterControl)); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index ad0f29392..e1be0358b 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -275,9 +275,9 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr IDS_Dispenser_RefillStarted(DispenserId,1); if (DispenserId== LUBRICANT_DISPENSER) { - MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/2, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0); - CurrentDispenserSpeed[DispenserId] = speed/2; - Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed/2,0); + MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/4, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0); + CurrentDispenserSpeed[DispenserId] = speed/4; + Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed/4,0); } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index a629afc50..5dc354785 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -1356,6 +1356,7 @@ uint32_t ThreadLoadingReport(void) //------------------------------------------------------------------------------------------- responseContainer = createContainer(MESSAGE_TYPE__StartThreadLoadingResponse, ThreadLoadingToken, last, &response, &start_thread_loading_response__pack, &start_thread_loading_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); -- cgit v1.3.1 From b523b20ae1674266d6ba13ac24b1fc8689c4b6fe Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Wed, 5 Feb 2020 18:20:12 +0200 Subject: replace all ifdef newWHS whit reading from EEPROM newWHS exist. --- .../Drivers/I2C_Communication/DAC/Blower.c | 1 - .../Head_Card/PT100/Head_PT100_ADC.c | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 18 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 2 +- .../WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c | 3 +- .../I2C_Communication/WHS_Card/EEPROM/D_EEPROM.c | 210 +++++++++++++++++++++ .../I2C_Communication/WHS_Card/EEPROM/D_EEPROM.h | 19 ++ .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 73 ++++--- .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h | 2 + Software/Embedded_SW/Embedded/Main.c | 6 +- .../Embedded/Modules/General/GeneralHardware.c | 3 +- .../Embedded/Modules/Heaters/Heaters_print.c | 6 +- .../Embedded/Modules/Stubs_Handler/Progress.c | 2 +- .../Embedded/Modules/Waste/Waste_init.c | 172 +++++++---------- .../Embedded/Modules/Waste/newWHS_init.c | 8 +- .../stubs/newWHS/test_valv1_valv2_pump.cs | 2 +- 16 files changed, 372 insertions(+), 157 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.c create mode 100644 Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.h (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c index a1ffa2475..443ae6aa7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c @@ -159,7 +159,6 @@ uint32_t Turn_the_Blower_On() } else //new WHS { - Trigger_WHS_init_Blower(); Trigger_SetWHSBlowerVoltage(Default_Voltage); } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c index 2b6510079..7ffe70cc6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c @@ -187,7 +187,7 @@ uint32_t Data_ADC_Head = 0; uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) { uint32_t Status = OK; - uint8_t Write_Buf[1]= 0; + uint8_t Write_Buf[1]= {0}; uint8_t temp[3] = {0,0,0}; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 7bfd8612d..9d14db8e1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -22,9 +22,8 @@ #include #include #include -#include #include - +#include #include "ADC_MUX/ADC_MUX.h" #include "modules/ids/ids_ex.h" @@ -42,6 +41,7 @@ typedef enum Actuators_Control, /* enum for WHS :*/ + DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -169,6 +169,16 @@ void Trigger_InputsReading(void) } +void Trigger_Check_WHS_Type_Via_EEPROM() +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = DetectNewWHS; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -445,6 +455,10 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; + case DetectNewWHS: + Check_WHS_Type_Via_EEPROM(); + break; + case WHS_init_I2C_IO: WHS_IO_Init(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 16db6132f..6e0774d75 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -10,7 +10,7 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ - +void Trigger_Check_WHS_Type_Via_EEPROM(void); void Trigger_WHS_init_IO(void); void Trigger_WHS_init_fan(void); void Trigger_WHS_init_PT100(void); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c index b6540df04..2316b3387 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c @@ -69,8 +69,7 @@ bool D_ADS122_ReadDataCommand(uint8_t i2cbus, uint8_t i2cadd, uint32_t* p_Data_A Status |= I2C_Read(i2cbus, i2cadd, &temp, 3); Data_ADS122X = (temp & 0xFF0000) >> 16 | (temp & 0xFF00) | (temp & 0x0000FF) << 16;//First send the MSB so we need to reorder the bytes - //*p_Data_ADS122X = CalculateTemperatures(Data_ADS122X); -#warning what to do with the data ??????? + *p_Data_ADS122X = Data_ADS122X;//todo return Status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.c new file mode 100644 index 000000000..6cd00ea4c --- /dev/null +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.c @@ -0,0 +1,210 @@ +/* + * WHS_EEPROM.c + * + * Created on: Jun 30, 2019 + * Author: avi + */ +#include "include.h" +#include +#include +//#include "../I2C_WHS_Mux.h" +//#include "Drivers/I2C_Communication/WHS_Card/WHS_data.h" +#include "driverlib/i2c.h" + +//EEPROM M24M01-DFMN6TP +//uint32_t I2C_WHS_EEPROM_SLAVE_ADD = 0xA0; + + +//uint8_t WHS_Type = WHS_TYPE_UNKNOWN; + +#define MAX_ALLOWS_PAGE_WRITE 256 +#define MIN_READ_BYTE 1 + +bool D_I2C_EEprom_Write_Byte(uint8_t I2C_ID, uint8_t I2C_chip_addr, uint32_t address, uint8_t data) +{ + bool status = OK; + status = (bool)D_I2C_EEprom_Write(I2C_ID, I2C_chip_addr, address, 1, &data); + return status; +} + + +bool D_I2C_EEprom_Read_Byte (uint8_t I2C_ID, uint8_t I2C_chip_addr, uint32_t address, uint8_t* p_data) +{ + bool status = OK; + status = (bool)D_I2C_EEprom_Read(I2C_ID, I2C_chip_addr, address, 1, p_data); + return status; + +} + + + +uint32_t D_I2C_EEprom_Write(uint8_t I2C_ID, uint8_t I2C_chip_addr, uint32_t address, uint16_t size, uint8_t *p_data) +{ + uint32_t status= OK; + uint8_t Write_Buffer[size+2] ; + uint8_t I2C_chip_address = 0; + uint8_t A16 = 0; + uint16_t i = 0; + + if (size > MAX_ALLOWS_PAGE_WRITE) + { + return status = ERROR; + } + + A16 = ((address & 0x00010000) >> 16); + I2C_chip_address = (I2C_chip_addr | (A16 << 1)); + Write_Buffer[0] = ((address & 0x0000FF00)>>8); + Write_Buffer[1] = (address & 0x000000FF); + + for(i = 0; i < size+2; i++) + { + Write_Buffer[i+2] = *(p_data+i); + } + //status |= Select_Main_WHS_Mux_Channel(); + status |= I2C_Write(I2C_ID, I2C_chip_address , Write_Buffer, size+2); +return status; +} + + +uint32_t D_I2C_EEprom_Read(uint8_t I2C_ID, uint8_t I2C_chip_addr, uint32_t address, uint16_t size, uint8_t *p_data) +{ + uint32_t status= OK; + uint8_t A16 = 0; + uint8_t I2C_chip_address = 0; + uint8_t Write_Buffer[2] = {0,0}; + + + if (size < MIN_READ_BYTE) + { + return status = ERROR; + } + + A16 = ((address & 0x00010000) >> 16); + I2C_chip_address = (I2C_chip_addr | (A16 << 1)); + Write_Buffer[0] = ((address & 0x0000FF00)>>8); + Write_Buffer[1] = (address & 0x000000FF); + + //status |= Select_Main_WHS_Mux_Channel(); + status |= I2C_Write(I2C_ID, I2C_chip_address , Write_Buffer, 2); + status |= I2C_Read(I2C_ID, I2C_chip_address + 1, p_data, size); + + return status; + +} + +/* +uint32_t Check_WHS_Type_Via_EEPROM() +{ +#define WHS_TYPE_ADDR 0 + + uint32_t status = OK; + uint8_t data = 0; + + WHS_I2C_EEprom_Read(WHS_TYPE_ADDR, 1, &data); + + if(I2CMasterErr(I2C_ID_WHS_CARD) == I2C_MASTER_ERR_NONE) + { + WHS_Type = WHS_TYPE_UNKNOWN; + } + else + { + WHS_Type = WHS_TYPE_NEW; + } + +// //temporary +// #ifdef Use_Head_Card +// Head_Type = HEAD_TYPE_SYLKO; +// #else +// Head_Type = HEAD_TYPE_SYLKO_WITHOUT_CARD; +// #endif + + //TODO to test and replace #ifdef Use_Head_Card with if(Head_Type != HEAD_TYPE_SYLKO_WITHOUT_CARD) + + return status; +} +*/ + +/* +uint32_t WHS_I2C_EEprom_Write_Ch() +{ + uint32_t status= OK; + + uint8_t i = 0; + + + status |= Select_Main_WHS_Mux_Channel(); + + WHS_Write_Buf[0] = 0x00; + WHS_Write_Buf[1] = 0x00; + + for(i=0;i +//#include +#include #include #include "../I2C_WHS_Mux.h" #include "Drivers/I2C_Communication/WHS_Card/WHS_data.h" +#include "driverlib/i2c.h" //EEPROM M24M01-DFMN6TP //uint32_t I2C_WHS_EEPROM_SLAVE_ADD = 0xA0; -//uint8_t WHS_Write_Buf[Max_WHS_buf_size +2]; -#ifdef Use_Whs_Card -uint8_t WHS_Type = WHS_TYPE_NEW; -#else - uint8_t WHS_Type = WHS_TYPE_UNKNOWN; -#endif +uint8_t WHS_Type = WHS_TYPE_UNKNOWN; #define MAX_ALLOWS_PAGE_WRITE 256 #define MIN_READ_BYTE 1 @@ -45,27 +42,19 @@ bool WHS_I2C_EEprom_Read_Byte (uint32_t address, uint8_t* p_data) uint32_t WHS_I2C_EEprom_Write(uint32_t address, uint16_t size, uint8_t *p_data) { uint32_t status= OK; - uint8_t WHS_Write_Buffer[size+2] ; - uint8_t A16 = 0; - uint8_t I2C_chip_address = 0; - uint16_t i = 0; +// uint8_t WHS_Write_Buffer[size+2] ; +// uint8_t A16 = 0; +// uint8_t I2C_chip_address = 0; +// uint16_t i = 0; if (size > MAX_ALLOWS_PAGE_WRITE) { return status = ERROR; } - A16 = ((address & 0x00010000) >> 16); - I2C_chip_address = (I2CEEPROM_ADDRESS | (A16 << 1)); - WHS_Write_Buffer[0] = ((address & 0x0000FF00)>>8); - WHS_Write_Buffer[1] = (address & 0x000000FF); - - for(i = 0; i < size+2; i++) - { - WHS_Write_Buffer[i+2] = *(p_data+i); - } status |= Select_Main_WHS_Mux_Channel(); - status |= I2C_Write(I2C_ID_WHS_CARD, I2C_chip_address , WHS_Write_Buffer, size+2); + status |= D_I2C_EEprom_Write( I2C_ID_WHS_CARD, I2CEEPROM_ADDRESS, address, size, p_data); + return status; } @@ -74,9 +63,9 @@ uint32_t WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_data) { uint32_t status= OK; - uint8_t A16 = 0; - uint8_t I2C_chip_address = 0; - uint8_t WHS_Write_Buffer[2] = {0,0}; +// uint8_t A16 = 0; +// uint8_t I2C_chip_address = 0; +// uint8_t WHS_Write_Buffer[2] = {0,0}; if (size < MIN_READ_BYTE) @@ -84,18 +73,40 @@ uint32_t WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_data) return status = ERROR; } - A16 = ((address & 0x00010000) >> 16); - I2C_chip_address = (I2CEEPROM_ADDRESS | (A16 << 1)); - WHS_Write_Buffer[0] = ((address & 0x0000FF00)>>8); - WHS_Write_Buffer[1] = (address & 0x000000FF); - status |= Select_Main_WHS_Mux_Channel(); - status |= I2C_Write(I2C_ID_WHS_CARD, I2C_chip_address , WHS_Write_Buffer, 2); - status |= I2C_Read(I2C_ID_WHS_CARD, I2C_chip_address + 1, p_data, size); + status |= D_I2C_EEprom_Read (I2C_ID_WHS_CARD, I2CEEPROM_ADDRESS, address, size, p_data); return status; } + +uint32_t Check_WHS_Type_Via_EEPROM() +{ +#define WHS_TYPE_ADDR 0 + + uint32_t status = OK; + uint8_t data = 0; + + Select_Main_WHS_Mux_Channel(); + status = WHS_I2C_EEprom_Write_Byte(WHS_TYPE_ADDR, &data); + + + if (status) + //if(I2CMasterErr(I2C_ID_WHS_CARD) == I2C_MASTER_ERR_NONE) + { + WHS_Type = WHS_TYPE_UNKNOWN; + } + else + { + WHS_Type = WHS_TYPE_NEW; + } + + + //TODO to test and replace #ifdef Use_Head_Card with if(Head_Type != HEAD_TYPE_SYLKO_WITHOUT_CARD) + + return status; +} + /* uint32_t WHS_I2C_EEprom_Write_Ch() { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h index 494a1d9a0..c64f8705c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h @@ -39,6 +39,8 @@ uint32_t Test_WHS_EEPROM(); */ uint32_t WHS_I2C_EEprom_Write(uint32_t address, uint16_t size, uint8_t *data); uint32_t WHS_I2C_EEprom_Read (uint32_t address, uint16_t size, uint8_t *data); +uint32_t Check_WHS_Type_Via_EEPROM(); + bool WHS_I2C_EEprom_Write_Byte(uint32_t address, uint8_t data); bool WHS_I2C_EEprom_Read_Byte (uint32_t address, uint8_t* p_data); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 04ab6e57d..9469f9b97 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -81,7 +81,8 @@ #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" #include "Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h" #include "modules/AlarmHandling/AlarmHandling.h" - +//#include +#include //***************************************************************************** // @@ -249,7 +250,8 @@ int main(void) Init_All_I2C(); Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards Check_Head_Type_Via_EEPROM(); - //Check_WHS_Type_Via_EEPROM(); + //Trigger_Check_WHS_Type_Via_EEPROM(); + Check_WHS_Type_Via_EEPROM(); #ifndef EVALUATION_BOARD STATUS_RED_LED_ON; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 828961d17..35065cc2a 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -150,9 +150,10 @@ uint32_t HWConfigurationInit(void) IDS_Dispenser_Content_Init(); //ProcessParamsInit(); Buttons_Init(); - WHS_init(); if (WHS_Type == WHS_TYPE_NEW) newWHS_init(); + WHS_init(); + ADC_MUX_Init(); GeneralHwReady = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 96ce9331d..2de6b0641 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -807,7 +807,7 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) if (abs(readValue - HeaterPreviousRead[index])>2000) { ReportWithPackageFilter(HeatersFilter,"Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); - if (HeaterSpikeRead[index] = 0) + if (HeaterSpikeRead[index] == 0) { HeaterSpikeRead[index] = readValue; } @@ -993,7 +993,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) ReportWithPackageFilter(HeatersFilter,"AC Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index); if (readValue > HeaterCmd[index].targettemperatue) { - if (HeaterSpikeRead[index] = 0) + if (HeaterSpikeRead[index] == 0) { HeaterSpikeRead[index] = readValue; } @@ -1200,7 +1200,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) { DeActivateHeater(index); HeaterRecalculateHeaterParams(index, 0); - if (HeaterSpikeRead[index] = 0) + if (HeaterSpikeRead[index] == 0) { HeaterSpikeRead[index] = readValue; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index e6e5923c0..c21316318 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -158,7 +158,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) else // if(request->amount == 0x3EB) { - uint16_t tempu16=0; + uint16_t tempu16 = 0; if (WHS_Type == WHS_TYPE_NEW) { if (request->delay <= 0x03FF) diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c index 5fcab9c13..d845a128d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c @@ -328,23 +328,30 @@ bool SetWastePump( bool power) if ( power == OPEN ) { if (WHS_Type == WHS_TYPE_UNKNOWN) - Pumps_Control(WHS_WTANKPUMP2, OPEN); //waste_pump_power_on(); - else //new WHS - Trigger_SetWHSPump(OPEN); - - REPORT_MSG(WHS_empty," ------------ WHS WHS_empty start PUMP ----------------- "); + { + Pumps_Control(WHS_WTANKPUMP2, OPEN); //waste_pump_power_on(); + } + else //new WHS + { + Trigger_SetWHSPump(OPEN); + } WHS_info.WHS_pump.status = OPEN; + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty start PUMP -----------------", __FILE__, __LINE__, WHS_info.WHS_pump.status, RpMessage, 0, 0); WHS_info.WHS_pump.time = STARTCOUNT; ret = OPEN; } else { if (WHS_Type == WHS_TYPE_UNKNOWN) - Pumps_Control(WHS_WTANKPUMP2, CLOSE); //waste_pump_power_on(); - else //new WHS - Trigger_SetWHSPump(CLOSE); - REPORT_MSG(WHS_empty," ------------ WHS WHS_empty stop PUMP ----------------- "); - WHS_info.WHS_pump.status = CLOSE; + { + Pumps_Control(WHS_WTANKPUMP2, CLOSE); //waste_pump_power_on(); + } + else //new WHS + { + Trigger_SetWHSPump(CLOSE); + } + WHS_info.WHS_pump.status = CLOSE; + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty stop PUMP -----------------", __FILE__, __LINE__, WHS_info.WHS_pump.status, RpMessage, 0, 0); WHS_info.WHS_pump.time = STOPCOUNT; ret = CLOSE; } @@ -366,12 +373,14 @@ bool SetValveDirection() if (WHS_info.active_cartridge == waste_cartridge1) { WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE1; - } + ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve VALVE_DIR_WASTE_CARTRIDGE1 -----------------", __FILE__, __LINE__, WHS_info.WHS_valve, RpMessage, 0 ,0); +} else { WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE2; + ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve VALVE_DIR_WASTE_CARTRIDGE2 -----------------", __FILE__, __LINE__, WHS_info.WHS_valve, RpMessage, 0 ,0); } - ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve -----------------", __FILE__,__LINE__,WHS_info.WHS_valve, RpMessage, 0 ,0); + if (WHS_Type == WHS_TYPE_UNKNOWN) Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve); @@ -396,7 +405,6 @@ U8 CartridgeWasteFilling(bool status) //Pannel_Leds(PANEL_BUTTON_OR_CRAT_ID Pannel_Led_Id, OPERATION_MODE LED_Mode); //set cartridge led color slow blink SetWastePump(OPEN); //WHS_info.WHS_pump.time = 0; - REPORT_MSG(WHS_empty," ------------ WHS WHS_empty start PUMP ----------------- "); AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false); ret=OK; } @@ -416,16 +424,16 @@ U8 CartridgeWasteFilling(bool status) case waste_cartridge1: Pannel_Leds( CART_2, MODE_OFF); //set led color cart2.color = colorOFF; - REPORT_MSG(WHS_empty," ------------ WHS waste_cartridge1 is used please replace it ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge1 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); break; case waste_cartridge2: Pannel_Leds( CART_3, MODE_OFF); //set led color cart3.color = colorOFF; - REPORT_MSG(WHS_empty," ------------ WHS waste_cartridge2 is used please replace it ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge2 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); break; case no_waste_cartridge: - REPORT_MSG(WHS_empty," ------------ !!!!!WHS No waste cartridge !!!!! ----------------- "); - REPORT_MSG(WHS_empty," ------------ !!!! WHS insert cartridge!!!! ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ !!!!!WHS No waste cartridge !!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------ !!!! WHS insert cartridge!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); ret = ERROR; break; default: @@ -479,40 +487,20 @@ WHS_sttMachin UpdateStateMachine() if ( WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORnotFULL) { WHS_info.sttMachine = WHS_empty ; - REPORT_MSG(WHS_empty," ------------ WHS WHS_empty ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0); } - else if ((WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) && - (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY)) + else if ((WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) && + (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY)) { WHS_info.sttMachine = WHS_full ; - REPORT_MSG(WHS_full," ------------ WHS WHS_full ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_full -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0); } else { WHS_info.sttMachine = WHS_sttError ; - REPORT_MSG(WHS_sttError," ------------ WHS sensor Error ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS sensor Error -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0); } - -/* if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSORnotOVERFLOW) && - ( WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORnotFULL) && - ((WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY) || - (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSOREMPTY))) - WHS_info.sttMachine = WHS_empty ; - else if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSORnotOVERFLOW) && - (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) && - (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY)) - WHS_info.sttMachine = WHS_full ; - else if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSOROVERFLOW) && - (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) && - (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY)) - WHS_info.sttMachine = WHS_overflow ; - else - { - WHS_info.sttMachine = WHS_sttError ; - REPORT_MSG(WHS_sttError," ------------ WHS sensor Error ----------------- "); - } -*/ - return OK; + return WHS_info.sttMachine; } @@ -526,20 +514,6 @@ bool initWHS_WasteTank() } -/* -WHS_sensor OverflowSensorEvent() -{ - WHS_sensor ret = WHS_no_event; - if (RdWasteTankOverFlowSensor() != WHS_info.WHS_sensors.waste_tank_over_flow_sensor) - { - WHS_info.event = WHS_overflow_sensor; - ret = WHS_overflow_sensor; - WHS_info.WHS_sensors.waste_tank_over_flow_sensor = !(WHS_info.WHS_sensors.waste_tank_over_flow_sensor); - } - return ret; -} -*/ - WHS_sensor EmptySensorEvent() { WHS_sensor ret = WHS_no_event; @@ -548,6 +522,7 @@ WHS_sensor EmptySensorEvent() WHS_info.event = WHS_empty_sensor; ret = WHS_empty_sensor; WHS_info.WHS_sensors.waste_tank_empty_sensor = !WHS_info.WHS_sensors.waste_tank_empty_sensor; + ReportWithPackageFilter(WasteFilter,"------------ WHS EmptySensorEvent (status) -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0); } return ret; } @@ -560,6 +535,7 @@ WHS_sensor FullSensorEvent() WHS_info.event = WHS_full_sensor; ret = WHS_full_sensor; WHS_info.WHS_sensors.waste_tank_full_sensor = 1-WHS_info.WHS_sensors.waste_tank_full_sensor; + ReportWithPackageFilter(WasteFilter,"------------ WHS FullSensorEvent (status) -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0); } return ret; } @@ -578,6 +554,7 @@ WHS_sensor WasteTankCallBackFunction() { WHS_info.WHS_pump.time = 0; AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, false); + ReportWithPackageFilter(WasteFilter,"------------ WHS PUMPTIMEOUT -----------------", __FILE__, __LINE__, PUMPTIMEOUT, RpMessage, 0, 0); return WHS_info.event = WHS_Timeout; } if ( FullSensorEvent()) @@ -595,7 +572,6 @@ WHS_sensor WasteTankCallBackFunction() bool WasteTankCBFunction() { - uint8_t parameter = 7; bool ret = notOK; static bool pump_on_flag = CLOSE; //uint32_t Cartridge_Cover_device_Id = 0; @@ -609,11 +585,11 @@ bool WasteTankCBFunction() if (WHS_info.sttMachine == WHS_empty) { WHS_info.sttMachine = WHS_filling; - REPORT_MSG(WHS_filling," ------------ WHS_filling ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_filling ------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); } else { - REPORT_MSG(WHS_filling," ------------ WHS EMPTY sensor failed !!!!!!! ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS EMPTY sensor failed !!!!!!! ------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); } } else //SENSOREMPTY @@ -621,7 +597,7 @@ bool WasteTankCBFunction() if (WHS_info.sttMachine == WHS_emptying) { WHS_info.sttMachine = WHS_empty; - REPORT_MSG(WHS_filling," ------------ WHS_empty ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); ret = CartridgeWasteFilling(OFF); WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction ); WHS_info.Cartridge_Cover_device_Id = AddControlCallback("Cartridge Cover Door", WasteTankCBFunction, CartridgeCoverCallBackTime, CartridgeCoverCallBackFunction, 0,0,0 );//eOneSecond @@ -629,7 +605,7 @@ bool WasteTankCBFunction() } else { - REPORT_MSG(WHS_emptying," ------------ WHS EMPTY sensor failed !!!!!!! ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS WHS EMPTY sensor failed !!!!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); } } break; @@ -639,9 +615,9 @@ bool WasteTankCBFunction() break; if ((WHS_info.WHS_sensors.cartridge_cover == OPEN) && (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL)) { - ReportWithPackageFilter(WasteFilter,"------------ WHS_full , cartridge cover is open cant start the pump!!!! ----------------- ", __FILE__,__LINE__,(int)(WHS_emptying), RpMessage, (int)(WHS_info.WHS_sensors.cartridge_cover), 0); - ReportWithPackageFilter(WasteFilter,"------------ close the cartridge cover to start the pump!!!! ----------------- ", __FILE__,__LINE__,(int)(WHS_emptying), RpMessage, (int)(WHS_info.WHS_sensors.cartridge_cover), 0); - //pump_on_flag = OPEN; + ReportWithPackageFilter(WasteFilter,"------------ WHS_full , cartridge cover is open cant start the pump!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0); + ReportWithPackageFilter(WasteFilter,"------------ WHS, close the cartridge cover to start the pump!!!! -------------" , __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0); + AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, true); WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL; @@ -650,7 +626,7 @@ bool WasteTankCBFunction() if (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) { WHS_info.sttMachine = WHS_full; - REPORT_MSG(WHS_emptying," ------------ WHS_full ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_full -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0); WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction ); WHS_info.Cartridge_Cover_device_Id = AddControlCallback("Cartridge Cover Door", WasteTankCBFunction, CartridgeCoverCallBackFastTime , CartridgeCoverCallBackFunction, 0,0,0 );//eTenMillisecond if (RdRFIDStatus (WHS_info.active_cartridge) == WasteEmpty) @@ -668,7 +644,7 @@ bool WasteTankCBFunction() if (ret != OK) { - //recreate the full event until cartridge is inserted or atontocation + //recreate the full event until cartridge is inserted or authentication WHS_info.WHS_sensors.waste_tank_full_sensor = 1-WHS_info.WHS_sensors.waste_tank_full_sensor; } @@ -679,34 +655,21 @@ bool WasteTankCBFunction() if (WHS_info.sttMachine == WHS_full) { WHS_info.sttMachine = WHS_emptying; - REPORT_MSG(WHS_emptying," ------------ WHS_emptying ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_emptying -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0); // can start a new JOB } else { - REPORT_MSG(WHS_full," ------------ WHS FULL sensor failed !!!!!!! ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS FULL sensor failed !!!!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0); } } break; -/* case WHS_overflow_sensor: - if (WHS_info.WHS_sensors.waste_tank_empty_sensor) - { - - // 1.StopMacine - WHS_info.sttMachine = WHS_overflow; - } - else - { - WHS_info.sttMachine = WHS_full; - } - break; -*/ case WHS_cartridge_cover_sensor: if ( WHS_info.WHS_sensors.cartridge_cover == OPEN ) { - REPORT_MSG(parameter," Cartridge cover open ");//popup message :"Cartridge cover open" //todo + ReportWithPackageFilter(WasteFilter,"------------ WHS, Cartridge cover open -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);//popup message :"Cartridge cover open" //todo if ( WHS_info.WHS_pump.status == OPEN) { CartridgeWasteFilling(CLOSE); @@ -726,7 +689,7 @@ bool WasteTankCBFunction() } else { - REPORT_MSG(parameter,"Power down in process");//popup message :"Cartridge cover open" //todo + ReportWithPackageFilter(WasteFilter,"------------ WHS, Power down in process -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);//popup message :"Cartridge cover open" //todo } @@ -755,7 +718,7 @@ bool WasteTankCBFunction() if ( IFS_info.INK_isOK_flag ) { IFS_info.INK_isOK_flag = false;//0 - REPORT_MSG(WHS_full," ------------ change INK cartridge status to color Used ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, change INK cartridge status to color Used -------------", __FILE__, __LINE__, IFS_info.INK_isOK_flag, RpMessage, 0, 0); // test the Mid-tank capacity is not at Nadav sequence MidTank_Pressure = Get_MidTank_Pressure_Sensor(IFS_info.Ink.cart_color); if ( MidTank_Pressure > MidTank_Pressure_EMPTY ) @@ -763,11 +726,10 @@ bool WasteTankCBFunction() ReportWithPackageFilter(WasteFilter,"------------ close door MidTank_Pressure > MidTank_Pressure_EMPTY -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); MidTankValvesAction(Cartridge_MidTank_OFF); //Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color); - REPORT_MSG(WHS_full," ------------ Mid-tank not empty ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, Mid-tank not empty -------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); break; } IFS_info.MidTank_capacity = MidTank_Pressure; - REPORT_MSG(WHS_full," ------------ Mid-tank filling in process ----------------- "); ReportWithPackageFilter(WasteFilter,"------------ Mid-tank filling in process -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); Pannel_Leds(CART_1, MODE_ON); cart1.color = BLINK; @@ -797,7 +759,7 @@ bool WasteTankCBFunction() if (IFS_info.IFS_Ink_precense_sensor == CarteidgePrecense) { // is power down in process?? //todo - if ( !PowerOffInProcessGetState() ) // not in power down proccess + if ( !PowerOffInProcessGetState() ) // not in power down process { Pannel_Leds(CART_1, MODE_ON); cart1.color = colorON; @@ -806,10 +768,8 @@ bool WasteTankCBFunction() else { // print: "power down in process"; - REPORT_MSG(WHS_full," ------------ power down in process ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, Power down in process -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, IFS_info.IFS_Ink_precense_sensor, 0); } - - } else // Cartridge is out { @@ -822,14 +782,13 @@ bool WasteTankCBFunction() IFS_info.Ink.time_out = 0; IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction ); } - } break; case IFS_INK_authentication_pass: if (!ColorMatch()) { - REPORT_MSG(WHS_full," ------------ cartridge color does not match ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, cartridge color does not match -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); Pannel_Leds(CART_1, MODE_ON); cart1.color = BLINK; break; @@ -919,6 +878,7 @@ bool WasteTankCBFunction() case WHS_Timeout: REPORT_MSG(WHS_emptying," ------------ WHS_Timeout ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_Timeout -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, true); CartridgeWasteFilling(OFF); break; @@ -938,12 +898,12 @@ bool WasteTankCBFunction() case IFS_Timeout_Second: // Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color); IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction ); - REPORT_MSG(WHS_full," ------------ Change cartridge status to Fail ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS, Change cartridge status to Fail -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); MidTankValvesAction(Cartridge_MidTank_OFF); cart1.color = fastBILNK; - REPORT_MSG(WHS_full," ------------ Display Mid-tank # filling fail ----------------- "); - REPORT_MSG(WHS_full," ------------ call customer support ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ Display Mid-tank # filling fail -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------ call customer support -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); Pannel_Leds(CART_1, MODE_ON); cart1.color = fastBILNK; IFS_TimeOutAlarm(true); @@ -952,11 +912,11 @@ bool WasteTankCBFunction() case IFS_MidTankFull: // Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color); IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction ); - REPORT_MSG(WHS_full," ------------ Change cartridge status to Waste Empty ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ Change cartridge status to Waste Empty -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); Pannel_Leds(CART_1, MODE_OFF); cart1.color = colorOFF; MidTankValvesAction(Cartridge_MidTank_OFF); - REPORT_MSG(WHS_full," ------------ Display Mid-tank # filling done ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ Display Mid-tank # filling done -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); break; @@ -977,7 +937,6 @@ bool WasteTankCBFunction() bool RdCartridgeCoverSensor() { - uint32_t parameter = 6 ; //REPORT_MSG(parameter," ------------ RD Cartridge Cover Sensor ----------------- "); bool ret = notOK; @@ -987,11 +946,11 @@ bool RdCartridgeCoverSensor() ret = Get_COVER_1_State(CartridgesDoor); if ((ret == OPEN ) && (ret != WHS_info.WHS_sensors.cartridge_cover)) { - Report(" ------------ RD Cartridge Cover Sensor is = OPEN(1) ----------------- ",__FILE__,__LINE__,ret,RpWarning,ret,0); + ReportWithPackageFilter(WasteFilter,"------------ RD Cartridge Cover Sensor is = OPEN(1) -------------", __FILE__, __LINE__, ret, RpMessage, 0, 0); } if ((ret == CLOSE ) && (ret != WHS_info.WHS_sensors.cartridge_cover)) { - REPORT_MSG(parameter," ------------ RD Cartridge Cover Sensor is = CLOSE(0) ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ RD Cartridge Cover Sensor is = CLOSE(0) -------------", __FILE__, __LINE__, ret, RpMessage, 0, 0); } return ret; } @@ -1001,21 +960,18 @@ bool RdCartridgeCoverSensor() WHS_sensor CartridgeCoverCallBackFunction() { - uint32_t parameter = 6 ; - - WHS_sensor ret = WHS_no_event; //ret = RdCartridgeCoverSensor(); if ( WHS_info.WHS_sensors.cartridge_cover != RdCartridgeCoverSensor() ) { - REPORT_MSG(parameter," ------------ find : WHS_cartridge_cover_sensor event ----------------- "); WHS_info.event = WHS_cartridge_cover_sensor; WHS_info.WHS_sensors.cartridge_cover = !WHS_info.WHS_sensors.cartridge_cover; + ReportWithPackageFilter(WasteFilter,"------------ find : WHS_cartridge_cover_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0); ret = WHS_cartridge_cover_sensor; //todo } else if (( IFS_info.INK_isOK_flag ) && ( WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN))// for Mid-tank filling { - REPORT_MSG(parameter," ------------ Mid-tank Filling : Close cartridge cover ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ Mid-tank Filling : Close cartridge cover -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0); } /*else if(WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN) { @@ -1087,15 +1043,13 @@ WHS_sensor CartridgeCoverCallBackFunction() WHS_sensor CartridgeWaste1CallBackFunction() { - uint32_t parameter = 6 ; - WHS_sensor ret = WHS_no_event; //ret = RdCartridgeCoverSensor(); if (WHS_info.WHS_sensors.waste_cartridge1_precense_sensor != RdWasteCartridge1Sensor()) { - REPORT_MSG(parameter," ------------ find : WHS_waste1_presence_sensor event ----------------- "); WHS_info.event = WHS_waste1_presence_sensor; WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = !WHS_info.WHS_sensors.waste_cartridge1_precense_sensor; + ReportWithPackageFilter(WasteFilter,"------------ find : WHS_waste1_presence_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0); ret = WHS_waste1_presence_sensor; } return ret; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c index a255f55a0..99b96ddf3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c @@ -9,13 +9,13 @@ #include #include #include "Drivers/I2C_Communication/WHS_Card/WHS_data.h" -#include #include #include #include #include #include #include +#include #include bool test_9555(void); @@ -24,17 +24,21 @@ bool WHS_I2C_EEprom_Write_Ch_shai_taest(void); bool newWHS_init(void) { bool status = OK; - Main_Mux_Flag = 0; + + //Main_Mux_Flag = 0; // delayms(4000); // status = Select_Main_WHS_Mux_Channel(); + + //Trigger_Check_WHS_Type_Via_EEPROM(); Trigger_WHS_init_IO(); Trigger_WHS_init_fan(); Trigger_WHS_init_PT100(); Trigger_WHS_init_Blower(); Trigger_WHS_MAX11614_Init(); Trigger_WHS_Rheostat_init(); + //status |= WHS_IO_Init(); //status |= init_WHS_fan(); // diff --git a/Software/Stubs Collection/stubs/newWHS/test_valv1_valv2_pump.cs b/Software/Stubs Collection/stubs/newWHS/test_valv1_valv2_pump.cs index c81bdaebd..c4435ab42 100644 --- a/Software/Stubs Collection/stubs/newWHS/test_valv1_valv2_pump.cs +++ b/Software/Stubs Collection/stubs/newWHS/test_valv1_valv2_pump.cs @@ -39,7 +39,7 @@ Thread.Sleep(5000); //Sleep for 10 milli. var response8 = stubManager.Run("ProgressRequest" ,0x3E9, 0x8700); //valv2_disable //test pump -Thread.Sleep(5000); //Sleep for 10 milli. +//Thread.Sleep(5000); //Sleep for 10 milli. stubManager.Run("ProgressRequest" ,0x3E9, 0x0701);// pump on Thread.Sleep(5000); //Sleep for 10 milli. stubManager.Run("ProgressRequest" ,0x3E9, 0x0700); // pump off -- cgit v1.3.1 From 063724aa818cc243b10a5c202e28b3cb49e6503f Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Thu, 6 Feb 2020 09:52:24 +0200 Subject: update to ReportWithPackageFilter command --- .../Embedded/Drivers/I2C_Communication/I2C_Comm.c | 16 +++--- Software/Embedded_SW/Embedded/Modules/IFS/ifs.c | 6 +-- .../Embedded/Modules/Waste/Waste_init.c | 58 ++++++++-------------- 3 files changed, 35 insertions(+), 45 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c index bda5a1a8e..e6095b9f8 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c @@ -56,7 +56,7 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat if (I2CMasterBusy(I2C_BASE)) { - Report("I2C_WriteBuff busy", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"I2C_WriteBuff busy", __FILE__,__LINE__,status, RpMessage, Task_self(), 0); return 0xFF; } I2CMasterSlaveAddrSet(I2C_BASE, addr, false); @@ -114,13 +114,14 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat { Arb_Loss_Count= 0; Init_All_I2C(); - Report("Reinitializing I2C master", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__,status, RpMessage, Task_self(), 0); } } else { if (Arb_Loss_Count) - Report("Resetting count ", __FILE__,Arb_Loss_Count,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); + // Arb_Loss_Count = 0; } return status; @@ -134,7 +135,8 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data if (I2CMasterBusy(I2C_BASE)) { - Report("I2C_ReadBuff busy", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"I2C_ReadBuff busy", __FILE__,__LINE__, status, RpMessage, Task_self(), 0); + return 0xFF; } I2CMasterSlaveAddrSet(I2C_BASE, addr, true); @@ -194,13 +196,15 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data { Arb_Loss_Count= 0; Init_All_I2C(); - Report("Reinitializing I2C master", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__, status, RpMessage, Task_self(), 0); + } } else { if (Arb_Loss_Count) - Report("Resetting count ", __FILE__,Arb_Loss_Count,status, RpMessage,Task_self(), 0); + ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); + //Arb_Loss_Count = 0; } return status; diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c index 7f99a2a92..a98cc173e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -317,19 +317,19 @@ bool CartridgeValidationResponseFunc(MessageContainer* requestContainer) // 2. the index is out of rang if (response == NULL) { - REPORT_MSG(WHS_filling," ------------ IFS_filling message from PPC is null!!! ----------------- "); // write to log error + ReportWithPackageFilter(WHS_filling,"------------ IFS_filling message from PPC is null!!! -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); return ret; } if (response->index < NUM_OF_MIDTANKS) { IFS_info.Ink.cart_color = response->index; // midtank 1-8 - ReportWithPackageFilter(WasteFilter,"------------ IFS get message response->index is -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0); + ReportWithPackageFilter(WHS_filling,"------------ IFS get message response->index is -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0); WHS_info.event = IFS_INK_authentication_pass; } else { - ReportWithPackageFilter(WasteFilter,"------------ IFS get message response->index is out of rang -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0); + ReportWithPackageFilter(WHS_filling,"------------ IFS get message response->index is out of rang -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0); WHS_info.event = IFS_INK_authentication_fail; } diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c index d845a128d..094df16cf 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c @@ -877,7 +877,6 @@ bool WasteTankCBFunction() break; case WHS_Timeout: - REPORT_MSG(WHS_emptying," ------------ WHS_Timeout ----------------- "); ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_Timeout -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0); AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, true); CartridgeWasteFilling(OFF); @@ -1057,15 +1056,13 @@ WHS_sensor CartridgeWaste1CallBackFunction() WHS_sensor CartridgeWaste2CallBackFunction() { - uint32_t parameter = 6 ; - WHS_sensor ret = WHS_no_event; - //ret = RdCartridgeCoverSensor(); + if (WHS_info.WHS_sensors.waste_cartridge2_precense_sensor != RdWasteCartridge2Sensor()) { - REPORT_MSG(parameter," ------------ find : WHS_waste2_presence_sensor event ----------------- "); WHS_info.event = WHS_waste2_presence_sensor; WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = !WHS_info.WHS_sensors.waste_cartridge2_precense_sensor; + ReportWithPackageFilter(WasteFilter,"------------ find : WHS_waste2_presence_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0); ret = WHS_waste2_presence_sensor; } return ret; @@ -1074,42 +1071,40 @@ WHS_sensor CartridgeWaste2CallBackFunction() /*------------------------------- Waste Cartridge + IFS Cartridge -----------------------------------------*/ bool InitCartStatus() { - uint32_t parameter = 6 ; - WHS_info.WHS_sensors.cartridge_cover = RdCartridgeCoverSensor(); /* INK => CART_1 */ - REPORT_MSG(parameter," ------------------------------------------------------------------------------------------ "); - REPORT_MSG(parameter," ------------!!!!!!! at INIT what to do if IFS_INK is presence !!!!!!! ----------------- "); - REPORT_MSG(parameter," ------------------------------------------------------------------------------------------ "); + ReportWithPackageFilter(WasteFilter,"------------------------------------------------------------------------------------------", __FILE__,__LINE__,0, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------ !!!!!!! at INIT what to do if IFS_INK is presence !!!!!!! -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------------------------------------------------------------------------------------", __FILE__,__LINE__,0, RpMessage, 0, 0); if (RdInkCartridgeSensor()) { - REPORT_MSG(parameter," ------------ INIT : IFS_INK is presence ----------------- "); - IFS_info.IFS_Ink_precense_sensor = CarteidgePrecense; - Pannel_Leds( CART_1, MODE_ON); - cart1.color = colorON; + IFS_info.IFS_Ink_precense_sensor = CarteidgePrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : IFS_INK is presence -----------------", __FILE__,__LINE__, IFS_info.IFS_Ink_precense_sensor, RpMessage, 0, 0); + Pannel_Leds( CART_1, MODE_ON); + cart1.color = colorON; } else { - REPORT_MSG(parameter," ------------ INIT : IFS_INK is NOT presence ----------------- "); - IFS_info.IFS_Ink_precense_sensor = CarteidgeNotPrecense; - Pannel_Leds( CART_1, MODE_OFF); - cart1.color = colorOFF; + IFS_info.IFS_Ink_precense_sensor = CarteidgeNotPrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : IFS_INK is NOT presence -----------------", __FILE__,__LINE__, IFS_info.IFS_Ink_precense_sensor, RpMessage, 0, 0); + Pannel_Leds( CART_1, MODE_OFF); + cart1.color = colorOFF; } /* waste_cartridge1 => CART_2 */ if (RdWasteCartridge1Sensor()) { - REPORT_MSG(parameter," ------------ INIT : WHS_waste1 cart is presence ----------------- "); WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = CarteidgePrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste1 cart is presence -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0); Pannel_Leds( CART_2, MODE_ON); cart2.color = colorON; } else { - REPORT_MSG(parameter," ------------ INIT : WHS_waste1 cart is NOT presence !!! ----------------- "); WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = CarteidgeNotPrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste1 cart is NOT presence !!! -----------------", __FILE__,__LINE__,WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0); Pannel_Leds( CART_2, MODE_OFF); cart2.color = colorOFF; } @@ -1117,21 +1112,19 @@ bool InitCartStatus() /* waste_cartridge2 => CART_3 */ if (RdWasteCartridge2Sensor()) { - REPORT_MSG(parameter," ------------ INIT : WHS_waste2 cart is presence ----------------- "); WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = CarteidgePrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste2 cart is presence -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0); Pannel_Leds( CART_3, MODE_ON); cart3.color = colorON; } else { - REPORT_MSG(parameter," ------------ INIT : WHS_waste2 cart is NOT presence_sensor !!! ----------------- "); WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = CarteidgeNotPrecense; + ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste2 cart is NOT presence_sensor !!! -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0); Pannel_Leds( CART_3, MODE_OFF); cart3.color = colorOFF; } - - if (IFS_info.IFS_Ink_precense_sensor == CarteidgePrecense) CartridgeAuthentication(INK_cartridge); if (WHS_info.WHS_sensors.waste_cartridge1_precense_sensor == CarteidgePrecense) CartridgeAuthentication(waste_cartridge1); if (WHS_info.WHS_sensors.waste_cartridge2_precense_sensor == CarteidgePrecense) CartridgeAuthentication(waste_cartridge2); @@ -1139,7 +1132,7 @@ bool InitCartStatus() if (WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN) { - REPORT_MSG(parameter," ------------ WHS_CartridgeCoverOPEN : add callback for cart1 and cart 2 ----------------- "); + ReportWithPackageFilter(WasteFilter,"------------ WHS_CartridgeCoverOPEN : add callback for cart1 and cart 2 -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0); IFS_info.Cartridge_Ink_device_Id = AddControlCallback("Ink Cartridge CB" , WasteTankCBFunction, eOneSecond, CartridgeInkCallBackFunction , 0,0,0 ); WHS_info.Cartridge_Waste1_device_Id = AddControlCallback("Waste1 Cartridge CB", WasteTankCBFunction, eOneSecond, CartridgeWaste1CallBackFunction, 0,0,0 ); WHS_info.Cartridge_Waste2_device_Id = AddControlCallback("Waste2 Cartridge CB", WasteTankCBFunction, eOneSecond, CartridgeWaste2CallBackFunction, 0,0,0 ); @@ -1153,8 +1146,6 @@ bool RdInkCartridgeSensor() { bool ret = notOK; WHS_Read_GPI_Registers(); - //WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = Is_Cartridge_Present(CART_2); - //ret = WHS_info.WHS_sensors.waste_cartridge1_precense_sensor; ret = Is_Cartridge_Present(CART_1); return ret; } @@ -1163,8 +1154,6 @@ bool RdWasteCartridge1Sensor() { bool ret = notOK; WHS_Read_GPI_Registers(); - //WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = Is_Cartridge_Present(CART_2); - //ret = WHS_info.WHS_sensors.waste_cartridge1_precense_sensor; ret = Is_Cartridge_Present(CART_2); return ret; } @@ -1173,37 +1162,34 @@ bool RdWasteCartridge2Sensor() { bool ret = notOK; WHS_Read_GPI_Registers(); - //WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = Is_Cartridge_Present(CART_3); - //ret = WHS_info.WHS_sensors.waste_cartridge2_precense_sensor; ret = Is_Cartridge_Present(CART_3); return ret; } bool SetActiveWastCartridge() { - uint8_t parameter = 5; - bool ret = notOK; + if (( WHS_info.WHS_sensors.waste_cartridge1_precense_sensor == PRECENSE ) && (WHS_info.cartridge_1.autheticate == PASSED) && (WHS_info.cartridge_1.status == WasteEmpty)) { - REPORT_MSG(parameter," ------------ WHS : active_cartridge = waste_cartridge 1 ----------------- "); WHS_info.active_cartridge = waste_cartridge1; + ReportWithPackageFilter(WasteFilter,"------------ WHS : active_cartridge = waste_cartridge 1 -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0); AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false); } else if (( WHS_info.WHS_sensors.waste_cartridge2_precense_sensor == PRECENSE) && (WHS_info.cartridge_2.autheticate == PASSED) && (WHS_info.cartridge_2.status == WasteEmpty)) { - REPORT_MSG(parameter," ------------ WHS : active_cartridge = waste_cartridge 2 ----------------- "); WHS_info.active_cartridge = waste_cartridge2; + ReportWithPackageFilter(WasteFilter,"------------ WHS : active_cartridge = waste_cartridge 2 -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0); AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false); } else { - REPORT_MSG(parameter," ------------ WHS : NO active_cartridge ----------------- "); WHS_info.active_cartridge = no_waste_cartridge; + ReportWithPackageFilter(WasteFilter,"------------ WHS : NO active_cartridge -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0); AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, true); } return ret; -- cgit v1.3.1 From 917d08c0c4cfd95b6bf545a857361bcf0da5ea8a Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Thu, 6 Feb 2020 13:32:45 +0200 Subject: progress.c - update the stub - Head Card I/O (amount = 0x0EAD) --- .../Embedded/Modules/Stubs_Handler/Progress.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index c31e21e23..4d80215d2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -213,17 +213,24 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) { uint8_t Write_Buf[2] = {0,0}; uint8_t Script_Slave_Add = request -> delay >> 16; - Write_Buf[0] = request -> delay >> 8; + Write_Buf[0] = (request -> delay & 0x00FF00) >> 8; Write_Buf[1] = request -> delay & 0x0000FF; Select_Main_Head_Mux_Channel(); - I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 2); + if(Write_Buf[0] < 2) + { + I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 1); + } + else + { + I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 2); + } delayms(1); - uint8_t Read_Buf[2] = {0,0}; - I2C_Read(I2C_ID_HEAD_CARD, Script_Slave_Add + 1, Read_Buf, 2); - response.progress = Read_Buf[1] << 8 | Read_Buf[0]; + uint8_t Read_Buf[2] = {0};//,0}; + I2C_Read(I2C_ID_HEAD_CARD, Script_Slave_Add + 1, Read_Buf, 1);//2 ? + response.progress = /*Read_Buf[1] << 8 | */Read_Buf[0]; response.has_progress = true; } -- cgit v1.3.1 From 5bf44be1121abf9dd36c948c19ca0650f5571c3e Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 6 Feb 2020 13:51:20 +0200 Subject: fix job bug and I2C_Task for LP machines --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 33 ++++++++++------------ .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 2 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 +-- .../Modules/Diagnostics/DiagnosticsHoming.c | 2 +- .../Embedded/Modules/Thread/Thread_init.c | 4 +-- .../Embedded/StateMachines/Printing/JobSTM.c | 5 ++-- 6 files changed, 23 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 79bbb4df8..bf1151d6e 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -53,6 +53,7 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; MessageContainer responseContainer; + bool last = true; usnprintf(activateString, 1000, "file %d of %d bytes %d of %d",CurrentRunningFile,NumberOfFiles,vme_index,CurrentFileSize); @@ -60,16 +61,9 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (CurrentRunningFiletoken, false, &response, &dispenser_homing_response__pack, &dispenser_homing_response__get_packed_size); responseContainer.has_continuous = true; -responseContainer.continuous = true; + responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index fb3b78752..e53adabb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,14 +73,14 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } else { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 - } + }*/ MotorsCfg[Motor_i].kvalhold = request->kvalhold; MotorsCfg[Motor_i].kvalrun = request->kvalrun; MotorsCfg[Motor_i].kvalacc = request->kvalacc; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index d36de9bd7..a62d1b4b7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -926,6 +926,8 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes //responseContainer = createContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size); responseContainer = createAllocatedContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size,&JobStatusBuffer); } + responseContainer.has_continuous = true; + responseContainer.continuous = true; container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); if (done == true) @@ -942,9 +944,6 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes responseContainer.error = ERROR_CODE__CONTINUOUS_RESPONSE_ABORTED; } } - responseContainer.has_continuous = true; - responseContainer.continuous = true; - if (container_buffer) { size_t container_size = message_container__pack(&responseContainer, container_buffer); -- cgit v1.3.1 From cbd8aeea982ba5541d19d13c441711d872dae316 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 6 Feb 2020 14:33:06 +0200 Subject: VERSION 1.4.6.9 --- Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 15 --------------- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 2 +- Software/Embedded_SW/Embedded/Modules/General/buttons.c | 3 +++ Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c | 1 + 5 files changed, 6 insertions(+), 17 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 25f5927e7..20dc627e8 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,4,6,8}; +TangoVersion_t _gTangoVersion = {1,4,6,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/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index f896897f7..8670a56b4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -41,7 +41,6 @@ typedef enum Actuators_Control, /* enum for WHS :*/ - DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -169,16 +168,6 @@ void Trigger_InputsReading(void) } -void Trigger_Check_WHS_Type_Via_EEPROM() -{ - I2C_ReadingMessageStruc I2C_ReadingMessage; - - I2C_ReadingMessage.messageId = DetectNewWHS; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - return; -} - void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -455,10 +444,6 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; - case DetectNewWHS: - Check_WHS_Type_Via_EEPROM(); - break; - case WHS_init_I2C_IO: WHS_IO_Init(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 6e0774d75..16db6132f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -10,7 +10,7 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ -void Trigger_Check_WHS_Type_Via_EEPROM(void); + void Trigger_WHS_init_IO(void); void Trigger_WHS_init_fan(void); void Trigger_WHS_init_PT100(void); diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index d8c68b345..701bde5e9 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -211,6 +211,7 @@ uint32_t Buttons_Init(void) power.state = sttON; //sttOFF, sttON, sttDISABLE, sttENABLE, sttIDLE, sttJOGGING power.count = 0; + Task_sleep(15); AddControlCallback("ButtonPowerCB", ButtonPowerCBFunction, BUTTONS_SAMPLE_TIME, ButtonPowerCallBackFunction, 0,0,0 ); // eFiftyMillisecond strcpy(jog.bttn_name, "jog"); @@ -221,6 +222,7 @@ uint32_t Buttons_Init(void) jog.state = sttENABLE; // sttDISABLE, sttENABLE, sttJOGGING jog.count = 0; + Task_sleep(15); AddControlCallback("ButtonJogCB", ButtonJogCBFunction, BUTTONS_SAMPLE_TIME, ButtonJogCallBackFunction, 0,0,0 ); // strcpy(load.bttn_name, "load"); @@ -231,6 +233,7 @@ uint32_t Buttons_Init(void) load.state = sttRDY; // load.count = 0; + Task_sleep(15); AddControlCallback("ButtonLoadCB", ButtonLoadCBFunction, BUTTONS_SAMPLE_TIME, ButtonLoadCallBackFunction, 0,0,0 ); // return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c index 094df16cf..c8101c031 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c @@ -508,6 +508,7 @@ bool initWHS_WasteTank() { WHS_info.WHS_sensors.waste_tank_empty_sensor = RdWasteTankEmptySensor(); WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL; + Task_sleep(15); UpdateStateMachine(); AddControlCallback("Waste tank",WasteTankCBFunction, WasteTankCallBackTime , WasteTankCallBackFunction, 0,0,0);//eOneMinute return OK; -- cgit v1.3.1 From 33c0ce2e46a6fca8b48396f8aab1150197af20f3 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 6 Feb 2020 15:22:42 +0200 Subject: read and handle version update (from MCU EEPROM) --- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 24 ++++++++++++++++++++++ .../Embedded/Drivers/flash_ram/MCU_E2Prom.h | 4 ++++ Software/Embedded_SW/Embedded/Main.c | 14 +++++++++++++ .../Embedded/Modules/Control/MillisecTask.c | 2 +- 4 files changed, 43 insertions(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 c3a74efa9..7d9c5e02f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -10,6 +10,7 @@ #include "MCU_E2Prom.h" #include "driverlib/eeprom.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" +#include "Common/SW_Info/SW_Info.h" uint32_t E2Prom_Data[MAX_EEPROM_STORAGE] = {0,0,0,0,0,0}; uint32_t MCU_E2PromProgram(int Address,uint32_t Data) @@ -134,6 +135,29 @@ float MCU_E2PromDryerBacklashRead() return Data; } +uint32_t MCU_E2PromEmbeddedVersionProgram(void) +{ + uint16_t size; + uint32_t Data; + size= sizeof(TangoVersion_t); + if (size>4) + { + Report("MCU_E2PromEmbeddedVersionProgram length error",__FILE__,__LINE__,size,RpWarning,(int)0,0); + return ERROR; + } + memcpy((uint8_t*)&Data,&_gTangoVersion,size); + EEPROMProgram((uint32_t *)&Data, EMBEDDED_VERSION_ADDR*4, 4); + return OK; +} +uint32_t MCU_E2PromEmbeddedVersionRead() +{ + uint32_t Data; + EEPROMRead((uint32_t *)&Data,EMBEDDED_VERSION_ADDR*4, 4); + + Report("MCU_E2PromEmbeddedVersionRead length ",__FILE__,__LINE__,EMBEDDED_VERSION_ADDR*4,RpWarning,(int)(Data),0); + + return Data; +} //Each word may not be subject to more than a specific number of programming cycles before an //erase cycle is required. In other words, for any given word, FlashProgram can only be called diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h index 5cab24587..39c892e0a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -34,6 +34,7 @@ typedef enum { EEPROM_STORAGE_SERIAL_NUM, EEPROM_STORAGE_MAC_ADDR, EEPROM_STORAGE_DRYER_BACKLASH, + EEPROM_STORAGE_EMBEDDED_VERSION, MAX_EEPROM_STORAGE }EEPROM_STORAGE_USAGE_ENUM; #define MAX_SERIAL_NUM_LEN 20 @@ -41,6 +42,7 @@ typedef enum { #define SERIAL_NUM_ADDR EEPROM_STORAGE_SERIAL_NUM*4 #define MAC_ADDR_ADDR (SERIAL_NUM_ADDR + MAX_SERIAL_NUM_LEN) #define DRYER_BACKLASH_ADDR (MAC_ADDR_ADDR + MAX_MAC_ADDR_LEN) +#define EMBEDDED_VERSION_ADDR (DRYER_BACKLASH_ADDR+1) uint32_t MCU_E2PromProgram(int Address,uint32_t Data); uint32_t MCU_E2PromRead(int Address,uint32_t *Data); @@ -52,6 +54,8 @@ uint32_t MCU_E2PromSerialNumProgram(char *Data); uint32_t MCU_E2PromSerialNumRead(char* *Data); uint32_t MCU_E2PromDryerBacklashProgram(char *Data); float MCU_E2PromDryerBacklashRead(void); +uint32_t MCU_E2PromEmbeddedVersionProgram(void); +uint32_t MCU_E2PromEmbeddedVersionRead(); extern char Serial[21]; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 9469f9b97..d0ebb8274 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -47,6 +47,8 @@ #include "Drivers/USBStick_FileSys/USBstick.h" #include "Drivers/USBStick_FileSys/USBMSCHFatFs.h" */ +#include "Common/SW_Info/SW_Info.h" + #include "Modules/Control/control.h" #include "Modules/Control/MillisecTask.h" #include "Modules/Heaters/Heaters_ex.h" @@ -233,7 +235,19 @@ int main(void) //FlashInit(); #ifndef EVALUATION_BOARD + TangoVersion_t Version; + uint32_t Data; + MCU_E2PromInit(); + Data = MCU_E2PromEmbeddedVersionRead(); + memcpy (&Version,&Data,4); + if (memcmp(&Version,&_gTangoVersion,4)) + { + LOG_ERROR(Version.m_minor,"Version change, do stuff"); + FlashInit(); + MCU_E2PromEmbeddedVersionProgram(); + } + #endif #ifdef EVALUATION_BOARD Init_EVB(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a9b539690..6542af287 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -707,7 +707,7 @@ uint32_t MillisecLowLoop(uint32_t tick) char Lenstr[160]; static int Counter = 0; MachineUpdateResponseFunc(); - KeepAliveOneSecondCall(); + //KeepAliveOneSecondCall(); TemperatureListString(Lenstr); ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0); -- cgit v1.3.1 From 33472a7be595adc11f8a7b3c83f00888c9c66d5f Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Thu, 6 Feb 2020 16:58:23 +0200 Subject: update head I/O stub --- .../Embedded/Modules/Stubs_Handler/Progress.c | 150 +++++++++++++++++---- 1 file changed, 127 insertions(+), 23 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 2e5afa59c..dbe46db97 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -39,6 +39,8 @@ #include #include +#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" + extern float NumberOfRotationPerPassage; // how many rotations per spool passage //#include "graphics_adapter.h" @@ -216,32 +218,134 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) } else - if(request->amount == 0x0EAD) //Head Card I/O - { - uint8_t Write_Buf[2] = {0,0}; - uint8_t Script_Slave_Add = request -> delay >> 16; - Write_Buf[0] = (request -> delay & 0x00FF00) >> 8; - Write_Buf[1] = request -> delay & 0x0000FF; - - Select_Main_Head_Mux_Channel(); - if(Write_Buf[0] < 2) + if(request->amount == 0x0EAD) //Head Card I/O { - I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 1); + uint8_t Read_Buf[1] = {0}; + uint8_t Write_Buf[2] = {0,0}; + uint8_t Script_Slave_Add = request -> delay >> 16;//Slave address 0x40 / 0x42 / 0x44 / 0x46 + Write_Buf[0] = (request -> delay & 0x00FF00) >> 8;//read/write low/high + /* + ------------------ + | Byte | WR | RD | + ------------------ + | Low | 02 | 00 | + | High | 03 | 01 | + ------------------ + */ + Write_Buf[1] = request -> delay & 0x0000FF;//data to write + + response.has_progress = false; + + Select_Main_Head_Mux_Channel(); + + if(Write_Buf[0] == 0)//Read + { + Head_Read_IO_Reg(Script_Slave_Add, LOW); + + delayms(1); + if(Script_Slave_Add == 0x40) + { + Read_Buf[0] = Head_I2C_EXP1_0x40.uchar[0]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x42) + { + Read_Buf[0] = Head_I2C_EXP2_0x42.uchar[0]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x44) + { + Read_Buf[0] = Head_I2C_EXP3_0x44.uchar[0]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x46) + { + Read_Buf[0] = Head_I2C_EXP4_0x46.uchar[0]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + } + else + + if(Write_Buf[0] == 1)//Read + { + Head_Read_IO_Reg(Script_Slave_Add, HIGH); + + delayms(1); + if(Script_Slave_Add == 0x40) + { + Read_Buf[0] = Head_I2C_EXP1_0x40.uchar[1]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x42) + { + Read_Buf[0] = Head_I2C_EXP2_0x42.uchar[1]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x44) + { + Read_Buf[0] = Head_I2C_EXP3_0x44.uchar[1]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + else + if(Script_Slave_Add == 0x46) + { + Read_Buf[0] = Head_I2C_EXP4_0x46.uchar[1]; + response.progress = Read_Buf[0]; + response.has_progress = true; + } + } + else + if(Write_Buf[0] == 2)//write + { + if(Script_Slave_Add == 0x40) + { + Head_I2C_EXP1_0x40.uchar[0] = Write_Buf[1]; + } + else + if(Script_Slave_Add == 0x42) + { + Head_I2C_EXP2_0x42.uchar[0] = Write_Buf[1]; + } + else + if(Script_Slave_Add == 0x46) + { + Head_I2C_EXP4_0x46.uchar[0] = (Write_Buf[1] & 0x80); + } + + Head_Write_IO_Reg(Script_Slave_Add, LOW); + } + if(Write_Buf[0] == 3)//write + { + if(Script_Slave_Add == 0x40) + { + Head_I2C_EXP1_0x40.uchar[1] = Write_Buf[1]; + } + else + if(Script_Slave_Add == 0x42) + { + Head_I2C_EXP2_0x42.uchar[1] = Write_Buf[1]; + } + else + if(Script_Slave_Add == 0x46) + { + Head_I2C_EXP3_0x44.uchar[1] = (Write_Buf[1] & 0x0C); + } + Head_Write_IO_Reg(Script_Slave_Add, HIGH); + } } else - { - I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 2); - } - - delayms(1); - - uint8_t Read_Buf[2] = {0};//,0}; - I2C_Read(I2C_ID_HEAD_CARD, Script_Slave_Add + 1, Read_Buf, 1);//2 ? - response.progress = /*Read_Buf[1] << 8 | */Read_Buf[0]; - response.has_progress = true; - - } - else if(request->amount == 0xFEAD) //functions Head Card I/O { Select_Main_Head_Mux_Channel(); -- cgit v1.3.1 From 589bffe306db793987c17cd46f1dcac81f47bdcb Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Fri, 7 Feb 2020 13:03:22 +0200 Subject: remove some warnings --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 1 + .../Embedded/Common/Utilities/idle_task.c | 6 +- .../Embedded_SW/Embedded/Common/report/report.h | 1 + .../Embedded/Common/report/reportInit.c | 13 ++-- .../Head_Card/IO_Ports/Heaters/Head_Heaters.h | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 21 ++---- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- Software/Embedded_SW/Embedded/Main.c | 1 + .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 5 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.h | 2 + .../Embedded/Modules/Control/MillisecTask.c | 8 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 2 + .../Modules/Diagnostics/DiagnosticActions.c | 4 +- .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded_SW/Embedded/Modules/Heaters/Heaters.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 1 + .../Embedded/Modules/Heaters/Heaters_print.c | 88 ++++++++++++++++++++-- .../Modules/Stubs_Handler/StubRealTimeUsage.c | 2 +- .../Embedded/Modules/Thread/ThreadLoad.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 8 +- 21 files changed, 124 insertions(+), 51 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index bf1151d6e..24f02f60c 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -24,6 +24,7 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/FPGA/Full_Vme/FPGA_Programming_Up.h" #include "drivers/FPGA/Full_Vme/ispvme/vmopcode.h" +#include "drivers/Flash_ram/FlashProgram.h" #include "Common/Utilities/Utils.h" #include "Common/SWUpdate/FileSystem.h" diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c index 8d1040ea2..9a1de790e 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c @@ -202,9 +202,9 @@ uint32_t unload_max_count=0; void IdleTaskGetLoadTable (uint32_t *aBuffer) { int i; - for (i=0;i<100;i++) - aBuffer[i] = idle_load_table[i]; - //memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); + //for (i=0;i<100;i++) + // aBuffer[i] = idle_load_table[i]; + memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); } uint32_t MillisecCounter = 0; uint32_t ControlCounter = 0; diff --git a/Software/Embedded_SW/Embedded/Common/report/report.h b/Software/Embedded_SW/Embedded/Common/report/report.h index 35253ce80..2d7e93ca5 100644 --- a/Software/Embedded_SW/Embedded/Common/report/report.h +++ b/Software/Embedded_SW/Embedded/Common/report/report.h @@ -130,6 +130,7 @@ void ReportResetReason(void); uint32_t OpenLogFile(void); uint32_t CloseLogFile(void); bool isReportActive(void); +uint32_t LogToFile(char *message, char *FileName, int LineNumber,int errorCode,int Severity,int parameter); /*************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index c8a11ce10..6ed149039 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -79,9 +79,9 @@ bool isReportActive(void) } uint32_t OpenLogFile(void) { - uint32_t Bytes = 0; - int len; - /*LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); + /*int len; + uint32_t Bytes = 0; + LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); if (LogFresult == FR_OK) { if (LogFileHandle->fsize < 100000) @@ -105,11 +105,12 @@ uint32_t LogToFile(char *message, /* The formatted message int Severity, /* user parameter no. 1 */ int parameter) { - uint32_t Bytes = 0; - int len; /* print user supplied error code */ - /* len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); + /* uint32_t Bytes = 0; + int len; + + len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); LogFresult = f_write(LogFileHandle,message,len,&Bytes );*/ return LogFresult; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h index fc3f88057..32a0dd8e0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h @@ -8,7 +8,7 @@ #ifndef DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ #define DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ -#warning move to heaters enum + typedef enum { HEADCARD_HIT_ZN1, diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 8670a56b4..f659d965a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -74,21 +74,12 @@ void Trigger_Heater_Current_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; uint8_t Heater_i=0; - uint8_t Heater_Lim=0; - if(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) - Heater_Lim = NUM_OF_CURRENT_HEATERS; - if(Head_Type == HEAD_TYPE_SYLKO) - Heater_Lim = HEAD_NUM_OF_ADC; - if(Head_Type == HEAD_TYPE_STAPLE_SPUN) - Heater_Lim = HEAD_NUM_OF_ADC; - - // for (Heater_i = 0;Heater_i < Heater_Lim;Heater_i++)//No need - reads all inputs at the same time - { - I2C_ReadingMessage.messageId = Heater_Current_Reading; - I2C_ReadingMessage.parameter = Heater_i; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - } + + I2C_ReadingMessage.messageId = Heater_Current_Reading; + I2C_ReadingMessage.parameter = Heater_i; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 59405be76..cf54019c5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -417,7 +417,7 @@ uint32_t Valve3WayCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callback_fptr callback) //direction: MidTank_Dispenser or Dispenser_Mixer { - uint32_t busy = false; + //uint32_t busy = false; //Report("Control3WayValvesWithCallback ",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)direction,0); if (Valve3WayControlId[_ValveId] != 0xFF) { @@ -432,7 +432,7 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); //else // Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - busy = FPGA_GetDispenserValveBusyOCD(_ValveId,0); + /*busy = */FPGA_GetDispenserValveBusyOCD(_ValveId,0); //Report("Set valve id, dir, busy",__FILE__,_ValveId,(int)direction,RpWarning,(int)busy,0); EnableDisableDispenserValve(_ValveId, ENABLE); diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index 37c2280c9..bef2b1727 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -132,7 +132,7 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b uint32_t EraseFlashSection(uint32_t ui32FlashStart,uint32_t ui32FileSize) { volatile uint32_t ui32Idx; - uint32_t status; + //uint32_t status; #ifdef FLASH_DEBUG Address[RxIndex] = ui32FlashStart; Size[RxIndex] = ui32FileSize; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index da92b6fdf..393a366ac 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -53,6 +53,7 @@ #include "Modules/Control/MillisecTask.h" #include "Modules/Heaters/Heaters_ex.h" #include "Modules/Ids/Ids_ex.h" +#include "Modules/AlarmHandling/AlarmHandling.h" #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/InitSequence.h" diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 9fe67d773..03135c0d5 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -876,7 +876,6 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) { if (HeaterCheckReady()==false) { -#warning fit to new head with new alarms for (Heater_i=HEATER_TYPE__DryerAirHeater;Heater_i - +#include "Drivers/I2C_Communication/I2C_Task.h" +#include "Drivers/I2C_Communication/I2C.h" #include "modules/ids/ids_ex.h" /******************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 35065cc2a..ec7650f3d 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -40,6 +40,7 @@ #include "drivers/I2C_Communication/DAC/Blower.h" #include "drivers/Valves/Valve.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" +#include "Drivers/I2C_Communication/I2C.h" #include "drivers/Flash_ram/MCU_E2Prom.h" #include "StateMachines/Printing/PrintingSTM.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h index 05425cc45..b1d870919 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h @@ -17,6 +17,7 @@ extern int DCTimeSliceAllocation[HEATER_TYPE_MAX_HEATERS]; extern int NumberOFSlicesInUse; extern uint32_t MillisecondsPerChange; +void initializeArrays(void); typedef struct HeaterPIDControlConfigstruc { diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 237722779..0f6cb5124 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -68,6 +68,7 @@ uint32_t Heaters_Init(void) memset(HeaterControl,0,sizeof(HeaterControl)); for (i = 0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = HEAD_PT100_ZONE_1_0X80_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = HEAD_PT100_ZONE_2_0X80_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = HEAD_PT100_ZONE_3_0X82_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = HEAD_PT100_ZONE_4_0X82_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = HEAD_PT100_ZONE_5_0X84_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD_PT100_ZONE_6_0X84_1; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = HEAD_PT100_MIXER_0X8E_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = HEAD_PT100_ZONE_7_0X86_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = HEAD_PT100_ZONE_8_0X86_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = HEAD_PT100_ZONE_9_0X88_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = HEAD_PT100_ZONE_10_0X88_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = HEAD_PT100_ZONE_11_0X8A_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = HEAD_PT100_ZONE_12_0X8A_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0 ; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEAD_CURRENT_ZONE_5; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEAD_CURRENT_ZONE_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEAD_CURRENT_MIXER; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone7] = HEAD_CURRENT_ZONE_7; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone8] = HEAD_CURRENT_ZONE_8; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone9] = HEAD_CURRENT_ZONE_9; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone10] = HEAD_CURRENT_ZONE_10; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone11] = HEAD_CURRENT_ZONE_11; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone12] = HEAD_CURRENT_ZONE_12; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater1] = HEAD_CURRENT_HTIN_1; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater2] = HEAD_CURRENT_HTOT_1; + + } + else + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = TEMP_SENSE_ANALOG_DYEINGH_TEMP1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = TEMP_SENSE_ANALOG_DYEINGH_TEMP2; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = TEMP_SENSE_ANALOG_DYEINGH_TEMP3; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = TEMP_SENSE_ANALOG_DYEINGH_TEMP4; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = TEMP_SENSE_ANALOG_DYEINGH_TEMP5; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD6_PT100; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = MIXER_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = 0xFF; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEATER_HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEATER_HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEATER_HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEATER_HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEATER_MIXCHIP_CURRENT; + + } +} uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c index 2091b3bc5..765e183cb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c @@ -46,7 +46,7 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer) StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT; - response.n_percentile = 100; + response.n_percentile = 101; response.percentile = my_malloc(sizeof(response.percentile)*response.n_percentile); if (response.percentile) IdleTaskGetLoadTable(response.percentile); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 5dc354785..2a83f8425 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -31,7 +31,7 @@ #include "drivers/SSI_Comm/Dancer/Dancer.h" #include "drivers/motors/motor.h" #include "drivers/Flash_ram/MCU_E2Prom.h" - +#include "Drivers/I2C_Communication/I2C.h" #include "PMR/Stubs/StubHeatingTestRequest.pb-c.h" #include "PMR/Stubs/StubHeatingTestResponse.pb-c.h" #include "PMR/Stubs/StubHeatingTestPollRequest.pb-c.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 59b5642fb..fd53d6da2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -910,7 +910,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) void SetOriginMotorSpeed(float process_speed) { - int i,Motor_i, HW_Motor_Id; + int Motor_i, HW_Motor_Id; for (Motor_i = 0; Motor_i <= WINDER_MOTOR; Motor_i++) { HW_Motor_Id = ThreadMotorIdToMotorId[Motor_i]; @@ -1108,7 +1108,7 @@ char Endstr[150]; { int Motor_i; ThreadControlActive = false; - uint32_t status = OK,tempCtl; + uint32_t status = OK; usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); SendJobProgress(0.0,0,false, Endstr); ReportWithPackageFilter(ThreadFilter,Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); @@ -1122,7 +1122,7 @@ char Endstr[150]; if (SpeedControlId != 0xFF) { if(RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction)!=OK) - ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)SpeedControlId,0); + ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)ThreadLengthCBFunction,RpError,(int)SpeedControlId,0); SpeedControlId = 0xFF; } if (PoolerSpeedControlId != 0xFF) @@ -1134,7 +1134,6 @@ char Endstr[150]; for ( Motor_i = 0;Motor_i <= WINDER_MOTOR;Motor_i++) { - tempCtl = ControlIdtoMotorId[Motor_i]; if (ControlIdtoMotorId[Motor_i] != 0xFF) { status = RemoveControlCallback(ControlIdtoMotorId[Motor_i],ThreadControlCBFunction); @@ -1143,7 +1142,6 @@ char Endstr[150]; else ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)ControlIdtoMotorId[Motor_i],0); } - //ReportWithPackageFilter(ThreadFilter,"Remove Control",__FILE__,Motor_i,(int)status,RpError,(int)tempCtl,0); } Task_sleep(100); -- cgit v1.3.1 From 1ae720e9052b2419200c113ad1fa42550382e6c7 Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Sun, 9 Feb 2020 10:16:29 +0200 Subject: add: stub to read WHS Fan Tachometer --- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 40 +++++++- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 5 +- .../WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.c | 113 ++++++++++++--------- .../WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.h | 6 +- .../WHS_Card/D_EMC2302_Fan/WHS_Fan.c | 79 ++++++++++++-- .../WHS_Card/D_EMC2302_Fan/WHS_Fan.h | 56 +++++----- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 2 + .../Embedded/Modules/Control/MillisecTask.c | 2 +- .../Embedded/Modules/Stubs_Handler/Progress.c | 8 +- .../Stubs Collection/stubs/newWHS/Fan_speed.cs | 8 +- 10 files changed, 219 insertions(+), 100 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index f659d965a..4308a7913 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -41,6 +41,7 @@ typedef enum Actuators_Control, /* enum for WHS :*/ + DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -52,6 +53,7 @@ typedef enum WHS_init_Rheostat, WHS_SET_FAN_SPEED, WHS_READ_FAN_TACHO, + WHS_READ_ALL_FAN_TACHO, WHS_SET_VOLT_BLOWER_CONTROL, WHS_SET_VAlVE_CARTRIDGE, WHS_SET_PUMP, @@ -159,6 +161,16 @@ void Trigger_InputsReading(void) } +void Trigger_Check_WHS_Type_Via_EEPROM() +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = DetectNewWHS; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -256,17 +268,31 @@ void Trigger_SetWHSFanSpeed(uint8_t fan_id, uint8_t speed) return; } -void Trigger_ReadWHSFanTacho (uint8_t fan_id, uint8_t* tacho_value) +void Trigger_ReadWHSFanTacho (uint8_t fan_id) { I2C_ReadingMessageStruc I2C_ReadingMessage; I2C_ReadingMessage.messageId = WHS_READ_FAN_TACHO; I2C_ReadingMessage.parameter = fan_id; - I2C_ReadingMessage.parameter3 = tacho_value; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } + +void Trigger_WHSReadAllFanTacho () +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = WHS_READ_ALL_FAN_TACHO; + + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + + + + void Trigger_SetWHSBlowerVoltage (uint16_t voltage) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -435,6 +461,10 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; + case DetectNewWHS: + Check_WHS_Type_Via_EEPROM(); + break; + case WHS_init_I2C_IO: WHS_IO_Init(); break; @@ -464,7 +494,11 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) break; case WHS_READ_FAN_TACHO: - WHS_Read_fan_tach(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter3);//todo + WHS_Read_fan_tach(I2C_ReadingMessage.parameter);//todo + break; + + case WHS_READ_ALL_FAN_TACHO: + Read_All_WHS_Fans_Tach(); break; case WHS_SET_VOLT_BLOWER_CONTROL: diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 16db6132f..4f5712442 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -10,7 +10,7 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ - +void Trigger_Check_WHS_Type_Via_EEPROM(void); void Trigger_WHS_init_IO(void); void Trigger_WHS_init_fan(void); void Trigger_WHS_init_PT100(void); @@ -22,7 +22,8 @@ void Trigger_WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_dat //void Trigger_WHS_set_fan_speed( fan_num, uint16_t fan_speed); void Trigger_SetWHSFanSpeed (uint8_t fan_id, uint8_t speed); -void Trigger_ReadWHSFanTacho (uint8_t fan_id, uint8_t* tacho_value); //todo +void Trigger_ReadWHSFanTacho (uint8_t fan_id); //todo +void Trigger_WHSReadAllFanTacho (void); void Trigger_WHS_PT100_Read_All(void); void Trigger_ReadWHSPT100(uint8_t PT100_Id); //void Trigger_WHS_Set_Volt_Blower_Control(uint16_t volt); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.c index 01d9592b0..2d410e2c4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.c @@ -32,8 +32,8 @@ /****************************************************************************** * Module Variable Definitions *******************************************************************************/ -uint8_t readbuffer[2]; -uint8_t writebuffer[2]; +//uint8_t readbuffer[2]; +//uint8_t writebuffer[2]; //uint32_t I2C_FAN_SLAVE_ADD = 0x5C; @@ -41,13 +41,13 @@ uint8_t writebuffer[2]; -uint16_t Fan_Tach[2] = {0,0}; +//uint16_t Fan_Tach[2] = {0,0}; uint8_t D_Fan_PWM_Command[2] = {0,0}; -D_EMC2302_READ D_EMC2302_Read; -D_EMC2302_WRITE D_EMC2302_Write; +//D_EMC2302_READ D_EMC2302_Read; +//D_EMC2302_WRITE D_EMC2302_Write; //uint8_t D_EMC2302_Reg_Add[EMC2302_Size] = { //0x20,0x24,0x25,0x26,0x27,0x29,0x2A,0x2B,0x2D, @@ -223,11 +223,13 @@ D_EMC2302_WRITE D_EMC2302_Write; uint8_t D_fan_productID(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr, uint8_t *productID) { uint8_t status = OK; - writebuffer[0] = EMC2301_PRODUCT_ID; - readbuffer[0] = 0; - status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); + uint8_t writebuffer = EMC2301_PRODUCT_ID; + + //writebuffer[0] = EMC2301_PRODUCT_ID; + //readbuffer[0] = 0; + status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); delayUs(10);//TODO - check the delay - status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1,productID , 1);// readbuffer + status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, productID , 1);// readbuffer //Fan_Info.Product_ID = readbuffer[0]; return status; } @@ -235,8 +237,9 @@ uint8_t D_fan_productID(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr uint8_t D_fan_manufactuerID(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr, uint8_t *manufactuerID) { uint8_t status = OK; - writebuffer[0] = EMC2301_MANUFACTUERE_ID; - status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); + uint8_t writebuffer = EMC2301_MANUFACTUERE_ID; + + status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); delayUs(10);//TODO - check the delay status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, manufactuerID, 1); //Fan_Info.Product_ID = readbuffer[0]; @@ -246,8 +249,9 @@ uint8_t D_fan_manufactuerID(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_ uint8_t D_fan_revision(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr, uint8_t *revision) { uint8_t status = OK; - writebuffer[0] = EMC2301_REVISION; - status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); + uint8_t writebuffer = EMC2301_REVISION; + + status |= I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); delayUs(10);//TODO - check the delay status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, revision, 1); //Fan_Info.Product_ID = readbuffer[0]; @@ -257,11 +261,15 @@ uint8_t D_fan_revision(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr, uint8_t D_Fan_PWM_Polarity_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan_ID, bool polarity_config) { uint8_t status = ERROR; - D_EMC2302_Write.Reg.PWM_Polarity_Config |= (polarity_config << Fan_ID); + uint8_t writebuffer[2] = {0,0}; + uint8_t PWM_Polarity_Config = 0; + + PWM_Polarity_Config |= (polarity_config << Fan_ID); - writebuffer[0] = EMC2301_PWM_POLARITY; - writebuffer[1] = D_EMC2302_Write.Reg.PWM_Polarity_Config; - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 2); + writebuffer[0] = EMC2301_PWM_POLARITY; + writebuffer[1] = PWM_Polarity_Config; + + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 2); return status; } @@ -269,11 +277,15 @@ uint8_t D_Fan_PWM_Polarity_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC230 uint8_t D_Fan_PWM_Output_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan_ID, bool output_config) { uint8_t status = ERROR; - D_EMC2302_Write.Reg.PWM_Output_Config |= (output_config << Fan_ID); + uint8_t writebuffer[2] = {0,0}; + uint8_t PWM_Output_Config = 0; + + PWM_Output_Config |= (output_config << Fan_ID); - writebuffer[0] = EMC2301_PWM_OUTPUT_CONFIG; - writebuffer[1] = D_EMC2302_Write.Reg.PWM_Output_Config; // - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 2); + writebuffer[0] = EMC2301_PWM_OUTPUT_CONFIG; + writebuffer[1] = PWM_Output_Config; // + + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 2); return status; } @@ -281,6 +293,7 @@ uint8_t D_Fan_PWM_Output_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_ uint8_t D_Fan_Setting(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t fan_speed) { uint8_t status = ERROR; + uint8_t writebuffer[2] = {0,0}; if(Fan == 0) { @@ -292,49 +305,55 @@ uint8_t D_Fan_Setting(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, writebuffer[0] = EMC2301_FAN_2_SETTING; writebuffer[1] = fan_speed; //D_EMC2302_Write.Reg.Fan_Setting[1]; } - ReportWithPackageFilter(WasteFilter,"------------ set Fan speed-----------------", __FILE__,__LINE__,fan_speed, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------ set Fan speed-----------------", __FILE__,__LINE__, fan_speed, RpMessage, Fan, 0); status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 2); return status; } -uint8_t D_Fan_Read_Tacho(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint16_t *data) + +uint8_t D_Fan_Read_Tacho_HIGH(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t *p_data) { uint8_t status = ERROR; + uint8_t writebuffer = 0; + if(Fan == 0) { - writebuffer[0] = EMC2301_TACH_1_READING_HIGH; - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); + writebuffer = EMC2301_TACH_1_READING_HIGH; + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); delayUs(10);//TODO - check the delay - status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, readbuffer, 1); - D_EMC2302_Read.Reg.TACHReading_High[0] = readbuffer[0]; - - writebuffer[0] = EMC2301_TACH_1_READING_LOW; - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); - delayUs(10);//TODO - check the delay - status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, readbuffer, 1); - D_EMC2302_Read.Reg.TACHReading_Low[0] = readbuffer[0]; - - *data = (D_EMC2302_Read.Reg.TACHReading_High[0] << 8) | D_EMC2302_Read.Reg.TACHReading_Low[0]; - //*data = Fan_Tach[0]; + status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, p_data, 1); } else { - writebuffer[0] = EMC2301_TACH_2_READING_HIGH; - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); + writebuffer = EMC2301_TACH_2_READING_HIGH; + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); delayUs(10);//TODO - check the delay - status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, readbuffer, 1); - D_EMC2302_Read.Reg.TACHReading_High[1] = readbuffer[0]; + status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, p_data, 1); + } - writebuffer[0] = EMC2301_TACH_2_READING_LOW; - status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, writebuffer, 1); - delayUs(10);//TODO - check the delay - status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, readbuffer, 1); - D_EMC2302_Read.Reg.TACHReading_Low[1] = readbuffer[0]; + return status; +} - //Fan_Tach[1] = (D_EMC2302_Read.Reg.TACHReading_High[1] << 8) | D_EMC2302_Read.Reg.TACHReading_Low[1]; - *data = (D_EMC2302_Read.Reg.TACHReading_High[1] << 8) | D_EMC2302_Read.Reg.TACHReading_Low[1]; +uint8_t D_Fan_Read_Tacho_LOW(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t *p_data) +{ + uint8_t status = ERROR; + uint8_t writebuffer = 0; + + if(Fan == 0) + { + writebuffer = EMC2301_TACH_1_READING_LOW; + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); + delayUs(10);//TODO - check the delay + status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, p_data, 1); + } + else + { + writebuffer = EMC2301_TACH_2_READING_LOW; + status = I2C_Write(EMC2302_I2C_bus_number, EMC2302_I2C_addr, &writebuffer, 1); + delayUs(10);//TODO - check the delay + status |= I2C_Read(EMC2302_I2C_bus_number, EMC2302_I2C_addr + 1, p_data, 1); } return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.h index 1882d9806..24fb847d0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/D_EMC2302_fan.h @@ -816,9 +816,9 @@ uint8_t D_fan_revision(uint8_t EMC2302_I2C_bus_number, uint8_t EMC2302_I2C_addr, uint8_t D_Fan_PWM_Polarity_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan_ID, bool polarity_config); uint8_t D_Fan_PWM_Output_Config(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan_ID, bool output_config); uint8_t D_Fan_Setting(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t fan_speed); -uint8_t D_Fan_Read_Tacho(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint16_t *data); - - +//uint8_t D_Fan_Read_Tacho(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint16_t *data); +uint8_t D_Fan_Read_Tacho_HIGH(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t *p_data); +uint8_t D_Fan_Read_Tacho_LOW(uint8_t EMC2302_I2C_bus_number ,uint8_t EMC2302_I2C_addr, bool Fan, uint8_t *p_data); #ifdef __cplusplus } // extern "C" #endif diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c index 1a93153e9..ab7ea8303 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c @@ -14,13 +14,15 @@ FAN_DRIVER_INFO Fan_Driver_Info[maxFAN-1]; +#define NUM_OF_FAN_DRIVER 3 + #define FAN_SPEED_OFF 0x00 #define PUSH_PULL 1 uint8_t Fan_Mux_Channel = UNKNOWN; bool Select_WHS_Fan_Mux_Channel(WHS_fan_num fan_number); - +uint8_t Select_Fan_Driver(WHS_fan_num fan_number); /* @@ -35,8 +37,32 @@ https://github.com/TekkaTim/esp32_learning/blob/master/lib/EMC2302.py //FAN EMC2302-1-AIZL +D_EMC2302_READ D_EMC2302_Read[NUM_OF_FAN_DRIVER]; +D_EMC2302_WRITE D_EMC2302_Write[NUM_OF_FAN_DRIVER]; +uint8_t Select_Fan_Driver(WHS_fan_num fan_number) +{ + uint8_t fan_driver = 0; + switch (fan_number) + { + case FAN1: + case FAN2: + fan_driver = 0; + break; + case FAN3: + case FAN4: + fan_driver = 1; + break; + case FAN5: + case FAN6: + fan_driver = 2; + break; + //default: + + } + return fan_driver; +} bool Select_WHS_Fan_Mux_Channel(WHS_fan_num fan_number) { @@ -80,26 +106,55 @@ bool Select_WHS_Fan_Mux_Channel(WHS_fan_num fan_number) bool WHS_set_fan_speed(WHS_fan_num fan_number, uint8_t fan_speed) { bool status = OK; + uint8_t fan_driver = 0; + fan_driver = Select_Fan_Driver(fan_number); status = Select_Main_WHS_Mux_Channel(); Select_WHS_Fan_Mux_Channel(fan_number); status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), fan_speed); + D_EMC2302_Write[fan_driver].Reg.Fan_Setting[!(fan_number & 0x01)] = fan_speed; return status; } -bool WHS_Read_fan_tach(WHS_fan_num fan_number, uint16_t *fan_tacho) +bool WHS_Read_fan_tach(WHS_fan_num fan_number) { bool status = OK; + uint8_t fan_driver = 0; + fan_driver = Select_Fan_Driver(fan_number); status = Select_Main_WHS_Mux_Channel(); Select_WHS_Fan_Mux_Channel(fan_number); - //status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), fan_speed); - status |= D_Fan_Read_Tacho(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), &fan_tacho); + + status |= D_Fan_Read_Tacho_HIGH(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), &(D_EMC2302_Read[fan_driver].Reg.TACHReading_High[!(fan_number & 0x01)])); + status |= D_Fan_Read_Tacho_LOW (I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), &(D_EMC2302_Read[fan_driver].Reg.TACHReading_Low [!(fan_number & 0x01)])); return status; } +uint16_t WHS_Get_fan_tach(WHS_fan_num fan_number) +{ + uint16_t tach = 0; + uint8_t fan_driver = 0; + + fan_driver = Select_Fan_Driver(fan_number); + tach = D_EMC2302_Read[fan_driver].Reg.TACHReading_High[!(fan_number & 0x01)]; + tach = ((tach << 8) | D_EMC2302_Read[fan_driver].Reg.TACHReading_Low[!(fan_number & 0x01)]); + + return tach; +} + + +void Read_All_WHS_Fans_Tach() +{ + WHS_fan_num fan_number=0; + + for (fan_number = FAN1 ; fan_number < maxFAN; fan_number++) + { + WHS_Read_fan_tach(fan_number); + } +} + #define FAN_BREAK BIT0 #define FAN_ALERT_12 BIT1 #define FAN_ALERT_34 BIT2 @@ -136,6 +191,7 @@ bool WHS_Get_fan_ALERT(WHS_fan_num fan_number, bool *fan_alert) return status; } + bool init_WHS_fan() { bool status = OK; @@ -268,19 +324,20 @@ bool Test_WHS_Fan() if (status == OK) { Trigger_SetWHSFanSpeed(fan_number, 0x20); - delayms(4000); + Task_sleep(4000); Trigger_SetWHSFanSpeed(fan_number, fan_tacho); - delayms(1000); + Task_sleep(1000); Trigger_SetWHSFanSpeed(fan_number, 0x80); - delayms(4000); + Task_sleep(4000); Trigger_SetWHSFanSpeed(fan_number, fan_tacho); - delayms(1000); + Task_sleep(1000); Trigger_SetWHSFanSpeed(fan_number, 0xFF); - delayms(4000); + Task_sleep(4000); + Trigger_SetWHSFanSpeed(fan_number, fan_tacho); + Task_sleep(1000); Trigger_SetWHSFanSpeed(fan_number, FAN_SPEED_OFF); - delayms(4000); + Task_sleep(4000); Trigger_SetWHSFanSpeed(fan_number, fan_tacho); - delayms(1000); } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h index 3e8171df8..c8a81a612 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h @@ -11,37 +11,37 @@ typedef struct { //Configuration and control - uint8_t Configuration ; - uint8_t Fan_Status ; - uint8_t Fan_Stall_Status ; - uint8_t Fan_Spin_Status ; - uint8_t Drive_Fail_Status ; - uint8_t Fan_Interrupt_Enable ; +// uint8_t Configuration ; +// uint8_t Fan_Status ; +// uint8_t Fan_Stall_Status ; +// uint8_t Fan_Spin_Status ; +// uint8_t Drive_Fail_Status ; +// uint8_t Fan_Interrupt_Enable ; uint8_t PWM_Polarity_Config ; uint8_t PWM_Output_Config ; - uint8_t PWM_Base_Freq ; - //Fan 1 & 2 Control Registers +// uint8_t PWM_Base_Freq ; +// //Fan 1 & 2 Control Registers uint8_t Fan_Setting[2] ; - uint8_t PWM_Divide[2] ; - uint8_t FanConfig_1[2] ; - uint8_t FanConfig_2[2] ; - uint8_t Gain[2] ; - uint8_t FanSpin_Up_Config[2] ; - uint8_t FanMax_Step[2] ; - uint8_t FanMinimum_Drive[2] ; - uint8_t FanValid_TACH_Count[2] ; - uint8_t FanDrive_Fail_Low[2] ; - uint8_t FanDrive_Fail_High[2] ; - uint8_t TACHTarget_Low[2] ; - uint8_t TACHTarget_High[2] ; - uint16_t TACHReading_High[2] ; +// uint8_t PWM_Divide[2] ; +// uint8_t FanConfig_1[2] ; +// uint8_t FanConfig_2[2] ; +// uint8_t Gain[2] ; +// uint8_t FanSpin_Up_Config[2] ; +// uint8_t FanMax_Step[2] ; +// uint8_t FanMinimum_Drive[2] ; +// uint8_t FanValid_TACH_Count[2] ; +// uint8_t FanDrive_Fail_Low[2] ; +// uint8_t FanDrive_Fail_High[2] ; +// uint8_t TACHTarget_Low[2] ; +// uint8_t TACHTarget_High[2] ; + uint8_t TACHReading_High[2] ; uint8_t TACHReading_Low[2] ; //Lock Register - uint8_t Software_Lock ; +// uint8_t Software_Lock ; //Revision Registers - uint8_t Product_ID ; - uint8_t Manufacturer_ID ; - uint8_t Revision ; +// uint8_t Product_ID ; +// uint8_t Manufacturer_ID ; +// uint8_t Revision ; }D_EMC2302_Register; #define D_EMC2302_Size sizeof(D_EMC2302_Register)//43 @@ -103,12 +103,14 @@ bool Read_WHS_fan_info(WHS_fan_num fan_number); bool Test_WHS_Fan(void); bool init_WHS_fan(void); bool WHS_set_fan_speed(WHS_fan_num fan_number, uint8_t fan_speed); -bool WHS_Read_fan_tach(WHS_fan_num fan_number, uint16_t *fan_tacho); +bool WHS_Read_fan_tach(WHS_fan_num fan_number); +uint16_t WHS_Get_fan_tach(WHS_fan_num fan_number); +void Read_All_WHS_Fans_Tach(void); bool WHS_Read_fan_ALERT(WHS_fan_num fan_number, uint16_t *fan_alert); void Set_All_WHS_Fans(uint8_t speed); //extern FAN_INFO Fan_Info; -extern D_EMC2302_READ D_EMC2302_Read; +//extern D_EMC2302_READ D_EMC2302_Read; //uint8_t D_Fan_PWM_Control(WHS_fan_num Fan_ID, uint8_t PWM); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index f5c0b0ea9..58f2878ef 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -65,6 +65,7 @@ bool Test_WHS_max11614() { #define cur_buffr 10 bool status= OK; +/* uint8_t i = 0; uint16_t orf_1_10[cur_buffr] = {0} ; uint16_t orf_2_10[cur_buffr] = {0} ; @@ -172,6 +173,7 @@ bool Test_WHS_max11614() calc_orf_3_20[i] = get_Q(orf_3_20[i] - orf_3_0[i]); calc_vlev1_20[i] = get_Q(vlev1_20[i] - vlev1_0[i]); } +*/ return status; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a6c1d42f7..195cc65f3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -719,7 +719,7 @@ uint32_t MillisecLowLoop(uint32_t tick) } Trigger_WHS_PT100_Read_All(); Trigger_WHS_MAX11614_Read_allADC(); - + Trigger_WHSReadAllFanTacho (); } if (OneMinute_Tick) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index dbe46db97..e37fe161f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -377,7 +377,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) //Test_Head_fan_Click(); Head_Fan_PWM_Control(0, request->delay & 0xFF); - + Task_sleep(1000); //response.progress = Fan_Click_Info.Product_ID; response.progress = Head_Fan_Tach[0]; @@ -388,7 +388,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if((request->amount == 0xFAC1) /*&& (request->delay == 0xFAC)*/) //Head Fan control { Head_Fan_PWM_Control(1, request->delay & 0xFF); - + Task_sleep(1000); response.progress = Head_Fan_Tach[1]; response.has_progress = true; } @@ -396,10 +396,12 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if ((request->amount & 0x0000FFF0) == 0xFAC0) //WHS Fan control { uint16_t fan_tacho = 0; + if (WHS_Type == WHS_TYPE_NEW) { Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-1) , request->delay & 0x000000FF); - //getWHSFanTacho(((request->amount & 0x0000000F)-1), &fan_tacho); + Task_sleep(1000); + fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-1); } response.progress = fan_tacho; response.has_progress = true; diff --git a/Software/Stubs Collection/stubs/newWHS/Fan_speed.cs b/Software/Stubs Collection/stubs/newWHS/Fan_speed.cs index 666e10c4d..045db16fe 100644 --- a/Software/Stubs Collection/stubs/newWHS/Fan_speed.cs +++ b/Software/Stubs Collection/stubs/newWHS/Fan_speed.cs @@ -21,7 +21,7 @@ public void OnExecute(StubManager stubManager) //fan test -var response1 = stubManager.Run("ProgressRequest" ,/*fan1*/0xFAC2, /*speed=*/0x80); // +var response1 = stubManager.Run("ProgressRequest" ,/*fan1*/0xFAC2, /*speed=*/0xFF); // //Thread.Sleep(5000); //Sleep for 10 milli. var response2 = stubManager.Run("ProgressRequest" ,/*fan2*/0xFAC3, /*speed=*/0x80); // //Thread.Sleep(5000); //Sleep for 10 milli. @@ -29,6 +29,8 @@ var response3 = stubManager.Run("ProgressRequest" ,/*fan3*/0xF //Thread.Sleep(5000); //Sleep for 10 milli. var response4 = stubManager.Run("ProgressRequest" ,/*fan4*/0xFAC5, /*speed=*/0x80); // //Thread.Sleep(5000); //Sleep for 10 milli. - - +stubManager.WriteLineHex(response1.Progress,4); +stubManager.WriteLineHex(response2.Progress,4); +stubManager.WriteLineHex(response3.Progress,4); +stubManager.WriteLineHex(response4.Progress,4); } \ No newline at end of file -- cgit v1.3.1 From 55875f74897882f3981c9a9657b47c16bb68821c Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Sun, 9 Feb 2020 12:11:13 +0200 Subject: update the delay to: Task_sleep(2000) --- Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index e37fe161f..4d4d487d2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -377,7 +377,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) //Test_Head_fan_Click(); Head_Fan_PWM_Control(0, request->delay & 0xFF); - Task_sleep(1000); + Task_sleep(2000); //response.progress = Fan_Click_Info.Product_ID; response.progress = Head_Fan_Tach[0]; @@ -388,7 +388,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if((request->amount == 0xFAC1) /*&& (request->delay == 0xFAC)*/) //Head Fan control { Head_Fan_PWM_Control(1, request->delay & 0xFF); - Task_sleep(1000); + Task_sleep(2000); response.progress = Head_Fan_Tach[1]; response.has_progress = true; } @@ -400,7 +400,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if (WHS_Type == WHS_TYPE_NEW) { Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-1) , request->delay & 0x000000FF); - Task_sleep(1000); + Task_sleep(2000); fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-1); } response.progress = fan_tacho; -- cgit v1.3.1 From 0d1c8e051bcbd1b05646301ffef59b48d9490e23 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 9 Feb 2020 18:43:35 +0200 Subject: improve powerstep and reglar, new process params, start of power management --- Software/Embedded_SW/Embedded/DataDef.h | 4 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 80 +++++++++++++++++----- .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 7 ++ .../Embedded/Modules/Diagnostics/Diagnostics.c | 17 +++++ .../Embedded_SW/Embedded/Modules/General/process.c | 49 +++++-------- .../Embedded/Modules/Heaters/Heaters_ex.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 7 +- .../Embedded/Modules/Heaters/Heaters_print.c | 27 ++++++-- .../Embedded/Modules/Stubs_Handler/Progress.c | 28 +++++--- .../Embedded/Modules/Thread/Thread_init.c | 3 +- 10 files changed, 157 insertions(+), 66 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 a1d9fe52d..32e149968 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -19,11 +19,11 @@ #define NO_INITIAL_HEATING #define MAX_STRING_LEN 255 //Embedded version + filter.c -#define WATCHDOG +//#define WATCHDOG //#define FPGA_WATCHDOG_DISABLE -//#define USE_POWERSTEP01 +#define USE_POWERSTEP01 //#define SPECIAL_DISPENSERS #define Use_Head_Card //for real card only diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 259b0a1fc..01a14825b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -146,26 +146,71 @@ uint8_t FPGA_SPI_Receive(TimerMotors_t _motorId) //---------------- GET ------------------------------ -void Read_Motors_Driver_ADC(TimerMotors_t i) +void Read_Motors_Driver_ADC(void) { - SysCtlDelay(12000); - Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; - FPGA_SPI_Transnit(i); - SysCtlDelay(12000); - FPGA_Get_Res(i); - MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + static bool first_time_flag = true; + + int i; + + if(first_time_flag == true) + { + + for(i=0; i < 25; i++) + { + + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + + delayms(45); + + for(i=0; i < 25; i++) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + if(MotorDriverResponse[i].ADC == 0) + { + Change_Motor_SPI_Direction(i,Current_Or_Voltage); + } + + } + + delayms(45); + + for(i=0; i < 25; i++) + { + + if(MotorDriverResponse[i].ADC == 0) + { + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + } + + delayms(45); + + for(i=0; i < 25; i++) + { + if(MotorDriverResponse[i].ADC == 0) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + } + } + + first_time_flag = false; + } } uint32_t Read_Motors_Driver_Type(TimerMotors_t i) { uint32_t status = OK; -#ifdef USE_POWERSTEP01 +//#ifdef USE_POWERSTEP01 //First communicate with powerSTEP01 - Read_Motors_Driver_ADC(i); - //if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) + if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) { MotorDriverResponse[i].DriverType = CombinrdMotDriver; //default for dispensers, dryer-LID and DH-LID Voltage mode, for other motors Current mode @@ -174,16 +219,16 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) else MotorDriverResponse[i].DriverMode = Current; } - //else -#else + else +//#else { //Change the SPI direction and check if this driver is Current or Voltage - if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) +/* if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) { Change_Motor_SPI_Direction(i,Current_Or_Voltage); } delayms(5); - Read_Motors_Driver_ADC(i); + Read_Motors_Driver_ADC(i);*/ if((MotorDriverResponse[i].ADC >= 9) && (MotorDriverResponse[i].ADC < 13)) { @@ -204,7 +249,7 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) status = ERROR; } } -#endif +//#endif return status; } @@ -426,16 +471,17 @@ void FPGA_SetMotorsInit() { uint8_t i=0; + Read_Motors_Driver_ADC(); for(i=0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } +*/ + } @@ -526,6 +536,13 @@ void DiagnosticOneSecCollection(void) int i; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } + if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) { DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 5bfc46559..ad53149f0 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -63,6 +63,10 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams) HeatersControlStop(); REPORT_MSG(temp_sum,"Heating control off - temperatures off"); } + else + { + HeatersControlStart(); + } } uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { @@ -107,7 +111,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone1temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->headzone1temp); #endif @@ -115,7 +119,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->headzone1temp); #endif @@ -123,7 +127,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone2temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->headzone2temp); #endif @@ -131,7 +135,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->headzone2temp); #endif @@ -139,56 +143,56 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone3temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone3temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp); #endif } if (ProcessParams->headzone4temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone4temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone4temp); #endif } if (ProcessParams->headzone5temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone5temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone5temp); #endif } if (ProcessParams->headzone6temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone6temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp); #endif } @@ -196,24 +200,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true,ProcessParams->dryerzone1temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, false,ProcessParams->dryerzone1temp); -/* if (ProcessParams->dryerzone2temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, true, - ProcessParams->dryerzone2temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, false, - ProcessParams->dryerzone2temp); - if (ProcessParams->dryerzone3temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, true, - ProcessParams->dryerzone3temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, false, - ProcessParams->dryerzone3temp); - */ - /* if (ProcessParams->headzone7temp>1) + if (ProcessParams->headzone7temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp); } @@ -277,7 +264,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp); } -*/ + HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index bcc19bd6f..0c6ee94ee 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -12,6 +12,7 @@ extern EventType HeaterEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType_B[HEATER_TYPE_MAX_HEATERS]; +extern uint32_t stub_heating_limit; //uint32_t HeaterCommandRequestMessage(MessageContainer* requestContainer); uint32_t HeaterConfigRequestMessage(HardwarePidControl* request); uint32_t HeaterConfigSetSharedHeatersParams (uint32_t outputproportionalcycletime, uint32_t outputproportionalsinglestep); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 0f6cb5124..349d5a5e3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -186,11 +186,12 @@ uint32_t HeaterConfigSetSharedHeatersParams(uint32_t outputproportionalcycletime * * parameters - the cycle time for the coordinated operation, the size (in MCU cycles) of a single step. */ +uint32_t stub_heating_limit = 100; uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit) { int Slice_i; int Heater1000Slices,Heater200aSlices /*,Heater200bSlices Currently both 200W heaters will work together*/; - + uint32_t stub_outputproportionalpowerlimit = new_outputproportionalpowerlimit; if (NumberOFSlicesInUse > MAX_TIMESLICES ) { @@ -198,8 +199,10 @@ uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_ou return ERROR;//NumberOFSlicesInUse = MAX_TIMESLICES; } + if (stub_outputproportionalpowerlimit > stub_heating_limit) + stub_outputproportionalpowerlimit = stub_heating_limit; // all numbers are rounded down. better to have carefully calculated numbers - HeaterControl[deviceId].outputproportionalpowerlimit = new_outputproportionalpowerlimit;///100; + HeaterControl[deviceId].outputproportionalpowerlimit = stub_outputproportionalpowerlimit;///100; Heater1000Slices = HeaterControl[HEATER_TYPE__DryerMainHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; Heater200aSlices = HeaterControl[HEATER_TYPE__DryerSecondaryHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 2ee7a3d2a..d84098469 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -469,8 +469,8 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId) } DeActivateHeater(HEATER_TYPE__DryerMainHeater); DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); HeaterPIDConfig[HeaterId].m_SetParam = 0; HeaterCmd[HeaterId].targettemperatue = 0; HeaterReady[HeaterId] = true; @@ -1167,8 +1167,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) Control_Voltage_To_Blower(BlowerCfg.voltage); } HeaterReady[index] = true; - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); } return OK; @@ -1473,6 +1473,23 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y) } return OK; } +bool UseSecondaryDrierHeater = true; +uint32_t DrierHeaterVlotageSetup(double voltage) +{ + uint32_t status = OK; + double DrierAcVoltage = 0.0; + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + DrierAcVoltage = ReadVAC(); + //if () + + } + else + { + UseSecondaryDrierHeater = true; + } + +} uint32_t HeatersControlLoop(uint32_t tick) { //char str[100]; @@ -1500,7 +1517,7 @@ uint32_t HeatersControlLoop(uint32_t tick) if (AcHeaterDisaster == false) { - if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) + //if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) { if (TimeSliceAllocation[SliceCounter] == HEATER_TYPE__DryerMainHeater) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index dbe46db97..03beac151 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -27,6 +27,7 @@ #include "Modules/IDS/ids_ex.h" #include "Modules/Control/MillisecTask.h" #include "modules/thread/thread_ex.h" +#include "modules/heaters/heaters_ex.h" #include #include #include @@ -531,21 +532,32 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if(request->amount == 0xB3) //fast refresh for pressure { LOG_ERROR(request->amount,"keep alive test"); - //keepalivetest = true; response.progress = keepalivetest; response.has_progress = true; } else - if(request->amount == 0xB4) //fast refresh for pressure - { - LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); - IDS_Dispenser_Content_Init(); - //keepalivetest = true; - response.progress = keepalivetest; - response.has_progress = true; + if(request->amount == 0xB4) //fast refresh for pressure + { + LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); + IDS_Dispenser_Content_Init(); + response.progress = keepalivetest; + response.has_progress = true; + } + else + if(request->amount == 0xB5) //fast refresh for pressure + { + if (request->delay<=100) + { + LOG_ERROR(request->delay,"set stub_heating_limit"); + stub_heating_limit = request->delay; } + response.progress = request->delay; + response.has_progress = true; + + } + else if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index e53adabb7..ec705c2d2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,7 +73,8 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 +/* if(MotorDriverResponse[Motor_i].DriverType != CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } -- cgit v1.3.1 From 25fa087b38d74942ee94a88391059a820b5d22b4 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 9 Feb 2020 19:04:12 +0200 Subject: some fixes --- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 15 --------------- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 2 +- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 6 +++--- 3 files changed, 4 insertions(+), 19 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 4308a7913..cc876a45a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -41,7 +41,6 @@ typedef enum Actuators_Control, /* enum for WHS :*/ - DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -161,16 +160,6 @@ void Trigger_InputsReading(void) } -void Trigger_Check_WHS_Type_Via_EEPROM() -{ - I2C_ReadingMessageStruc I2C_ReadingMessage; - - I2C_ReadingMessage.messageId = DetectNewWHS; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - return; -} - void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -461,10 +450,6 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; - case DetectNewWHS: - Check_WHS_Type_Via_EEPROM(); - break; - case WHS_init_I2C_IO: WHS_IO_Init(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 4f5712442..bc58e2450 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -10,7 +10,7 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ -void Trigger_Check_WHS_Type_Via_EEPROM(void); + void Trigger_WHS_init_IO(void); void Trigger_WHS_init_fan(void); void Trigger_WHS_init_PT100(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 6aca0f0cf..c22ed4cde 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -378,7 +378,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) //Test_Head_fan_Click(); Head_Fan_PWM_Control(0, request->delay & 0xFF); - Task_sleep(2000); + Task_sleep(1000); //response.progress = Fan_Click_Info.Product_ID; response.progress = Head_Fan_Tach[0]; @@ -389,7 +389,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if((request->amount == 0xFAC1) /*&& (request->delay == 0xFAC)*/) //Head Fan control { Head_Fan_PWM_Control(1, request->delay & 0xFF); - Task_sleep(2000); + Task_sleep(1000); response.progress = Head_Fan_Tach[1]; response.has_progress = true; } @@ -401,7 +401,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if (WHS_Type == WHS_TYPE_NEW) { Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-1) , request->delay & 0x000000FF); - Task_sleep(2000); + Task_sleep(1000); fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-1); } response.progress = fan_tacho; -- cgit v1.3.1