Страница 2 из 2

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 09:03:23
Symbiosis
Elvys писал(а):
Symbiosis писал(а):Я делаю умножитель импульсов на mega8
Извращение какое-то.
А вопрос в том, как реализовать это красиво? правильно...
Красиво и правильно будет использование DDS с управлением от mega8. В крайнем случае можно использовать внутренний СТС, но спектр там будет тот еще.
Ну стартовое сообщение то терпения не хватило )

А если бы чуточку ниже почитал, то увидел бы что собирается на тини13

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 09:11:30
Elvys
Symbiosis писал(а):А если бы чуточку ниже почитал, то увидел бы что собирается на тини13
А чуточку ниже - у меня желания не было. :)) Тут бредовых тем вагон и тележка, и все их до конца читать? :tea:

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 09:14:14
Symbiosis
КРАМ писал(а):Как вариант, контролировать текущий массив входных измерений.
Только нужно учесть скорость изменения входной частоты...
Это традиционная сигнальная задача фильтрации...
Думаю нет нужды. Проблема в одном случае, когда счетчик прерываний внешних = 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, чтобы эта единица давала пренебрежимо малый вклад в моей задаче.

Какие иные варианты ?

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 09:58:47
ibiza11
иной вариант - генерация на таймере, а не на delay_ms() :)))

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 10:10:40
ARV
или

Код: Выделить всё

if(calc){
      PORTB.2 = 0;
      delay_ms(calc);
      PORTB.2 = 1;
      delay_ms(calc);
}

Re: Генерация меандра на Mega

Добавлено: Чт апр 10, 2014 12:02:03
КРАМ
Symbiosis писал(а): Думаю нет нужды. Проблема в одном случае.....

Какие иные варианты ?
Нужды у Вас нет от отсутствия вариантов...
Бескомпромиссное решение заключается в следующем.
Подаем входной сигнал на схему захвата и накапливаем массив измерений периода В СКОЛЬЗЯЩЕМ ОКНЕ (кольцевом буфере).
затем интегрируем значения в массиве и получаем период сигнала. Делим-умножаем на коэффициент и загружаем таймер формирования выходного сигнала.
При обработке массива можно вычислить распределение точек, определив кучность. если наблюдается хаотичные метания элементов массива - входной сигнал отсутствует и захват происходит по шуму....