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


Linux + L780

Вы не вошли.

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

Novikov Andrey V.
03.11.2005 15:20:11
#1

Гость

Linux + L780

Ядро 2.6.13 собрал пропатчил, собрал
утилы и скрипты поставил.
результат:
из экзамплов работает sadc - все правильно измеряет...
а вот maptest выдает "Cannt open device!"

по образу и подобию примеров, приведенных в описании библиотеки я попытался написать свою программу:

#include <ldsp/ldsp.h>

int main()
{
    LDSP_HANDLE dev;
    int mask;
    int buffer[100];
   
//    fragment_info fragment;
//    fragment.frag_size = 100;
//    fragment.buf_size = 100;
//    ldspInBuf(dev,&fragment);

    frame_timing rate;
    rate.channel_rate = 100000;
    ldspSetTiming(dev,&rate);
   
    int Channels=1;
    ldspChannels(dev,&Channels);

    channel_inf ci;
    ci.mode = LCH_DIFFERENTIAL;
    ci.input = 1;
    ci.gain = 0;
    ci.index = -1;

    ldspSetChannel(dev,&ci);
    mask = LDSP_MASK_ADC;
    int res = ldspSetTrigger(dev,&mask);
    ldspRead(dev,buffer,100);
    int i=0;
    for(i=0;i<90;i++) printf("%d/n",buffer[i]); 
    return 0;
}


результатом работы этой программы является набор разных чисел
"
879
-1079616656
-1208628905
-1209786732
-1209786732
0
0
32
"...

Не могли бы вы прислать листинг простейшей программы, считывающей указанное кол-во значений с заданной частотой. К сожалению из описания не ясно как это сделать.

Заранее благодарен.

Novikov Andrey V.
03.11.2005 17:54:51
#2

Гость

Re: Linux + L780

поправки:
провозился некоторое время и нашел ряд ошибок у себя , но все равно положительного результата не добился.
Исправил: в своей программе int buffer[10] ==> short buffer[10];
и теперь она выдает примерно вот такое
Device opened successfully!!!
-745
-744
-745
-743
-743
-16511
-31583
2052
30816
-18447

В maptest.c была проблема в том, что я не передавал ей в качестве параметра /dev/xdsp0
но теперь все проинициализировав она выдает таблицу из нулей.

Novikov Andrey V.
03.11.2005 18:14:22
#3

Гость

Re: Linux + L780

внес еще ряд измерений в свой код:
    LDSP_HANDLE dev;
    int mask, channel;
    short buffer[_fsize];
   
//    fragment_info fragment;
//    fragment.frag_size = 100;
//    fragment.buf_size = 100;
//    ldspInBuf(dev,&fragment);

    int st;
    char* DevName = "/dev/xdsp0";

    if(argc>1) sscanf(argv[1], "%d", &channel);


    st = ldspOpen(&dev,DevName,LDSP_ADC);
    if(st<0)
    {
        printf("Cannt open device!!!/n");
        return -1;
    }
    printf("Device opened successfully!!!/n");

    int Channels=1;
    st = ldspChannels(dev,&Channels);
    if(st<0)
    {
        printf("Error setting Cannels/n");
        return -1;
    }
    printf("Channels setted: Channels= %d/n",Channels);

    channel_inf ci;
    ci.mode = LCH_DIFFERENTIAL;
    ci.input = channel;
    ci.gain = 0;
    ci.index = -1;

    st = ldspSetChannel(dev,&ci);
    if(st<0)
    {
        printf("Error setting ci/n");
        return -1;
    }
    printf("Channel configured: index= %d/n",ci.index);


    frame_timing rate;
    rate.channel_rate = 10000;
    st = ldspSetTiming(dev,&rate);
    if(st<0)
    {
        printf("Error setting timing/n");
        return -1;
    }
    printf("Timing setted: rate= %d/n",rate.channel_rate);


    printf("Starting ADC...");
    mask = LDSP_MASK_ADC;
    st = ldspSetTrigger(dev,&mask);
    if(st<0)
    {
        printf("Error setting Trigger/n");
        return -1;
    }
    printf(" Trigger passed!/n");

    st = ldspRead(dev,buffer,_fsize);
    if(st<0)
    {
        printf("Error reading from device/n");
        return -1;
    }

    int i=0;
    for(i=0;i<_fsize;i++) printf("%d/n",buffer[i]); 

    ldspClose(dev);
    return 0;

эта прога выдет:
root@dlts:/mnt/data/andy# ./stream 0
Device opened successfully!!!
Channels setted: Channels= 1
Channel configured: index= -1
Timing setted: rate= 10003
Starting ADC... Trigger passed!

и все! дальше она чего-то ждет! выходить приходится по Ctrl-C