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

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


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

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

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

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

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


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

Войти

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


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу