Функциональный DDS генератор на AVR - нужна помощь

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт фев 05, 2008 22:14:32

Сообщение welder_2002 »

Собрал я функциональный генератор http://www.scienceprog.com/avr-dds-sign ... rator-v20/
Штука довольно неплохая и универсальная. Но основная проблема в том, что у него, чтобы изменить частоту приходится переводить его в режим "Off", а потом изменив значение частоты на индикаторе, включать - "ON". Это очень неудобно, но я не умею программировать. Помогите изменить программу, чтобы частоту можно было менять кнопками не выключая генерацию сигнала.
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

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

з.ы. я посмотрю... скорее на след неделе...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

в общем я посмотрел не дожидаясь след недели...
в функции main если

Код: Выделить всё

Main_Init();
	while(1)//infinite loop 
	{
		if (SG.flag == 1)    //закоментировать
		{

....
			if (SG.mode == 7)
			{
				//Noise
				do
				{
					R2RPORT=rand();
				}
				while(SG.flag == 1);  //меняем на SG.mode == 7
....
			else if (SG.mode==8)
			{
				//High speed signal
				Timer1_Start(SG.HSfreq);
				while(SG.flag == 1)   //меняем на SG.mode==8
				{
				//not implemented
				CopyStringtoLCD(MNON, 13, 1 );
				}
и в этой асмовской вставке тоже надо кое-чего поменять...

Код: Выделить всё

void static inline Signal_OUT(const uint8_t *signal, uint8_t ad2, uint8_t ad1, uint8_t ad0)
{
asm volatile(	"eor r18, r18 	;r18<-0"	"\n\t"
				"eor r19, r19 	;r19<-0"	"\n\t"
				"1:"						"\n\t"
				"add r18, %0	;1 cycle"			"\n\t"
				"adc r19, %1	;1 cycle"			"\n\t"	
				"adc %A3, %2	;1 cycle"			"\n\t"
				"lpm 			;3 cycles" 	"\n\t"
				"out %4, __tmp_reg__	;1 cycle"	"\n\t"
				"sbis %5, 2		;1 cycle if no skip" "\n\t"
				"rjmp 1b		;2 cycles. Total 10 cycles"	"\n\t"
				:
				:"r" (ad0),"r" (ad1),"r" (ad2),"e" (signal),"I" (_SFR_IO_ADDR(PORTA)), "I" (_SFR_IO_ADDR(SPCR))
				:"r18", "r19" 
	);
}
чисто теоретически должно работать, но вполне вероятно что ещё надо где-то поменять, в коде не копался...

но я ещё раз повторюсь... прежде чем у вас будет какой-то более менее приемлемый сигнал будет много мусора, а то может вообще ничего не будет...
чисто теоретически можно встроить два МК или в связке МК+ПЛИС...
Вариант 1.
1ый МК выводит инфу на ЖК и клаву и управляет вторым который тамчто-о генерирует
Вариант 2.
МК получает инфу о кномпках от плисины, вывдит инфу на жк через поисину, и формирование сигнала тоже через плисину, записывает в память плисины значения она их там сама выводит
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1269
Зарегистрирован: Пт июл 21, 2006 15:05:19
Откуда: плод воображения

Сообщение KT315B »

У меня есть проект DDS-генератора МК+ПЛИС, если надо - проконсультирую...
R2AIV 73!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow

Сообщение Mozart »

можно вообще Cyclone II/III взять и встроить туда НИОС2... вообще всё будет в одном корпусе... да и напишите на верилоге пару своих компонентов... и будет супер работать + быстро!!!
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Контактная информация:
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»