25 сообщений в этой теме

Всем привет, кто нибудь работал с MCP4921, я в анг.языке не силён и поэтому раскурить даташит на данную микру не особо получается, может ли кто нибудь подсказать, как настроить выходную частоту. Привожу осциллограмму и код. http://pastebin.com/5iGNRgtZ <- код тут. Всем спасибо. 

MCP.jpg

Atmega8.png

Изменено пользователем Шамиль Прилов
Добавил схему.
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что за "выходная частота"? Это же ЦАП. У него аналоговый выход.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Vascom сказал:

Что за "выходная частота"? Это же ЦАП. У него аналоговый выход.

Ну вот я генерю какой нибудь сигнал с помощью ЦАПа, как мне выходную частоту менять? Та же пила. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На выходе ЦАПа должен быть твой сигнал. Что запишешь в ЦАП, то и будет.

Всё же, о какой частоте речь?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вот пила, частота близка к 300Hz, как мне сделать допустим 600Hz, 700Hz, 800Hz, в ДШ сказано что макс.вых.частота 20 MHz. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

цап не при чём

копайте программу генерации сигнала

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

20МГц - это максимальная частота интерфейса SPI. То есть на выходе DAC сигнал может меняться с максимальной частотой около 1МГц.

Записывай в DAC другую пилу - будет и она на выходе.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, Vascom сказал:

20МГц - это максимальная частота интерфейса SPI. То есть на выходе DAC сигнал может меняться с максимальной частотой около 1МГц.

Записывай в DAC другую пилу - будет и она на выходе.

Т.е для генерации допустим синуса в 20kHz мне нужен более быстродейственный ЦАП? 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет, этот подойдёт. Он может синус до 1МГц выдавать.

Но только отчёты этого синуса надо постоянно подавать в цап. Вообще представляешь как цап работает?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Vascom сказал:

Нет, этот подойдёт. Он может синус до 1МГц выдавать.

Не могли бы код с пилой показать как будет выглядить? Я что то совсем не пойму, задержек в коде нет, на прерывания не ухожу, т.е я с максимально возможной частотой запихиваю в DAC и даже в этом случае у меня максимальная частота 12-битной пилы близка к 300Hz. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В строке

unsigned int Level = (unsigned int)(Voltage * 4096) / 5;

Попробуй увеличить число 4096 в несколько раз.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда по другому генерируй эту пилу. Например не умножением, а прибавлением постоянного числа.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну тк она у меня прибавлением и генерируется 
 

	for ( float i = 0; i < 5; i = i+0.1){	
    convert_DAC(i);
    }
	convert_DAC(0); 
	}

 

Данная строка лишь переводит нормальное напряжение вида 4.33 вольт, в понятное значение понятное контроллеру.
 

unsigned int Level = (unsigned int)(Voltage * 4096) / 5;

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ага, тогда сделай i = i+0.5 например

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Vascom сказал:

Ага, тогда сделай i = i+0.5 например

Блиин.. капец я тугодум. Ну да, от этой строки скорость и зависит) Спасибо вам, добрый человек. 
 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тогда генерируй её по другому, а не этим странным кодом.

Изменено пользователем Vascom
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, Vascom сказал:

Тогда генерируй её по другому, а не этим странным кодом.

Думаю единственный вариант это тактировать мк от внешнего кварца 16MHz, бит ускоренной передачи данных по SPI итак включён уже. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

- Не используй дробные числа.

- Можно использовать внутрений счетчик процессора (будет более равномерно и на максимальной скорости).

- Дескретизация 12 бит это много 16MHz/4096 = 3906,25Hz - максимально возможная частота.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не-не-не, одно число передаётся за 16 тактов, плюс ещё несколько между передачами. Так что 16МГц/20 = 0.8МГц - максимальная возможная частота.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 16.02.2017 в 10:45, Сергей Степанов сказал:

- Не используй дробные числа.

- Можно использовать внутрений счетчик процессора (будет более равномерно и на максимальной скорости).

- Дескретизация 12 бит это много 16MHz/4096 = 3906,25Hz - максимально возможная частота.

