aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/c_output.c
diff options
context:
space:
mode:
authorJohn Hansen2011-03-13 23:36:50 +0000
committerNicolas Schodet2011-07-04 00:37:04 +0200
commitfc1e658f15bbb8d4497d189e79b43fab4b964839 (patch)
tree829ae4b3ece944522a68919cd2685d49fc06c341 /AT91SAM7S256/Source/c_output.c
parentd8a6b2de30e139a676593aac5feb9eb47479dce2 (diff)
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
Diffstat (limited to 'AT91SAM7S256/Source/c_output.c')
-rw-r--r--AT91SAM7S256/Source/c_output.c19
1 files changed, 12 insertions, 7 deletions
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();
}