From fc1e658f15bbb8d4497d189e79b43fab4b964839 Mon Sep 17 00:00:00 2001 From: John Hansen Date: Sun, 13 Mar 2011 23:36:50 +0000 Subject: Added position regulation mode (Nicolas Schodet) git-svn-id: https://mindboards.svn.sourceforge.net/svnroot/mindboards/lms_nbcnxc/branches/version_131@37 c9361245-7fe8-9947-84e8-057757c4e366 --- AT91SAM7S256/Source/c_output.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'AT91SAM7S256/Source/c_output.c') diff --git a/AT91SAM7S256/Source/c_output.c b/AT91SAM7S256/Source/c_output.c index 212cc89..9e7c2e0 100644 --- a/AT91SAM7S256/Source/c_output.c +++ b/AT91SAM7S256/Source/c_output.c @@ -43,7 +43,6 @@ void cOutputInit(void* pHeader) { UBYTE Tmp; - IOMapOutput.PwnFreq = REGULATION_TIME; for(Tmp = 0; Tmp < NO_OF_OUTPUTS; Tmp++) { OUTPUT * pOut = &(IOMapOutput.Outputs[Tmp]); @@ -57,7 +56,11 @@ void cOutputInit(void* pHeader) pOut->RegIParameter = DEFAULT_I_GAIN_FACTOR; pOut->RegDParameter = DEFAULT_D_GAIN_FACTOR; pOut->Options = 0x00; + pOut->MaxSpeed = DEFAULT_MAX_SPEED; + pOut->MaxAcceleration = DEFAULT_MAX_ACCELERATION; } + IOMapOutput.RegulationTime = REGULATION_TIME; + IOMapOutput.RegulationOptions = 0; VarsOutput.TimeCnt = 0; dOutputInit(); } @@ -66,7 +69,6 @@ void cOutputCtrl(void) { UBYTE Tmp; - dOutputUpdateRegulationTime(IOMapOutput.PwnFreq); for(Tmp = 0; Tmp < NO_OF_OUTPUTS; Tmp++) { OUTPUT * pOut = &(IOMapOutput.Outputs[Tmp]); @@ -95,11 +97,6 @@ void cOutputCtrl(void) dOutputSetSpeed (Tmp, pOut->RunState, pOut->Speed, pOut->SyncTurnParameter); } } - if (pOut->Flags & UPDATE_TACHO_LIMIT) - { - pOut->Flags &= ~UPDATE_TACHO_LIMIT; - dOutputSetTachoLimit(Tmp, pOut->TachoLimit, pOut->Options); - } if (pOut->Flags & UPDATE_MODE) { pOut->Flags &= ~UPDATE_MODE; @@ -130,13 +127,21 @@ void cOutputCtrl(void) dOutputDisableRegulation(Tmp); } } + if (pOut->Flags & UPDATE_TACHO_LIMIT) + { + pOut->Flags &= ~UPDATE_TACHO_LIMIT; + dOutputSetTachoLimit(Tmp, pOut->TachoLimit, pOut->Options); + } if (pOut->Flags & UPDATE_PID_VALUES) { pOut->Flags &= ~UPDATE_PID_VALUES; dOutputSetPIDParameters(Tmp, pOut->RegPParameter, pOut->RegIParameter, pOut->RegDParameter); + dOutputSetMax(Tmp, pOut->MaxSpeed, pOut->MaxAcceleration); } } } + dOutputSetRegulationTime(IOMapOutput.RegulationTime); + dOutputSetRegulationOptions(IOMapOutput.RegulationOptions); dOutputCtrl(); cOutputUpdateIomap(); } -- cgit v1.2.3