diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-18 09:02:04 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-18 09:02:04 +0200 |
| commit | a61a911d1ebde107ba7bf210af7e753e692d93e2 (patch) | |
| tree | 95355ea06f74b4a6a685e7fd2b1510b9d72c3d51 /Software/Embedded_SW/Embedded/Modules | |
| parent | 1b92f30f6dfa27392ffd8460ebeb17c17550db7b (diff) | |
| parent | 615bc666c8d0618d93bc4401a74928535c2cc7f6 (diff) | |
| download | Tango-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')
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; |
