diff options
| author | Avi Levkovich <avi@twine-s.com> | 2019-11-10 10:13:28 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2019-11-10 10:13:28 +0200 |
| commit | 0ceddf4eb2f986b3623349fbbfe614328e9937df (patch) | |
| tree | 5f1083d4fc086cf42116993cf48100536ba81f2b /Software/Embedded_SW/Embedded | |
| parent | e5e2a9ece870a3d9dafb22420ee888abaae6adcb (diff) | |
| download | Tango-0ceddf4eb2f986b3623349fbbfe614328e9937df.tar.gz Tango-0ceddf4eb2f986b3623349fbbfe614328e9937df.zip | |
Head card PT100
Diffstat (limited to 'Software/Embedded_SW/Embedded')
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" |
