aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2019-11-10 10:13:28 +0200
committerAvi Levkovich <avi@twine-s.com>2019-11-10 10:13:28 +0200
commit0ceddf4eb2f986b3623349fbbfe614328e9937df (patch)
tree5f1083d4fc086cf42116993cf48100536ba81f2b /Software/Embedded_SW
parente5e2a9ece870a3d9dafb22420ee888abaae6adcb (diff)
downloadTango-0ceddf4eb2f986b3623349fbbfe614328e9937df.tar.gz
Tango-0ceddf4eb2f986b3623349fbbfe614328e9937df.zip
Head card PT100
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h3
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c26
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h37
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c169
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c36
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c2
10 files changed, 216 insertions, 70 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index 4851bb528..1fa54f692 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -136,6 +136,9 @@ enum
#define CLOSE 0
#define OPEN 1
+#define DONE 1
+#define UNKNOWN 0xFF
+
#define DRIER_LID_OPEN 0
#define DRIER_LID_CLOSE 2
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
index e7b87f5c7..ea9724a15 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
@@ -16,7 +16,7 @@
#include <PMR/Diagnostics/EventType.pb-c.h>
#include "Modules/AlarmHandling/AlarmHandling.h"
-extern TempSensorResponseStruct TempSensorResponse[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+extern TempSensorResponseStruct TempSensorResponse[MAX_MAIN_CARD_TEMP_SENS_ID];
#include <drivers/FPGA/FPGA_SSI_Comm.h>
#ifdef USE_POWERSTEP01
@@ -1751,7 +1751,7 @@ void FPGA_GetMotSpeed(SPI MotFPGA_Spi)
////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
-SPI TempSense_Spi[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+SPI TempSense_Spi[MAX_MAIN_CARD_TEMP_SENS_ID];
typedef struct
{
@@ -1764,7 +1764,7 @@ typedef struct
} FpgaSpiMap_t;
-static FpgaSpiMap_t FpgaTempSenseMap[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID] =
+static FpgaSpiMap_t FpgaTempSenseMap[MAX_MAIN_CARD_TEMP_SENS_ID] =
{
//TEMP_SENSE_ANALOG_MIXCHIP_TEMP, //ANALOG_MIXCHIP_TEMP
{&F2_ANALOG_MIXCHIP_TEMP_1_TX_00, &F2_ANALOG_MIXCHIP_TEMP_1_TX_01, &F2_ANALOG_MIXCHIP_TEMP_1_RX_00 ,&F2_ANALOG_MIXCHIP_TEMP_1_RX_01 ,&F2_ANALOG_MIXCHIP_TEMP_1_WORDS ,&F2_SPI_Busy1_D},
diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c
index b049f1f57..8aa441bec 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c
@@ -17,15 +17,15 @@
#include "Modules/AlarmHandling/AlarmHandling.h"
#include "PT100RTD.h"
#include <DataDef.h>
-
-#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
+#include "drivers/Heater/TemperatureSensor.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
uint32_t TemperatureSensorReadFromFPGA_Res(TEMPERATURE_SENSOR_ID_ENUM SensorId);
//uint32_t TemperatureSendSensorDummyClk(TEMP_SENSE_ANALOG_DYEINGH_TEMP1);
-SENSOR_CONFIG_STAGES_ENUM SensConfigStages[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID] = {SENSOR_CONFIG_REG0}; // TODO remove buffer if it is the same for all the sensors
+SENSOR_CONFIG_STAGES_ENUM SensConfigStages[MAX_MAIN_CARD_TEMP_SENS_ID] = {SENSOR_CONFIG_REG0}; // TODO remove buffer if it is the same for all the sensors
uint8_t FPGA_SensorInitConfigReg()
{
@@ -34,7 +34,7 @@ uint8_t FPGA_SensorInitConfigReg()
uint8_t i;
- for(i=0;i<MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID;i++) // for now we are using the same configuration to all of them
+ for(i=0;i<MAX_MAIN_CARD_TEMP_SENS_ID;i++) // for now we are using the same configuration to all of them
{
// - - - - - - - - - - Reg0 - - - - - - - - - -
TempSensConfig[i].Reg0.bits.PGA_BYPASS = 0x00 ;//Bit 0 PGA enabled (default)
@@ -83,7 +83,7 @@ uint32_t TemperatureSensorsReset(void)
#ifndef EVALUATION_BOARD
uint8_t i;
- for(i=0;i<MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID; i++)
+ for(i=0;i<MAX_MAIN_CARD_TEMP_SENS_ID; i++)
{
//Reset the device
SPISendFPGARequest((TEMPERATURE_SENSOR_ID_ENUM)(i),ADS1220_CMD_RESET, 1);
@@ -102,7 +102,7 @@ uint32_t FPGA_SensorConfig_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_
#ifndef EVALUATION_BOARD
uint32_t temp = 0;
- if (SensorId > MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if (SensorId > MAX_MAIN_CARD_TEMP_SENS_ID)
return ERROR;
#define nn 0x00 // Send nn+1 - see datasheet page 36
@@ -199,9 +199,9 @@ uint32_t Filter_Temparature_Measurement(TEMPERATURE_SENSOR_ID_ENUM SensorId, int
uint32_t Filtered_Measurement;
- static int32_t Sample_buf[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID][MaxAvrSamples] = {0};
+ static int32_t Sample_buf[MAX_MAIN_CARD_TEMP_SENS_ID][MaxAvrSamples] = {0};
- static uint8_t SampleIndex[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID] = {0};
+ static uint8_t SampleIndex[MAX_MAIN_CARD_TEMP_SENS_ID] = {0};
uint8_t i;
uint32_t Status = OK;
@@ -249,7 +249,7 @@ uint32_t Filter_Temparature_Measurement(TEMPERATURE_SENSOR_ID_ENUM SensorId, int
uint32_t Filter_Error_Temparature_Measurements(TEMPERATURE_SENSOR_ID_ENUM SensorId, int32_t Current_Measurement_C)
{
- static uint8_t counter[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+ static uint8_t counter[MAX_MAIN_CARD_TEMP_SENS_ID];
uint32_t Status = OK;
@@ -286,7 +286,7 @@ uint32_t TemperatureSensorSync(TEMPERATURE_SENSOR_ID_ENUM SensorId)
uint32_t temp = 0;
- if(SensorId > MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if(SensorId > MAX_MAIN_CARD_TEMP_SENS_ID)
Status = ERROR;
temp = ADS1220_CMD_SYNC;//ADS1220_CMD_RDATA;
@@ -307,7 +307,7 @@ uint32_t TemperatureSendSensorDummyClk(TEMPERATURE_SENSOR_ID_ENUM SensorId)
uint32_t temp = 0;
- if(SensorId > MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if(SensorId > MAX_MAIN_CARD_TEMP_SENS_ID)
Status = ERROR;
temp = 0x10FFFFFF ;
@@ -455,7 +455,7 @@ uint32_t TemperatureSensorReadFromFPGA_Res(TEMPERATURE_SENSOR_ID_ENUM SensorId)
//-------------------------------------------------------------------------------------------------
-uint32_t Read_Reg[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID][4];
+uint32_t Read_Reg[MAX_MAIN_CARD_TEMP_SENS_ID][4];
uint32_t TemperatureSensorReadRegFromFPGA_Res(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t Reg)
@@ -506,7 +506,7 @@ void FPGA_SensorInitConfig()
for(Register=0;Register<=SENSOR_CONFIG_REG3;Register++)
{
- for(Sensor=0;Sensor<MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID;Sensor++)
+ for(Sensor=0;Sensor<MAX_MAIN_CARD_TEMP_SENS_ID;Sensor++)
{
FPGA_SensorConfig_callback( (TEMPERATURE_SENSOR_ID_ENUM)(Sensor), Register);
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
index 79ff302db..910089ed1 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.h
@@ -26,21 +26,24 @@ TEMP_SENSE_AN_ENCLOSURETEMP2, //AN_ENCLOSURETEMP2_1
TEMP_SENSE_AN_ENCLOSURETEMP3, //AN_ENCLOSURETEMP3_1 Mixer SSR4
//Head Card 16 channels for temperature measuring
-HEAD_PT100_ZONE_1_0X80_0, //0 must be ODD
-HEAD_PT100_ZONE_2_0X80_1, //1
+
+//Select 0
+HEAD_PT100_ZONE_1_0X80_0, //0
HEAD_PT100_ZONE_3_0X82_0, //2
-HEAD_PT100_ZONE_4_0X82_1, //3
HEAD_PT100_ZONE_5_0X84_0, //4
-HEAD_PT100_ZONE_6_0X84_1, //5
HEAD_PT100_ZONE_7_0X86_0, //6
-HEAD_PT100_ZONE_8_0X86_1, //7
HEAD_PT100_ZONE_9_0X88_0, //8
-HEAD_PT100_ZONE_10_0X88_1, //9
HEAD_PT100_ZONE_11_0X8A_0, //10
-HEAD_PT100_ZONE_12_0X8A_1, //11
HEAD_PT100_AIR_HEATER_1_0X8C_0, //12
-HEAD_PT100_AIR_HEATER_2_0X8C_1, //13
HEAD_PT100_MIXER_0X8E_0, //14
+//Select 1
+HEAD_PT100_ZONE_2_0X80_1, //1
+HEAD_PT100_ZONE_4_0X82_1, //3
+HEAD_PT100_ZONE_6_0X84_1, //5
+HEAD_PT100_ZONE_8_0X86_1, //7
+HEAD_PT100_ZONE_10_0X88_1, //9
+HEAD_PT100_ZONE_12_0X8A_1, //11
+HEAD_PT100_AIR_HEATER_2_0X8C_1, //13
HEAD_PT100_RESERVE_0X8E_1, //15
//WHS Card 4 channels for temperature measuring
@@ -51,18 +54,20 @@ WHS_PT100_4_0X82_1,
} TEMPERATURE_SENSOR_ID_ENUM;
-#define MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID (TEMP_SENSE_AN_ENCLOSURETEMP3+1) // without the head card sensors
-#define MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID (HEAD_PT100_RESERVE_0X8E_1+1)
-#define MAX_WHS_CARD_TEMPERATURE_SENSOR_ID (WHS_PT100_4_0X82_1+1)
+#define MAX_MAIN_CARD_TEMP_SENS_ID (TEMP_SENSE_AN_ENCLOSURETEMP3+1) // without the head card sensors
+#define MAX_HEAD_CARD_TEMP_SENS_ID (HEAD_PT100_RESERVE_0X8E_1+1)
+#define MAX_HEAD_CARD_TEMP_SENS_ID_0 (HEAD_PT100_MIXER_0X8E_0+1)
+#define MAX_HEAD_CARD_TEMP_SENS_ID_1 (HEAD_PT100_RESERVE_0X8E_1+1)
+#define MAX_WHS_CARD_TEMP_SENS_ID (WHS_PT100_4_0X82_1+1)
#warning assuming that we won't use whs card without head card..
#if defined(Use_WHS_Card)
- #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_WHS_CARD_TEMPERATURE_SENSOR_ID // WHS + Head cards
+ #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_WHS_CARD_TEMP_SENS_ID // WHS + Head cards
#elif defined(Use_Head_Card)
- #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID
+ #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_HEAD_CARD_TEMP_SENS_ID
#else
- #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID
+ #define MAX_TANGO_TEMPERATURE_SENSOR_ID MAX_MAIN_CARD_TEMP_SENS_ID
#endif
typedef enum
@@ -84,7 +89,7 @@ typedef struct
}TempSensorResponseStruct;
-TempSensorResponseStruct TempSensorResponse[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+TempSensorResponseStruct TempSensorResponse[MAX_MAIN_CARD_TEMP_SENS_ID];
typedef union
@@ -144,7 +149,7 @@ typedef struct
}TempSensConfigStruc;
-TempSensConfigStruc TempSensConfig[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+TempSensConfigStruc TempSensConfig[MAX_MAIN_CARD_TEMP_SENS_ID];
uint32_t TemperatureSensorsReset(void); // No need to use !!! (No need to reset)
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 10dcf4232..4b96d08fd 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
@@ -9,7 +9,7 @@
#include "../I2C_Head_Mux.h"
#include <Drivers/I2C_Communication/I2C.h>
#include "drivers/Heater/TemperatureSensor.h"
-#include <Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h>
+#include <Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h>
/*
GPIO TCA9555RTWR
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 5f4ebac14..28891162a 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
@@ -27,15 +27,16 @@ ADDR 0x8E
#include "../I2C_Head_Mux.h"
#include "drivers/I2C_Communication/I2C.h"
-#include "PT100_ADC.h"
#include "ADS122X04.h"
#include "drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h"
-#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
-HeadBoardTempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID - MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+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;
+
uint32_t SensorId_To_SlaveAdd(TEMPERATURE_SENSOR_ID_ENUM SensorId)
{
switch(SensorId)
@@ -128,7 +129,7 @@ uint32_t HeadADCPT100_Reset(void)
uint8_t i;
uint8_t Write_Buf[1];
- for(i=HEAD_PT100_ZONE_1_0X80_0;i<MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID; i++)
+ for(i=HEAD_PT100_ZONE_1_0X80_0;i<MAX_HEAD_CARD_TEMP_SENS_ID; i++)
{
//Reset the device
Write_Buf[0] = ADS122X_RESET_CMD;
@@ -150,7 +151,7 @@ uint32_t HeadADCPT100_StartSync(TEMPERATURE_SENSOR_ID_ENUM SensorId)
uint32_t Status = OK;
uint8_t Write_Buf[1];
- if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID))
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
Status = ERROR;
Write_Buf[0] = ADS122X_START_CMD;
@@ -168,7 +169,7 @@ uint32_t HeadADCPT100_PowerDown(TEMPERATURE_SENSOR_ID_ENUM SensorId)
uint32_t Status = OK;
uint8_t Write_Buf[1];
- if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID))
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
Status = ERROR;
Write_Buf[0] = ADS122X_POWERDOWN_CMD;
@@ -188,7 +189,7 @@ uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId)
uint32_t temp;
- if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID))
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
Status = ERROR;
//Write_Buf[0] = ADS122X_RDATA_CMD;
@@ -212,7 +213,7 @@ uint32_t HeadADCPT100_WriteReg(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t reg,
uint32_t Status = OK;
uint8_t Write_Buf[2];
- if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID))
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
Status = ERROR;
Write_Buf[0] = ADS122X_WRITE_CMD(reg);
@@ -229,12 +230,12 @@ uint8_t HeadADCPT100_InitConfigReg()
{
uint8_t i;
- for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_TEMPERATURE_SENSOR_ID;i=i+2) // for now we are using the same configuration to all of them
+ 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
{
// - - - - - - - - - - Reg0 - - - - - - - - - -
HeadTempSensConfig[i].Reg0.bits.PGA_BYPASS = ADS122X_USE_PGA ;//Bit 0
HeadTempSensConfig[i].Reg0.bits.GAIN = ADS122X_GAIN_8 ;//Bits 1-3
- HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7
+ //HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7
// - - - - - - - - - - Reg1 - - - - - - - - - -
@@ -259,8 +260,21 @@ uint8_t HeadADCPT100_InitConfigReg()
}
- HeadCard_Toggle_PT100_SEL(ODD);
+ for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMP_SENS_ID_0;i++)
+ {
+ HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7
+ HeadTempSensConfig[i].SEL = ODD;
+ }
+
+ for(i=HEAD_PT100_ZONE_2_0X80_1;i < MAX_HEAD_CARD_TEMP_SENS_ID_1;i++)
+ {
+ HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX ;//Bits 4-7
+ HeadTempSensConfig[i].SEL = EVEN;
+ }
+
+ HeadTempSensConfig[i].Config = 0;
+ HeadTempSensConfig[i].MUX_Status = UNKNOWN;
return OK;
}
@@ -269,7 +283,7 @@ uint8_t HeadADCPT100_InitConfigReg()
{
uint8_t i;
- for(i=HEAD_PT100_ZONE_1_0X80_0;i<MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID; i++)
+ for(i=HEAD_PT100_ZONE_1_0X80_0;i<MAX_HEAD_CARD_TEMP_SENS_ID; i++)
{
// - - - - - - - - - - Reg0 - - - - - - - - - -
HeadTempSensConfig[i].Reg0.bits.PGA_BYPASS = ADS122X_USE_PGA ;//Bit 0
@@ -311,9 +325,12 @@ uint32_t HeadADCPT100_Config_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint3
uint8_t Write_Buf[2];
- if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID))
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
return ERROR;
+ if(HeadTempSensConfig[SensorId].Config == DONE)
+ return Status;
+
Select_Main_Head_Mux_Channel();
switch(Stage)
@@ -340,6 +357,52 @@ uint32_t HeadADCPT100_Config_callback(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint3
Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2);
+ switch(SensorId)
+ {
+ case HEAD_PT100_ZONE_1_0X80_0:
+ case HEAD_PT100_ZONE_2_0X80_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_1_0X80_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_2_0X80_1].Config = DONE;
+ break;
+ case HEAD_PT100_ZONE_3_0X82_0:
+ case HEAD_PT100_ZONE_4_0X82_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_3_0X82_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_4_0X82_1].Config = DONE;
+ break;
+ case HEAD_PT100_ZONE_5_0X84_0:
+ case HEAD_PT100_ZONE_6_0X84_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_5_0X84_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_6_0X84_1].Config = DONE;
+ break;
+ case HEAD_PT100_ZONE_7_0X86_0:
+ case HEAD_PT100_ZONE_8_0X86_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_7_0X86_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_8_0X86_1].Config = DONE;
+ break;
+ case HEAD_PT100_ZONE_9_0X88_0:
+ case HEAD_PT100_ZONE_10_0X88_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_9_0X88_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_10_0X88_1].Config = DONE;
+ break;
+ case HEAD_PT100_ZONE_11_0X8A_0:
+ case HEAD_PT100_ZONE_12_0X8A_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_11_0X8A_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_ZONE_12_0X8A_1].Config = DONE;
+ break;
+ case HEAD_PT100_AIR_HEATER_1_0X8C_0:
+ case HEAD_PT100_AIR_HEATER_2_0X8C_1:
+ HeadTempSensConfig[HEAD_PT100_AIR_HEATER_1_0X8C_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_AIR_HEATER_2_0X8C_1].Config = DONE;
+ break;
+ case HEAD_PT100_MIXER_0X8E_0:
+ case HEAD_PT100_RESERVE_0X8E_1:
+ HeadTempSensConfig[HEAD_PT100_MIXER_0X8E_0].Config = DONE;
+ HeadTempSensConfig[HEAD_PT100_RESERVE_0X8E_1].Config = DONE;
+ break;
+ default:
+ break;
+ }
+
#endif
return Status;
@@ -353,14 +416,14 @@ void HeadADCPT100_SensorInitConfig()
for(Register=0;Register<=SENSOR_CONFIG_REG3;Register++)
{
- for(Sensor=HEAD_PT100_ZONE_1_0X80_0;Sensor<MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID; Sensor++)
+ for(Sensor=HEAD_PT100_ZONE_1_0X80_0;Sensor<MAX_HEAD_CARD_TEMP_SENS_ID; Sensor++)
{
HeadADCPT100_Config_callback( (TEMPERATURE_SENSOR_ID_ENUM)(Sensor), Register);
}
SysCtlDelay(1000);
}
}
-
+/*
uint32_t HeadCard_Toggle_PT100(bool Odd_OR_Even)//ODD/EVEN
{
uint32_t status = OK;
@@ -371,7 +434,7 @@ uint32_t HeadCard_Toggle_PT100(bool Odd_OR_Even)//ODD/EVEN
if(Odd_OR_Even == EVEN)
{
- for(i=HEAD_PT100_ZONE_2_0X80_1;i < MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID;i=i+2)
+ for(i=HEAD_PT100_ZONE_2_0X80_1;i < MAX_HEAD_CARD_TEMP_SENS_ID;i=i+2)
{
HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX;//Reg0 Bits 4-7
@@ -383,7 +446,7 @@ uint32_t HeadCard_Toggle_PT100(bool Odd_OR_Even)//ODD/EVEN
}
else
{
- for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID;i=i+2)
+ for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMP_SENS_ID;i=i+2)
{
HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX;//Reg0 Bits 4-7
@@ -396,6 +459,78 @@ uint32_t HeadCard_Toggle_PT100(bool Odd_OR_Even)//ODD/EVEN
return status;
}
+*/
+
+uint32_t HeadCard_Toggle_PT100(TEMPERATURE_SENSOR_ID_ENUM SensorId)//ODD/EVEN
+{
+ uint32_t status = OK;
+ uint8_t Write_Buf[2];
+
+ if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID))
+ return ERROR;
+
+ if(Save_Sel_Status != HeadTempSensConfig[SensorId].SEL)
+ {
+ HeadCard_Toggle_PT100_SEL(HeadTempSensConfig[SensorId].SEL);
+ Save_Sel_Status = HeadTempSensConfig[SensorId].SEL;
+ }
+
+ if(HeadTempSensConfig[SensorId].MUX_Status != HeadTempSensConfig[SensorId].Reg0.bits.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);
+
+ switch(SensorId)
+ {
+ case HEAD_PT100_ZONE_1_0X80_0:
+ case HEAD_PT100_ZONE_2_0X80_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_1_0X80_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_2_0X80_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_ZONE_3_0X82_0:
+ case HEAD_PT100_ZONE_4_0X82_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_3_0X82_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_4_0X82_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_ZONE_5_0X84_0:
+ case HEAD_PT100_ZONE_6_0X84_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_5_0X84_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_6_0X84_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_ZONE_7_0X86_0:
+ case HEAD_PT100_ZONE_8_0X86_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_7_0X86_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_8_0X86_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_ZONE_9_0X88_0:
+ case HEAD_PT100_ZONE_10_0X88_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_9_0X88_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_10_0X88_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_ZONE_11_0X8A_0:
+ case HEAD_PT100_ZONE_12_0X8A_1:
+ HeadTempSensConfig[HEAD_PT100_ZONE_11_0X8A_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_ZONE_12_0X8A_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_AIR_HEATER_1_0X8C_0:
+ case HEAD_PT100_AIR_HEATER_2_0X8C_1:
+ HeadTempSensConfig[HEAD_PT100_AIR_HEATER_1_0X8C_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_AIR_HEATER_2_0X8C_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ case HEAD_PT100_MIXER_0X8E_0:
+ case HEAD_PT100_RESERVE_0X8E_1:
+ HeadTempSensConfig[HEAD_PT100_MIXER_0X8E_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ HeadTempSensConfig[HEAD_PT100_RESERVE_0X8E_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX;
+ break;
+ default:
+ break;
+ }
+ }
+ return status;
+}
+
uint32_t HeadADCPT100_ReadReg(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t reg, uint8_t *readValue)
{
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 22188a947..ae0eb4a2a 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
@@ -98,6 +98,9 @@ typedef struct
ADS122C04_CONFIG_REGISTER_1 Reg1;//
ADS122C04_CONFIG_REGISTER_2 Reg2;
ADS122C04_CONFIG_REGISTER_3 Reg3;
+ uint8_t SEL;
+ bool Config; //true for done
+ unsigned char MUX_Status;
}HeadBoardTempSensConfigStruc;
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index d9af23cac..4003581c0 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -54,7 +54,7 @@
#include "Communication/Connection.h"
#include "Modules/General/buttons.h"
-#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
Task_Handle Millisecond_Task_Handle;
/******************** Definitions ********************************************/
@@ -103,7 +103,7 @@ MillisecMotorDataStruc ScrewSetMaxSpeedPending = {0};
MillisecMotorDataStruc ScrewMovePending = {0};
MillisecMotorDataStruc MotorData[NUM_OF_MOTORS] = {0};
MillisecMotorDataStruc SpeedSetPending[NUM_OF_MOTORS] = {0};
-MillisecMotorDataStruc PT100Data[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID] = {0};
+MillisecMotorDataStruc PT100Data[MAX_MAIN_CARD_TEMP_SENS_ID] = {0};
/******************** GLOBAL PARAMETERS ********************************************/
Mailbox_Handle MillisecMsgQ = NULL;
Mailbox_Handle TenMillisecMsgQ = NULL;
@@ -228,7 +228,7 @@ void OneMilliSecondMillisecInterrupt(UArg arg0)
uint32_t PT100Activity = 0;
int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback)
{
- if (TempSensorId >= MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID) return -1;
+ if (TempSensorId >= MAX_MAIN_CARD_TEMP_SENS_ID) return -1;
PT100Activity++; //read request
PT100Data[TempSensorId].Callback = Callback;
PT100Data[TempSensorId].Active = true;
@@ -421,7 +421,7 @@ uint32_t MillisecLoop(uint32_t tick)
}*/
if (PT100Data[Sensor_i].Active == true)
{
- if(Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if(Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID)
{
TemperatureSendSensorDummyClk(Sensor_i);
}
@@ -431,15 +431,15 @@ uint32_t MillisecLoop(uint32_t tick)
}
else if (PT100Data[Sensor_i].WaitForData == true) //Read request sent, data is waiting
{
- if(Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if(Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID)
{
TemperatureSensorReadFromFPGA_Res(Sensor_i); //got the data from the FPGA
}
- else if(Sensor_i < MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID)
+ else if(Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID)
{
HeadADCPT100_SendReadDataCommand(Sensor_i);
}
- else if(Sensor_i < MAX_WHS_CARD_TEMPERATURE_SENSOR_ID)
+ else if(Sensor_i < MAX_WHS_CARD_TEMP_SENS_ID)
{
//for WHS...
}
@@ -456,15 +456,15 @@ uint32_t MillisecLoop(uint32_t tick)
}
else if (PT100Data[Sensor_i].SyncRequired == true)
{
- if(Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID)
+ if(Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID)
{
TemperatureSensorSync(Sensor_i);
}
- else if(Sensor_i < MAX_HEAD_CARD_TEMPERATURE_SENSOR_ID)
+ else if(Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID)
{
HeadADCPT100_StartSync(Sensor_i);
}
- else if(Sensor_i < MAX_WHS_CARD_TEMPERATURE_SENSOR_ID)
+ else if(Sensor_i < MAX_WHS_CARD_TEMP_SENS_ID)
{
//StartSync WHS...
}
@@ -489,11 +489,11 @@ uint32_t MillisecLoop(uint32_t tick)
#endif
return OK;
}
-int TemperatureSum[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
-int TemperatureMin[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
-int TemperatureMax[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
-int TemperatureCount[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
-int TemperatureCalc[MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID];
+int TemperatureSum[MAX_MAIN_CARD_TEMP_SENS_ID];
+int TemperatureMin[MAX_MAIN_CARD_TEMP_SENS_ID];
+int TemperatureMax[MAX_MAIN_CARD_TEMP_SENS_ID];
+int TemperatureCount[MAX_MAIN_CARD_TEMP_SENS_ID];
+int TemperatureCalc[MAX_MAIN_CARD_TEMP_SENS_ID];
void MillisecUpdateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId,int temperature)
{
//if(TemperatureCount[SensorId]++>=10)
@@ -559,7 +559,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
if (m90msecTick)
{
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID;Sensor_i++)
+ for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
{
MillisecReadFromTempSensor(Sensor_i, NULL);
}
@@ -569,7 +569,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
Speed_Data = Calculate_Speed_Sensor_Velocity();
Read_Buttons_Reg();
//Ink_Cart_Led();
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID;Sensor_i++)
+ for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
{
MillisecUpdateTemperatures (Sensor_i,TemperatureSensorRead(Sensor_i));
}
@@ -627,7 +627,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
Read_Heaters_Current(Heater_i);
}*/
}
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID;Sensor_i++)
+ for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
{
TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
index 79795f6b1..273c497bd 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
@@ -25,7 +25,7 @@
#include "heaters.h"
#include "Drivers/Heater/Heater.h"
#include "Drivers/Heater/TemperatureSensor.h"
-#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
/******************** STRUCTURES AND ENUMs ********************************************/
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index a315bed5d..3504c3134 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -15,7 +15,7 @@
#include "drivers/Heater/TemperatureSensor.h"
#include "drivers/ADC_Sampling/adc.h"
-#include "Drivers/I2C_Communication/Head_Card/PT100/PT100_ADC.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
#include "Drivers/I2C_Communication/Head_Card/Fan/fan_click.h"
#include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h"
#include "drivers/Motors/Motor.h"