trinitron (19.09.2012 00:07 - 00:20, просмотров: 136) ответил whale на ой не надо ) лучше дельный совет в общих словах дать )
В общем вот "доска позора"... вырезал всё лишнее...
OutVal = InpRefVal - Position;
//OutVal *=Adapt_PD(P_Gain,3,I_Gain<<4,OutVal);
OutVal *= P_Gain;
OutVal_Tmp = Position_Old-Position;
OutVal_Tmp *=D_Gain;
OutVal_Tmp>>=O_GAIN_SH;
OutVal >>=O_GAIN_SH;
Position_Old = Position;
if(OutVal > 0x7FE) OutVal = 0x7FE;
else if(OutVal < -0x7FE) OutVal = -0x7FE;
if(OutVal_Tmp > 0x7FE) OutVal_Tmp = 0x7FE;
else if(OutVal_Tmp < -0x7FE) OutVal_Tmp = -0x7FE;
DAC_Channel_Write(&DACB, OutVal-0x7FF ,CH0);
DAC_Channel_Write(&DACB, 0x7FF-OutVal_Tmp ,CH1);
В общем... "переверну" в формулу... но вряд ли она будет отличаться от традиционной... за исключением интеграла... в общем... тупо чтоб всем было весело... так как я не спец в этом... надо было сделал... сейчас Хз... не помню... как то так...