Форум: Техническая поддержка

Тема: E-502 асинхронный вывод

Вы не вошли.

 Поиск | Регистрация | Вход 

18.07.2018 14:31:34
#1

Участник
Здесь с 18.07.2018
Сообщений: 1

E-502 асинхронный вывод

Добрый день.

Устройство: Е-502-P-EU-D
версия ПЛИС:  0.13         
версия APM:   1.0.14.0

Требуется:
Синхронный  сбор:     16 Диф. каналов  с частотой 160000Гц или 10000Гц кадр.
                                     Цифровой канал  с частотой 10000Гц

Синхронный  вывод:    Оба  ЦАПа   с частотой 10000Гц

Асинхронный вывод:    Цифровой канал.

    С данными параметрами асинхронный   вывод срабатывает крайне редко и программа выдает сообщение
“Ошибка  Cortex-M4. Не удалось дождаться ответа на обращение к регистру ПЛИС”
С увеличением частоты вывода на ЦАПы ошибки становятся реже и исчезают примерно
на 90000Гц.

Такое поведение можно наблюдать если изменить Ваш пример из examples/CppBuilder/x502_general:

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

int32_t TForm1::setAdcFreq() {
    double f_Out;
    double f_acq = 160000;
    double f_lch = 10000;
    double f_din = 10000;
    /* устанавливаем требуемую частоту сбора. */
       ...
     f_Out = 10000;                 // <<---------------------------
     X502_SetOutFreq(hnd,&f_Out);
    return err;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStartClick(TObject *Sender)  {
                ...
    /* разрешаем синхронный ввод АЦП */
    if (err == X502_ERR_OK)
        err = X502_StreamsEnable(hnd, X502_STREAM_ALL_IN | X502_STREAM_DAC1 | X502_STREAM_DAC2);
                ...   
}
//---------------------------------------------------------------------------
// Сделал цикл чтобы на кнопку не давить
void __fastcall TForm1::btnAsyncDigOutClick(TObject *Sender) {
    if (hnd!=NULL) {
        uint32_t val = StrToInt(edtAsyncDigOut->Text);
         int32_t err;

        for(int i=0;i<50;i++)
        {
         err = X502_AsyncOutDig(hnd, 0, 0);
         if (err != X502_ERR_OK)
            MessageDlg("Ошибка асинхронного вывода на цифровые линии: " + String(X502_GetErrorString(err)),
                        mtError, TMsgDlgButtons() << mbOK,NULL);
         Sleep(50);
         err = X502_AsyncOutDig(hnd, 1, 0);
         if (err != X502_ERR_OK)
            MessageDlg("Ошибка асинхронного вывода на цифровые линии: " + String(X502_GetErrorString(err)),
                        mtError, TMsgDlgButtons() << mbOK,NULL);
         Sleep(50);
        }
    }
}

   В общем случае, после настройки частоты вывода меньше чем ??????Гц, асинхронный вывод как на цифровой канал так и на ЦАП
происходит с ошибками.

   Программа L-Card Measurement Studio - 1.2.2 также дает ошибку в аналогичной ситуации.   

    Прошу разъяснений.

18.07.2018 18:33:48
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E-502 асинхронный вывод

Здравствуйте, Геннадий.
Судя по всему, это особенность текущей реализации прошивки ПЛИС (версия 0.13) и её взаимодействия с верхним программным уровнем.
Дело в том, что в E-502 на нижнем аппаратном уровне реализован единый канал синхронного вывода (как на ЦАП, так и на цифровой вывод) с программно устанавливаемой частотой этого вывода. Логика асинхронного цифрового вывода в ПЛИС сделана через этот же канал синхронного вывода так, что эта логика ждёт момента вывода на ЦАП в течение определённого времени, иначе возвращает ошибку асинхронного вывода. Если снижать частоту синхронного вывода (как делаете Вы), то у асинхронного вывода иногда будут случаться таймауты на выполнение операции. Эта зависимость является недостатком текущей реализации асинхронного вывода в ПЛИС. Я полагаю, что технически имеются возможности решения этой проблемы путём доработки прошивки ПЛИС. По срокам и организационной стороне вопроса - говорить пока не берусь.

09.08.2018 19:48:00
#3

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E-502 асинхронный вывод

Выпущено обновление (версия прошивки  ПЛИС:  0.14), решающее данную проблему.

Отредактировано Гарманов Александр (11.08.2018 13:53:36)

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск