diff options
| author | Avi Levkovich <avi@twine-s.com> | 2018-08-21 09:17:46 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2018-08-21 09:17:46 +0300 |
| commit | 193f7f5e096751da747b0fe9d145bd43a02d7340 (patch) | |
| tree | ce0aa138252ca76426fbbc84e1753d7e410011a9 /Software/Embedded_SW/Embedded/Modules/Control | |
| parent | 98493042a5dace2535dd4343c047eaf1bd784ae3 (diff) | |
| parent | f468145c16b5c677201327feeb4f207c21df0b0b (diff) | |
| download | Tango-193f7f5e096751da747b0fe9d145bd43a02d7340.tar.gz Tango-193f7f5e096751da747b0fe9d145bd43a02d7340.zip | |
merge after conflict
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
3 files changed, 37 insertions, 65 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 75462bd7c..9f515062d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -178,11 +178,7 @@ int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback) { if (TempSensorId >= MAX_TEMPERATURE_SENSOR_ID) return -1; PT100Activity++; //read request - PT100Activity++; //get response - PT100Activity++; //read request PT100Data[TempSensorId].Callback = Callback; - PT100Data[TempSensorId].WaitForData = true; - PT100Data[TempSensorId].DataRequired = true; PT100Data[TempSensorId].Active = true; return OK; @@ -265,10 +261,12 @@ int32_t MillisecReadFromMotor(TimerMotors_t MotorId, unsigned long Data, int Len return Mailbox_post(MotorsMsgQ[MotorId] , &MotorData, BIOS_NO_WAIT); else return false; } + +//TEMPERATURE_SENSOR_ID_ENUM Sensor_Read = 0; uint32_t MillisecLoop(uint32_t tick) { - uint8_t Motor_i; - uint8_t Sensor_i; + uint8_t Motor_i,Disp_i; + TEMPERATURE_SENSOR_ID_ENUM Sensor_i; unsigned int MotorInfo = 0; static int temp=0; //call all modules Millisec functions @@ -342,46 +340,28 @@ uint32_t MillisecLoop(uint32_t tick) { //if (TempDriverDriverResponse[Sensor_i].Busy == true) // continue; - if (PT100Data[Sensor_i].SyncRequired == true) + if (PT100Data[Sensor_i].Active == true) { - TemperatureSendSensorDummyClk((TEMPERATURE_SENSOR_ID_ENUM)Sensor_i); - PT100Data[Sensor_i].SyncRequired = false; - /*if (PT100Data[Sensor_i].DataRequired == true) - { - PT100Data[Sensor_i].WaitForData = true; // mark the motor for data request next round - } - else - { - if (PT100Data[Sensor_i].Callback) - PT100Data[Sensor_i].Callback(Sensor_i,0); // call the callback to report execution - }*/ - PT100Activity--; - + TemperatureSendSensorDummyClk(Sensor_i); + PT100Data[Sensor_i].Active = false; + PT100Data[Sensor_i].WaitForData = true; // mark the motor for data request next round + break; // one PT100 activitiy per MS } else if (PT100Data[Sensor_i].WaitForData == true) //Read request sent, data is waiting { - if (TemperatureSensorReadFromFPGA_Res((TEMPERATURE_SENSOR_ID_ENUM)Sensor_i) == OK) //got the data from the FPGA - { - PT100Data[Sensor_i].WaitForData = false; - if (PT100Data[Sensor_i].Callback) + TemperatureSensorReadFromFPGA_Res(Sensor_i); //got the data from the FPGA + PT100Data[Sensor_i].WaitForData = false; + PT100Data[Sensor_i].SyncRequired = true; + if (PT100Data[Sensor_i].Callback) PT100Data[Sensor_i].Callback(Sensor_i,MotorInfo); - } - PT100Activity--; + break; // one PT100 activitiy per MS } - if (PT100Data[Sensor_i].Active == true) + else if (PT100Data[Sensor_i].SyncRequired == true) { - TemperatureSensorReadFromFPGA((TEMPERATURE_SENSOR_ID_ENUM)Sensor_i); - PT100Data[Sensor_i].Active = false; - if (PT100Data[Sensor_i].DataRequired == true) - { - PT100Data[Sensor_i].SyncRequired = true; // mark the motor for data request next round - } - else - { - if (PT100Data[Sensor_i].Callback) - PT100Data[Sensor_i].Callback(Sensor_i,0); // call the callback to report execution - } + TemperatureSensorSync(Sensor_i); + PT100Data[Sensor_i].SyncRequired = false; PT100Activity--; + break; // one PT100 activitiy per MS } } } @@ -391,24 +371,15 @@ uint32_t MillisecLoop(uint32_t tick) if (Ten_msTick) { Speed_Data = Calculate_Speed_Sensor_Velocity(); + //MillisecReadFromTempSensor(Sensor_Read, NULL); + //if (Sensor_Read++ >= MAX_TEMPERATURE_SENSOR_ID) Sensor_Read = 0; } - /*if (Tick98) - { - MotorGetSpeedFromFPGA(HARDWARE_MOTOR_TYPE__MOTO_RDRIVING); - MotorGetSpeedFromFPGA(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING); - MotorGetSpeedFromFPGA(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING); - MotorGetSpeedFromFPGA(HARDWARE_MOTOR_TYPE__MOTO_WINDER); - MotorGetSpeedFromFPGA(HARDWARE_MOTOR_TYPE__MOTO_SCREW); - }*/ if (Hundred_msTick) { for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) + { MillisecReadFromTempSensor(Sensor_i, NULL); - /* MotorGetSpeedFromFPGA_Res(HARDWARE_MOTOR_TYPE__MOTO_RDRIVING); - MotorGetSpeedFromFPGA_Res(HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING); - MotorGetSpeedFromFPGA_Res(HARDWARE_MOTOR_TYPE__MOTO_LDRIVING); - MotorGetSpeedFromFPGA_Res(HARDWARE_MOTOR_TYPE__MOTO_WINDER); - MotorGetSpeedFromFPGA_Res(HARDWARE_MOTOR_TYPE__MOTO_SCREW);*/ + } } if (O900Millisecond_Tick) @@ -417,11 +388,15 @@ uint32_t MillisecLoop(uint32_t tick) } if (Onesecond_Tick) { - for (Sensor_i = 0;Sensor_i < MAX_SYSTEM_DISPENSERS;Sensor_i++) - CalculateDispenserPressure(Sensor_i); + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) + { + CalculateDispenserPressure(Disp_i); + } FPGA_GetAllDispensersValveBusyOCD(); if (watchdogCriticalAlarm == false) + { Control_WD(ENABLE,50); //activate heaters/dispenser watchdog, 5 seconds + } } //ROM_IntMasterEnable(); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index 6a9735c13..bb7bbaa92 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -51,7 +51,7 @@ #include <inc/hw_ints.h> #include "drivers/adc_sampling/adc.h" -#include "Drivers/Peripheral_GPIO/GPIO.h" + #include "control.h" #include "MillisecTask.h" /******************** Definitions ********************************************/ @@ -65,12 +65,10 @@ typedef struct uint32_t PartId; // the identity of the inspected/controlled part in the Devices enum. bool ControlActive; uint32_t Parameter1; - uint32_t Parameter2; uint32_t IfIndex; DataReadCBFunction ControlDataReadPtr; ControlCBFunction ControlCallbackPtr; CTRL_TIMING_ENUM ControlTiming; - uint32_t lastStatus; }ControlDeviceStruc; typedef enum @@ -103,7 +101,7 @@ void OneMilliSecondFunction(UArg arg0); //********************************************************************** /******************** CODE ********************************************/ //********************************************************************** -uint32_t TemplateDataReadCBFunction (uint32_t deviceID, uint32_t Parameter1, uint32_t Parameter2) +uint32_t TemplateDataReadCBFunction (uint32_t deviceID, uint32_t Parameter1) { return 0; } @@ -151,7 +149,7 @@ void ControlStop(void) ControlRestart = false; ADCAcquireStop(); } -uint32_t ControlActivityLed( uint32_t Parameter1, uint32_t Parameter2) +uint32_t ControlActivityLed( uint32_t Parameter1) { static bool flag = false; if (flag==true) @@ -221,7 +219,6 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF ControlArray[deviceId].ControlActive = true; ControlArray[deviceId].ControlDataReadPtr = DriverfPtr; ControlArray[deviceId].Parameter1 = Parameter1; - ControlArray[deviceId].Parameter2 = Parameter2; ControlArray[deviceId].IfIndex = IfIndex; GateMutex_leave(gateControlDB, key); @@ -311,7 +308,7 @@ uint32_t ControlLoop(uint32_t tick) { case eOneMillisecond: if(ControlArray[Device_i].ControlDataReadPtr) - ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); + ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1); else LOG_ERROR (Device_i, "Invalid callback ptr"); if(ControlArray[Device_i].ControlCallbackPtr) @@ -323,7 +320,7 @@ uint32_t ControlLoop(uint32_t tick) if (Ten_msTick) { if(ControlArray[Device_i].ControlDataReadPtr) - ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); + ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1); else LOG_ERROR (Device_i, "Invalid callback ptr"); if(ControlArray[Device_i].ControlCallbackPtr) @@ -337,7 +334,7 @@ uint32_t ControlLoop(uint32_t tick) { //there is a need to trigger the data collection from FPGA, from I2C or from ADC 1.5 milliseconds to collect the data if(ControlArray[Device_i].ControlDataReadPtr) - ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); + ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1); else LOG_ERROR (Device_i, "Invalid callback ptr"); } @@ -354,7 +351,7 @@ uint32_t ControlLoop(uint32_t tick) if (Tick998) { if(ControlArray[Device_i].ControlDataReadPtr) - ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1,ControlArray[Device_i].Parameter2); + ControlDatalog[Device_i] = ControlArray[Device_i].ControlDataReadPtr( ControlArray[Device_i].Parameter1); else LOG_ERROR (Device_i, "Invalid callback ptr"); } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h index 97b0e16a1..d032c7bd1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h @@ -12,7 +12,7 @@ //typedef uint32_t (* DeviceDataFunction)(uint32_t deviceID, uint32_t *Value); typedef uint32_t (* ControlCBFunction)(uint32_t IfIndex, uint32_t ReadValue); -typedef uint32_t (* DataReadCBFunction)( uint32_t Parameter1, uint32_t Parameter2); +typedef uint32_t (* DataReadCBFunction)( uint32_t Parameter1); typedef enum { eNoControl = 0, eOneMillisecond = 1, @@ -38,7 +38,7 @@ void ControlStop(void); void ControlStart(void); uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint32_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 ); int RemoveControlCallback(uint32_t deviceId, ControlCBFunction Callback ); -uint32_t TemplateDataReadCBFunction (uint32_t deviceId, uint32_t Parameter1, uint32_t Parameter2); +uint32_t TemplateDataReadCBFunction (uint32_t deviceId, uint32_t Parameter1); extern Task_Handle Control_Task_Handle; |
