Register level programming NI-6034E

I am having difficulty with analog input. I can't seem to get Example 1 (single point acquisition) to work, as explained in the RLP manual (and source code aiex1.c). I am following all the steps, and included a sanity check whereby I send signals to the DIO pins and that works fine. This indicates to me that I have correctly mapped the PCI board and STC registers and that I am correctly implementing the windowed write. However, when I follow Example 1 and connect a voltage source to CH0 and query the FIFO for a value, I keep getting the same value over and over again no matter what I dial at the source. Does anyone have a piece of C code that factually works, or can anyone offer any hints?
Thanks!

I have followed the c++ examples from the DDK already. I got my hands on the old Mac code just to check. It took some time to understand the object code but I think I got it. The fact is that I can communicate with the DIO, so at least I'm half way there. The problem is in setting up the board for AI. Following the same direct and windowed write and read constructs (transliterated into C), and following their sequence of setup commands (and correlating their register offsets) I come up with nothing that makes sense. Everytime I query the AI_Status_1 register it comes up with 0x10, which means the AI_STOP_St bit is up, and apparetly the FIFO is neither empty nor full...!!. And the FIFO always gives me a value of 100, no matter how I tinker with the setup bits. The part of my code that performs this single point aquisition is and exact copy of the example.
I am trying this the hard way because I am writing a driver for IRIX running on an SGI Tezro. Therefore the PCI detection and mapping components of the code are particular to IRIX. The rest should follow exactly as in the exmples...
Thank you very much for your attention.
Marcelo

