Генератор с длительностью импульсов 20us с частотой 80Khz

Обсуждаем контроллеры компании Atmel.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3979165#p3979165"]Нужно взять МК с NCO модулем.[/uquote]
Я на него и намекал :)
NCO может выдать как меандр, так и импульсы определенных длительностей.
Диапазон частот большой, шаг перестройки очень маленький, настройка и перенастройка - пара-тройка строк.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

А как вам такой вариант: dds на Атмега168 16МГц, точность установки 2Гц, от 0Гц до 80000Гц?
Спойлер

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

// 32 значения амплитуды, одно полное колебание сигнала мяяяяандер
uint8_t period[] = { 
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
};

// Пусть нам нужно генерировать частоту 80000 Гц, учитывая, что основную процедуру таймер у нас исполняет 160000 раз в секунду
#define n_counter 32768UL //  65536 / (160000 / 80000) = 32768


ISR(TIMER2_COMPA_vect)
{  static uint16_t gen_counter = 0;

	gen_counter = gen_counter + n_counter;
	if(period[(gen_counter>>11)] == 1)
	PORTB |= (1<<(PORTB0));
	else 
	PORTB &= (~(1<<(PORTB0)));
}

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 16000,000 kHz
// Mode: CTC top=OCR2A
// OC2A output: Disconnected
// OC2B output: Disconnected
// Timer Period: 6,25 us
ASSR=(0<<EXCLK) | (0<<AS2);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (1<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (1<<CS20);
TCNT2=0x00;
OCR2A=0x63;
OCR2B=0x00;

TIMSK2=(0<<OCIE2B) | (1<<OCIE2A) | (0<<TOIE2);

sei();
по кране мере в симуляторе работает
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

На высоких частотах вы все время будете в прерывании проводить.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Что?
Специально написал // Timer Period: 6,25 us, время нахождения в прерывании при оптимизации -Os 3,375us
Грубо 6,25 - 3,375 = 2,875us 2,875us - это ваше время, делайте с ним что хотите, это грубо, я не считал такты и прочее.
Кроме всего прочего, при выходе из прерывания, даже если его зажать прерываниями, выполнится хотя бы одна команда основной программы - это закон.

// Timer Period: 6,25 us - это константная величина, она не зависит от генерируемой частоты в данном коде.

Грубо говоря у вас 40% свободного времени, мало, гоните частоту МК выше, эти чипы спокойно гонятся до 27МГц, а не которые экземпляры работают и на 32МГц.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3979196#p3979196"]точность установки 2Гц, от 0Гц до 80000Гц?[/uquote]Покажите реализацию 79998 Гц.
Что-то не очень понятен принцип генерации :dont_know:
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Вот так сойдет, измерено на реальном железе прибором DM90A
СпойлерИзображение
Процент заполнения при 79998 DM90A показывает 51,4%
При 112Гц показывает ровно 50,0%.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25583
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="Dimon456",url="/forum/viewtopic.php?p=3979249#p3979249"]Что?
Timer Period: 6,25 us[/uquote]
этошуткатакой? :)))
То есть вы всерьез полагаете, что при накачке такого DDS частотой 160 кГц можно получить вменяемый меандр с частотой в десятки килогерц? :facepalm:
Кроме тотального и лютого джиттера вы там больше ничего не увидите...
Кроме бездумного применения формул стоит хоть немного понимать их физический смысл.
Интегрирующие приборы тут ничего не покажут.

Добавлено after 7 minutes 32 seconds:
[uquote="Аlex",url="/forum/viewtopic.php?p=3979265#p3979265"]Что-то не очень понятен принцип генерации[/uquote]
Принцип генерации в DDS всегда одинаков, независимо от кода, который у конкретного персонажа может быть каким угодно смешным или серьезным.
С частотой клоков накачки аккумулятор фазы увеличивается на аргумент DDS и переполнение аккумулятора генерирует частоту выходного сигнала.
Проблема метода в том, что при близких значениях частоты накачки и частоты генерации В ПОРАЖЕННЫХ ТОЧКАХ возникает джиттер с уровнями соизмеримыми с периодом генерируемого сигнала. Поэтому работоспособность на небольшом количестве точек - это ни о чем.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Всегда можно использовать специализированные чипы DDS, к примеру AD9833.
Друг Кота
Аватара пользователя
Сообщения: 25583
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="Dimon456",url="/forum/viewtopic.php?p=3979500#p3979500"]чипы DDS, к примеру AD9833.[/uquote]
Тут обсуждались встроенные решения. Тем более, что речь идет даже не о меандре, а об импульсах, что сделает при внешнем ДДС необходимым дополнительный навес для формирования этого импульса.
Именно поэтому выбор МК с модулем NCO на борту решит все эти задачи и не потребует лишних ног в МК.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

