Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 24.02.2010, 14:45  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

На пальцах красиво. А вот как это в коде выглядит?
Реклама:
Kabron вне форума  
Непрочитано 24.02.2010, 14:55  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

если кому-то пригодится
процедура на Си установки частоты с помощью второго контроллера


частоту можно увеличить, загрубив unsigned long calib=734;
freq_data.delta=freq*10000/calib;

Код:
void set_freq(unsigned long freq)
{
unsigned long calib=7336;

union alpha {
       unsigned char bytes[4];
       unsigned long delta;
       }freq_data;       

freq_data.delta=freq*100000/calib;
USART_SendChar('s');
USART_SendChar(freq_data.bytes[2]);
USART_SendChar(freq_data.bytes[1]);
USART_SendChar(freq_data.bytes[0]);           
}

Последний раз редактировалось spballiance; 21.03.2010 в 14:48.
spballiance вне форума  
Непрочитано 24.02.2010, 15:47  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Ну да, это не так просто

Приём байт выглядит так, это первые 3 лупа, в программе всего 9.
Код:
	rjmp	start1	;
a1:	nop		;
	nop		;
	nop		;
	nop		;
	rjmp	a3

singen:	out	porta,r18	; 01

start1:	add	r24,r19	;
	adc	r25,r20	;
	adc	r26,r21	;
	adc	r30,r22	;
	ld	r23,z	;
	add	r24,r19	;
	adc	r25,r20	;
	adc	r26,r21	;
	out	porta,r23	; 02 

	adc	r30,r22	;
	ld	r23,z	;
	add	r24,r19	;
	adc	r25,r20	;
	adc	r26,r21	;
	adc	r30,r22	;
	ld	r18,z	;
	out	porta,r23	; 03

	sbis	UCSRA,RXC
	rjmp	a1
	cpi	yl,y0
	brne	a2
	clr	time
a2:	in	r16,UDR
	st	y+,r16
	nop
a3:	out	porta,r18	; 04

Последний раз редактировалось =GM=; 24.02.2010 в 17:20.
=GM= вне форума  
Непрочитано 24.02.2010, 16:28  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

Пасиба =GM=, бум изучать.
Kabron вне форума  
Непрочитано 01.03.2010, 17:51  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

продолжу тему

с опорным генератором синуса вроде разобрались. теперь стоит задача с оконечным генератором.

требования
1) Umin=›9В Umax‹=15B
2) регулируемые (пока в ручную) Umin Umax
3) высокая нагрузочная способность до 30А
4) работа в пределах 20Гц-40КГц
spballiance вне форума  
Непрочитано 01.03.2010, 23:27  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

Уважаемый =GM=. Появилась, мб крамольная идея. В моем девайсе(https://kazus.ru/forums/showthread.php?t=16866) юзаются 2 uC, один меряет частоту (методом захвата), другой используется как DDS. Идея в совмещении этих функций в одном кристалле, без прерывания работы DDS. Как думаете, можно извернуться?
Kabron вне форума  
Непрочитано 02.03.2010, 00:43  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию DDS и Fmeter в одном флаконе

Вполне можно совместить, для частотомера надо не так уж много ресурсов - одно умножение (аппаратное вообще 30 тактов) и одно деление (это порядка 400 тактов), ну и выдача результата на индикацию.

Оценка исходит из моей собственной реализации частотомера методом захвата, который я изложил на электрониксе. Предполагаю, что вы используете тот же алгоритм.

Конечно, сказанное сильно зависит от конкретных параметров: диапазон измеряемых частот, погрешность измерения, частота выдачи выборок и т.п.

Добавлю, деление 32/32-›32 требует много регистров, здесь может быть существенное ограничение, хотя в принципе можно использовать нижние регистры.

Последний раз редактировалось =GM=; 02.03.2010 в 00:49.
=GM= вне форума  
Непрочитано 02.03.2010, 02:08  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,564
Сказал спасибо: 701
Сказали Спасибо 4,334 раз(а) в 1,985 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

Всетаки выглядит довольно печально. Я естественно имел ввиду некоторое увеличение рабочего цикла DDS.
Напрашивается реализация цикла DDS по таймерному прерыванию, так чтобы все измерения и вычисления выполнялись в основном цикле. Но оценки верхней частоты на пальцах не удаются. Наверное для частот ›1 ‹5 MHz - нереально.
Будем считать вариант тупиковым или примером для экстремальных упражнений в кодописии. Да и лишний uC не такая уж роскошь.
Kabron вне форума  
Непрочитано 02.03.2010, 14:45  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию DDS и Fmeter в одном флаконе - вполне возможно

Нет, в своих расчётах я предполагал, что цикл для DDS останется прежним - 10 тактов или 2000 квыб/с для тактовой 20 мег. Ну и поскольку это достаточно короткий цикл, то о прерываниях придётся забыть.

Для данного цикла загруженность проца составляет 70%, на реализацию частотомера остаётся 30%, ну, с учётом накладных расходов на сохранение статус-регистра остаётся 24%.

Не поленился, поднял свою старую программу 2001 года, МК был забит под завязку, но для частотомера использовался примерно 1% ресурсов МК в части быстродействия, причём там была реализация с одним захватом на голом проце, что ограничивало измеряемые частоты до 4 МГц. Как видите, в вашем случае даже присутствует небольшой запас по быстродействию.

На практике совмещение двух таких устройств в одном МК имеет смысл только если у вас намечается немеряное производство подобных изделий, тут каждый пенс должен быть на счету. И никакой модернизации после начала выпуска.

Во всех остальных случаях такое кодирование призвано обострить игру ума и только, ну может поизумлять небольшую группу посвящённых.

Последний раз редактировалось =GM=; 02.03.2010 в 20:28.
=GM= вне форума  
Непрочитано 21.03.2010, 14:12  
spballiance
Вид на жительство
 
Регистрация: 13.02.2010
Сообщений: 372
Сказал спасибо: 12
Сказали Спасибо 15 раз(а) в 12 сообщении(ях)
spballiance на пути к лучшему
По умолчанию Re: Регулировка частоты на контроллере

снова подниму тему

можно ли доработать данный генератор частоты до такого диапазона?
10мкГц-1000КГц (+-1%)


текущая характеристика
//long xtall=16000000;
//long razrad=16777216;
//char cycle=13;
//calib=xtall/razrad/cycle=0,073359563
//float calib=0.073359563;


calib=7336
freq_data.delta=freq*100000/calib;

если хотим 10Гц, то имеем 10*100000/7336=136,31 0,22%

1Гц=13,61 5%

0,1Гц=1,361 26%

1000КГц=13 631 406,76 - попадаем в наш диапазон вполне

Последний раз редактировалось spballiance; 21.03.2010 в 14:42.
spballiance вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение частоты на ATmega8 lextorg Микроконтроллеры, АЦП, память и т.д 22 14.01.2010 14:48
Контроль частоты вращения Faxa Электроника - это просто 6 06.01.2010 23:43
Делитель частоты Gladkih TTL и CMOS логика 7 07.12.2009 18:31
Генератор частоты на Mega - как? code-by Микроконтроллеры, АЦП, память и т.д 9 10.11.2009 15:02


Часовой пояс GMT +4, время: 08:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot