aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Drivers
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-06-11 17:02:29 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-06-11 17:02:29 +0300
commitaffbf528aa9dade4eb73a644d152bd018bca23f3 (patch)
tree34c8d65eb2b074e8ad0b8c48ab8c328cfe1b9bc6 /Software/Embedded_SW/Embedded/Drivers
parent2340225e580d8d04078ada948b5958b1e7ce40e7 (diff)
parent00af45baf4efebd5f06450604d276cfe231a3d8e (diff)
downloadTango-affbf528aa9dade4eb73a644d152bd018bca23f3.tar.gz
Tango-affbf528aa9dade4eb73a644d152bd018bca23f3.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Drivers')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c25
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c15
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h3
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c140
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c19
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h1
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_ */