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


maptest.c не измеряет напряжение

Вы не вошли.

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

Novikov Andrey V.
09.11.2005 17:32:07
#1

Гость

maptest.c не измеряет напряжение

Не работает пример для работы с библиотекой LDSP  под линукс. Ядро 2.6.13

В пример были внесены некоторые изменения (конфигурация каналов АЦП)? но к сожалению, это не привело нпи к какому результату.
Тескт программы приведен ниже:

* maptest.c */
/* Device mapping test */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>

#include <ldsp/ldsp.h>

char *defname = "/dev/xdsp0";
fragment_info fi;
frame_timing ft;

int frag_frames = 128;
int frame_size = 128;

int main(int argc, char **argv)
{
LDSP_HANDLE dd;
short *w;
int x, c, i, j;
char *dname = defname;
void *map;

// dname = NULL;
// if(argc > 1) dname = argv[1];
char* DevName = "/dev/xdsp0";

x = ldspOpen(&dd, DevName, LDSP_ADC);
if(x < 0)
{
  puts("Can't open device!");
  return -1;
}

//Set Channels

int n =1;
int res;
printf("ldspChannels....");
res = ldspChannels(dd,&n);
if (res<0)
{
    printf(" fails!/n");
    return -1;
}
printf("succeded!/n");

int channel = 1;

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

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


/* Set ADC rate */

ft.channel_rate = 100000;
ft.frame_rate = ft.channel_rate;
ldspSetTiming(dd, &ft);
printf("ADC frequency: %d Hz/n", ft.channel_rate);
printf("Frame rate: %d Hz/n", ft.frame_rate);

/* Set input buffer size */

fi.frag_size = frag_frames * frame_size;
fi.buf_size = fi.frag_size * 2;
ldspSetInBuf(dd, &fi);
printf("Buffer: %d/%d/n", fi.buf_size, fi.frag_size);

/* Map the input buffer */

puts("Mapping the buffer...");

map = ldspMapBuf(dd, 1, 0, fi.buf_size);
if(!map)
{
  puts("Error: can't map input buffer");
  return -1;
}

/* Start the device */

puts("Starting...");

c = LDSP_MASK_ADC;
x = ldspSetTrigger(dd, &c);

w = (short*) map;
for(i = 0; i < 8; i++)
{
  sleep(1);
  for(j = 0; j < 8; j++) printf("%8d", w[j]);
  printf("/n");
}
ldspUnMapBuf(dd, w, fi.buf_size);
ldspClose(dd);
return 0;
}


данная программа выдает следующее:

dspChannels....succeded!
Channel configured: index= 1
ADC frequency: 100310 Hz
Frame rate: 100310 Hz
Buffer: 32768/16384
Mapping the buffer...
Starting...
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0
       0       0       0       0       0       0       0       0


Не могли бы вы сказать в чем дело? (стандартный пример выдает ровно ту же таблицу нулей)