Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega8+DDS AD9850
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июн 15, 2025 22:17:56

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 69 ]    , 2, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Сб июн 22, 2013 13:27:14 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
Понятно, в строку преобразуете.
32 байта строка, наверно, здесь не нужна.
Вы собираетесь выводить строку из 9 символов, значит достаточно строки в 10 байт.

Попробуйте для начала убрать деление на 1000 , сделайте вывод на LCD в герцах (временно).
Вам потребуется строка длиной 9 байт и вместо функции ftoa использовать ltoa (если я правильно помню).
Это даст возможность локализовать проблему (если конечно проблема в этой части)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Пн июл 01, 2013 21:38:19 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Добрый день! Действительно вся проблемма с функцией ftoa,с ltoa всё работает! Терь возник вопрос, как отделить сотые через точку и вывести на LCD,например: 28850.060 ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 12:37:13 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
можно вот так
Код:

#include <stdio.h>
/*****/

char fraq_char[10];
/****/

sprintf(fraq_char,"%+5u.%03u",freq/1000,freq%1000);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 12:53:32 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Спасибо за ответ! Сегодня вечером попробую!
Такй вариант так же расматривал, но не понял что задают эти выражения: "%+5u.%03u", поясните плиз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 14:32:04 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
это форматирование вывода
+ - выравнивание в право
5 - пять символов
u - без знаковое целое

03 - три символа, если символов меньше дополняются нулями слева

чтобы разобраться, поищите примеры использования функций printf и sprintf


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 14:51:28 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Ок! Спасибо за науку, буду разбератся с функциями!


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 22:00:16 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Докладываю! Выражение sprintf(fraq_char,"%+5u.%03u",freq/1000,freq%1000); не работает!
Переменная freq у меня float.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 22:21:56 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
В чем выражается не работа?
stdio.h подключена?
На каких значениях freq проверяли?

Перед тем как это выражение выкладывать, я его проверял, у меня оно работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 22:33:39 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
Не заметил сразу
Gef79 писал(а):
Переменная freq у меня float.
, поэтому и не работает.
Зачем она float?
Если по моему коду делали она должна быть unsigned long.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Вт июл 02, 2013 23:37:26 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Пробовал перевести в unsigned long, снова ничего!
Прикрепляю файлик, подскажите что не так!
Забавно, в Протеусе не работает, залил в контроллер, работает через раз!
Ничего не понимаю, глюки)!


Вложения:
sin.c [9.39 KiB]
Скачиваний: 609
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср июл 03, 2013 08:42:31 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
Модель протеусную еще выложите.
Если вечером время будет посмотрю подробнее.

перетащил из вашего файла в тестовый проект вот это
Код:
unsigned long fraq = 28850000;

char fraq_char[10];



sprintf(fraq_char,"%+5u.%03u",fraq/1000,fraq%1000);
      lcd_gotoxy(5,0);
      lcd_puts(fraq_char);

Все работает.

Проект в приложенном архиве, в папке proteus модель для протеуса.
Попробуйте на своем CVAVR скомпилировать, будет ли работать.


Вложения:
2.RAR [210.65 KiB]
Скачиваний: 434
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср июл 03, 2013 22:10:23 
Первый раз сказал Мяу!

Зарегистрирован: Ср дек 15, 2010 16:49:44
Сообщений: 21
Рейтинг сообщения: 0
Спасибо, нарыл проблему! В компиляторе не правильно было выставлено int,width!
Вот архивчик с проектом на данный момент!
Рабочий проект sinAD2.Не доглядел, открыл в evaluationвот в нём работает, но есть ограничение по софту! В версии 2.03.09 не работает!


Вложения:
Sintez_AD.zip [292.08 KiB]
Скачиваний: 448
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Пт авг 23, 2013 00:58:58 
Родился

Зарегистрирован: Пн апр 26, 2010 22:54:01
Сообщений: 11
Рейтинг сообщения: 0
Всем привет. Вопрос по AD9850, проблема в том что синтезатор выдает немного не то что рассчитано по формулам.
Пример.
Имеем собранную схему. Кварцевый генератор на 125 МГц.
Как получить 1 Гц на выходе устройства?
Для начала нам необходимо вычислить коэффициент деления K:
K = Fген / 2^32 = 125 000 000 / 4 294 967 296 = 0.02910…
Находим код, который необходимо отослать в DDS:
Код = Fвых / K = 1 (Гц) / 0.02910 = 34,3642…. = 34

