aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-03-14 23:56:45 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-03-14 23:56:45 +0200
commit581fc5ccade02a541b9e9fff2ab8c34bf6deef2c (patch)
tree15c9bfc0326a4492e4ab380c3fe14d4624c18ef4 /Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
parent8df72202be31480ecd82d475523a8708c34ebd53 (diff)
downloadTango-581fc5ccade02a541b9e9fff2ab8c34bf6deef2c.tar.gz
Tango-581fc5ccade02a541b9e9fff2ab8c34bf6deef2c.zip
version 1.3.7.9
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index c598e0c55..0277d1daa 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -40,6 +40,8 @@ void ScrewsStartControlTimer (void);
bool Winder_ScrewHoming = false;
bool ScrewCurrentDirection = false; //holds current screw direction
uint32_t ScrewDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone
+uint32_t ScrewChangeCounter = 0;
+uint32_t ScrewChangeLimit = 0;
uint32_t CalculationDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone
uint16_t WinderMotorSpeed[MAX_WINDER_SPEED_CALCULATION];
uint16_t WinderMotorSpeedCounter = 0;
@@ -196,13 +198,17 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag)
double RotationsPerSecond;
int32_t Averagewinderspeed = 0;
- TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter];
- WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR];
- TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter];
- if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION)
+ ScrewChangeCounter++;
+ if ((ScrewChangeCounter>3)&&(ScrewChangeCounter<(ScrewChangeLimit-2))) //do not take the winder speed near the limits
{
- WinderMotorSpeedCounter=0;
- WinderMotorSpeedRollOver=true;
+ TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter];
+ WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR];
+ TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter];
+ if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION)
+ {
+ WinderMotorSpeedCounter=0;
+ WinderMotorSpeedRollOver=true;
+ }
}
if (ScrewDirectionChangeCounter == CalculationDirectionChangeCounter)
@@ -260,7 +266,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag)
//Report(TempScrewStr,__FILE__,__LINE__,0,RpWarning,0, 0);
//Report(ScrewStr,__FILE__,__LINE__,ScrewCurrentDirection,RpWarning,CalculationDirectionChangeCounter, 0);
//REPORT_MSG(temp , "new winder speed");
- Report("new winder speed",__FILE__,__LINE__,temp,RpWarning,ScrewSpeed,0);
+ Report("new winder speed",__FILE__,ScrewNumberOfSteps,temp,RpWarning,ScrewSpeed,0);
}
/********************************************************************************/
@@ -397,6 +403,7 @@ void ScrewsStartControlTimer (void)
//ROM_TimerConfigure(Screw_timerBase, TIMER_CFG_PERIODIC); // 32 bits Timer
TimerEnable(Screw_timerBase, TIMER_A);
ROM_IntEnable(INT_TIMER3A);
+ //IntPrioritySet(Screw_timerBase, 0x40);
ROM_TimerIntEnable(Screw_timerBase, TIMER_TIMA_TIMEOUT);
ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)1200000/*10 millisec*/ );
Report("ScrewsStartControlTimer direction,speed ", __FILE__,__LINE__,ScrewCurrentDirection, RpMessage, ScrewSpeed, 0);
@@ -410,9 +417,11 @@ void ScrewTimerInterrupt(int ARG0)
if (SCREW_TimerActivated == true)
{
+ ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime);
MotorSetDirection (HARDWARE_MOTOR_TYPE__MOTO_SCREW, ScrewCurrentDirection);
MotorSetSpeedDirect(HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewSpeed);
- ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime);
+ ScrewChangeCounter = 0;
+ ScrewChangeLimit = ScrewRunningTime/12000000;
ScrewDirectionChangeCounter++;
}
else