ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
109277 Топик полностью
AlexandrY (04.01.2008 00:48, просмотров: 71) ответил -= Al =- на ИМХО
Демонстрирую сеанс телепатии...  static float x[5]; // Цепочка последовательных отсчетов static float y; // Выходной сигнал фильтра static int iy; // Целочисленный результат void Super_Smart_Func(void) { int i; for (i=0;i<5;i++) x[i]=0; // Начальная очистка цепочки отсчетов while(1) // Цикл до отключения питания { x[4] = x[3]; // Продвигаем отсчеты в цепочке x[3] = x[2]; x[2] = x[1]; x[1] = x[0]; x[0] = GetChar(UART0); // Ожидаем и берем текущий отсчет из UART y = x[0]*1 + x[1]*(-3) + x[2]*(5) + x[3]*(-3) + x[4]*(1); // - Сам фильтр // Обрабатываем ситуацию переполнения и нормализуем if (y > 511) { iy = 0x3FF; } else if (y < -511 ) { iy = 0; } else { iy = round(y) + 511; // округляем и нормализуем к диапазону 0...2^10 } PORTA = iy; // Выводим в порт A PORTB = iy >> 8; // Остальные биты в порт B } } Все, лаба сдана ;-)
INDEMSYS