/* * Alter error to enforce a deadband around zero and maximum error magnitudes. * * Inputs: * - error * - deadband. The deadband is over the region 0 +/- deadband * - max. The largest acceptable error magnitude beyond which output error * is constant * * Return: the modified error * */ int16_t clip(int16_t error, int16_t deadband, int16_t max){ if(error <= deadband && error >= (-deadband)) return (0); if(error > max) return (max - deadband); if(error < (-max)) return (-max+deadband); if(error > 0) return (error - deadband); return (error + deadband); }