Прошу дать совет.
Тактовый генератор 8-16 МГц (VCO) для AVR
Подскажите, возможно ли создать управляемый напряжением генератор с диапазоном частот от 8 до 16 МГц для того, чтобы тактировать AVR и на ходу менять частоту? Зависимость частоты от напряжения - линейная. Точность установки большого значения не имеет. Возможно есть спец. микросхемы.
Прошу дать совет.
Прошу дать совет.
- Реклама
Можно. И микросхемы есть.
А зачем?
А зачем?
Это возможно. Была небольшая заметка на эту тему в английском журнале "Elektor", не помню
номер за 2009 (или 2010) год.
номер за 2009 (или 2010) год.
В AVR семейства ATmega48_88_168, есть замечательный регистр (CLKPR – Clock Prescale Register) который позволяет на ходу в широких пределах делить тактовую частоту ядра.
Уважаемый Rimsky!
Топикстартеру требуется возможность плавно и непрерывно менять тактовую частоту. Регистр, на
который Вы ссылаетесь, этого не может.
Топикстартеру требуется возможность плавно и непрерывно менять тактовую частоту. Регистр, на
который Вы ссылаетесь, этого не может.
- Реклама
Мяу всем..
UA3MQJ поищи, есть микрухи в DIP-металлическом корпусе, так называемые VCO, управляемые напряжением генераторы...
UA3MQJ поищи, есть микрухи в DIP-металлическом корпусе, так называемые VCO, управляемые напряжением генераторы...
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
- Сообщения: 1196
- Зарегистрирован: Пт авг 21, 2009 03:22:12
Из широко распространенных - 74HC4046, там кроме генератора есть еще пара фазовых детекторов, так что можно и слежение по частоте организовать.
Только щас вспомнил, в ТТЛ есть микруха К531ГГ1, это ГУН и там два канала..
Конечно греется падла, но работает нормально...
Конечно греется падла, но работает нормально...
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Спасибо за советы - буду искать по тому, что нашли.
Микроконтроллер будет в качестве генератора звуковых частот. Менять частоту тактового генератора хочу как раз для того, чтобы плавно смещать сетку генерируемых частот.
Вот только вопрос: не появятся ли сбои в работе при изменении частоты?
Микроконтроллер будет в качестве генератора звуковых частот. Менять частоту тактового генератора хочу как раз для того, чтобы плавно смещать сетку генерируемых частот.
Вот только вопрос: не появятся ли сбои в работе при изменении частоты?
Работает нормально. Делал ради забавы петлевой синтезатор частот где МК работал как ДПКД. VCO -> на вход заместо кварца. Правда частоты были далеко не звуковые:)не появятся ли сбои в работе при изменении частоты?
Кстати, в AVRках есть внутренний генератор, который нехило гуляет от температуры. Сбоев ядра от этого, как вы догадываетесь, не наблюдается.
сами Атмеловцы говорят, что сбоев не будет, если изменение периода тактовой частоты (меандр) от периода к периоду будет не более 15% (точно не помню) - в общем, главное, чтобы не было скачков от 8 к 16 МГц например или похожего. а при плавном и небыстром изменении сбоев быть не должно.
ну и, наверное (лично предположение) в процессе изменения частоты не стоит что-то записывать в EEPROM и FLASH...
ну и, наверное (лично предположение) в процессе изменения частоты не стоит что-то записывать в EEPROM и FLASH...
битва с дураками проиграна, победители торжествуют. слава победителям!
Остановлюсь, пожалуй, на 4046. Нашел к ней калькулятор:
http://www.changpuak.ch/electronics/calc_03.php
Он считает какие будут диапазоны частот от заданных значений резисторов.
Открыл код страницы, а там расчет весь есть на JScript.
Но нет расчета от заданных диапазонов частот -> значения резисторов.
Решать системы уравнений мне лениво, по графикам в даташите тоже точность низкая. Поэтому написал расчет в Дельфи и полным перебором а потом уточнением вычислил:
r1=7; r2=34,7; C=40; F.MIN=8005,312; F.MAX=16009,95
r1=7; r2=34,67; C=40,06; F.MIN=8000,415; F.MAX=16000,266
r1=7; r2=34,675; C=40,059; F.MIN=8000,085; F.MAX=16000,117
Остается еще вопрос: как данные передавать в МК? Если UART завязан на частоту работы, то скорость порта тоже уплывет.
http://www.changpuak.ch/electronics/calc_03.php
Он считает какие будут диапазоны частот от заданных значений резисторов.
Открыл код страницы, а там расчет весь есть на JScript.
Но нет расчета от заданных диапазонов частот -> значения резисторов.
Решать системы уравнений мне лениво, по графикам в даташите тоже точность низкая. Поэтому написал расчет в Дельфи и полным перебором а потом уточнением вычислил:
r1=7; r2=34,7; C=40; F.MIN=8005,312; F.MAX=16009,95
r1=7; r2=34,67; C=40,06; F.MIN=8000,415; F.MAX=16000,266
r1=7; r2=34,675; C=40,059; F.MIN=8000,085; F.MAX=16000,117
Остается еще вопрос: как данные передавать в МК? Если UART завязан на частоту работы, то скорость порта тоже уплывет.
а почему вы избрали такой странноватый путь - генерацию сигналов МК путем изменения его тактовой частоты? не проще ли и не правильнее ли генерировать нужные вам сигналы при помощи МК, работающего на фиксированной частоте, т.е. менять частоту выходных сигналов ПРОГРАММНО?UA3MQJ писал(а):Остается еще вопрос: как данные передавать в МК? Если UART завязан на частоту работы, то скорость порта тоже уплывет.
битва с дураками проиграна, победители торжествуют. слава победителям!
Если в двух словах, то в связи с тем, что так требует "техническое задание". Ну или "достигнуть требуемых результатов было решено именно таким способом".
Просто МК зациклен и постоянно выдает на свои выходы 12 меандров разных частот, которые расчитываются по принципу DDS. То есть есть аккумулятор, к нему прибавляется значение и выводится на порты. Программа получается с фиксированным количеством тактов, поэтому получается известная дискретизация. Плюс к этому нужно обеспечить частотную модуляцию этих сигналов - входным аналоговым сигналом. Допустим сигнал от 0 до 1 вольта. При достужении 1-го вольта все частоты будут увеличены уже в 2 раза. По идее можно было бы этот сигнал оцифровать и в соответствии с ним увеличивать шаг. Но тут потребуется операция умножения шага на коэффициент от 1 до 2. Но это умножение - и оно очень медленно вычисляется на МК.
Просто МК зациклен и постоянно выдает на свои выходы 12 меандров разных частот, которые расчитываются по принципу DDS. То есть есть аккумулятор, к нему прибавляется значение и выводится на порты. Программа получается с фиксированным количеством тактов, поэтому получается известная дискретизация. Плюс к этому нужно обеспечить частотную модуляцию этих сигналов - входным аналоговым сигналом. Допустим сигнал от 0 до 1 вольта. При достужении 1-го вольта все частоты будут увеличены уже в 2 раза. По идее можно было бы этот сигнал оцифровать и в соответствии с ним увеличивать шаг. Но тут потребуется операция умножения шага на коэффициент от 1 до 2. Но это умножение - и оно очень медленно вычисляется на МК.
ну не так уж и медленно, если у вас не attiny какой-нибудь - в мегах есть аппаратный умножитель...UA3MQJ писал(а):Но тут потребуется операция умножения шага на коэффициент от 1 до 2. Но это умножение - и оно очень медленно вычисляется на МК.
битва с дураками проиграна, победители торжествуют. слава победителям!
Как раз тини. Передачей данных от основного контроллера думаю решить через USI, или через USART в синхронном режиме.
- Сообщения: 24
- Зарегистрирован: Вс сен 26, 2010 15:38:07
А если по прерываниям? VCO вешаете на внешнее прерывание, а таковая - как обычно, сколько надо для UART'а. Ну и по прерываниям работаете...
Пробовал, там результаты по точности генерируемых частот получились не особо удовлетворительными.
UA3MQJ, а может те в сторону МАХ038 посмотреть, она как раз до 20МГц..
http://www.terraelectronica.ru/catalog_ ... 6_1&Open=1
P.S. Или вот случайно нашёл, у SiLabs-ф оказывается тоже есть VCO-шки: http://www.electrosnab.ru/silabs/Silabs_4_2.htm
http://www.terraelectronica.ru/catalog_ ... 6_1&Open=1
P.S. Или вот случайно нашёл, у SiLabs-ф оказывается тоже есть VCO-шки: http://www.electrosnab.ru/silabs/Silabs_4_2.htm
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]


