КРАМ писал(а):Как вариант, контролировать текущий массив входных измерений.
Только нужно учесть скорость изменения входной частоты...
Это традиционная сигнальная задача фильтрации...
Думаю нет нужды. Проблема в одном случае, когда счетчик прерываний внешних = 0, тоесть переменная temp = 0, то вот этот кусок кода выполняется неверно
Код: Выделить всё
while (1)
{
calc = temp/1,25 // ((temp / 0,5) /2,5) пауза половину периода и коэффициент деления
PORTB.2 = 0;
delay_ms(calc);
PORTB.2 = 1;
delay_ms(calc);
};
0/1.25 будет 0. Т.е. задержка 0. и идет генерация на максимальной частоте. Потому и вижу меандр 58 кГц.
Я думаю попробовать инициализировать переменную изначально как 1. и сбрасывать ее тоже на 1. А число отсчетов таймера взять больше, 300 например, вместо текущих 30, чтобы эта единица давала пренебрежимо малый вклад в моей задаче.
Какие иные варианты ?