SciFi (05.09.2018 12:02, просмотров: 341) ответил Codavr на Проверял?
Этот яр вместо умножений навтыкал мне сдвигов и сложений-вычитаний. Тот самый случай, когда я пытался заставить его использовать инструкцию MUL. Что характерно космик сделал всё правильно. /*
* 11-tap low pass root raised cosine
* Fpass = 0.138 Fsample
* Alpha = 0.15
* Unsigned 6 bits, right justify
*/
static int8_t
lpf11(int8_t invar, uint8_t states[10])
{
int16_t sum = 0;
uint8_t i;
sum -= 4 * states[0];
sum -= 2 * states[1];
sum += 3 * states[2];
sum += 10 * states[3];
sum += 16 * states[4];
sum += 19 * states[5];
sum += 16 * states[6];
sum += 10 * states[7];
sum += 3 * states[8];
sum -= 2 * states[9];
for (i = 0; i < 9; i++)
{
states[i] = states[i + 1];
}
states[9] = (uint8_t)(128 + invar);
sum -= 4 * states[9];
sum >>= 6;
sum = (sum < 0 ? 0 : sum);
sum = (sum > 255 ? 255 : sum);
return (int8_t)(sum - 128);
}
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้