diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-08 14:51:46 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-12-08 14:51:46 +0200 |
| commit | aeabb681d16451e191a1620d4eebf40549771491 (patch) | |
| tree | 33183bb64916935d68e2399028b9e9c0952e098f /Software/Embedded_SW/Embedded/Modules/Control | |
| parent | 3cd59dd3b04168ad91cb1fe51231e9b3ddd74705 (diff) | |
| download | Tango-aeabb681d16451e191a1620d4eebf40549771491.tar.gz Tango-aeabb681d16451e191a1620d4eebf40549771491.zip | |
Support for new head in ProtoBif and embedded (initial)
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 112 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h | 1 |
2 files changed, 90 insertions, 23 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 2f4a1e2d2..48a28ffe4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -50,7 +50,6 @@ #include "drivers/Flash_Memory/fatfs/ff.h" #include "drivers/Flash_ram/FlashProgram.h" -#include "third_party/fatfs/src/ffconf.h" #include "Common/SWUpdate/FileSystem.h" #include "Communication/Connection.h" @@ -521,9 +520,45 @@ int MillisecCalculateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId) } int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId) { + if (SensorId > WHS_PT100_4_0X82_1) + return 0; return TemperatureCalc[SensorId]; } bool RapidPressureRead = false; +float PressureSum[MAX_SYSTEM_DISPENSERS]; +float PressureMin[MAX_SYSTEM_DISPENSERS]; +float PressureMax[MAX_SYSTEM_DISPENSERS]; +float PressureCount[MAX_SYSTEM_DISPENSERS]; +float PressureCalc[MAX_SYSTEM_DISPENSERS]; +void MillisecUpdatePressures (int SensorId,float Pressure) +{ + //if(PressureCount[SensorId]++>=10) + // PressureCount[SensorId] = 0; + PressureCount[SensorId]++; + if (PressureMax[SensorId]<Pressure) PressureMax[SensorId]=Pressure; + if (PressureMin[SensorId]>Pressure) PressureMin[SensorId]=Pressure; + PressureSum[SensorId]+=Pressure; +} +float MillisecCalculatePressures (int SensorId) +{ + float calc = 0; + PressureSum[SensorId]-=PressureMax[SensorId]; + PressureSum[SensorId]-=PressureMin[SensorId]; + calc = PressureSum[SensorId] / (PressureCount[SensorId]-2); + + PressureSum[SensorId] = 0; + PressureCount[SensorId] = 0; + PressureMin[SensorId] = 30000; + PressureMax[SensorId] = -30000; + return calc; +} +float MillisecGetPressures (int SensorId) +{ + if (SensorId > MAX_SYSTEM_DISPENSERS) + return 0; + return PressureCalc[SensorId]; +} + void setRapidPressureRead(bool value) { RapidPressureRead = value; @@ -532,18 +567,26 @@ void setRapidPressureRead(bool value) uint16_t PumpCounter = 0; uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i,temp; + uint8_t Motor_i,Disp_i,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; //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 , m90msecTick, Onesecond_Tick,O900Millisecond_Tick,OneMinute_Tick,OneHourTick; + bool Ten_msTick, Hundred_msTick , 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; Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false; m90msecTick = (tick%eHundredMillisecond == 90) ?true:false; - O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false; + O100Millisecond_Tick = (tick%eOneSecond == 100) ?true:false; + O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false; + O400Millisecond_Tick = (tick%eOneSecond == 400) ?true:false; + O500Millisecond_Tick = (tick%eOneSecond == 500) ?true:false; + O600Millisecond_Tick = (tick%eOneSecond == 600) ?true:false; + //O800Millisecond_Tick = (tick%eOneSecond == 800) ?true:false; + //O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false; Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; OneHourTick = (tick%eOneHour == 0) ?true:false; @@ -562,7 +605,11 @@ uint32_t MillisecLowLoop(uint32_t tick) } if (m90msecTick) { +#ifdef Use_Head_Card + for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#else for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#endif { MillisecReadFromTempSensor(Sensor_i, NULL); } @@ -572,7 +619,11 @@ uint32_t MillisecLowLoop(uint32_t tick) Speed_Data = Calculate_Speed_Sensor_Velocity(); Read_Buttons_Reg(); //Ink_Cart_Led(); +#ifdef Use_Head_Card + for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#else for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#endif { MillisecUpdateTemperatures (Sensor_i,TemperatureSensorRead(Sensor_i)); } @@ -588,33 +639,26 @@ uint32_t MillisecLowLoop(uint32_t tick) { for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) { - CalculateDispenserPressure(Disp_i); + MillisecUpdatePressures(Disp_i, CalculateDispenserPressure(Disp_i)); } ADC_TriggerCollection(); } DispensersCollectionCall(); } - - if ((O900Millisecond_Tick)&&(RapidPressureRead == false)) + if (O100Millisecond_Tick) { - ADC_TriggerCollection(); + Trigger_Heater_Current_Read(); } - if (Onesecond_Tick) + if (O200Millisecond_Tick) { - if (RapidPressureRead == false) - { - for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) - { - CalculateDispenserPressure(Disp_i); - } - } FPGA_GetAllDispensersValveBusyOCD(); temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; SystemFansStatus = temp & 0xE0; - MachineUpdateResponseFunc(); - //KeepAliveOneSecondCall(); + } + if (O400Millisecond_Tick) + { for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { if (Motor_i == HARDWARE_MOTOR_TYPE__MOTO_SCREW) @@ -622,18 +666,40 @@ uint32_t MillisecLowLoop(uint32_t tick) if (isMotorConfigured(Motor_i)) MotorGetStatusFromFPGA(Motor_i); } - if (!(OneMinute_Tick)) + } + if ((O500Millisecond_Tick)&&(RapidPressureRead == false)) + { + ADC_TriggerCollection(); + } + if (O600Millisecond_Tick) + { + if (RapidPressureRead == false) { - Trigger_Heater_Current_Read(); - /*for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++) + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) { - Read_Heaters_Current(Heater_i); - }*/ + CalculateDispenserPressure(Disp_i); + } } + } + if (Onesecond_Tick) + { + MachineUpdateResponseFunc(); + //KeepAliveOneSecondCall(); +#ifdef Use_Head_Card + for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#else for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) +#endif { TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i); } + if (RapidPressureRead == true) + { + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) + { + PressureCalc[Disp_i] = MillisecCalculatePressures(Disp_i); + } + } } if (OneMinute_Tick) { diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index 4edc1a8ed..9335a6d08 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -34,6 +34,7 @@ uint32_t getDrawerFansStatus(void); uint32_t getSystemFansStatus(void); uint8_t getGasReading(void); int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId); +float MillisecGetPressures (int SensorId); void setRapidPressureRead(bool value); |
