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

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


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

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

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

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

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


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

Войти

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


Войти сейчас