From 581fc5ccade02a541b9e9fff2ab8c34bf6deef2c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 14 Mar 2019 23:56:45 +0200 Subject: version 1.3.7.9 --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5fe242436..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -499,9 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - /*temp = Read_Fans_Tacho(); + temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; - SystemFansStatus = temp & 0xE0;*/ + SystemFansStatus = temp & 0xE0; KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { -- cgit v1.3.1 From 69a41da59eb41a681e644505d5e7814c2c4f6973 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 19 Mar 2019 18:11:46 +0200 Subject: VOC Gas sensor polling --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 8 +++++++- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 8e4a36e62..88877f113 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -85,7 +85,7 @@ uint32_t Dancer_Data[NUM_OF_DANCERS] = {0}; float Speed_Data = 0; uint32_t DrawerFansStatus = 0; uint32_t SystemFansStatus = 0; - +uint8_t Gas_PPM = 0; bool watchdogCriticalAlarm = false; @@ -514,6 +514,7 @@ uint32_t MillisecLowLoop(uint32_t tick) { Read_Heaters_Current(Heater_i); } + Gas_PPM = Calculate_Gas_Power_Consumption(); } if (OneMinute_Tick) { @@ -621,6 +622,11 @@ uint32_t getDrawerFansStatus(void) { return DrawerFansStatus; } +uint8_t getGasReading(void) +{ + return Gas_PPM; +} + uint32_t getSystemFansStatus(void) { return SystemFansStatus; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index 7e2af1079..064302685 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -32,6 +32,7 @@ uint32_t getADCData(int DeviceId); float getSensorSpeedData(void); uint32_t getDrawerFansStatus(void); uint32_t getSystemFansStatus(void); +uint8_t getGasReading(void); void MillisecInit(void); void MillisecStop(void); -- cgit v1.3.1 From ae47f95ff168d0ed7240114eb65c639d1b70f9a3 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 24 Mar 2019 11:24:37 +0200 Subject: fix bug of reading ADC > channel 16 --- .../Embedded/Drivers/ADC_Sampling/ADC.c | 68 +++++++++++----------- .../Embedded/Drivers/ADC_Sampling/ADC.h | 29 ++++++++- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 28 ++++----- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h | 20 +++---- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 34 +++++------ .../Embedded/Modules/Control/MillisecTask.c | 2 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 20 +++---- .../Embedded/Modules/Heaters/Heaters_print.c | 2 +- .../Embedded/Modules/Stubs_Handler/Stub_IntADC.c | 2 +- 9 files changed, 115 insertions(+), 90 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c index 9518e9791..b9d8ee1f6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c @@ -91,26 +91,26 @@ void ADCAcquireStop(void) //MillisecStop // Physical ADC connected channels in the TIVA //***************************************************************************** -#define CHAN_AIR_PRESSURE_1 0//ADC_CTL_CH0 -#define CHAN_AIR_PRESSURE_2 1//ADC_CTL_CH1 -#define CHAN_DISPENSE_PRESSURE_1 2//ADC_CTL_CH2 -#define CHAN_DISPENSE_PRESSURE_2 3//ADC_CTL_CH3 -#define CHAN_DISPENSE_PRESSURE_3 4//ADC_CTL_CH4 -#define CHAN_DISPENSE_PRESSURE_4 5//ADC_CTL_CH5 -#define CHAN_DISPENSE_PRESSURE_5 6//ADC_CTL_CH6 -#define CHAN_DISPENSE_PRESSURE_6 7//ADC_CTL_CH7 -#define CHAN_DISPENSE_PRESSURE_7 8//ADC_CTL_CH8 -#define CHAN_DISPENSE_PRESSURE_8 9//ADC_CTL_CH9 -#define CHAN_VOCSENS 10//ADC_CTL_CH10 -#define CHAN_SPARE1 11//ADC_CTL_CH11 -#define CHAN_SPARE2 12//ADC_CTL_CH12 -#define CHAN_LEFT_DANCER_1 13//ADC_CTL_CH13 -#define CHAN_LEFT_DANCER_2 14//ADC_CTL_CH14 -#define CHAN_RIGHT_DANCER 15//ADC_CTL_CH15 -#define CHAN_DRYER_CURRENT_2 16//ADC_CTL_CH16 //Dryer Heater 2 -#define CHAN_DRYER_CURRENT_1 17//ADC_CTL_CH17 //Dryer Heater 1 -#define CHAN_DRYER_CURRENT_3 18//ADC_CTL_CH18 -#define CHAN_3V3_FPGA 19//ADC_CTL_CH19 +#define CHAN_AIR_PRESSURE_1 ADC_CTL_CH0 +#define CHAN_AIR_PRESSURE_2 ADC_CTL_CH1 +#define CHAN_DISPENSE_PRESSURE_1 ADC_CTL_CH2 +#define CHAN_DISPENSE_PRESSURE_2 ADC_CTL_CH3 +#define CHAN_DISPENSE_PRESSURE_3 ADC_CTL_CH4 +#define CHAN_DISPENSE_PRESSURE_4 ADC_CTL_CH5 +#define CHAN_DISPENSE_PRESSURE_5 ADC_CTL_CH6 +#define CHAN_DISPENSE_PRESSURE_6 ADC_CTL_CH7 +#define CHAN_DISPENSE_PRESSURE_7 ADC_CTL_CH8 +#define CHAN_DISPENSE_PRESSURE_8 ADC_CTL_CH9 +#define CHAN_VOCSENS ADC_CTL_CH10 +#define CHAN_SPARE1 ADC_CTL_CH11 +#define CHAN_SPARE2 ADC_CTL_CH12 +#define CHAN_LEFT_DANCER_1 ADC_CTL_CH13 +#define CHAN_LEFT_DANCER_2 ADC_CTL_CH14 +#define CHAN_RIGHT_DANCER ADC_CTL_CH15 +#define CHAN_DRYER_CURRENT_2 ADC_CTL_CH16 //Dryer Heater 2 +#define CHAN_DRYER_CURRENT_1 ADC_CTL_CH17 //Dryer Heater 1 +#define CHAN_DRYER_CURRENT_3 ADC_CTL_CH18 +#define CHAN_3V3_FPGA ADC_CTL_CH19 /* Connected with pull down to reg GND ADC_CTL_CH20 Connected with pull down to reg GND ADC_CTL_CH21 @@ -129,7 +129,7 @@ config as Digital input from FPGA 3 ADC_CTL_CH23 //***************************************************************************** -uint32_t g_pui32ADCSeq[MAX_ADC_DEVICES] = +uint32_t g_pui32ADCSeq[ADC_MAX_ADC_DEVICES] = { CHAN_AIR_PRESSURE_1, //0 CHAN_AIR_PRESSURE_2, //1 @@ -155,7 +155,7 @@ uint32_t g_pui32ADCSeq[MAX_ADC_DEVICES] = //#define NUM_ADC_CHANNELS (sizeof(g_pui32ADCSeq) / \ sizeof(g_pui32ADCSeq[0])) -int DispenserIdToPressureSensorId[MAX_DISPENSERS] = {CHAN_DISPENSE_PRESSURE_1, CHAN_DISPENSE_PRESSURE_2 , CHAN_DISPENSE_PRESSURE_3 , CHAN_DISPENSE_PRESSURE_4 , CHAN_DISPENSE_PRESSURE_5 , CHAN_DISPENSE_PRESSURE_6 , CHAN_DISPENSE_PRESSURE_7 , CHAN_DISPENSE_PRESSURE_8 }; +int DispenserIdToPressureSensorId[MAX_DISPENSERS] = {ADC_DISPENSE_PRESSURE_1, ADC_DISPENSE_PRESSURE_2 , ADC_DISPENSE_PRESSURE_3 , ADC_DISPENSE_PRESSURE_4 , ADC_DISPENSE_PRESSURE_5 , ADC_DISPENSE_PRESSURE_6 , ADC_DISPENSE_PRESSURE_7 , ADC_DISPENSE_PRESSURE_8 }; //const uint8_t Num_ADC_Channels = ( sizeof(g_pui32ADCSeq) / sizeof(g_pui32ADCSeq[0]) ); @@ -176,7 +176,7 @@ static int bufferFlipFlop = 0; // A buffer to hold one set of ADC data that is acquired per sample time. // //***************************************************************************** -static uint32_t g_pui32ADCData[DOUBLE_BUFFER][MAX_ADC_DEVICES]; +static uint32_t g_pui32ADCData[DOUBLE_BUFFER][ADC_MAX_ADC_DEVICES]; //***************************************************************************** //configured in the cfg file and thats why should be defined as extern @@ -209,10 +209,10 @@ uint32_t ADC_TriggerCollection(void) // (called by MillisecLoop) // ADC Data get for a single data read // //***************************************************************************** -uint32_t ADC_GetReading(int DataItemId) // 0 - 19 // ADC Data get for a single data read +uint32_t ADC_GetReading(ADC_TYPE DataItemId) // 0 - 19 // ADC Data get for a single data read { int bufnotinuse; - assert (DataItemId VADC ---- @@ -518,7 +518,7 @@ uint8_t Calculate_Gas_Power_Consumption() // WHS uint8_t PPM = sizeof(VOC_Vsensor) / sizeof(VOC_Vsensor[0]), i; - VsampleInBits = ADC_GetReading(CHAN_VOCSENS); + VsampleInBits = ADC_GetReading(ADC_VOCSENS); //---- VBits -> VADC ---- @@ -582,18 +582,18 @@ uint32_t Read_Dryer_Heaters_Current(HEATERS_CURRENT Heater_ID) // switch(Heater_ID) { - case DRYER_CURRENT_1: - temp = ADC_GetReading(CHAN_DRYER_CURRENT_1);//ADC_CTL_CH17 + case HEATER_DRYER_CURRENT_1: + temp = ADC_GetReading(ADC_DRYER_CURRENT_1);//ADC_CTL_CH17 R = 50;//50 Ohm //Expected 8A break; - case DRYER_CURRENT_2: - temp = ADC_GetReading(CHAN_DRYER_CURRENT_2);//ADC_CTL_CH16 + case HEATER_DRYER_CURRENT_2: + temp = ADC_GetReading(ADC_DRYER_CURRENT_2);//ADC_CTL_CH16 R = 100;//100 Ohm //Expected 4A break; // case DRYER_CURRENT_3: -// temp = ADC_GetReading(CHAN_DRYER_CURRENT_3);//Not in use +// temp = ADC_GetReading(ADC_DRYER_CURRENT_3);//Not in use // break; default: return ERROR; diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h index bacbe0a0d..7f2601fb1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h @@ -12,7 +12,32 @@ // ADC copied data //***************************************************************************** -#define MAX_ADC_DEVICES 20 +typedef enum +{ + ADC_AIR_PRESSURE_1 ,//0 + ADC_AIR_PRESSURE_2 ,//1 + ADC_DISPENSE_PRESSURE_1 ,//2 + ADC_DISPENSE_PRESSURE_2 ,//3 + ADC_DISPENSE_PRESSURE_3 ,//4 + ADC_DISPENSE_PRESSURE_4 ,//5 + ADC_DISPENSE_PRESSURE_5 ,//6 + ADC_DISPENSE_PRESSURE_6 ,//7 + ADC_DISPENSE_PRESSURE_7 ,//8 + ADC_DISPENSE_PRESSURE_8 ,//9 + ADC_VOCSENS ,//10 + ADC_SPARE1 ,//11 + ADC_SPARE2 ,//12 + ADC_LEFT_DANCER_1 ,//13 + ADC_LEFT_DANCER_2 ,//14 + ADC_RIGHT_DANCER ,//15 + ADC_DRYER_CURRENT_2 ,//16 + ADC_DRYER_CURRENT_1 ,//17 + ADC_DRYER_CURRENT_3 ,//18 + ADC_FPGA_3V3 ,//19 + ADC_MAX_ADC_DEVICES ,//20 +}ADC_TYPE; + +//#define MAX_ADC_DEVICES 20 #define MAX_DISPENSERS //#define MAX_ADC_DEVICES NUM_ADC_CHANNELS @@ -26,7 +51,7 @@ void ADCAcquireInit(void); uint32_t ADC_TriggerCollection(void); -uint32_t ADC_GetReading(int DataItemId); +uint32_t ADC_GetReading(ADC_TYPE DataItemId); void ADCAcquireStart(ProcessCallback _callback, uint32_t _period); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index ed41223ae..0f37af1b5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -257,12 +257,12 @@ uint32_t Heaters_Current_Bits[9];//just for debug void Enable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8 { - assert (Heater_IDadc_device); + data = ADC_GetReading((ADC_TYPE)request->adc_device); status = PASSED; StubIntADCReadResponse response = STUB_INT_ADCREAD_RESPONSE__INIT; -- cgit v1.3.1 From c4be36f27bc7c0fa9d0153d6d09ab13bc1826ee8 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 24 Mar 2019 13:42:15 +0200 Subject: add functions to read the jogging and load buttons --- .../Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h | 13 ++++++++++ .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 28 ++++++++++++++++++++++ .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h | 4 ++++ .../Embedded/Modules/Control/MillisecTask.c | 1 + 4 files changed, 46 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h index 15bdf97cd..614f2affa 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h @@ -751,6 +751,19 @@ #define F3_LOw_Cart_Led3 F3_low_var_SPARE2_2 #define F3_High_Cart_Led3 F3_high_var_SPARE2_2 +//F3_GPI_02_Direct +typedef union +{ + struct + { + bool F3_GPI_TACTSW4 : 1; //0 + bool F3_GPI_TACTSW3 : 1; //1 + bool Thread_Jogging_Switch : 1; //2 (F3_GPI_TACTSW2) + bool Thread_Load_Switch : 1; //3 (F3_GPI_TACTSW1) + unsigned short F3_GPI_02_RESERVE : 12; //4-16 + }bits; + unsigned short ushort; +}F3_GPI_02; //1 Version1_Direct typedef union diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index 1c6b7db8d..bd716eea8 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -702,6 +702,34 @@ uint8_t Buzzer(OPERATION_MODE Buzzer_Mode) return Status; } + +F3_GPI_02 F3_GPI_02_Reg; + +void Read_Buttons_Reg() +{ + F3_GPI_02_Reg.ushort = F3_GPI_02_Direct; +} + +bool Get_Thread_Jogging_Button() +{ + bool IsThreadJoggingPressed = false; + + if(F3_GPI_02_Reg.bits.Thread_Jogging_Switch == true) + IsThreadJoggingPressed = true; + + return IsThreadJoggingPressed; +} + +bool Get_Thread_Load_Button() +{ + bool IsThreadLoadPressed = false; + + if(F3_GPI_02_Reg.bits.Thread_Load_Switch == true) + IsThreadLoadPressed = true; + + return IsThreadLoadPressed; +} + bool Read_PWR_Button()//TODO move to GPIO folder { diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h index c98ba5941..409f75418 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h @@ -191,6 +191,10 @@ void Power_Reset(); uint8_t Buzzer(OPERATION_MODE Buzzer_Mode); bool Read_PWR_Button();//TODO move to GPIO folder +void Read_Buttons_Reg(); +bool Get_Thread_Jogging_Button(); +bool Get_Thread_Load_Button(); + uint32_t Control_WD(bool IsEnable, unsigned char SetTimer_Steps100mSec); uint32_t ActivateChiller(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 7c7885692..738f59686 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -474,6 +474,7 @@ uint32_t MillisecLowLoop(uint32_t tick) if (Hundred_msTick) { Speed_Data = Calculate_Speed_Sensor_Velocity(); + Read_Buttons_Reg(); for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) { MillisecReadFromTempSensor(Sensor_i, NULL); -- cgit v1.3.1