NCO против AD9833, одно есть в продаже, другого нет, да и то на пиках, ни знаю на авр есть или нет, не нашел.
Конечно можно и на PIC10F322, в общем я ту тему прочитал, спасибо.
Еще и про импульс надо подумать.
Когда то людей и цешка устраивала, а теперь подавай прибор стоимостью 1к даларосов.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

Любой чип можно купить. Все зависит только от желания и финансов.
Платы с новыми чипами, ПИК или АВР, и встроенными программатором-дебаггером стоят 12-15 баксов. Это только для ознакомления конечно же. Сами МК естественно стоят меньше доллара.
NCO в Атмелах, насколько я знаю, нет.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Контактная информация:
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

Купите STM32H750 за 7$ и делайте, что хотите!
Друг Кота
Аватара пользователя
Сообщения: 25583
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="linkov1959",url="/forum/viewtopic.php?p=3979590#p3979590"]и делайте, что хотите![/uquote]
Не думаю, что есть хоть малейший смысл ставить 7-долларовый огромный корпус для задачи, которая в самом крайнем случае решается на 10м пике в корпусе SOT23-6 за 0,5 доллара.
Это если опустить разбор с совсем не простой микросхемой для задачи, которая не решается библиотекой HAL непосредственно.
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

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

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

[uquote="linkov1959",url="/forum/viewtopic.php?p=3979693#p3979693"]и управляем внутренним генератором свободных колебаний?[/uquote]
Каким еще "генератором свободных колебаний"? Вы вообще о чем?
В PIC10F322 есть модуль NCO. Он позволяет реализовать DDS. То есть прямой цифровой синтез частоты с требуемыми автором топика характеристиками.
Задание частоты можно выполнить программным UART или SPI.
Так же можно взять 8-пиновый PIC16F15313, тогда UART, SPI и I2C будут хардварными.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Значит на AVR это не реализовать?
Или придется делать связку AVR+555?
Может AD9833 нельзя к AVR подключить? КРАМ, С AD9833 подаю меандр на ножку AVR с прерыванием (по нарастающему фронту) и формирую необходимую длительность импульса, этим же самым AVR управляю AD9833. Что не так?
Тема в разделе AVR, вот когда перейдет в раздел PIC, будете PIC рекламировать.
Друг Кота
Аватара пользователя
Сообщения: 25583
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="Dimon456",url="/forum/viewtopic.php?p=3979796#p3979796"]будете PIC рекламировать.[/uquote]
Комплекс неполноценности?
Мне фиолетово в каком разделе обсуждается проблема. ТС начал ее, исходя из AVR. Но если целесообразность подсказывает иные решения (совсем не обязательно ПИКи, есличо), то нужно эту целесообразность озвучить.
Отдельный DDS, естественно, тоже можно применить. И импульс необходимой длительности можно сформировать в МК, подав на него меандр с внешней DDS. Только наверное стоит подумать как хардварно запускать Output Compare от этого меандра, а не в прерываниях бездарно сидеть и дополнительный джиттер плодить...
Ну и денег внешний аналог-девайсовый DDS стоит изрядных...
Опять же PIC тут конкурировал не с AVR, а с внешним аппаратным DDS, если вы это сами не поняли...
[uquote="Dimon456",url="/forum/viewtopic.php?p=3979796#p3979796"]Значит на AVR это не реализовать?
Или придется делать связку AVR+555?[/uquote]
555-ый таймер вообще никак поставленную задачу не решает. Дело ведь не в регулировке частоты, а в ВЫСОКОМ РАЗРЕШЕНИИ этой регулировки. Задачу внутренними ресурсами AVR решить невозможно. Тупо не хватит скорости.
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Сообщение linkov1959 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3979744#p3979744"]Каким еще "генератором свободных колебаний"? Вы вообще о чем?[/uquote]
Я про ГУН и ФД, а Вы о чем?
Друг Кота
Аватара пользователя
Сообщения: 25583
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="linkov1959",url="/forum/viewtopic.php?p=3980152#p3980152"]Я про ГУН[/uquote]Какое отношение ГУН и ФД имеют к DDS и хотелкам автора темы? Тем более, какое отношение PLL в МК имеют к поставленной задаче? Вы хотя бы знакомились с ограничениями PLL в МК?
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Сообщение Sergi »

Ну ТС не обозначил что хочет только DDS. А например для связки 4046 и МК нужно 3 ноги: выход опорной частоты (10 Гц например),вход счетного таймера, выход OCR таймера. Таймер используется как управляемый счетчик-делитель. В таком случае даже прерывания не нужны. Цена вопроса - 0,6$ за 4046.
Ответить

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