Similar Messages

  • Ni 6602 Card, Configuration in Register Level Programming

    Hello,
    I want to do register level programming with the NI 6602 card .
    I want to use an x4 encoder reader and I want to use the continuous
    frequency generation.
    so i got the following tool to map the kernel space to the user space, so
    a simple shell script will do the job.
    http://www.linux.it/~rubini/software/phob/phob.html
    and than just using the provided function phob_io
    to programm the registers in a shell script:
    #!/bin/bash
    # shell script for init 6602 card with prf and encoder counter
    # set prf
    ../phob_io ''0:048=0000'' # Input Select Register
    ../phob_io ''0:00C=1109'' # Command Register
    ../phob_io ''0:038=00ffffff'' # Load A Register
    ../phob_io ''0:03C=00ffffff'' # Load B Register
    ../phob_io ''0:
    034=9218'' # Mode Register
    But don"t get any output as i expect, what is wrong?
    Do i have to set some othe registers, or write somthing to the PCI-Config?
    Does anyone has some sample configuration?
    Thanks
    Mario Behn
    Mario Behn
    Microwave Remote Sensing Laboratory Room 104
    University of Massachusetts
    Knowles Engineering Building
    Amherst, MA 01003-4410
    phone (413) 545-4675
    fax (413) 545-4652
    email [email protected]

    A typical project for one of the 660x RLP examples needs to include the following source code files:
    ../OSinterface/osiBus.cpp - generic register I/O interface used by the example code
    ../OSinterface/Linux/osiUserCode.cpp - OS specific adapter used by osiBus to access registers on the hardware in the specific OS
    ../ChipObjects/tTIO.cpp - abstraction of the chips and registers on the hardware into C++ classes and properties
    and one of the examples files, e.g.
    ../Examples/gpct_ex1.cpp - implementation of a specific operation, including all initialization of the hardware
    (The same is true for the examples for other boards although the names of the ChipObject and examples will be different.)
    Each of these files needs to be compiled to give y
    ou object files, and then all of the object files need to be linked together to build an application (executable binary). The errors you list seem to indicate that you are not using all of these files.
    There is more information on the RLP example architecture in the attached PDF document.
    Christian Loew, CLA
    Principal Systems Engineer, National Instruments
    Please tip your answer providers with kudos.
    Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
    or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
    to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense
    Attachments:
    Register_Level_Programming_Architecture.pdf ‏165 KB

  • How can I communicate PXI-6509 by Static DIO Register-Level Programming?

    - How can I communicate PXI-6509 by Static DIO Register-Level Programming?
      PXI-6509 physically Port0 is connected to Port1.
      For checking all connections are correct for this case so I have used DAQmx Test Panel. Just in case everything is ok.
      In this case I interested in to communicate the PXI6509 by Register-Level Programming.  
      I have tried to use Open VISA Test Panel for sending and reading data (in MAX explorer) and
      use NI-Spy for checking communication data.
      The first step I configured Port0 to Outputs state and Port1 to Inputs state.
      The second step I setup Port0 to 0xAA.
      The third step I read back Port1 and expected data will be 0xAA but just only 0x0. Why???
       1              ViOut8(0x03D83318, 10, 0x00000041, 1)

    Hello!
    We don't do support on register-level programming but the problem you are experiencing might be due to tri-state on the ports?
    Please check this manual that covers register programming of the device you are using:
    http://digital.ni.com/manuals.nsf/websearch/47300C3471742AD0862570AE005E0AD1
    Regards,
    Jimmie Adolph
    Systems Engineer Manager, National Instruments Northern Region
    Bring Me The Horizon - Sempiternal

  • Where is the SCXI-1102 Register-Level Programming Manual

    The SCXI-1102 User Manual refers (in Chapter 5) to a "SCXI-1102 Register-Level Programming Manual". I can't find the register-level programming manual on www.ni.com. Where can I obtain this manual?

    Hey Don,
    Thank you for contacting National Instruments.
    There is not a register-level programming manual for the SCXI-1102. This was a mistake made in the first version January 1996 of the SCXI-1102 manual. This was corrected in the later August of 1997 version.
    http://www.ni.com/pdf/manuals/320975b.pdf
    Register-level programming is not formally supported by National Instruments. If you would like more information about alternative methods of programming other than NI-DAQ please contact your sales representative.
    Best Regards,
    Joshua P.
    Application Engineering
    National Instruments

  • 660x DIO Register Level Programming

    I am working on a comedi/linux driver for the 6602, and can't figure out how to access the other 24 DIO lines (the ones shared with counter/timer).
    Firstly, I want to use the DIO lines for output, so I must configure them as such. The RLPM doesn't say anything more than a hint about how to configure these lines .
    It seems the answer lies in using 2 bits to set to IO_Config Register(s). The RLPM says that these registers contain 2 bits for configuration direction, but only lists functionality for 00 and 01; not 10 or 11. Is it possible that setting 11 or 10 sets these PFI lines for DIO?

    Hello!
    We don't do support on register-level programming but the problem you are experiencing might be due to tri-state on the ports?
    Please check this manual that covers register programming of the device you are using:
    http://digital.ni.com/manuals.nsf/websearch/47300C3471742AD0862570AE005E0AD1
    Regards,
    Jimmie Adolph
    Systems Engineer Manager, National Instruments Northern Region
    Bring Me The Horizon - Sempiternal

  • Pci-6703 Register-Level Programming

    We wanna use the analog output channels of the 6703 and configure for DC Voltage for my application without NI-DAQ function.
    I have searched in NI website. but there is no PDF file or document file about register-level programming.
    It's important for us, we must program drivers and functions byself.
    How can I do?
    Thanks

    I believe that the Measurement Hardware DDK provides documentation, examples, and register objects for the NI 67xx series of devices.
    geoff
    Geoffrey Schmit
    Fermi National Accelerator Laborary

  • Register level programming of interrupts for PCI 6503

    Hi all,
    I'm basically trying to get an interrupt from the card upon a change in the data of one of the ports (for instance port A) so I can catch pulse signals without having to poll the pins manually at a high rate. I can't figure out from the documentation and examples whether this is actually possible using register level programming (can't use the DAQmX libraries because I use InTime OS). I can set the appropriate bits of the Interrupt Registers in order to enable the two interrupts (A and B), but I'm not sure what condition generates these interrupts.
    Additionally, I want to be able to send out a pulse on a pin and have it automatically cleared by the board.
    As far as I can tell both of my requirements mean using the card in strobed mode, but the code examples don't give enough information how to work in this mode. Do i have to use the handshaking mechanism somehow and if so, how is this better for me over using static i/o and manually checking pin values?
    Any help or referrence would be greatly appreciated.
    Thank you in advance
    Orr

    Hi Orr,
    The best source of information for this device is its user manual [1], and Appendix B discusses the register map and programming considerations.
    Speaking specifically to interrupts, please refer to PDF page 43 (B-2), emphasis mine:
    Two software-controlled registers determine which devices, if any, generate interrupts. Each of the 82C55A devices has two interrupt lines, PC3 and PC0, connected to the interrupt circuitry. On the PCI-DIO-96 and PXI-6508, the 82C53 device has two of its three counter outputs connected to the interrupt circuitry. Any of these 10 signals can interrupt the computer if the interrupt circuitry is enabled and the corresponding enable bit is set. Refer to the Programming Considerations for the 82C53 section for more information. Normally, the handshaking circuitry controls PC3 and PC0 of the 82C55A devices; however, you can configure either of these two lines for input and then use them as external interrupts. An interrupt occurs on the signal line low-to-high transition."
    The pages following that section describe the interrupt control registers and give pseudo-code examples for configuring them.
    Once we clear this obstacle, let's move on to your output questions.
    [1] PCI-DIO-96/PXI-6508/PCI-6503 User Manual
    http://digital.ni.com/manuals.nsf/websearch/6E8329494F3955528625758300678D55
    Joe Friedchicken
    NI VirtualBench Application Software
    Get with your fellow hardware users :: [ NI's VirtualBench User Group ]
    Get with your fellow OS users :: [ NI's Linux User Group ] [ NI's OS X User Group ]
    Get with your fellow developers :: [ NI's DAQmx Base User Group ] [ NI's DDK User Group ]
    Senior Software Engineer :: Multifunction Instruments Applications Group
    Software Engineer :: Measurements RLP Group (until Mar 2014)
    Applications Engineer :: High Speed Product Group (until Sep 2008)

  • Register Level programming of the AT-DIO-32HS

    I am working with a piece of software that was written using the AT-DIO-32F card. The original programmer did NOT use the National Instruments driver with that card, but rather used a software library that allowed him to access and manipulate the registers directly on that board. The name of the library is called NTPORT (http://www.zealsoft.com/ntport/index.html).  He did this because he was not able to meet the timing requirements using the NI driver.
    We have to replace the AT-DIO-32F card with the AT-DIO-32HS card, and I would like to know if I can continue to do register level programming with the 32HS card.  I have found that I also can not meet my timing requirements using the driver that comes along with the 32HS card.
    I checked this web page (http://digital.ni.com/public.nsf/allkb/B08F4125A9325B3F862565CC0073E68F?OpenDocument), and did not find the AT-DIO-32HS listed. Does this mean I can not program its' registers ?
    Any feedback would be appreciated !!
    Thanks !!

    Hi Raminta-
    The Measurement Hardware Driver Development Kit (MHDDK) provides examples and register documentation for the 653x devices (which includes the AT-DIO-32HS).  The DIO-32F and DIO-32HS devices are quite similar, so it is possible that your existing code will work.  The resources on the MHDDK page should help you fill in any differences.
    Thanks-
    Tom W
    National Instruments

  • Register level programming on labwindows

    Hi Everyone
    I have few questions to ask
    1) Can register level programming of a third party PCI Daq card be done on LabWindows v8.5 in order to communicate with the PCI DAQ?
         If yes,  then how it can be done?
    2) Suppose if i want to generate two signals on the two analog outputs of 3rd Party PCI daq by using Lab Windows, Can i achieve  real time control of the amplitude and frequency of the signals?
    3) Are the Inport and Outport functions valid on Lab windows?
     If anyone has a simple example or any useful material on this , please share with me.
    Any help will be greatly appreciated.

    Anyone plz tell
    Can inport( )  and outport ( ) be used on Lab Windows.
    I found this code from the previous posts , will this code work ? What does it do?
    // define some handy types
    typedef int (*T_EtsInp)(unsigned int);
    typedef int (*T_EtsOutp)(unsigned int, int);
    // undefine existing macro's (which do not work for Embedded Real Time anyways)
    #undef inp
    #undef outp
    // declare inp and outp (byte versions)
    T_EtsInp   inp;
    T_EtsOutp  outp;
    At process attach or some other convenient spot, but before the actual use of the functions.
      // Get module handle
      myHandle = GetModuleHandle("ph_exec.exe");
      inp = (T_EtsInp) GetProcAddress(myHandle, "EtsInp");
      if (inp == NULL)
        printf("Unable to get proc address for EtsInp");
        return 0; // or other finishing action
      outp = (T_EtsOutp) GetProcAddress(myHandle, "EtsOutp");
      if (outp == NULL)
        printf("Unable to get proc address for EtsOutp");
        return 0; // or other finishing action

  • Register level programming

    Our laboratory is treating the precision control in Rtx foundation.
    We try to manage the 6703card in a Rtx foundation.
    So, we have to program a register level programming.
    We know the 6703card that use Window address.
    But I don't know using window address well.
    Therefore, I can not use the card.
    Is the thing usual to use Window address on DAC card?
    Is it valuable to invest the time to learn it?
    Can I take the manual about it?
    I thank for reading though my English is too short.
    p.s. We read the reply well. But I think that NI-DAQmx is not suitable.

    Thanks for contacting National Instruments,
    To make matters easier, you will not need to write your own register level program because we have created an NI-DAQmx Base driver for RTX. You can find it here
    Post a reply if you have any further questions.
    Jordan Randall
    National Instruments Italy

  • Ni 6602 Card, Configuration DIO and Counter in Register Level Programming

    Hello,
    I want to do register level programming with the NI 6602 card .
    Which register determine a channel act as DIO or Counter.

    Hi:
    please refer to this link,why not using DAQmx driver?
    NISH AE
    Haifeng Xu

  • Documentation for register level programming of PCI-62XX cards

    I'm looking for documentation for register level programming of PCI-62xx series cards. Does such a document exist?
    Thanks

    Scott,
    At this time we do not have a comprehensive M Series RLP manual available.  I was not aware of any plans to deliver this document last month, so you may have been given some incorrect information, in which case I apologize.  Currently, we provide the register map along with several examples showing how to program the boards for different types of operations.  If you have any specific questions, you can post them to this forum where our developers and other customers can help out.  I hope this helps. 
    Jeremy

  • NI PCIe-6509 register level programming

    I'm asking National personnel, who is responsible for device driver developing, to give me information about register level programming. Programming this board using DAQmx software is too slow for us - about 2,5MHz is the maximum for one pin.
    I've already have RLP for PCI version of this board, but PCIe is different - only one BAR is available - and size of memory region also differ (512K). I've written skeleton kernel module for this board - and now problems to attach to hardware, but information absence stops me to progress further.
    Please, help me.

    Yes, RLP for the PCIe-6509 is different than for the PCI-6509. Looking at the hardware itself, you can see we've used different ASICs. The newer express revision has two STC3 ASICs while the previous PCI revision has two STC2 ASICs. These chips are different as you've encountered and thus their programming is also different.
    Unfortunately, we do not have any RLP information for the STC3 at this time, nor do we have projections for when it will be made available. If this is an urgent need, please contact your local sales or support engineer and we may be able to work with your further.
    Joe Friedchicken
    NI VirtualBench Application Software
    Get with your fellow hardware users :: [ NI's VirtualBench User Group ]
    Get with your fellow OS users :: [ NI's Linux User Group ] [ NI's OS X User Group ]
    Get with your fellow developers :: [ NI's DAQmx Base User Group ] [ NI's DDK User Group ]
    Senior Software Engineer :: Multifunction Instruments Applications Group
    Software Engineer :: Measurements RLP Group (until Mar 2014)
    Applications Engineer :: High Speed Product Group (until Sep 2008)

  • How to do register-level programming for NI6025E when I want to acquire single scan incuding multiple input channels?

    How to do register-level programming for NI6025E when I want to acquire single scan incuding multiple input channels?

    Thanks, Alan, I think I indeed need to combine aiex1.cpp and aiex2.cpp. I made a change to Configure_Board of aiex1.cpp  as follows:
    //Call this function to configure board options.
    void Configure_Board(tSTC *theSTC,tESeries *board)
     //Clear configuration memory
     theSTC->Write_Strobe_0.writeRegister(0x0001);
     //Clear ADC FIFO
     theSTC->Write_Strobe_1.writeRegister(0x0001);
     //Writing to Config_Memory_High_Register for channel 1 settings
     board->ConfigFifoHigh.setChannel(0);
     board->ConfigFifoHigh.setBank(0);
     board->ConfigFifoHigh.setChannelType(board->ConfigFifoHigh.kChannelTypeRSE);
     board->ConfigFifoHigh.flush();
     //Writing to Config_Memory_Low_Register for following channel 1 settings
     board->ConfigFifoLow.setLastChannel(0);
     board->ConfigFifoLow.setGeneralTrigger(0);
     board->ConfigFifoLow.setGain(board->ConfigFifoLow.kGain001_0);
     board->ConfigFifoLow.setPolarity(board->ConfigFifoLow.kPolarityBipolar);
     board->ConfigFifoLow.setDither(0);
     board->ConfigFifoLow.flush();
     //Writing to Config_Memory_High_Register for following channel 0 settings
     board->ConfigFifoHigh.setChannel(1);
     board->ConfigFifoHigh.setBank(0);
     board->ConfigFifoHigh.setChannelType(board->ConfigFifoHigh.kChannelTypeRSE);//RSE mode
     board->ConfigFifoHigh.flush();
     //Writing to Config_Memory_Low_Register for following channel 0 settings
     board->ConfigFifoLow.setLastChannel(1);
     board->ConfigFifoLow.setGeneralTrigger(0);
     board->ConfigFifoLow.setGain(board->ConfigFifoLow.kGain001_0);
     board->ConfigFifoLow.setPolarity(board->ConfigFifoLow.kPolarityBipolar);//BIPOLAR
     board->ConfigFifoLow.setDither(0);
     board->ConfigFifoLow.flush(); 
     return;
     and a change to test(iBus *bus):
    do
      uStatus = theSTC->AI_Status_1.readRegister();
      if (!((uStatus & 0x1000) == 0x1000))
        uValue[i] = board->AIFifoData.readRegister();
       i++;
     } while(i<1);
     printf("Value %d is %6.2f\n",0,FindADDouble(uValue[0]));
     printf("Value %d is %6.2f\n",1,FindADDouble(uValue[1]));
    but it doesn't work, why?
    How shoud I do?

  • Register level programming for USB 6008

    Hi all,
    I am trying to work with USB 6008 in a linux environment without using DAQmxbase drivers. Since Comedi presently doesn't support USB 6008 device, I am considering writing the driver for USB 6008 myself. Is the register level programming of USB 6008 device possible? Where can i find the related documents and examples?
    Greetings
    aneez

    Hi Aneez,
    Via the following links, you can find information about Register Level programming of our hardware. 
    http://digital.ni.com/public.nsf/allkb/1C3988D7D33B925C86256C59007FB4B4?OpenDocument#Hardware Support
    http://digital.ni.com/express.nsf/bycode/exyv4w?opendocument&lang=en&node=seminar_US
    Regards,
    Bas

Maybe you are looking for

  • Why won't my Macbook Pro recognize (and connect to) a printer on same WiFi network as my Mac.

    My Macbook Pro was connected and printing to my WiFi network just fine.  However, I started getting an error message saying my printer was not connected.  I checked my printer and it is still connected to wirelss network and the printer test confirme

  • Passing Array to actionPerformed

    In my routine, when a user clicks a button, a label is populated with a description. I'm using "actionPerformed" to update the label on my panel. The problem is, I want "actionPerformed" to retrieve the label description from an array of records that

  • Forms 9i: How get image from database?

    Hi! I want to get a image (GIF,JPG, TIFF, etc.) that is stored in database table (as blob) in Image_Item (No Database Block) by Trigger (PL/SQL) way. In a Block that is database=yes It's OK, the Query do this in automatic. I know that "select column

  • I can't find my plant in spro,however I can use them normally!

    Hi, In spro path: Enterprise Structure>Definition>Logistics-General-->Define,copy,delete,check plant,I can't find our plants in Define Plant,however when I select check plant,I find them and nothing wrong with them. I also find these plants in the ta

  • What does it mean by deleting the Content of the setup table when LO cockpi

    Hi all:     what does it mean by deleting the Content of the setup table when LO cockpit ? why should we do it?  why set up tables ? Thank you very much!!! Edited by: jingying Sony on Jun 7, 2009 4:46 AM