Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Форум

Вы не вошли.

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

#1 Техническая поддержка » E-502 асинхронный вывод » 18.07.2018 14:31:34

Геннадий_Г_С
Ответов: 2

Добрый день.

Устройство: Е-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 также дает ошибку в аналогичной ситуации.   

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

Контакты

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

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

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

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