diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-11 15:06:31 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-11 15:06:31 +0300 |
| commit | e5bd4aae30455510bdcdb492a34794c0747d7900 (patch) | |
| tree | 7ba16d722cadb24428864545ca3f25552c2a0642 /Software/Embedded_SW/Embedded | |
| parent | 4511fe25ffa1e4811ae822318c9a17109d5467e9 (diff) | |
| download | Tango-e5bd4aae30455510bdcdb492a34794c0747d7900.tar.gz Tango-e5bd4aae30455510bdcdb492a34794c0747d7900.zip | |
Version 1.4.6.31: init failures - stop init until new version loaded / FSE arrives. read / write main CPU data (embedded parameters); VOC read to diagnostics;
Diffstat (limited to 'Software/Embedded_SW/Embedded')
15 files changed, 111 insertions, 35 deletions
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 0af8fb729..d1602c3cf 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,30}; +TangoVersion_t _gTangoVersion = {1,4,6,31}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index 79bf3d9bd..5c8646bf1 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -43,6 +43,8 @@ #include "PMR/debugging/SetupDebugDisributorsRequest.pb-c.h" #include "PMR/debugging/SetupDebugDisributorsResponse.pb-c.h" +#include "Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.h" + #include "modules/General/process.h" #include "AlarmHandling/AlarmHandling.h" @@ -254,7 +256,7 @@ void SetupDebugDisributorsRequestFunc(MessageContainer* requestContainer) setup_debug_disributors_request__free_unpacked(request,NULL); } - +char SerMessage[50]; uint32_t ReportResetReason(void) { /* @@ -332,6 +334,9 @@ uint32_t ReportInitMessage(MessageContainer* requestContainer) Task_sleep (100); ReportEmbeddedVersion(); + usnprintf(SerMessage, 50, "MCU serial %s",Main_EEPROM_Data.bytes.Main_card_SN); + Report(SerMessage, __FILE__, __LINE__, _gTangoVersion.m_patch, RpWarning, _gTangoVersion.m_build, 0); + /*SysCtlResetCauseClear(RESC);*/ #ifdef TEST_PID_THREAD Task_sleep(1000); diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index b5264cda0..ba64ddef9 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -463,10 +463,12 @@ void receive_callback(char* buffer, size_t length) case MESSAGE_TYPE__MidTankDataSetupRequest: MidTankDataSetupFunc(requestContainer); break; - case MESSAGE_TYPE__MachineCalibrationDataRequest: MachineCalibrationDataRequestFunc(requestContainer); break; + case MESSAGE_TYPE__MainCardStoredDataRequest: + MainCardStoredItemRequestFunc(requestContainer); + break; case MESSAGE_TYPE__StartMachineStatusUpdateRequest: MachineUpdateInitFunc(requestContainer); break; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h index 429fec3ed..dc3f94b0a 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h @@ -259,8 +259,8 @@ typedef enum _MessageType { MESSAGE_TYPE__MidTankDataSetupResponse = 8003, MESSAGE_TYPE__MachineCalibrationDataRequest = 8004, MESSAGE_TYPE__MachineCalibrationDataResponse = 8005, - MESSAGE_TYPE__MainCardStoredItemRequest = 8006, - MESSAGE_TYPE__MainCardStoredItemResponse = 8007, + MESSAGE_TYPE__MainCardStoredDataRequest = 8006, + MESSAGE_TYPE__MainCardStoredDataResponse = 8007, MESSAGE_TYPE__StartMachineStatusUpdateRequest = 9000, MESSAGE_TYPE__StartMachineStatusUpdateResponse = 9001, MESSAGE_TYPE__StopMachineStatusUpdateRequest = 9002, diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h index d16c252dd..b46ce7d41 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h @@ -15,6 +15,7 @@ bool Gas_Voc(void); bool WHS_WriteRdac(uint16_t value); uint32_t Read_Gas_Sensor(); //cyclic; +uint32_t Get_latest_Gas_Sensor_value(); void Voc_Sensor_Zero_Calibration(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index 06c24d351..5675bf95c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -212,7 +212,7 @@ bool WHS_init_Blower() WHS_ControlData.m_params.MAX = 200; WHS_ControlData.m_params.MIN = -200; WHS_ControlData.m_params.Kd = 0; - WHS_ControlData.m_params.Kp = 300; + WHS_ControlData.m_params.Kp = 350; WHS_ControlData.m_params.Ki = 600; WHS_ControlData.m_params.IntegralErrorMultiplier = 100; WHS_ControlData.m_params.ProportionalErrorMultiplier = 100; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 355af95b4..3c099dd94 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -19,9 +19,9 @@ #define TimerMotors_t HardwareMotorType static char* MotorStr[30] = { - "Dh Clean Head", - "Dh Clean Mech", - "Dh Lid ", + "Dyeing Head Clean Head", + "Dyeing Head Clean Mech", + "Dyeing Head Lid ", "Dryer Driving", "Dryer Lid ", "Dryer Loadarm", @@ -38,12 +38,12 @@ "Left Dancer ", "Middle Dancer", "Left Driving ", - "Left Loading ", + "Left Rockers ", "Left pivot ", "Right Dancer ", "Right Driving", "Right Loadarm", - "Right Loading", + "Right Rockers", "Spare1 1", "Spare1 2", "Spare2 1", 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 2b08160a9..e2d0443b4 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 "Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.h" #include "Common/SW_Info/SW_Info.h" #include <PMR/Stubs/StubMainCardEEpromReadRequest.pb-c.h> @@ -17,6 +18,11 @@ #include <PMR/Stubs/StubMainCardEEpromWriteRequest.pb-c.h> #include <PMR/Stubs/StubMainCardEEpromWriteResponse.pb-c.h> +#include "PMR/EmbeddedParameters/MainCardStoredData.pb-c.h" +#include "PMR/EmbeddedParameters/MainCardStoredDataResponse.pb-c.h" +#include "PMR/EmbeddedParameters/MainCardStoredDataRequest.pb-c.h" +#include "PMR/EmbeddedParameters/MainCardStoredItem.pb-c.h" + uint32_t E2Prom_Data[MAX_EEPROM_STORAGE] = {0,0,0,0,0,0}; uint32_t MCU_E2PromProgram(int Address,uint32_t Data) @@ -171,6 +177,69 @@ void MCU_E2PromInit(void) EEPROMInit(); #endif } +void MainCardStoredItemRequestFunc(MessageContainer* requestContainer) +{ + uint32_t status = PASSED,i; + MessageContainer responseContainer; + + MainCardStoredItem StoredData[MAX_EEPROM_STORAGE]; + MainCardStoredDataRequest* request = main_card_stored_data_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + + MainCardStoredData MainCardStoredDataInstance = MAIN_CARD_STORED_DATA__INIT; + + Report("MainCardStoredItemRequestFunc",__FILE__,__LINE__,1,RpWarning,(int)request->burnrequest,0); + MainCardStoredDataResponse response = MAIN_CARD_STORED_DATA_RESPONSE__INIT; + + if (request->burnrequest == true) + { + if (strcmp(request->maincardstoreddata->maincards_n,Serial)==0) + { + for (i = 0;i<request->maincardstoreddata->n_storeditem;i++) + { + if ((request->maincardstoreddata->storeditem[i]->has_data)&&(request->maincardstoreddata->storeditem[i]->address == i)) + { + MCU_E2PromProgram(i,&request->maincardstoreddata->storeditem[i]->data); + } + } + } + else + { + status = ERROR_CODE__INVALID_PARAMETER; + } + } + else + { + response.maincardstoreddata = &MainCardStoredDataInstance; + MainCardStoredDataInstance.maincards_n = &Serial; + MainCardStoredDataInstance.n_storeditem = MAX_EEPROM_STORAGE; + for (i = 0;i<MAX_EEPROM_STORAGE;i++) + { + StoredData[i].has_address = true; + StoredData[i].has_data = true; + StoredData[i].address = i; + MCU_E2PromRead(i,&StoredData[i].data); + MainCardStoredDataInstance.storeditem[i] = &StoredData[i]; + } + } + + responseContainer = createContainer(MESSAGE_TYPE__MainCardStoredDataResponse, requestContainer->token, true, &response, &main_card_stored_data_response__pack, &main_card_stored_data_response__get_packed_size); + + if (status) + { + responseContainer.has_error = true; + responseContainer.error = status; + } + + + //------------------------------------------------------------------------------------------- + uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, container_buffer); + free(responseContainer.data.data); + SendChars((char*)container_buffer, container_size); + + main_card_stored_data_request__free_unpacked(request,NULL); + +} void MainCardEEpromReadRequestFunc(MessageContainer* requestContainer) { @@ -231,6 +300,11 @@ void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer) { status = ERROR_CODE__INVALID_PARAMETER; } + response.has_address = true; + response.address = request->address; + response.has_data = true; + MCU_E2PromRead(request->address,&response.data); + responseContainer = createContainer(MESSAGE_TYPE__StubMainCardEEpromWriteResponse, requestContainer->token, true, &response, &stub_main_card_eeprom_write_response__pack, &stub_main_card_eeprom_write_response__get_packed_size); if (status) 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 381db2141..bbbc49c7d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -63,6 +63,8 @@ float MCU_E2PromReadMidtank_A(int MidtankId); float MCU_E2PromReadMidtank_B(int MidtankId); void MCU_E2PromInit(void); +void MainCardStoredItemRequestFunc(MessageContainer* requestContainer); + void MainCardEEpromWriteRequestFunc(MessageContainer* requestContainer); void MainCardEEpromReadRequestFunc(MessageContainer* requestContainer); //uint32_t MCU_E2PromSerialNumProgram(char *Data); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index ed4948a28..09e8b2731 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -135,9 +135,7 @@ Void errHook(Error_Block *eb) COMM_GREEN_LED_OFF; STATUS_RED_LED_ON; - //MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); - InitFailures++; - MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures); + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures+1); ACTIVITY_RED_LED_ON; COMM_RED_LED_ON; @@ -255,6 +253,7 @@ int main(void) MCU_E2PromEmbeddedVersionProgram(); MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } + MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); #endif #ifdef EVALUATION_BOARD @@ -366,7 +365,6 @@ int main(void) PowerIdleInit(); BIOS_start(); - return (0); //while(1){}; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a6380c188..c61f9e719 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -789,6 +789,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Gas_PPM_Info = Calculate_Gas_Power_Consumption();*/ // ReportWithPackageFilter(ThreadFilter,"waste tank calculate level",__FILE__,__LINE__,(int)(GetWHSWasteTankLevelMiliLiter()*1000),RpWarning,(int) msec_millisecondCounter,0); //Trigger_WHS_MAX11614_Read_allADC(); + Trigger_WHS_MAX11614_Read_Gas_Sensor(); #ifdef CONTROL_DEBUG ResetControlTime(); #endif @@ -807,6 +808,7 @@ uint32_t MillisecLowLoop(uint32_t tick) { waste_seq_step1();// include 1Sec delay <- to open !!!! } + //Trigger_WHS_MAX11614_Read_Gas_Sensor(); } //ROM_IntMasterEnable(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 2ff1588f2..79dd2899f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -53,6 +53,7 @@ #include "diagnostics.h" #include <Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h> +#include <Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h> extern F2_CTRL_REG F2_CTRL_Reg; @@ -676,7 +677,7 @@ void DiagnosticOneMinuteCollection(void) } } - VOC_Sensor = (double) getGasReading(); + VOC_Sensor = (double) Get_latest_Gas_Sensor_value(); DiagnosticsMonitor.n_filterdeltapressure = 1; DiagnosticsMonitor.filterdeltapressure = &VOC_Sensor; DiagnosticsMonitor.n_gassensor = 1; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index ae946ce1d..915869c34 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -397,12 +397,12 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) LOG_ERROR (0, "Wrong Data Allocation"); return ERROR; } - /*if (InitFailures > 3) + if (InitFailures > 3) { Report("HWConfigurationInit repeated failure",__FILE__,__LINE__,(int)InitFailures,RpWarning,(int)EEPROM_INIT_FAILURE_COUNTER,0); - AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_HW_CONFIG_FAILED,ON); + AlarmHandlingSetAlarm (EVENT_TYPE__POWER_UP_BIT_FAILURE,ON); return ERROR; - }*/ + } HardwareConfiguration *request = UploadRequest->hardwareconfiguration; @@ -628,14 +628,6 @@ uint32_t MidTankDataSetupFunc(MessageContainer* requestContainer) b = Slope_B[i]; Report("MidTankData Read", __FILE__,__LINE__,(int)(a*1000), RpMessage, (int)(b*1000), 0); } - //debug only - /* - Task_sleep(1000); - //MCU_E2PromSerialNumProgram ("Take me to the sky"); - memset (Serial,0,20); - MCU_E2PromSerialNumRead(&Serial); - Report(Serial, __FILE__,__LINE__,22, RpMessage, 21, 0); - */ MidTankDataSetupResponse response = MID_TANK_DATA_SETUP_RESPONSE__INIT; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index c1d547f59..aec2988a2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -53,7 +53,7 @@ //#include <stdbool.h> static char* LoadStagesStr[15] = { /*00*/ "Initialization", - /*01*/ "heating stop", + /*01*/ "Heating stop", /*02*/ "Rockers opening", /*03*/ "Drier unloading", /*04*/ "Lids opening", diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index e9820d150..ced5e2677 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -105,23 +105,22 @@ uint32_t InitSequenceCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) HWControlId = 0xFF; else Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceCallBackFunction,0); - MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); - InitFailures++; - MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures); - if (InitFailures > 100) + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures+1); + + if (InitFailures > 6) { InitFailures = 0; MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } - /*if (InitFailures > 3) + if (InitFailures > 3) { Report("HWConfigurationInit repeated failure",__FILE__,__LINE__,(int)InitFailures,RpWarning,(int)EEPROM_INIT_FAILURE_COUNTER,0); SetMachineState(MACHINE_STATE_HW_CONFIG_FAILED); AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_HW_CONFIG_FAILED,ON); SetMachineStatus(MACHINE_STATE__Error); return ERROR; - }*/ + } status = (MACHINE_STATE_STAGES_ENUM)HWConfigurationInit(); if (status == OK) { @@ -589,7 +588,6 @@ uint32_t InitSequenceStartHeating(void) { SetMachineReadyForHeating(true); //SetMachineStatus(MACHINE_STATE__Ready); //prevent job while waiting for the cooler - MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); if (InitialHeating) { @@ -625,6 +623,7 @@ uint32_t InitSequenceStartHeating(void) } //activate second pump for 10 minutes PumpActivation(600); + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); return OK; } uint32_t InitSequenceMachineReadyToDye(void) |
