From 1358245fe01df0cb614ccf5846dcc95bc33a124f Mon Sep 17 00:00:00 2001 From: tcsadmin Date: Mon, 18 Oct 2010 18:21:36 +0000 Subject: 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 --- AT91SAM7S256/Source/d_output.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'AT91SAM7S256/Source') 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); } } -- cgit v1.2.3