Перейти к содержанию

Рекомендуемые сообщения

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

MCP.jpg

Atmega8.png

Изменено пользователем Шамиль Прилов
Добавил схему.
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

1 минуту назад, Vascom сказал:

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

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

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

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

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

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

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

11 минуту назад, Vascom сказал:

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

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

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

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

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

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

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

3 минуты назад, Vascom сказал:

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

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

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

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

	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;

 

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

2 минуты назад, Vascom сказал:

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

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

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

15 минут назад, Vascom сказал:

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

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

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

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

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

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

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

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

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

В 16.02.2017 в 10:45, Сергей Степанов сказал:

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

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

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

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

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

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

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Если не добавлять: при чтении регистра UDR сбрасывается флаг прерывания RXC. После приёма  "\r" и установки флага FLAG_END_RX обработчик больше не читает UDR. Но затем приходит "\n" от плеера, снова устанавливается флаг RXC, и программа зависает в бесконечном прерывании.
    • Сказал - сделал! Благодарю! И остальным, у кого Ц4353 может сломаться, данная табличка будет очень полезна!
    • Автору. Никаких тут 250...200 ватт у этой китайской бздюшки нет в помине. Тем паче на таком подобии радиатора Катушки даже на выходе нет-плохо  
    • Повторюсь - НЕТ, так как у вас там крутилки, что приведет к искажениям при работе в мостовой схеме. Если бы вы "могли" то вам нужно было разорвать выход с темброблока и вход усилителей и впаять (можно навесом) вот такую схему:
    • Все верно, вы почти все что нужно сделали.  Только не нужно было добавлять это b=UDR; Сразу после старта сбросить флаг flags = 0; А в основном цикле ждать установки флага FLAG_END_RX. И если он установлен, проверять на совпадение строки в буфере (rx_buf) с вашей строкой (AT+QM \ r \ n .....   .....  AT+MP \ r \ n) При совпадении вызывать выполнение нужного алгоритма.
    • У меня до саба ещё дело не дошло, только сейчас думаю купить амп на полкиловатта, но так можно, при условии, что на входе будет моно, и будет срез частот
    • Про флаг Т: если он не используется в основной программе, а у меня он постоянно в деле. для меня меня отложенная обработка прерывания обычное дело, нужно лишь правильно расставить приоритеты частей программы. И обычное дело: выставляешь частоту задающего генератора побольше, делишь его до получения частоты 1000 Гц каким либо таймером, загоняешь в прерывание с флагом. затем закольцовываешь основную программу с проверкой флага прерывания от таймера 1000Гц. загоняешь программу в Sleep. Получаешь кольцо обработки с образцовым интервалом в 1 мс. После любого прерывания проверяешь флаг от таймера, если он, то сбрасываешь флаг и начинаешь перебирать подпрограммы обработки индикаторов, клавиатуры, и тд. и тп, подпрограммы обработки флагов и др. После окончания обработки всех подпрограмм возвращаешься к Sleep. И так по кольцу. Если происходит прерывание не от таймера, программа выходит из Sleep, проверяется флаг от таймера, если не он (а это не он) обратно к Sleep. В большенстве программ использую этот алгоритм.   GPIOR1 и GPIOR2 в 88 условно можно использовать как флаги, но их адреса больше 0х1Е, на них не распространяются команды cbi, sbi, sbic, sbis, и их сначала нужно загрузить в общий регистр, промодифицировать, и заново сохранить. Эта последовательность длинная, и модифицирует SREG, что сводит на нет работу по сравнению с  классическим GPIOR.
×
×
  • Создать...