diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-01-13 09:15:00 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-01-13 09:15:00 +0200 |
| commit | 78d001b5ba7f6fac4fe44a266692addbdc19d6ac (patch) | |
| tree | be790f13eda3d055f25f02d94122cfb1140074f6 /Software/Embedded_SW/Embedded | |
| parent | 2323fb8dd806d91e35339d6e7e464a5ac97b6d7b (diff) | |
| download | Tango-78d001b5ba7f6fac4fe44a266692addbdc19d6ac.tar.gz Tango-78d001b5ba7f6fac4fe44a266692addbdc19d6ac.zip | |
advanced work on new head
Diffstat (limited to 'Software/Embedded_SW/Embedded')
18 files changed, 207 insertions, 97 deletions
diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject index d1239ce44..9ffb91e97 100644 --- a/Software/Embedded_SW/Embedded/.cproject +++ b/Software/Embedded_SW/Embedded/.cproject @@ -170,7 +170,7 @@ </toolChain> </folderInfo> <sourceEntries> - <entry excluding="Drivers/I2C_Communication/WHS_Card/EEPROM|Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC|Drivers/I2C_Communication/WHS_Card/D_MAX11614|Drivers/I2C_Communication/WHS_Card/D_ADS122|Drivers/I2C_Communication/WHS_Card/D_AD5272|Drivers/I2C_Communication/WHS_Card/I2C_WHS_Fan_Mux.c|Drivers/I2C_Communication/WHS_Card/IO_Ports_TCA9555|Drivers/I2C_Communication/WHS_Card/D_TCA9546|Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan|Drivers/I2C_Communication/Head_Card/ADC/Head_ADC_old.c|src|EmbParam.cfg" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> + <entry excluding="Drivers/I2C_Communication/I2C_FIFO.c|Drivers/I2C_Communication/WHS_Card/EEPROM|Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC|Drivers/I2C_Communication/WHS_Card/D_MAX11614|Drivers/I2C_Communication/WHS_Card/D_ADS122|Drivers/I2C_Communication/WHS_Card/D_AD5272|Drivers/I2C_Communication/WHS_Card/I2C_WHS_Fan_Mux.c|Drivers/I2C_Communication/WHS_Card/IO_Ports_TCA9555|Drivers/I2C_Communication/WHS_Card/D_TCA9546|Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan|Drivers/I2C_Communication/Head_Card/ADC/Head_ADC_old.c|src|EmbParam.cfg" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/> </sourceEntries> </configuration> </storageModule> diff --git a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c index 99debf806..f0258c8da 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -34,7 +34,7 @@ struct serialBuffer { size_t used; size_t size; } typedef SerialBuffer; -#define SHORT_BUFFER_SIZE 200 +#define SHORT_BUFFER_SIZE 100 char CommShortRxBuffer[10][SHORT_BUFFER_SIZE]; char CommRxBuffer[2][COMM_MAX_BUFFER_SIZE]; SerialBuffer inBuffer[12]; @@ -224,12 +224,12 @@ int32_t SetCommunicationPath(bool UARTorUSB) CommType = UARTorUSB; return OK; } -/*#define MAX_CONT_LOG 199 +#define MAX_CONT_LOG 199 uint16_t cSendSize[MAX_CONT_LOG+1] = {0}; uint32_t cSendTime[MAX_CONT_LOG+1] = {0}; uint16_t cSendindex = 0; -*/ + /****************************************************************************** * ======== communicationTask ======== * Task for this function is created statically. See the project's .cfg file. @@ -258,12 +258,12 @@ void communicationTxTask(UArg arg0, UArg arg1) else if (CommType == isUART) Uart_Tx(CommTxMessage.Buff, CommTxMessage.msgSize); } -/* cSendSize[cSendindex] = CommTxMessage.msgSize; + cSendSize[cSendindex] = CommTxMessage.msgSize; cSendTime[cSendindex] = msec_millisecondCounter; if (cSendindex++>=MAX_CONT_LOG) cSendindex = 0; -*/ + if (diagnosticscontainer_buffer == CommTxMessage.Buff) diagnosticscontainer_buffer = 0; my_free(CommTxMessage.Buff); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c index f902277ae..21d6feed9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c @@ -56,10 +56,14 @@ uint32_t Deactivate_Head_Card_Heaters(HEADCARD_HEATERS_ENUM Head_Heater_ID) uint32_t Write_Head_Card_Heaters_Commands() { uint32_t status= OK; - Semaphore_pend(I2C_Sem, BIOS_WAIT_FOREVER); - status = Head_Write_IO_Reg(0x40,LOW_AND_HIGH); - status = Head_Write_IO_Reg(0x42,LOW); - Semaphore_post(I2C_Sem); + if(Semaphore_pend(I2C_Sem, BIOS_NO_WAIT)) + { + status = Head_Write_IO_Reg(0x40,LOW_AND_HIGH); + status = Head_Write_IO_Reg(0x42,LOW); + Semaphore_post(I2C_Sem); + } + else + Report(" Write_Head_Card_Heaters",__FILE__,__LINE__,255,RpWarning,0,0); return status; } @@ -68,17 +72,17 @@ bool Get_HeadCard_Heater_State(uint8_t Heater_ID) assert(Heater_ID<=HEADCARD_HIT_MIXER); return HeaterMap[Heater_ID]; } -uint8_t nop = 0; +//uint8_t nop = 0; uint32_t HeadCard_Control_Heaters(HEADCARD_HEATERS_ENUM Heater_ID, bool Pwr_Cmd)//ON/OFF { uint32_t status = OK; - assert(Heater_ID<=HEADCARD_HIT_MIXER); + //assert(Heater_ID<=HEADCARD_HIT_MIXER); HeaterMap[Heater_ID] = Pwr_Cmd; - if(Pwr_Cmd == ON) +/* if(Pwr_Cmd == ON) nop++; - +*/ switch(Heater_ID) { case HEADCARD_HIT_ZN1: @@ -95,7 +99,7 @@ uint32_t HeadCard_Control_Heaters(HEADCARD_HEATERS_ENUM Heater_ID, bool Pwr_Cmd) break; case HEADCARD_HIT_ZN4: Head_I2C_EXP1_0x40.bits.OUTPUT_SWON_ZN4 = Pwr_Cmd; - //status |= Head_Write_IO_Reg(0x40,LOW); + //status |= Head_Write_IO_Reg(0x40,LOW); break; case HEADCARD_HIT_ZN5: Head_I2C_EXP1_0x40.bits.OUTPUT_SWON_ZN5 = Pwr_Cmd; @@ -165,7 +169,21 @@ uint32_t HeadCard_Control_Heaters(HEADCARD_HEATERS_ENUM Heater_ID, bool Pwr_Cmd) Head_I2C_EXP2_0x42.bits.OUTPUT_ON_MIX = Pwr_Cmd; //status |= Head_Write_IO_Reg(0x42,LOW); break; + case HEADCARD_All_12_ZONES: + if(Pwr_Cmd == 0x01) + { + Head_I2C_EXP1_0x40.uchar[0] = 0XFF; + Head_I2C_EXP1_0x40.uchar[1] = 0X0F; + } + else + { + Head_I2C_EXP1_0x40.uchar[0] = 0; + Head_I2C_EXP1_0x40.uchar[1] = 0; + } + //status |= Head_Write_IO_Reg(0x40,LOW_AND_HIGH); + break; default: + status = ERROR; break; } return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h index ba8a72b43..fc3f88057 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h @@ -35,6 +35,7 @@ typedef enum HEADCARD_UPPER_HIT_OUT4, HEADCARD_HIT_MIXER, + HEADCARD_All_12_ZONES = 0X55, }HEADCARD_HEATERS_ENUM; 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 2ee740d0e..91e504c10 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 @@ -86,6 +86,8 @@ uint32_t I2C_Write_SensorId(uint32_t I2C_ID, TEMPERATURE_SENSOR_ID_ENUM SensorId I2C_ADC_ADS122C04_SLAVE_ADD = SensorId_To_SlaveAdd(SensorId); status |= I2C_Write(I2C_ID, I2C_ADC_ADS122C04_SLAVE_ADD, I2C_Write_buf, No_BytesToWrite); + if (status) + Report("I2C_Write_SensorId error", __FILE__,Task_self(),status, RpMessage,SensorId, 0); return status; } @@ -191,9 +193,9 @@ uint32_t Data_ADC_Head = 0; uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) { uint32_t Status = OK; - uint8_t Write_Buf[1]; + uint8_t Write_Buf[1]= 0; - uint8_t temp[3] = {0,0.0}; + uint8_t temp[3] = {0,0,0}; if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID)) Status = ERROR; @@ -208,6 +210,8 @@ uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 1); Status |= I2C_Read_SensorId(I2C_ID_HEAD_CARD, SensorId, temp, 3); + if (Status) + Report("HeadADCPT100_SendReadDataCommand error", __FILE__,Task_self(),Status, RpMessage,SensorId, 0); //First send the MSB so we need to reorder the bytes Data_ADC_Head = temp[0]; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c index aaaee1b5d..38f7d0494 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c @@ -16,7 +16,7 @@ #include "driverlib/rom_map.h" #include "driverlib/sysctl.h" #include "driverlib/i2c.h" - +#include "i2c.h" uint8_t Main_Mux_Flag = UNKNOWN; @@ -68,6 +68,8 @@ void Configuring_Master_I2C2(/*uint32_t ui32SysClock*/) #else I2CMasterInitExpClk(I2C2_BASE, ui32SysClock, false);//The last parameter sets the I2C data transfer rate: false for 100kbps and true for 400kbps #endif + + //I2CMasterTimeoutSet(I2C2_BASE, I2C_BUSY_DELAY); } //-------------------------------------------------------------- @@ -121,6 +123,8 @@ void Configuring_Master_I2C3(/*uint32_t ui32SysClock*/) I2CMasterInitExpClk(I2C3_BASE, ui32SysClock, false);//The last parameter sets the I2C data transfer rate: false for 100kbps and true for 400kbps #endif + //I2CMasterTimeoutSet(I2C3_BASE, I2C_BUSY_DELAY); + } @@ -174,6 +178,7 @@ void Configuring_Master_I2C4(/*uint32_t ui32SysClock*/) I2CMasterInitExpClk(I2C4_BASE, ui32SysClock, false);//The last parameter sets the I2C data transfer rate: false for 100kbps and true for 400kbps #endif + //I2CMasterTimeoutSet(I2C4_BASE, I2C_BUSY_DELAY); } void Init_All_I2C() @@ -221,7 +226,7 @@ void Write_I2C(uint32_t I2C_BASE,uint32_t Slave_Add, uint8_t Byte2Write) { I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_START); } - SysCtlDelay(3000); + SysCtlDelay(I2C_BUSY_DELAY); } @@ -230,12 +235,12 @@ uint8_t Read_I2C(uint32_t I2C_BASE,uint32_t Slave_Add) // Start Read from configured slave I2CMasterSlaveAddrSet(I2C_BASE, Slave_Add, true); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START); - SysCtlDelay(3000); + SysCtlDelay(I2C_BUSY_DELAY); uint8_t get = I2CMasterDataGet(I2C_BASE); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH); - SysCtlDelay(3000); + SysCtlDelay(I2C_BUSY_DELAY); //uint8_t get1 = I2CMasterDataGet(I2C4_BASE); @@ -265,7 +270,7 @@ uint8_t Write_Single_I2C(uint32_t I2C_BASE,uint32_t Slave_Add, uint8_t Byte2Writ I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_SINGLE_SEND); - SysCtlDelay(3000); + SysCtlDelay(I2C_BUSY_DELAY); return OK; } @@ -276,7 +281,7 @@ uint8_t Read_Single_I2C(uint32_t I2C_BASE,uint32_t Slave_Add) I2CMasterSlaveAddrSet(I2C_BASE, Slave_Add, true); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); - SysCtlDelay(3000); + SysCtlDelay(I2C_BUSY_DELAY); uint8_t get = I2CMasterDataGet(I2C_BASE); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index c2de36571..acd001091 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -9,6 +9,9 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_H_ + +#define I2C_BUSY_DELAY 3000//15000 + uint32_t I2C_control(uint32_t I2C_ID, uint32_t Slave_Add, bool RW,uint32_t Byte2Write ); void Init_All_I2C(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c index 490376710..26b0c86c9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c @@ -18,24 +18,57 @@ #include "driverlib/rom_map.h" #include "driverlib/sysctl.h" #include "driverlib/i2c.h" - +#include "inc/hw_i2c.h" #include "i2c.h" + + + + +//***************************************************************************** +//! Indicates whether or not the I2C bus has timed out. +//! +//! \param ui32Base is the base address of the I2C module. +//! +//! This function returns an indication of whether or not the I2C bus has time +//! out. The I2C Master Timeout Value must be set. +//! +//! \return Returns \b true if the I2C bus has timed out; otherwise, returns +//! \b false. +//***************************************************************************** +bool I2CMasterTimeout(uint32_t ui32Base) +{ + // Return the bus timeout status + if(HWREG(ui32Base + I2C_O_MCS) & I2C_MCS_CLKTO) + { + return(true); + } + else + { + return(false); + } +} + uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data, unsigned int len) { uint32_t status = OK; + if (I2CMasterBusy(I2C_BASE)) + { + Report("I2C_WriteBuff busy", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + return 0xFF; + } I2CMasterSlaveAddrSet(I2C_BASE, addr, false); I2CMasterDataPut(I2C_BASE, *data); if (len == 1) { I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_SINGLE_SEND); -// while(I2CMasterBusy(I2C_BASE)); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); // // return I2CMasterErr(I2C_BASE) == I2C_MASTER_ERR_NONE; - status = I2CMasterErr(I2C_BASE); - SysCtlDelay(3000); + status |= I2CMasterErr(I2C_BASE); + SysCtlDelay(I2C_BUSY_DELAY); } else { @@ -43,11 +76,11 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat // Start sending consecutive data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_START); - // while(I2CMasterBusy(I2C_BASE)); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); // if (I2CMasterErr(I2C_BASE) != I2C_MASTER_ERR_NONE) // return false; - status = I2CMasterErr(I2C_BASE); - SysCtlDelay(3000); + status |= I2CMasterErr(I2C_BASE); + SysCtlDelay(I2C_BUSY_DELAY); len--; data++; @@ -56,11 +89,11 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat while(len > 1){ I2CMasterDataPut(I2C_BASE, *data); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_CONT); - // while(I2CMasterBusy(I2C_BASE)); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); // if (I2CMasterErr(I2C_BASE) != I2C_MASTER_ERR_NONE) // return false; - status = I2CMasterErr(I2C_BASE); - SysCtlDelay(3000); + status |= I2CMasterErr(I2C_BASE); + SysCtlDelay(I2C_BUSY_DELAY); len--; data++; } @@ -68,11 +101,11 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat // Send last piece of data I2CMasterDataPut(I2C_BASE, *data); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH); - // while(I2CMasterBusy(I2C_BASE)); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); // // return I2CMasterErr(I2C_BASE) == I2C_MASTER_ERR_NONE; - status = I2CMasterErr(I2C_BASE); - SysCtlDelay(3000); + status |= I2CMasterErr(I2C_BASE); + SysCtlDelay(I2C_BUSY_DELAY); } return status; @@ -84,29 +117,34 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data { uint32_t status = OK; + if (I2CMasterBusy(I2C_BASE)) + { + Report("I2C_ReadBuff busy", __FILE__,__LINE__,status, RpMessage,Task_self(), 0); + return 0xFF; + } I2CMasterSlaveAddrSet(I2C_BASE, addr, true); if (len == 1) { I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); - //while(I2CMasterBusy(I2C_BASE)); - SysCtlDelay(3000); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); + SysCtlDelay(I2C_BUSY_DELAY); *data = I2CMasterDataGet(I2C_BASE); //return I2CMasterErr(I2C_BASE) == I2C_MASTER_ERR_NONE; - status = I2CMasterErr(I2C_BASE); + status |= I2CMasterErr(I2C_BASE); } else { // Start receiving consecutive data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START); - //while(I2CMasterBusy(I2C_BASE)); - SysCtlDelay(3000); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); + SysCtlDelay(I2C_BUSY_DELAY); *data = I2CMasterDataGet(I2C_BASE); // if (I2CMasterErr(I2C_BASE) != I2C_MASTER_ERR_NONE) // return false; - status = I2CMasterErr(I2C_BASE); + status |= I2CMasterErr(I2C_BASE); len--; data++; @@ -115,12 +153,12 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data // Continue receiving consecutive data while(len > 1){ I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT); - //while(I2CMasterBusy(I2C_BASE)); - SysCtlDelay(3000); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); + SysCtlDelay(I2C_BUSY_DELAY); *data = I2CMasterDataGet(I2C_BASE); // if (I2CMasterErr(I2C_BASE) != I2C_MASTER_ERR_NONE) // return false; - status = I2CMasterErr(I2C_BASE); + status |= I2CMasterErr(I2C_BASE); len--; data++; @@ -128,12 +166,12 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data // Receive last piece of data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH); - //while(I2CMasterBusy(I2C_BASE)); - SysCtlDelay(3000); + //while ( I2CMasterBusy(I2C_BASE) && !I2CMasterTimeout( I2C_BASE) ); + SysCtlDelay(I2C_BUSY_DELAY); *data = I2CMasterDataGet(I2C_BASE); //return I2CMasterErr(I2C_BASE) == I2C_MASTER_ERR_NONE; - status = I2CMasterErr(I2C_BASE); + status |= I2CMasterErr(I2C_BASE); } return status; } 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 bfae7e3f6..c5c0363a9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -25,7 +25,9 @@ typedef enum Midtank_Pressure_Reading, Heater_Current_Reading, PT100_Reading, - HeaterWriting + HeaterWriting, + Inputs_Reading,// I/O + Outputs_Writing, }I2C_ReadingMessages; typedef struct I2C_ReadingMessage{ @@ -70,7 +72,7 @@ void Trigger_MidTank_Pressure_Read(void) void Trigger_PT100_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; - uint8_t Midtank_i; + //uint8_t Midtank_i; I2C_ReadingMessage.messageId = PT100_Reading; if (I2C_ReadingMsgQ != NULL) @@ -81,7 +83,7 @@ void Trigger_PT100_Read(void) void Trigger_HeaterWriting(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; - uint8_t Midtank_i; + //uint8_t Midtank_i; I2C_ReadingMessage.messageId = HeaterWriting; if (I2C_ReadingMsgQ != NULL) @@ -115,14 +117,25 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) Read_Heaters_Current(I2C_ReadingMessage.parameter); #endif break; + +#ifdef Use_Head_Card + case PT100_Reading: Set_HeadCard_PT100(); break; case HeaterWriting: Write_Head_Card_Heaters_Commands(); break; + case Inputs_Reading: + Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS + break; + case Outputs_Writing: + + break; +#endif default: break; } } } + diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 3c81a0382..4a75e7366 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -111,7 +111,7 @@ Program.global.FPGALoad = Task.create("&FPGALoadTask", FPGALoad); var I2C_Reading = new Task.Params(); I2C_Reading.instance.name = "I2C_Reading"; I2C_Reading.stackSize = 2048; -I2C_Reading.priority = 3; +I2C_Reading.priority = 8; Program.global.I2C_Reading = Task.create("&I2C_ReadingTask", I2C_Reading); var ControlTaskParams = new Task.Params(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5cccc5b45..cd40afd9c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -648,7 +648,7 @@ uint32_t MillisecLowLoop(uint32_t tick) for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) #endif { - MillisecReadFromTempSensor(Sensor_i, NULL); + // MillisecReadFromTempSensor(Sensor_i, NULL); } } if (Hundred_msTick) @@ -691,7 +691,7 @@ uint32_t MillisecLowLoop(uint32_t tick) DispensersCollectionCall(); #ifdef Use_Head_Card - Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS + //Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS #endif } diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 598c5df8a..960cbaa42 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -369,7 +369,7 @@ uint32_t GenHWInitCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) { uint32_t status = 0; - int Dancer_i, Dispenser_i,PID_i; + int Dancer_i, Dispenser_i,PID_i,tempheaterId; if (UploadRequest == NULL) { @@ -428,7 +428,16 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) for (PID_i = 0; PID_i < request->n_pidcontrols ; PID_i++) { if (isHeater(request->pidcontrols[PID_i]->hardwarepidcontroltype)) + { status += HeaterConfigRequestMessage(request->pidcontrols[PID_i]); + if ((request->pidcontrols[PID_i]->hardwarepidcontroltype>=HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1)&& + (request->pidcontrols[PID_i]->hardwarepidcontroltype<=HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6)) + { + tempheaterId = (request->pidcontrols[PID_i]->hardwarepidcontroltype-HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1+HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7); + request->pidcontrols[PID_i]->hardwarepidcontroltype = tempheaterId; + status += HeaterConfigRequestMessage(request->pidcontrols[PID_i]); + } + } else if ((request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__MotorDryer)&& (request->pidcontrols[PID_i]->hardwarepidcontroltype < HARDWARE_PID_CONTROL_TYPE__Dispenser1)) status += MotorPidRequestMessage(request->pidcontrols[PID_i]); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 4305fac0e..e376a99fe 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -109,53 +109,65 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) HARDWARE_PID_CONTROL_TYPE__MixerHeater, false, ProcessParams->mixertemp); if (ProcessParams->headzone1temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true, - ProcessParams->headzone1temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false, - ProcessParams->headzone1temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp); + } if (ProcessParams->headzone2temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true, - ProcessParams->headzone2temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false, - ProcessParams->headzone2temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp); + } if (ProcessParams->headzone3temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true, - ProcessParams->headzone3temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone3temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false, - ProcessParams->headzone3temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false,ProcessParams->headzone3temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp); + } if (ProcessParams->headzone4temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true, - ProcessParams->headzone4temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone4temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false, - ProcessParams->headzone4temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone4temp); + } if (ProcessParams->headzone5temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true, - ProcessParams->headzone5temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone5temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false, - ProcessParams->headzone5temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone5temp); + } if (ProcessParams->headzone6temp>1) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true, - ProcessParams->headzone6temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone6temp); + } else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false, - ProcessParams->headzone6temp); + { + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp); + } if (ProcessParams->dryerzone1temp>1) status |= HeaterCommandRequestMessage( HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true, diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 50796d3c9..f748c9e51 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -459,10 +459,12 @@ int GetFilteredHeaterRead(int HeaterId) * initialized all global data *************************************************************************************/ bool HeaterRestarted[HEATER_TYPE_MAX_HEATERS] = {false,false,false,false,false,false,false,false,false,false}; -uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) +uint32_t HeaterCommandRequestMessage(int HeaterNum, bool OnOff, int Temperature) { //uint32_t status = NOT_SUPPORTED; //MessageContainer responseContainer; + int HeaterId = getHeaterId(HeaterNum); + if (HeaterControl[HeaterId].configured == false) { ReportWithPackageFilter(HeatersFilter,"HeaterControl not configured",__FILE__,__LINE__,HeaterId,RpError, 0,0); diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c index 15117e616..aaa5978bb 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -402,8 +402,7 @@ uint32_t MidTankReading(void) MidTankCounter = 0; if (IFS_info.Ink.time_out > 0) return ERROR; - MidTankReadControlId = AddControlCallback( MidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 ); - + MidTankReadControlId = AddControlCallback( "MidTankRead", MidTankCallBackFunction, 300/*eHundredMillisecond*/, TemplateDataReadCBFunction,0,0, 0 ); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 013d22968..ea2ad594a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -30,6 +30,8 @@ #include <Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h> #include "drivers/adc_sampling/adc.h" +extern double NumberOfRotationPerPassage; // how many rotations per spool passage + //#include "graphics_adapter.h" extern uint8_t Input_Voltage; extern uint8_t Test_Read_Buf[4]; @@ -124,10 +126,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) { Disconnect_Mixer_and_12_Heaters_Latch(); HeadCard_Control_Heaters((request -> delay & 0xFF00)>>8, TRUE); + //Write_Head_Card_Heaters_Commands(); Connect_Mixer_and_12_Heaters_Latch(); } else + { HeadCard_Control_Heaters((request -> delay & 0xFF00)>>8, FALSE); + //Write_Head_Card_Heaters_Commands(); + } } } @@ -293,7 +299,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if(request->amount == 0xF1) { LOG_ERROR(request->delay,"NumberOfRotationPerPassage"); - NumberOfRotationPerPassage = (float)(request->delay)/1000; + //NumberOfRotationPerPassage = (float)(request->delay)/1000; } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c index a058d54f9..de385a32f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c @@ -97,7 +97,7 @@ void Stub_FpgaWriteRegRequest(MessageContainer* requestContainer) ptr = (volatile short *) (request->address); if (request->address == (FPGA3_BASE | 0x3D0)) { - ctlId = AddControlCallback( ResetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,ptr,ptr, 0 ); + ctlId = AddControlCallback( "Reset_MCU", ResetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,ptr,ptr, 0 ); } else *ptr = (request->value & 0xFFFF); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 1fb77a540..b9180625c 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -653,7 +653,7 @@ uint32_t AbortPowerDownFunc(MessageContainer* requestContainer) SendChars((char*)container_buffer, container_size); PowerDownUpdate(POWER_OFF_CANCELLED); - ctlId = AddControlCallback( AbortPowerDownResetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + ctlId = AddControlCallback("PoweOff", AbortPowerDownResetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); Report("HWSystemResetRequest", __FILE__,__LINE__,0, RpMessage, 2, 0); |
