Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 2 из 6 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 11 по 20 из 51

Тема: AD9850 - помеха-щелчок на выходе в момент запоминания частоты

  1. #11
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    У меня в DDS VFO используются китайские Arduino Nano и модуль DDS на AD9850, и основой для скетча служит всё тот же код от AD7C (правда, сильно переделанный, остались от него рожки да ножки). Часть кода с записью в EEPROM осталась неизменной, лень было переписывать. Так никакого щелчка при записи нет.
    Игорь


  2. #12
    R2DHG - нет, всё запитано отдельными линиями напрямую от стабилизатора 7805, тот, который 1.5А держит. Общий потребляемый ток всего синтезатора 120ма. Так что просадка исключена.

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

  3. #13
    Аватар для IG_58
    Регистрация
    27.10.2012
    Адрес
    Германия
    Сообщений
    13,014
    Записей в дневнике
    18
    Цитата Сообщение от DX888 Посмотреть сообщение
    можете свой скетч скинуть? я в программировании ардуино не разбираюсь, но так, интуитивно может найду что..
    Скетч Вам вряд ли поможет, в части записи в EEPROM он не отличается от AD7C.

    Кстати, можете спокойно писАть в EEPROM не раз в 2 секунды, а раз в минуту. Чаще и не нужно.
    Последний раз редактировалось IG_58; 08.01.2017 в 18:51.
    Игорь

  4. #14
    Цитата Сообщение от IG_58 Посмотреть сообщение
    Кстати, можете спокойно писАть в EEPROM не раз в 2 секунды, а раз в минуту. Чаще и не нужно
    да это понятно, можно и больше сделать, вопрос-то не в этом, а в том, почему возникает этот "бип" и как его убрать

  5. #15

    Регистрация
    28.04.2005
    Адрес
    Московская обл., г. Мытищи
    Сообщений
    3,923
    Позывной
    ex RW3DKC
    Уберите плату с ардуиной подальше, а провода к ней на кольцо ферритовое намотайте - может по воздуху прилетает из за неудачного расположения.

    Я сам в готовую конструкцию такое не собирал, но вот тут https://www.youtube.com/watch?v=IhfhMZfgDI0 похожий скетч - так же пишет, не "бип"ает.

  6. Спасибо от DX888

  7. #16
    Цитата Сообщение от R2DHG Посмотреть сообщение
    Уберите плату с ардуиной подальше, а провода к ней на кольцо ферритовое намотайте - может по воздуху прилетает из за неудачного расположения
    Нет, это исключено, проблема именно в скетче. Буквально до вчерашнего дня у меня на плате стоял синтезатор на AD9833, с той же ардуиной, при том же расположении всех элементов трансивера. Ничего не бим-кало, когда запоминалась частота. А вчера просто заменил модуль DDS AD9833 на DDS AD9850, и пошло это бим-канье. Проблема определённо в коде.

  8. #17
    Цитата Сообщение от DX888 Посмотреть сообщение
    А вчера просто заменил модуль DDS AD9833 на DDS AD9850
    Скетч меняли? Или у них управление одинаково?

  9. #18

    Регистрация
    28.04.2005
    Адрес
    Московская обл., г. Мытищи
    Сообщений
    3,923
    Позывной
    ex RW3DKC
    Какой скетч был для AD9833 ? Загадочно это.
    ( Может в тех самых шумах тонуло ? )

  10. #19
    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Скетч меняли? Или у них управление одинаково?
    Ну естественно)), поскольку и микросхемы разные, и на прошлом синтезаторе не было дисплея, были только 3 светодиода для отображения шага перестройки.

    Вот, какой был:

    Скрытый текст

    /*
    Main code by Richard Visokey AD7C - www.ad7c.com
    */
    #include <rotary.h>
    #include <EEPROM.h>

    #define DDS_SCLK 8
    #define DDS_FSYNC 9
    #define DDS_SDATA 10
    #define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW);}
    #define pulseLow(pin) {digitalWrite(pin, LOW); digitalWrite(pin, HIGH);}

    Rotary r = Rotary(2, 3);

    const int LEDS[] = {11, 12, 13}; // Пины светодиодов-индикаторов шага престройки
    const int_fast32_t INC_VALUES[] = {1000, 250, 25}; // Возможные значения шага перестройки
    const int INC_CNT = 3; // Число возможных значений
    const int_fast32_t DEFAULT_RX = 3600000; // Частота по умолчанию

    int_fast32_t increment;
    int cur_inc = 0;
    int_fast32_t rx;

    int button_state = 0;
    //---------------------------------------------------------------------------------------------------------
    void setup() {
    // Инициализируем глобальные переменные
    increment = INC_VALUES[0];

    // Работа с EEPROM
    // Число 123 используется как маркер, что в памяти не рандомный бред
    if (EEPROM.read(0) != 123)
    {
    rx = DEFAULT_RX;
    // EEPROM.clear();
    EEPROM.write(0, 123);
    EEPROM.put(1, rx);
    }
    else
    EEPROM.get(1, rx);

    for (int i = 0; i < INC_CNT; ++i)
    {
    pinMode(LEDS[i], OUTPUT);
    digitalWrite(LEDS[i], HIGH);
    }
    pinMode(A0, INPUT);
    digitalWrite(A0, HIGH);
    PCICR |= (1 << PCIE2);
    PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
    sei();
    pinMode(DDS_FSYNC, OUTPUT);
    pinMode(DDS_SCLK, OUTPUT);
    pinMode(DDS_SDATA, OUTPUT);
    digitalWrite(DDS_SCLK, HIGH);
    digitalWrite(DDS_FSYNC, HIGH);
    tfr_word(0x2100);
    send_frequency(rx);
    tfr_word(0xC000);
    tfr_word(0x2000);
    }
    //---------------------------------------------------------------------------------------------------------
    void loop()
    {
    button_state = digitalRead(A0);
    if (button_state == LOW)
    set_increment();
    delay(30);
    }
    //---------------------------------------------------------------------------------------------------------
    ISR(PCINT2_vect)
    {
    unsigned char result = r.process();

    if (result) {
    if (result == DIR_CW) {
    if ((rx + increment) < 3800000) {
    rx = rx + increment;
    }
    }
    else {
    if ((rx - increment) > 3500000) {
    rx = rx - increment;
    }
    }
    }
    EEPROM.put(1, rx);
    send_frequency(rx);
    }
    //---------------------------------------------------------------------------------------------------------
    void send_frequency(double frequency)
    {
    int32_t freq;
    int16_t MSB;
    int16_t LSB;
    int16_t phase = 0xC000;
    freq = frequency * 268435 / 25000;

    MSB = (int)((freq & 0xFFFC000)>>14);
    LSB = (int)(freq & 0x3FFF);

    //Установка DB15 и DB14
    LSB |= 0x4000;
    MSB |= 0x4000;

    //tfr_word(0x2100);
    tfr_word(LSB);
    tfr_word(MSB);
    tfr_word(phase);
    //tfr_word(0x2000);
    }
    //---------------------------------------------------------------------------------------------------------
    void tfr_word(int16_t data)
    {
    digitalWrite(DDS_FSYNC, LOW);
    for (int i = 0; i < 16; i++) {
    digitalWrite(DDS_SDATA, (bool)(data & 0x8000));
    data <<= 1;
    data &= 0xFFFF;
    pulseLow(DDS_SCLK);
    }
    digitalWrite(DDS_FSYNC, HIGH);
    }
    //---------------------------------------------------------------------------------------------------------
    void set_increment()
    {
    cur_inc = (cur_inc + 1) % INC_CNT;
    increment = INC_VALUES[cur_inc];
    for (int i = 0; i < cur_inc; ++i)
    digitalWrite(LEDS[i], LOW);
    for (int i = cur_inc; i < INC_CNT; ++i)
    digitalWrite(LEDS[i], HIGH);
    delay(250);
    }
    //---------------------------------------------------------------------------------------------------------



  11. #20

    Регистрация
    28.04.2005
    Адрес
    Московская обл., г. Мытищи
    Сообщений
    3,923
    Позывной
    ex RW3DKC
    Ого... жестко, каждый шаг Тем не менее в коде ничего такого нет - сами же видите. Поменяйте .write на .put в EEPROM.write(0,x); - будет поменьше писать при небольших изменениях.

Страница 2 из 6 ПерваяПервая 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Скомпилированная таблица частот на текущий момент
    от UA9ARM в разделе Правовой практикум радиолюбителя
    Ответов: 56
    Последнее сообщение: 06.11.2015, 18:43
  2. Ответов: 7
    Последнее сообщение: 27.12.2011, 15:29
  3. КВ синтезатор частоты с дискретным переключением частоты
    от user_199 в разделе Трансиверы, приемники КВ/УКВ
    Ответов: 8
    Последнее сообщение: 05.06.2011, 20:32
  4. Ответов: 61
    Последнее сообщение: 26.11.2009, 10:37

Ваши права

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