diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Drivers')
7 files changed, 155 insertions, 49 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c index ef37ffcee..23accb66a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c @@ -432,7 +432,8 @@ int32_t RTD(uint32_t Resistance_mult_by_100) //Resistance * 100 uint32_t CalculateTemperatures(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t Data) { - int32_t Current_Measurement_C = 0, temp = 0; + int32_t Current_Measurement_C = 0; + float temp = 0.0; uint32_t Resistance_mult_by_100; @@ -456,21 +457,25 @@ uint32_t CalculateTemperatures(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t Dat uint32_t NoOfAvrSamples = 5;//TODO - how many Samples Status = Filter_Temparature_Measurement(SensorId, Current_Measurement_C, NoOfAvrSamples); #else - if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( SensorId == HEAD_PT100_ZONE_6_0X84_1) || ( SensorId == HEAD_PT100_ZONE_8_0X86_1)))//pressure sensors + if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( SensorId == HEAD_PT100_ZONE_6_0X84_1) || ( SensorId == HEAD_PT100_ZONE_8_0X86_1) || ( SensorId == HEAD_PT100_ZONE_5_0X84_0) || ( SensorId == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors //if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( SensorId == HEAD_PT100_ZONE_5_0X84_0) || ( SensorId == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors { //Head Staple spun pressure sensors //bits to mvolts - temp = TempSensorResponse[SensorId].PT100_ADC_Reading_Bits* 3.3 *1000; - temp /= 8388608;//mV - TempSensorResponse[SensorId].Temperature_C_mult_by_100 = temp;///mV - Current_Measurement_C = temp;///mV - } - else - { - TempSensorResponse[SensorId].Temperature_C_mult_by_100 = Current_Measurement_C; + float temp1 = 3.3;//3.3V ref + float temp2 = 8388608.0;//2^23 (24bit) + float temp3 = 100.0;// V_mult_by_100 + + temp = Data & 0x00FFFFFF;//24bit + temp *= temp1; + temp /= temp2; + temp *= temp3; + + Current_Measurement_C = (int32_t)(temp);///V_mult_by_100 } + TempSensorResponse[SensorId].Temperature_C_mult_by_100 = Current_Measurement_C; + #endif return Current_Measurement_C; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c index 1a161b9f4..d7b7fc98f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c @@ -121,6 +121,12 @@ uint32_t Head_IO_Init() Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = 0x01; Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = 0x01; + if(Head_Type == HEAD_TYPE_STAPLE_SPUN)// Set 24 to pressure sensor in arc head + { + Head_I2C_EXP2_0x42.bits.OUTPUT_MAG_EN = ENABLE; + Head_I2C_EXP2_0x42.bits.OUTPUT_MAG_DIR = 0x00; + } + //Head_I2C_EXP4_0x46.bits.INPUT_ACTLOW_LIMIT_740W = 0x01; Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = 0x01;// on - short Active low Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = 0x01;// on - short Active low @@ -299,10 +305,11 @@ uint32_t HeadCard_DeActivateHeadMagnet() uint32_t HeadCard_HeadMagnet_Disable() { uint32_t status = OK; - - Head_I2C_EXP2_0x42.bits.OUTPUT_MAG_EN = DISABLE; - status |= Head_Write_IO_Reg(0x42,LOW); - + if(Head_Type == HEAD_TYPE_SYLKO) + { + Head_I2C_EXP2_0x42.bits.OUTPUT_MAG_EN = DISABLE; + status |= Head_Write_IO_Reg(0x42,LOW); + } return status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h index a3a35d5d3..ceab3b2b4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h @@ -191,6 +191,9 @@ uint32_t HeadCard_ActivateHeadMagnet(); uint32_t HeadCard_DeActivateHeadMagnet(); uint32_t HeadCard_HeadMagnet_Disable(); +uint32_t HeadCard_ActivateHeadPressureArcBlowers(); +uint32_t HeadCard_DeActivateHeadPressureArcBlowers(); + uint32_t HeadCard_Valve_Control(bool Direction); 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 a6db745cd..35d0a0b1e 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 @@ -30,11 +30,13 @@ ADDR 0x8E #include "ADS122X04.h" #include "drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" #include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h" +#include <Drivers/I2C_Communication/I2C_Task.h> uint32_t Detect_Head_PT100_Faults(TEMPERATURE_SENSOR_ID_ENUM SensorId); HeadBoardTempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMP_SENS_ID];//using only from HEAD_PT100_ZONE_1_0X80_0 + uint32_t I2C_ADC_ADS122C04_SLAVE_ADD = 0x80; //A0-GND A1-GND 4-Bit, 4-Channel, 2-kSPS, ADC ------ PT100 ADC – 0x80 … 0x87. uint8_t Save_Sel_Status = UNKNOWN; @@ -205,6 +207,8 @@ uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 1); + //delayms(10); + Status |= I2C_Read_SensorId(I2C_ID_HEAD_CARD, SensorId, temp, 3); if (Status) Report("HeadADCPT100_SendReadDataCommand error", __FILE__,Arb_Loss_Count,Status, RpMessage,SensorId, 0); @@ -250,20 +254,20 @@ uint8_t HeadADCPT100_InitConfigReg() if (Head_Type >= HEAD_TYPE_UNKNOWN_WITH_CARD)//adjust the limit switches { + for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMP_SENS_ID;i++) // for now we are using the same configuration to all of them { - if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( i == HEAD_PT100_ZONE_6_0X84_1) || ( i == HEAD_PT100_ZONE_8_0X86_1)))//pressure sensors - //if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( i == HEAD_PT100_ZONE_5_0X84_0) || ( i == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors + if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( i == HEAD_PT100_ZONE_6_0X84_1) || ( i == HEAD_PT100_ZONE_8_0X86_1) || ( i == HEAD_PT100_ZONE_5_0X84_0) || ( i == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors { // - - - - - - - - - - Reg0 - - - - - - - - - - HeadTempSensConfig[i].Reg0.bits.PGA_BYPASS = ADS122X_PGA_BYPASS ;//Bit 0 HeadTempSensConfig[i].Reg0.bits.GAIN = ADS122X_GAIN_1 ;//Bits 1-3 - //HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 + HeadTempSensConfig[i].Reg0.bits.MUX = ADS122X_MUX_AIN0_AIN1 ;//Bits 4-7 // - - - - - - - - - - Reg1 - - - - - - - - - - HeadTempSensConfig[i].Reg1.bits.TS = ADS122X_TEMP_SENSOR_OFF ;//Bit 0 HeadTempSensConfig[i].Reg1.bits.VREF = ADS122X_VREF_AVDD ;//Bits 1-2 - HeadTempSensConfig[i].Reg1.bits.CM = ADS122X_CONVERSION_CONTINUOUS ;//Bit 3 + HeadTempSensConfig[i].Reg1.bits.CM = ADS122X_CONVERSION_SINGLE_SHOT ;//Bit 3 HeadTempSensConfig[i].Reg1.bits.MODE = ADS122X_OP_MODE_NORMAL ;//Bit 4 HeadTempSensConfig[i].Reg1.bits.DR = ADS122X_DATA_RATE_20SPS ;//Bits 5-7 @@ -311,14 +315,30 @@ uint8_t HeadADCPT100_InitConfigReg() for(i=HEAD_PT100_ZONE_1_0X80_0;i < HEAD_PT100_ZONE_2_0X80_1;i++) { - HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 - HeadTempSensConfig[i].SEL = HEAD_CONFIG_ODD_PT100_PT_SEL; + //if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( i == HEAD_PT100_ZONE_5_0X84_0) || ( i == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors + //{ + HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 + HeadTempSensConfig[i].SEL = HEAD_CONFIG_ODD_PT100_PT_SEL; + //} + //else + //{ + // HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 + // HeadTempSensConfig[i].SEL = HEAD_CONFIG_ODD_PT100_PT_SEL; + //} } for(i=HEAD_PT100_ZONE_2_0X80_1;i < HEAD_PT100_RESERVE_0X8E_1;i++) { - HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX ;//Bits 4-7 - HeadTempSensConfig[i].SEL = HEAD_CONFIG_EVEN_PT100_PT_SEL; + if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( i == HEAD_PT100_ZONE_6_0X84_1) || ( i == HEAD_PT100_ZONE_8_0X86_1)))//pressure sensors + { + HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 + } + else + { + HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX ;//Bits 4-7 + } + HeadTempSensConfig[i].SEL = HEAD_CONFIG_EVEN_PT100_PT_SEL; + } HeadTempSensConfig[i].Config = 0; @@ -326,9 +346,9 @@ uint8_t HeadADCPT100_InitConfigReg() HeadTempSensConfig[i].MUX_Status = UNKNOWN; } - else +/* else ??? { - + for(i=HEAD_PT100_ZONE_1_0X80_0;i<MAX_HEAD_CARD_TEMP_SENS_ID; i++) { // - - - - - - - - - - Reg0 - - - - - - - - - - @@ -358,11 +378,13 @@ uint8_t HeadADCPT100_InitConfigReg() HeadTempSensConfig[i].Reg3.bits.I1MUX = ADS122X_IDAC1_AIN3 ;//Bits 5-7 } - } + + }*/ return OK; } +//uint8_t countettemp[50] = {0}; uint32_t HeadADCPT100_Config_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t Stage) { uint32_t Status = OK; @@ -377,6 +399,8 @@ uint32_t HeadADCPT100_Config_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint3 // if(HeadTempSensConfig[SensorId].Config == DONE) // return Status; + //countettemp[SensorId] += 1; cout hoe many times we get here for each sensor + Select_Main_Head_Mux_Channel(); switch(Stage) @@ -403,6 +427,8 @@ uint32_t HeadADCPT100_Config_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint3 Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); + HeadTempSensConfig[SensorId].Need_Sync = true; // must sync after config + if(Stage == SENSOR_CONFIG_REG3) { switch(SensorId) @@ -684,6 +710,16 @@ uint32_t control_HeadCard_PT100(uint8_t HEAD_CONFIG_PT100_MUX) uint32_t Status = OK; uint8_t Write_Buf[2]; TEMPERATURE_SENSOR_ID_ENUM SensorId; + static bool first_time = true; + + if(first_time)//verify sync before reading + { + for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) + { + HeadTempSensConfig[SensorId].Need_Sync = true; + first_time = false; + } + } if (Semaphore_pend(I2C_Sem, BIOS_NO_WAIT)) { @@ -692,15 +728,22 @@ uint32_t control_HeadCard_PT100(uint8_t HEAD_CONFIG_PT100_MUX) if(HEAD_CONFIG_PT100_MUX == HEAD_CONFIG_ODD_PT100_MUX) { //-------------------------------------- READ ODD -------------------------------------- + for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_ZONE_2_0X80_1; SensorId++) { - //Read Data - Status |= HeadADCPT100_SendReadDataCommand(SensorId); + if((HeadTempSensConfig[SensorId].Need_Sync == false) && (HeadTempSensConfig[SensorId].Config == DONE)) + { + //Read Data + Status |= HeadADCPT100_SendReadDataCommand(SensorId); + } } for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_ZONE_2_0X80_1; SensorId++) { - //Calculate Temperature - TempSensorResponse[SensorId].Temperature_C_mult_by_100 = CalculateTemperatures(SensorId, TempSensorResponse[SensorId].PT100_ADC_Reading_Bits); + if((HeadTempSensConfig[SensorId].Need_Sync == false) && (HeadTempSensConfig[SensorId].Config == DONE)) + { + //Calculate Temperature + TempSensorResponse[SensorId].Temperature_C_mult_by_100 = CalculateTemperatures(SensorId, TempSensorResponse[SensorId].PT100_ADC_Reading_Bits); + } } // for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_ZONE_2_0X80_1; SensorId++) // { @@ -713,18 +756,28 @@ uint32_t control_HeadCard_PT100(uint8_t HEAD_CONFIG_PT100_MUX) //delayms(5); for(SensorId = HEAD_PT100_ZONE_2_0X80_1; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) { - //Config_Mux - HeadTempSensConfig[SensorId].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX; - Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); - Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; - Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); + if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( SensorId == HEAD_PT100_ZONE_6_0X84_1) || ( SensorId == HEAD_PT100_ZONE_8_0X86_1)))//pressure sensors + { + //Config_Mux + } + else + { + HeadTempSensConfig[SensorId].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX; + Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); + Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; + Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); + } } //delayms(5); for(SensorId = HEAD_PT100_ZONE_2_0X80_1; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) { - //Sync - Write_Buf[0] = ADS122X_START_CMD; - Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); + if(HeadTempSensConfig[SensorId].Config == DONE) + { + //Sync + Write_Buf[0] = ADS122X_START_CMD; + Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); + HeadTempSensConfig[SensorId].Need_Sync = false; + } } //delayms(5); } @@ -733,14 +786,20 @@ uint32_t control_HeadCard_PT100(uint8_t HEAD_CONFIG_PT100_MUX) //-------------------------------------- READ EVEN -------------------------------------- for(SensorId = HEAD_PT100_ZONE_2_0X80_1; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) { - //Read Data - Status |= HeadADCPT100_SendReadDataCommand(SensorId); + if((HeadTempSensConfig[SensorId].Need_Sync == false) && (HeadTempSensConfig[SensorId].Config == DONE)) + { + //Read Data + Status |= HeadADCPT100_SendReadDataCommand(SensorId); + } } for(SensorId = HEAD_PT100_ZONE_2_0X80_1; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) { - //Calculate Temperature - TempSensorResponse[SensorId].Temperature_C_mult_by_100 = CalculateTemperatures(SensorId, TempSensorResponse[SensorId].PT100_ADC_Reading_Bits); + if((HeadTempSensConfig[SensorId].Need_Sync == false) && (HeadTempSensConfig[SensorId].Config == DONE)) + { + //Calculate Temperature + TempSensorResponse[SensorId].Temperature_C_mult_by_100 = CalculateTemperatures(SensorId, TempSensorResponse[SensorId].PT100_ADC_Reading_Bits); + } } // for(SensorId = HEAD_PT100_ZONE_2_0X80_1; SensorId < HEAD_PT100_RESERVE_0X8E_1; SensorId++) // { @@ -753,18 +812,29 @@ uint32_t control_HeadCard_PT100(uint8_t HEAD_CONFIG_PT100_MUX) //delayms(5); for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_ZONE_2_0X80_1; SensorId++) { - //Config_Mux - HeadTempSensConfig[SensorId].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX; - Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); - Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; - Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); + if((Head_Type == HEAD_TYPE_STAPLE_SPUN) && (( SensorId == HEAD_PT100_ZONE_5_0X84_0) || ( SensorId == HEAD_PT100_ZONE_7_0X86_0)))//pressure sensors + { + + } + else + { + //Config_Mux + HeadTempSensConfig[SensorId].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX; + Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); + Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; + Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); + } } //delayms(5); for(SensorId = HEAD_PT100_ZONE_1_0X80_0; SensorId < HEAD_PT100_ZONE_2_0X80_1; SensorId++) { - //Sync - Write_Buf[0] = ADS122X_START_CMD; - Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); + if(HeadTempSensConfig[SensorId].Config == DONE) + { + //Sync + Write_Buf[0] = ADS122X_START_CMD; + Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); + HeadTempSensConfig[SensorId].Need_Sync = false; + } } //delayms(5); } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h index 69af0635b..b73ca0b3a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h @@ -102,6 +102,7 @@ typedef struct ADS122C04_CONFIG_REGISTER_3 Reg3; uint8_t SEL; bool Config; //true for done + bool Need_Sync; unsigned char MUX_Status; }HeadBoardTempSensConfigStruc; 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 bebbe1365..13ecbd12c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -46,6 +46,7 @@ typedef enum Actuators_Disable, HeadFanControl, HeadMagnetAction, + HeadArcPressureAction, HeadValveAction, /* enum for WHS :*/ @@ -200,6 +201,18 @@ void Trigger_Head_Magnet(int direction) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } + +void Trigger_Head_PressureArc(bool Enable_Disable) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = HeadArcPressureAction; + I2C_ReadingMessage.parameter = Enable_Disable; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + void Trigger_Head_MixerValve(int direction) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -596,6 +609,12 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) else //DISABLE_MAGNET HeadCard_HeadMagnet_Disable(); break; + case HeadArcPressureAction: + if (I2C_ReadingMessage.parameter == ENABLE) + HeadCard_ActivateHeadPressureArcBlowers(); + else if (I2C_ReadingMessage.parameter == DISABLE) + HeadCard_DeActivateHeadPressureArcBlowers(); + break; case HeadValveAction: HeadCard_Valve_Control(I2C_ReadingMessage.parameter); 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 8e31cf90f..7a7237b20 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -52,5 +52,6 @@ void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM); void Trigger_InputsReading(void); void Trigger_Head_Magnet(int direction); void Trigger_Head_MixerValve(int direction); +void Trigger_Head_PressureArc(bool Enable_Disable); #endif /* DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ */ |
