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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Symbiosis
Вымогатель припоя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52
Контактная информация:

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

Сообщение Symbiosis »

Elvys писал(а):
Symbiosis писал(а):Я делаю умножитель импульсов на mega8

Извращение какое-то.

А вопрос в том, как реализовать это красиво? правильно...

Красиво и правильно будет использование DDS с управлением от mega8. В крайнем случае можно использовать внутренний СТС, но спектр там будет тот еще.


Ну стартовое сообщение то терпения не хватило )

А если бы чуточку ниже почитал, то увидел бы что собирается на тини13
Elvys
Прорезались зубы
Сообщения: 206
Зарегистрирован: Пт мар 14, 2014 19:36:10

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

Сообщение Elvys »

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

А чуточку ниже - у меня желания не было. :)) Тут бредовых тем вагон и тележка, и все их до конца читать? :tea:
Аватара пользователя
Symbiosis
Вымогатель припоя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52
Контактная информация:

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

Сообщение 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, чтобы эта единица давала пренебрежимо малый вклад в моей задаче.

Какие иные варианты ?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

иной вариант - генерация на таймере, а не на delay_ms() :)))
Ставим плюсы: )
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

или

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

if(calc){
      PORTB.2 = 0;
      delay_ms(calc);
      PORTB.2 = 1;
      delay_ms(calc);
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Symbiosis писал(а):Думаю нет нужды. Проблема в одном случае.....

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

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

Вернуться в «AVR»