1,6 → 1,7 |
#include <avr/io.h> |
#include <avr/interrupt.h> |
#include "fc.h" |
#include "eeprom.h" |
|
volatile int16_t ServoValue = 0; |
|
69,28 → 70,28 |
|
ServoValue = Parameter_ServoNickControl; |
// inverting movment of servo |
if(EE_Parameter.ServoNickCompInvert & 0x01) |
if(ParamSet.ServoNickCompInvert & 0x01) |
{ |
ServoValue += ((int32_t) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
ServoValue += ((int32_t) ParamSet.ServoNickComp * (IntegralNick / 128)) / 512; |
} |
else // non inverting movement of servo |
{ |
ServoValue -= ((int32_t) EE_Parameter.ServoNickComp * (IntegralNick / 128)) / 512; |
ServoValue -= ((int32_t) ParamSet.ServoNickComp * (IntegralNick / 128)) / 512; |
} |
|
// limit servo value to its parameter range definition |
if(ServoValue < EE_Parameter.ServoNickMin) |
if(ServoValue < ParamSet.ServoNickMin) |
{ |
ServoValue = EE_Parameter.ServoNickMin; |
ServoValue = ParamSet.ServoNickMin; |
} |
else if(ServoValue > EE_Parameter.ServoNickMax) |
else if(ServoValue > ParamSet.ServoNickMax) |
{ |
ServoValue = EE_Parameter.ServoNickMax; |
ServoValue = ParamSet.ServoNickMax; |
} |
|
// update PWM |
OCR2A = ServoValue; |
timer = EE_Parameter.ServoNickRefresh; |
timer = ParamSet.ServoNickRefresh; |
} |
else |
{ |