aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/d_output.c
diff options
context:
space:
mode:
authortcsadmin2010-10-18 18:21:36 +0000
committerNicolas Schodet2011-07-04 00:37:03 +0200
commit1358245fe01df0cb614ccf5846dcc95bc33a124f (patch)
tree1e197c885469792dd7c15f0aed5e77519c92536b /AT91SAM7S256/Source/d_output.c
parent565424ed7a688f910f63fc1ce82e39ebf0dfb28f (diff)
regulation mode at limit changes
git-svn-id: https://mindboards.svn.sourceforge.net/svnroot/mindboards/lms_nbcnxc/branches/version_131@26 c9361245-7fe8-9947-84e8-057757c4e366
Diffstat (limited to 'AT91SAM7S256/Source/d_output.c')
-rw-r--r--AT91SAM7S256/Source/d_output.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/AT91SAM7S256/Source/d_output.c b/AT91SAM7S256/Source/d_output.c
index c3fdeed..e6de984 100644
--- a/AT91SAM7S256/Source/d_output.c
+++ b/AT91SAM7S256/Source/d_output.c
@@ -673,6 +673,13 @@ void dOutputRampDownFunction(UBYTE MotorNr)
}
}
+UBYTE dOutputRegModeAtLimit(UBYTE RunStateAtLimit)
+{
+ if (RunStateAtLimit==MOTOR_RUN_STATE_HOLD)
+ return REGSTATE_REGULATED;
+ return REGSTATE_IDLE;
+}
+
/* Function used to tell whether the wanted position is obtained */
void dOutputTachoLimitControl(UBYTE MotorNr)
{
@@ -692,7 +699,7 @@ void dOutputTachoLimitControl(UBYTE MotorNr)
if ((pMD->CurrentCaptureCount >= pMD->MotorTachoCountToRun))
{
pMD->MotorRunState = pMD->RunStateAtLimit;
- pMD->RegulationMode = REGSTATE_IDLE;
+ pMD->RegulationMode = dOutputRegModeAtLimit(pMD->RunStateAtLimit);
}
}
else
@@ -702,7 +709,7 @@ void dOutputTachoLimitControl(UBYTE MotorNr)
if (pMD->CurrentCaptureCount <= pMD->MotorTachoCountToRun)
{
pMD->MotorRunState = pMD->RunStateAtLimit;
- pMD->RegulationMode = REGSTATE_IDLE;
+ pMD->RegulationMode = dOutputRegModeAtLimit(pMD->RunStateAtLimit);
}
}
}
@@ -1118,14 +1125,14 @@ void dOutputMotorReachedTachoLimit(UBYTE MotorNr)
pOne->MotorTargetSpeed = 0;
pOne->MotorActualSpeed = 0;
pOne->MotorRunState = pOne->RunStateAtLimit;
- pOne->RegulationMode = REGSTATE_IDLE;
+ pOne->RegulationMode = dOutputRegModeAtLimit(pOne->RunStateAtLimit);
if (MotorTwo != 0xFF) {
MOTORDATA * pTwo = &(MotorData[MotorTwo]);
pTwo->MotorSetSpeed = 0;
pTwo->MotorTargetSpeed = 0;
pTwo->MotorActualSpeed = 0;
pTwo->MotorRunState = pTwo->RunStateAtLimit;
- pTwo->RegulationMode = REGSTATE_IDLE;
+ pTwo->RegulationMode = dOutputRegModeAtLimit(pTwo->RunStateAtLimit);
}
}
else
@@ -1136,7 +1143,7 @@ void dOutputMotorReachedTachoLimit(UBYTE MotorNr)
pOne->MotorActualSpeed = 0;
}
pOne->MotorRunState = pOne->RunStateAtLimit;
- pOne->RegulationMode = REGSTATE_IDLE;
+ pOne->RegulationMode = dOutputRegModeAtLimit(pOne->RunStateAtLimit);
}
}