aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-01-13 09:15:00 +0200
committerAvi Levkovich <avi@twine-s.com>2020-01-13 09:15:00 +0200
commit78d001b5ba7f6fac4fe44a266692addbdc19d6ac (patch)
treebe790f13eda3d055f25f02d94122cfb1140074f6 /Software/Embedded_SW/Embedded
parent2323fb8dd806d91e35339d6e7e464a5ac97b6d7b (diff)
downloadTango-78d001b5ba7f6fac4fe44a266692addbdc19d6ac.tar.gz
Tango-78d001b5ba7f6fac4fe44a266692addbdc19d6ac.zip
advanced work on new head
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/.cproject2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/CommunicationTask.c10
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c36
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c8
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c17
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h3
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c88
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c19
-rw-r--r--Software/Embedded_SW/Embedded/Embedded.cfg2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c84
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGARWReg.c2
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c2
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);