aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Control
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-08-21 09:17:46 +0300
committerAvi Levkovich <avi@twine-s.com>2018-08-21 09:17:46 +0300
commit193f7f5e096751da747b0fe9d145bd43a02d7340 (patch)
treece0aa138252ca76426fbbc84e1753d7e410011a9 /Software/Embedded_SW/Embedded/Modules/Control
parent98493042a5dace2535dd4343c047eaf1bd784ae3 (diff)
parentf468145c16b5c677201327feeb4f207c21df0b0b (diff)
downloadTango-193f7f5e096751da747b0fe9d145bd43a02d7340.tar.gz
Tango-193f7f5e096751da747b0fe9d145bd43a02d7340.zip
merge after conflict
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c81
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c17
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.h4
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;