aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-12-18 09:02:04 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-12-18 09:02:04 +0200
commita61a911d1ebde107ba7bf210af7e753e692d93e2 (patch)
tree95355ea06f74b4a6a685e7fd2b1510b9d72c3d51 /Software/Embedded_SW/Embedded/Modules
parent1b92f30f6dfa27392ffd8460ebeb17c17550db7b (diff)
parent615bc666c8d0618d93bc4401a74928535c2cc7f6 (diff)
downloadTango-a61a911d1ebde107ba7bf210af7e753e692d93e2.tar.gz
Tango-a61a911d1ebde107ba7bf210af7e753e692d93e2.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c48
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c59
4 files changed, 115 insertions, 6 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index b5fff9340..862a0f8cf 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -580,10 +580,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
//call all modules Millisec functions
//test dancers and speed encoders
//check all callback units (state machine waiting for completion of a change)
- bool Ten_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick;
+ bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick;
bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick;
//bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,O900Millisecond_Tick;
Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
+ Fifty_msTick = (tick%eHundredMillisecond == 0) ?true:false; //eFiftyMillisecond
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
m20msecTick = (tick%eHundredMillisecond == 20) ?true:false;
m70msecTick = (tick%eHundredMillisecond == 70) ?true:false;
@@ -612,6 +613,12 @@ uint32_t MillisecLowLoop(uint32_t tick)
Machine_Idle_Breathing_Led();
}
#ifdef Use_Head_Card
+ if(Fifty_msTick)
+ {
+ Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec)
+ }
+#endif
+#ifdef Use_Head_Card
if (m20msecTick) //read odd PT1000
{
for (Sensor_i = HEAD_PT100_ZONE_1_0X80_0;Sensor_i < HEAD_PT100_ZONE_2_0X80_1;Sensor_i++)
@@ -670,6 +677,10 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
DispensersCollectionCall();
+#ifdef Use_Head_Card
+ Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS
+#endif
+
}
if (O100Millisecond_Tick)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h
index 4b82aab30..78e24f495 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.h
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h
@@ -17,6 +17,7 @@ typedef enum {
eNoControl = 0,
eOneMillisecond = 1,
eTenMillisecond = 10,
+ eFiftyMillisecond = 50,
eHundredMillisecond = 100,
eOneSecond = 1000,
eOneMinute = 60000,
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 77edc45b5..45cc80dff 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -24,6 +24,10 @@
#include "Modules/IDS/ids_ex.h"
#include "Modules/Control/MillisecTask.h"
+#include <Drivers/I2C_Communication/I2C.h>
+#include <Drivers/I2C_Communication/Head_Card/I2C_Head_Mux.h>
+#include <Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h>
+
//#include "graphics_adapter.h"
extern uint8_t Input_Voltage;
extern uint8_t Test_Read_Buf[4];
@@ -74,6 +78,50 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
+ else
+ if(request->amount == 0x0EAD) //Head Card I/O
+ {
+ uint8_t Write_Buf[2] = {0,0};
+ uint8_t Script_Slave_Add = request -> delay >> 16;
+ Write_Buf[0] = request -> delay >> 8;
+ Write_Buf[1] = request -> delay & 0x0000FF;
+
+ Select_Main_Head_Mux_Channel();
+ I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 2);
+
+ delayms(1);
+
+ uint8_t Read_Buf[2] = {0,0};
+ I2C_Read(I2C_ID_HEAD_CARD, Script_Slave_Add + 1, Read_Buf, 2);
+ response.progress = Read_Buf[1] << 8 | Read_Buf[0];
+ response.has_progress = true;
+
+ }
+ else
+ if(request->amount == 0xFEAD) //functions Head Card I/O
+ {
+ Select_Main_Head_Mux_Channel();
+
+ if((request -> delay & 0xFFF000) == 0xCAF000)//Actuator
+ {
+ HeadCard_Actuators_Control((ACTUATORS)((request -> delay & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
+ response.progress = HeadCard_Actuators_Status((ACTUATORS)(request -> delay & 0x100)>>8);
+ response.has_progress = true;
+ }
+ else
+ if((request -> delay & 0xFF0000) == 0xCA0000)//control all heaters
+ {
+ if(request -> delay & 0x01)
+ {
+ Disconnect_Mixer_and_12_Heaters_Latch();
+ HeadCard_Control_Heaters((request -> delay & 0xFF00)>>8, TRUE);
+ Connect_Mixer_and_12_Heaters_Latch();
+ }
+ else
+ HeadCard_Control_Heaters((request -> delay & 0xFF00)>>8, FALSE);
+ }
+
+ }
else
if((request->amount == 0xFAC0) /*&& (request->delay == 0xFAC)*/) //Head Fan control
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c
index 4bac7f7e4..f4384ab94 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c
@@ -39,6 +39,7 @@
#include "Modules/thread/thread.h"
#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
+#include "Drivers/I2C_Communication/Head_Card/PT100/ADS122X04.h"
void Stub_TempSensorRequest(MessageContainer* requestContainer)
{
@@ -71,7 +72,7 @@ void Stub_TempSensorRequest(MessageContainer* requestContainer)
}
else if(request->stemp_sensor_id < MAX_HEAD_CARD_TEMP_SENS_ID)
{
- response.temperature_c_mult_by_100 = Test_ADS122X_Internal_Temperature_Sensor(request->stemp_sensor_id);//head / WHS
+ response.temperature_c_mult_by_100 = Test_ADS122X_Internal_Temperature_Sensor(request->stemp_sensor_id) *100;//head / WHS
}
response.has_temperature_c_mult_by_100 = true;
@@ -83,22 +84,70 @@ void Stub_TempSensorRequest(MessageContainer* requestContainer)
first_time_flag = TRUE;
}
- else
+ else if(request->stemp_sensor_id & 0x8000) //Init + Read the temperature from ADC
{
+ request->stemp_sensor_id = request->stemp_sensor_id &~0x8000;
response.temp_sensor_id = request->stemp_sensor_id;
response.has_temp_sensor_id = true;
+ if(first_time_flag == TRUE)
+ {
+ FPGA_SensorInitConfig();
+ HeadADCPT100_SensorInitConfig();
+ first_time_flag = FALSE;
+ }
+
+ if(request->stemp_sensor_id < MAX_MAIN_CARD_TEMP_SENS_ID)
+ {
+ }
+ else
+ if(request->stemp_sensor_id < MAX_HEAD_CARD_TEMP_SENS_ID)
+ {
+ control_HeadCard_PT100(HEAD_CONFIG_ODD_PT100_MUX);
+ delayms(50);//must use deley
+ control_HeadCard_PT100(HEAD_CONFIG_EVEN_PT100_MUX);
+ //delayms(5000);//must use deley
+ //control_HeadCard_PT100(HEAD_CONFIG_ODD_PT100_MUX);
+ //response.temperature_c_mult_by_100 = TempSensorResponse[request->stemp_sensor_id].PT100_ADC_Reading_Bits;
+ //response.temperature_c_mult_by_100 = TempSensorResponse[12].Temperature_C_mult_by_100;
+ }
+ }
+ else //
+ {
+
+ response.temp_sensor_id = request->stemp_sensor_id;
+ response.has_temp_sensor_id = true;
- //Debug_Start_PT00(request->stemp_sensor_id);
if(first_time_flag == TRUE)
{
FPGA_SensorInitConfig();
- HeadADCPT100_InitConfigReg();
+ HeadADCPT100_SensorInitConfig();
first_time_flag = FALSE;
}
+ //Debug_Start_PT00(request->stemp_sensor_id);
+
+ if(request->stemp_sensor_id < MAX_MAIN_CARD_TEMP_SENS_ID)
+ {
+ response.temperature_c_mult_by_100 = TempSensorResponse[request->stemp_sensor_id].Temperature_C_mult_by_100;
+ }
+ else if(request->stemp_sensor_id < MAX_HEAD_CARD_TEMP_SENS_ID)
+ {
+ /*
+ //--------------------------------------------------------------------------------------
+ if(request->stemp_sensor_id < HEAD_PT100_ZONE_2_0X80_1)
+ control_HeadCard_PT100(HEAD_CONFIG_ODD_PT100_MUX);
+ else
+ control_HeadCard_PT100(HEAD_CONFIG_EVEN_PT100_MUX);
+ //---------------------------------------------------------------------------------------
+
+ */
+ //response.temperature_c_mult_by_100 = TempSensorResponse[request->stemp_sensor_id].PT100_ADC_Reading_Bits;
+ //delayms(1000);
+ response.temperature_c_mult_by_100 = TempSensorResponse[request->stemp_sensor_id].Temperature_C_mult_by_100;
+ }
@@ -131,7 +180,7 @@ void Stub_TempSensorRequest(MessageContainer* requestContainer)
SysCtlDelay(400);
TemperatureSensorReadFromFPGA_Res((TEMPERATURE_SENSOR_ID_ENUM)request->stemp_sensor_id);
*/
- response.temperature_c_mult_by_100 = TempSensorResponse[request->stemp_sensor_id].Temperature_C_mult_by_100;
+
response.has_temperature_c_mult_by_100 = true;