- From: Naoko Kurahashi <naokok_at_stanford.edu>
- Date: Tue, 15 Jun 2004 15:31:52 -0700
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 >
Received on 2004-06-15Z21:31:52