diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-11 17:02:29 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-11 17:02:29 +0300 |
| commit | affbf528aa9dade4eb73a644d152bd018bca23f3 (patch) | |
| tree | 34c8d65eb2b074e8ad0b8c48ab8c328cfe1b9bc6 /Software/Embedded_SW/Embedded | |
| parent | 2340225e580d8d04078ada948b5958b1e7ce40e7 (diff) | |
| parent | 00af45baf4efebd5f06450604d276cfe231a3d8e (diff) | |
| download | Tango-affbf528aa9dade4eb73a644d152bd018bca23f3.tar.gz Tango-affbf528aa9dade4eb73a644d152bd018bca23f3.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
13 files changed, 269 insertions, 72 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_ */ diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 09e8b2731..86000f6c0 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -271,6 +271,11 @@ int main(void) Init_All_I2C(); Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards Check_Head_Type_Via_EEPROM(); + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) + { + Head_IO_Init();//moved to set 24 to pressure sensor in arc earlier + } + //Trigger_Check_WHS_Type_Via_EEPROM(); Check_WHS_Type_Via_EEPROM(); if ((Head_Type >= HEAD_TYPE_UNKNOWN_WITH_CARD)&&(WHS_Type == WHS_TYPE_NEW)) @@ -287,8 +292,7 @@ int main(void) SysCtlUSBPLLEnable(); - if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) - Head_IO_Init(); + #ifndef EVALUATION_BOARD DeActivateAllSSR(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 79dd2899f..602073f3c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -794,8 +794,11 @@ void DiagnosticOneSecCollection(void) DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone3, MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0)); DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater1, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_2_0X8C_1)); DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater2, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_1_0X8C_0)); - DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone4, MillisecGetTemperatures(HEAD_PT100_ZONE_4_0X82_1)); - DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone6, MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1)); + + DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone5, MillisecGetTemperatures(HEAD_PT100_ZONE_5_0X84_0)); + //DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone6, MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1)); + DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone7, MillisecGetTemperatures(HEAD_PT100_ZONE_7_0X86_0)); + //DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone8, MillisecGetTemperatures(HEAD_PT100_ZONE_8_0X86_1)); } DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP1)); DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP2)); @@ -1147,15 +1150,23 @@ void SendDiagnostics(void) if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD)) { - LoadHeaterState(HEATER_TYPE__HeaterZone4,&HeaterInfo[i++]); - LoadHeaterState(HEATER_TYPE__HeaterZone5,&HeaterInfo[i++]); - LoadHeaterState(HEATER_TYPE__HeaterZone6,&HeaterInfo[i++]); + LoadHeaterState(HEATER_TYPE__HeaterZone4,&HeaterInfo[i++]); } - if (Head_Type == HEAD_TYPE_SYLKO) + LoadHeaterState(HEATER_TYPE__HeaterZone5,&HeaterInfo[i++]); + //LoadHeaterState(HEATER_TYPE__HeaterZone6,&HeaterInfo[i++]); + if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD)) { + LoadHeaterState(HEATER_TYPE__HeaterZone6,&HeaterInfo[i++]); + } + if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_STAPLE_SPUN)) + { LoadHeaterState(HEATER_TYPE__HeaterZone7,&HeaterInfo[i++]); + //LoadHeaterState(HEATER_TYPE__HeaterZone8,&HeaterInfo[i++]); + } + if (Head_Type == HEAD_TYPE_SYLKO) + { LoadHeaterState(HEATER_TYPE__HeaterZone8,&HeaterInfo[i++]); - LoadHeaterState(HEATER_TYPE__HeaterZone9,&HeaterInfo[i++]); + LoadHeaterState(HEATER_TYPE__HeaterZone9,&HeaterInfo[i++]); LoadHeaterState(HEATER_TYPE__HeaterZone10,&HeaterInfo[i++]); LoadHeaterState(HEATER_TYPE__HeaterZone11,&HeaterInfo[i++]); LoadHeaterState(HEATER_TYPE__HeaterZone12,&HeaterInfo[i++]); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index d28ca4f21..0575f0388 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -49,7 +49,10 @@ #include "drivers/Uart_Comm/WHS_Controller_Comm/WHS_UART/WHS_Uart.h" #include <Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.h> +#include "drivers/Heater/TemperatureSensor.h" +#include "Drivers/I2C_Communication/Head_Card/PT100/ADS122X04.h" +extern HeadBoardTempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMP_SENS_ID]; extern float NumberOfRotationPerPassage; // how many rotations per spool passage extern void HeaterSafetyTestSetLimits(int limit); @@ -80,6 +83,65 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) uint8_t pin = 0; uint8_t value= 0; + uint8_t ReadBackReg[1]; + + if(request->amount == 0xC04f) + { + + switch(request->delay) + { + case 0x8400: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_5_0X84_0, ADS122X_CONFIG_0_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[14].Reg0.Byte; + break; + case 0x8401: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_5_0X84_0, ADS122X_CONFIG_1_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[14].Reg1.Byte; + break; + case 0x8402: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_5_0X84_0, ADS122X_CONFIG_2_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[14].Reg2.Byte; + break; + case 0x8403: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_5_0X84_0, ADS122X_CONFIG_3_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[14].Reg3.Byte; + break; + case 0x8600: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_7_0X86_0, ADS122X_CONFIG_0_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[15].Reg0.Byte; + break; + case 0x8601: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_7_0X86_0, ADS122X_CONFIG_1_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[15].Reg1.Byte; + break; + case 0x8602: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_7_0X86_0, ADS122X_CONFIG_2_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[15].Reg2.Byte; + break; + case 0x8603: + HeadADCPT100_ReadReg(HEAD_PT100_ZONE_7_0X86_0, ADS122X_CONFIG_3_REG, &ReadBackReg[0]); + response.progress = ReadBackReg[0]; + //response.progress = HeadTempSensConfig[15].Reg3.Byte; + break; + + default: + if((request->delay >= HEAD_PT100_ZONE_1_0X80_0) && (request->delay <= HEAD_PT100_RESERVE_0X8E_1)) + { + response.progress = TempSensorResponse[request->delay].PT100_ADC_Reading_Bits; + } + break; + } + + response.has_progress = true; + } + else if(request->amount == 0xb05) { response.progress = Test_Uart3(request->delay); @@ -105,6 +167,20 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else + if(request->amount == 0xb10) //S.S Head Sensor board + { + if(request->delay == 0x01) + { + response.progress = HeadCard_ActivateHeadPressureArcBlowers(); + } + else if(request->delay == 0x00) + { + response.progress = HeadCard_DeActivateHeadPressureArcBlowers(); + } + response.has_progress = true; + } + + else if(request->amount == 0x3EC) { if(request->delay == 0x01) diff --git a/Software/Embedded_SW/Embedded/src/makefile.libs b/Software/Embedded_SW/Embedded/src/makefile.libs index ae6999352..f262762ef 100644 --- a/Software/Embedded_SW/Embedded/src/makefile.libs +++ b/Software/Embedded_SW/Embedded/src/makefile.libs @@ -1,6 +1,6 @@ # # This file was generated based on the configuration script: -# C:\tango\Software\Embedded_SW\Embedded\Embedded.cfg +# C:\Tango\Software\Embedded_SW\Embedded\Embedded.cfg # # This makefile may be included in other makefiles that need to build # the libraries containing the compiled source files generated as @@ -14,7 +14,7 @@ # # The absolute path to the generated source directory (at the time the # sources were generated) is: -# C:\tango\Software\Embedded_SW\Embedded\src +# C:\Tango\Software\Embedded_SW\Embedded\src # GEN_SRC_DIR ?= ../src diff --git a/Software/Embedded_SW/Embedded/src/sysbios/makefile b/Software/Embedded_SW/Embedded/src/sysbios/makefile index a8280a913..0f63ec463 100644 --- a/Software/Embedded_SW/Embedded/src/sysbios/makefile +++ b/Software/Embedded_SW/Embedded/src/sysbios/makefile @@ -1,29 +1,29 @@ -XOPTS = -I"C:/ti/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M4F +XOPTS = -I"C:/TI/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M4F -vpath % C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ -vpath %.c C:/ti/xdctools_3_32_00_06_core/packages/ +vpath % C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ +vpath %.c C:/TI/xdctools_3_32_00_06_core/packages/ CCOPTS = --endian=little -mv7M4 --abi=eabi --float_support=fpv4spd16 -q -ms --program_level_compile -g -Dxdc_FILE=__FILE__ -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_knl_Clock_stopCheckNext__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U -Dti_sysbios_hal_Core_numCores__D=1 -XDC_ROOT = C:/ti/xdctools_3_32_00_06_core/packages/ +XDC_ROOT = C:/TI/xdctools_3_32_00_06_core/packages/ -BIOS_ROOT = C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ +BIOS_ROOT = C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ BIOS_DEFS = -Dti_sysbios_BIOS_swiEnabled__D=TRUE -Dti_sysbios_BIOS_taskEnabled__D=TRUE -Dti_sysbios_BIOS_clockEnabled__D=TRUE -Dti_sysbios_BIOS_runtimeCreatesEnabled__D=TRUE -Dti_sysbios_hal_Hwi_DISABLE_ALL_HOOKS -Dti_sysbios_knl_Swi_DISABLE_ALL_HOOKS -Dti_sysbios_BIOS_smpEnabled__D=FALSE -Dti_sysbios_Build_useHwiMacros -Dti_sysbios_knl_Swi_numPriorities__D=16 -Dti_sysbios_knl_Task_deleteTerminatedTasks__D=FALSE -Dti_sysbios_knl_Task_numPriorities__D=16 -Dti_sysbios_knl_Task_checkStackFlag__D=TRUE -Dti_sysbios_knl_Task_initStackFlag__D=TRUE -Dti_sysbios_knl_Task_DISABLE_ALL_HOOKS -Dti_sysbios_knl_Clock_TICK_SOURCE=ti_sysbios_knl_Clock_TickSource_TIMER -Dti_sysbios_knl_Clock_TICK_MODE=ti_sysbios_knl_Clock_TickMode_PERIODIC -Dti_sysbios_hal_Core_delegate_getId=ti_sysbios_hal_CoreNull_getId__E -Dti_sysbios_hal_Core_delegate_interruptCore=ti_sysbios_hal_CoreNull_interruptCore__E -Dti_sysbios_hal_Core_delegate_lock=ti_sysbios_hal_CoreNull_lock__E -Dti_sysbios_hal_Core_delegate_unlock=ti_sysbios_hal_CoreNull_unlock__E -Dti_sysbios_hal_Core_numCores__D=1 -Dti_sysbios_hal_CoreNull_numCores__D=1 -Dti_sysbios_utils_Load_taskEnabled__D=TRUE -Dti_sysbios_utils_Load_swiEnabled__D=FALSE -Dti_sysbios_utils_Load_hwiEnabled__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_dispatcherSwiSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherTaskSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherAutoNestingSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherIrpTrackingSupport__D=TRUE -Dti_sysbios_knl_Semaphore_supportsEvents__D=FALSE -Dti_sysbios_knl_Semaphore_supportsPriority__D=TRUE -BIOS_INC = -I"C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" +BIOS_INC = -I"C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" -TARGET_INC = -I"C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" +TARGET_INC = -I"C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" INCS = $(BIOS_INC) $(TARGET_INC) -CC = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/include -ASM = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/include -AR = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armar rq +CC = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armcl -c $(CCOPTS) -I C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/include +ASM = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armcl -c $(CCOPTS) -I C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/include +AR = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armar rq -DEL = C:/ti/xdctools_3_32_00_06_core/packages/../bin/rm -f -CP = C:/ti/xdctools_3_32_00_06_core/packages/../bin/cp -f +DEL = C:/TI/xdctools_3_32_00_06_core/packages/../bin/rm -f +CP = C:/TI/xdctools_3_32_00_06_core/packages/../bin/cp -f define RM $(if $(wildcard $1),$(DEL) $1,:) diff --git a/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f b/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f Binary files differindex 2921f9dfb..93c4f5655 100644 --- a/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f +++ b/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f |
