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

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

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

Сообщение welder_2002 »

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

Сообщение Mozart »

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


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

з.ы. я посмотрю... скорее на след неделе...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Аватара пользователя
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.
МК получает инфу о кномпках от плисины, вывдит инфу на жк через поисину, и формирование сигнала тоже через плисину, записывает в память плисины значения она их там сама выводит
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Аватара пользователя
KT315B
Сверлит текстолит когтями
Сообщения: 1269
Зарегистрирован: Пт июл 21, 2006 15:05:19
Откуда: плод воображения
Контактная информация:

Сообщение KT315B »

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

Сообщение Mozart »

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

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