В конечном итоге убрал это конвертирование float в понятный ЦАП код, но скорость передачи осталась та же. Будем искать другой ЦАП =) 
Всем спасибо за ответы. 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем другой ЦАП? Нужна скорость более 1МГц?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтоб ступеньки по выходу глаза не мозолили, фильтр ставят. Та же АД9850 с частотой 125 МГц, по выходу гарантировано 40 МГц , 1/3. Т.е. для МСР4921 примерно 0.6 МГц, хотя без ДМА АтМега больше 150 кГц в прерывание нырять не сможет, так что ЦАП по быстродействию х4 с запасом 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сообщения

    • Не знаю, по теме ли, но может быть поможет кому... У меня вот три одинаковых случая было с ATtiny2313. Шил я их с помощью PonyProg2000, через самодельный программатор на COM-порте. Проблема возникла такая - игрался я значит с этим камешком, что-то шил туда, совал в схему (ISP-разъемов я не делаю, просто таскаю камень из панельки в панельку), тестил, отлаживал, снова шил - в общем, вы в курсе ...  Фьюзы не трогал... И вдруг, при очередном подключении микрухи к программатору и попытке его прошить Поня выкидывает окошко - "Error (-24) - unknown device!", и все! И это при том, что будучи сунут в схему камень-то пашет!!! А с Поней почему-то общаться не хочет... Снаяала я тоже подумал, что фьюзы забились - доктора разработал, собрал, оттестил на рабочих МК (и даже статью про него в "Радиоконструкторе" опубликовал ); но прогнал через доктора болящих и... ни-че-го! Опять долбанная (-24)!!! Тогда, окончательно психанув (столько времени на "Доктора" потратил!), я крикнул "клизму им!", и в сообщении об ошибке нажал не как всегда "Cancel" (типа, отказаться от затеи), а "Ignore" (типа, наплевать, что МК не отвечает, и залить в него прошивку через ж##у)... И - о чудо! - новая прошивка залилась в микруху, и она абсолютно нормально заработала! То же и при попытке прочитать МК или его фьюзы - Поня ругается, мол камень не отзывается, не вижу его; а я ей - "Ignore" - типа, все равно пытайся! И микр нормально прочитался, и все фьюзы его тоже!.. Вот такая вот "трю стори"...  А если прикинуть, что же привело микруху к такой необщительности, то я думаю, что виной всему статическое напряжение на наших руках (хотя, котэ я не держу )... Не зря же про него так навязчиво пишут практически во всех дата-шитах!.. Минздрав, как говорится, предупреждал!..
    • Роман, ну, есть же люди - мастера в своём секторе деятельности, а рядышком никак...
      Рассказывал напарник про его коллегу, аспиранта, который три года делал блок питания, но дальше овощного ящика и диодного моста не ушёл.
    • Асхат, Настройка передатчика это искусство.Тут включается всё и опыт и знание и смекалка,само собой и умение пользования кип.
    • Богдан, А потом займись его изучением как его эксплуатировать и проводить измерения
    • Играюсь, в основном, с "мелкотой" - ATtiny2313 и ATtiny13, т.к. для неболших поделок в дом и в автомобиль их функциональности вполне хватает - зачем же тогда переплачивать за "навороченные" меги? А единственным вменяемым выбором для "малышей" является "Тетя Ася". MicroPascal, конечно же, прекрасен, но его аппетиты по отношению ко Flash-памяти ставят крест на всех его достоинствах; да и библиотек к нему пока что маловато... А Сю я не люблю с самого начала за душевнобольной синтаксис - от обилия черточек натурально болят глаза... А вот в новомодных Ардуинах нужды пока что не испытываю - во-первых, и Тинек хватает; а во-вторых жду, когда гуманисты наконец-то создадут Pascal-образную среду для этих девайсов... К Сям я, как видите, не толерантен - модератор, можете банить!
    • Это как в вождении авто,помимо знания смысла дорожных знаков и правил надо еще и уметь водить машину и знать устройство и принцип работы всех узов автомобиля.Что бы смог отремонтировать.
      А ты хочешь знать только что обозначают дорожные знаки и толку с этого?
      Так и в радиотехнике,мало знать условные графические обозначения,надо ещё знать устройство и принцип работы всех деталей, узлов и каскадов.И два дня будет мало чтоб узнать. https://vk.com/doc146041070_429173772
    • Посмотрел, да, в отличие от NRF24L01 у RXQ2-433 есть broadcast плюс вроде бы можно использовать один адрес для множества конечных устройств. Можно было бы всех посадить на один адрес, а адресацию организовать программно. В таком случае любое устройство могло бы инициировать передачу, первоначально прослушав, нет ли активного обмена данных между другими устройствами. Короче, надо вначале разобраться, что на самом деле мне нужно. Возможно, поллинг был бы все же наиболее определенным процессом. Кстати, судя по всему эти RXQ2-433 не так легко найти?