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

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

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

Сообщение Zhuk72 »

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

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

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

Сообщение 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();
по кране мере в симуляторе работает
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

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

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

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

Сообщение 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МГц.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

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

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

Сообщение Dimon456 »

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

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

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

[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 и переполнение аккумулятора генерирует частоту выходного сигнала.
Проблема метода в том, что при близких значениях частоты накачки и частоты генерации В ПОРАЖЕННЫХ ТОЧКАХ возникает джиттер с уровнями соизмеримыми с периодом генерируемого сигнала. Поэтому работоспособность на небольшом количестве точек - это ни о чем.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

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

Сообщение Dimon456 »

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

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

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

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

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

Сообщение Dimon456 »

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

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

Сообщение Zhuk72 »

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

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

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

Сообщение linkov1959 »

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

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

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

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

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

Сообщение linkov1959 »

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

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

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

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

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

Сообщение Dimon456 »

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

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

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

[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 решить невозможно. Тупо не хватит скорости.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

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

Сообщение linkov1959 »

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

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

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

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

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

Сообщение Sergi »

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

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