Управляющее слово состоит из пяти байт, если я ничего не путаю, пятый байт нам не нужен, это управления фазой.
Выводим 34 в двоичной форме 00000000 00000000 00000000 00000000 00100010
Но на выходе я получаю не 1Гц а 255Гц, подозрительно чтото 255 Гц, такое впечатления что проблема в коэффициенте деления, может кто то сталкивался или просто знает в чем проблема, подскажите.
В данный момент, если прикинуть, 225/34=6,6. Тоесть минимальная частота гдето 7Гц, чтото не то :cry:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Пт авг 23, 2013 09:19:40 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
Попробуйте получить еще несколько других частот (например 100Гц 1000Гц 10000Гц)
и напишите что получили на выходе DDS.

Подозреваю что при передаче в чип DDS управляющее слово сдвинуто на 1 байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Пт авг 23, 2013 10:59:58 
Родился

Зарегистрирован: Пн апр 26, 2010 22:54:01
Сообщений: 11
Рейтинг сообщения: 0
Я тоже так подозреваю, выставляю 10Гц, получаю 2550Гц. А что можно сделать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Пт авг 23, 2013 11:26:00 
Родился

Зарегистрирован: Пн апр 26, 2010 22:54:01
Сообщений: 11
Рейтинг сообщения: 0
Всем спасибо за ответы, нашел причину :)) , на бумажке то я пишу что в управляющем слове 5 байт а програмно забыл за 5 байт и командное слово получилось 4 байта. Вот этот здвиг на один байт и получился :oops:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср ноя 13, 2013 14:28:48 
Потрогал лапой паяльник
Аватар пользователя

Карма: -19
Рейтинг сообщений: 2
Зарегистрирован: Пн сен 12, 2011 12:13:46
Сообщений: 351
Рейтинг сообщения: 0
Здравствуйте, тоже заинтересовался схемой с генератором AD9850, но по форуму так и не понял, доделал генератор кто до конца?
Если можно поделитесь пожалуйста схемой подключения и рабочим проектом. :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср ноя 13, 2013 21:41:20 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 0
Я свою пока не доделал, отложил из за отсутствия времени.
Готовых проектов в сети много, со схемами и прошивками, под разные цели.
Или возьмите мой проект (выкладывал выше) и доделайте под свои цели,
там осталось только дисплей с кнопками или валкодером прикрутить, управление ДДС полностью работает.

Если нужен именно готовый проект, могу прислать в личку несколько ссылок, или гугол поможет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср ноя 13, 2013 21:54:30 
Потрогал лапой паяльник
Аватар пользователя

Карма: -19
Рейтинг сообщений: 2
Зарегистрирован: Пн сен 12, 2011 12:13:46
Сообщений: 351
Рейтинг сообщения: 0
bobr25 смотрел ваш архив, я так понял что там пока заготовки.
Интересует именно начальный проект с управлением AD9850, и принципиальная схема что куда подключено. А ссылки готовых проектов спасибо не надо.
Эта тема та что мне нужно, у меня такая платка есть .
Тока в программировании я слабак, успехи небольшие есть в CodeVisionAVR , но так только "вершки"... вот и спросил, может поделитесь , если есть успехи, а если у меня получится что , так я тоже в долгу не останусь. :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega8+DDS AD9850
СообщениеДобавлено: Ср ноя 13, 2013 22:45:23 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Ср мар 10, 2010 16:19:15
Сообщений: 29
Рейтинг сообщения: 1
Посмотрите мои сообщения от Пн июн 03, 2013 21:58:33 там код по управлению AD9850 с комментариями,
от Чт июн 13, 2013 16:03:25 там подключение меги к DDS модулю и полностью проект для CodeVisionAVR (AD9850_test.rar) Проверен на таком же точно модуле.
В этом проекте частота задается однократно и настраивает DDSку на нее.
Чтобы менять частоту на ходу последовательность такая:
1. задали частоту в переменной freq.
2. готовим управляющее слово
Код:
un.dataword_byte[4]=0b00000000;
un.dataword_freq = freq*k;     

3. отправляем управляющее слово
Код:
FQ_UD =1;
       FQ_UD =0;
       
        for (i=0; i<5; i++)
        {
        spi(un.dataword_byte[i]);
         }
         
        FQ_UD =1;
        FQ_UD =0;     

4. Новая частота установлена, наслаждаемся результатом.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 69 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y