- From: Naoko Kurahashi <naokok_at_stanford.edu>
- Date: Tue, 15 Jun 2004 16:20:09 -0700
Hi! Sorry, I meant to say that sampl_t in comedi is 16bits where as my ADC gives 12bit data (maxvalue = 4096). so I don't think I want to XOR the top 4 bits. Is that right? When I ^0x0800, the negative numbers turn out fine but the positive ones shoot up. Naoko Quoting Bernd Porr <BerndPorr_at_f2s.com>: > Hi! > > If it's 16 bit, just try ^0x8000. That should do the job. A 0 in comedi > means the most negative value and a 65535 is the most positive value if > you have 16 bit. Can't remember the functions exactly but there is a > function to get the maxvalue (here 65535) and there is one which > converts raw data to real physical values. > > /Bernd > > www: http://www.berndporr.me.uk/ > http://www.linux-usb-daq.co.uk/ > Mobile: +44 (0)7769 506746 > Work: +44 (0)141 330 5237 > Department of Electronics & Electrical Engineering > Room 519, Rankine Building, Oakfield Avenue, > Glasgow, G12 8LT > > > Naoko Kurahashi wrote: > > Hi, > > > > Thank you for your advice. I adventured my way through the sourcecode > > ni_mio_common.c. (I'm still confused about the difference between high > and > > low data which are divided after ni_readl) > > I've been trying XOR-ing as you suggested. Since 'data' is 16bits, I > tried > > data^0xffff and this changes negative values to positive values and > gives > > something between 2048 - 4096 (upper half of my 4096 resolution, not > lower), > > but I still don't know how to change it to the comedi equivalent of > negative > > voltages (0-2047 in my case). also, if I do this operation to 'data', > if the > > input was truely positive, the value of 'data' again shoots up to the > > 63000's. Is there a good way around this? Did I understand your advice > right? > > > > I don't have a formal background in signal processing or engineering > for > > that matter, which means I'm misunderstanding many things, but I > thought 2's > > complement data format means that I have to subtract 1 before I invert > the > > 1's and 0's. Is this still the case here? > > > > Thank you for your patience in advising me. > > Naoko > > > > Quoting Bernd Porr <BerndPorr_at_f2s.com>: > > > > > >>Hi! > >> > >>Seems so that the sign bit of the converter is not interpreted in the > >>right way. Comedi uses unsigned data but some A/D converters give the > >>data in two-complement form. The driver should "undo" this by XOR the > >>appropriate bit(s): > >> > >>comedi_buf_put(s->async,(this_usbduxsub->inBuffer[i])^0x800); > >> > >>Might be a bug in the driver. > >> > >>/Bernd > >> > >>www: http://www.berndporr.me.uk/ > >> http://www.linux-usb-daq.co.uk/ > >>Mobile: +44 (0)7769 506746 > >>Work: +44 (0)141 330 5237 > >> Department of Electronics & Electrical Engineering > >> Room 519, Rankine Building, Oakfield Avenue, > >> Glasgow, G12 8LT > >> > >> > >>Naoko Kurahashi wrote: > >> > >>>Hi, > >>>I've been battling a weird problem today of not being able to acquire > >>>negative voltage values with my NI PCI MIO card. When executing the > cmd > >> > >>demo > >> > >>>program, for example, every time the input voltage is < 0, the > >> > >>acquired > >> > >>>value shoots up to 63000 or so (max res for my card is 4096). I have > >> > >>my > >> > >>>range set to 3 (bipolar +/-1V). when I set it to unipolar 0-5V, the > >> > >>negative > >> > >>>values just give 0 and everything looks fine. > >>> > >>>Maybe my problem is hardware related, or I'm just missing something > >> > >>very > >> > >>>simple because I'm very tired, but I am out of things to try. Please > >> > >>let me > >> > >>>know if you have any suggestions or have experienced similar > problems. > >>> > >>>Thank you, > >>>Naoko Kurahashi > >>> > >>>_______________________________________________ > >>>comedi mailing list > >>>comedi_at_comedi.org > >>>https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi > >> > > > > > > _______________________________________________ > comedi mailing list > comedi_at_comedi.org > https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi >
Received on 2004-06-15Z22:20:09