Programming the target computer AIO
Section 6.5 has all the information necessary to
program the analog input/output (AIO) for the lab exercises in this
book. One aspect of the programming, the configuring of the AIO
channels, was handled by the provided functions such as Aio_InitCO0()
. To
understand in more detail how to initialize an AIO channel on any
connector on the myRIO, we provide the following details.
Configuring an AIO channel
Before we can read or write to an AIO, the channel must be
configured. An AIO channel can be selected by declaring a struct
type MyRio_Aio
, defined in the myRIO C library
AIO.h header as
typedef struct {
uint32_t val; // AIO value register
uint32_t wght; // AIO weight constant value
uint32_t ofst; // AIO offset constant value
uint32_t set; // AO set register, unused for AI
; // Is the AIO signed
NiFpga_Bool is_signeddouble scale_weight; // AIO weight scaled value
double scale_offset; // AIO offset scaled value
} MyRio_Aio;
So a variable MyRio_Aio AIC0
can
be populated with information about a particular AIO. For instance, the
C connector analog input (AI) AI0
(see
figure 3.10) can be specified with
;
MyRio_Aio AIC0.val = AIC_0VAL;
AIC0.wght = AIC_0WGHT;
AIC0.ofst = AIC_0OFST;
AIC0.is_signed = NiFpga_True; // for the C connector AIC0
The C connector has differential analog inputs, so AIC0.is_signed = NiFpga_True
.
For connectors A and B, AIC0.is_signed = NiFpga_False
.
To configure an output channel like the C connector analog ouput (AO)
AO1
use,
;
MyRio_Aio AOC1.val = AOC_1VAL;
AOC1.wght = AOC_1WGHT;
AOC1.ofst = AOC_1OFST;
AOC1.set = AOSYSGO;
AOC1.is_signed = NiFpga_True; // for the C connector AOC1
As usual, we must open a field-programmable gate array (FPGA) session
with the MyRio_Open()
function. Afterward, we should initialize the struct
with the
Aio_Scaling()
function from the myRIO C library’s AIO.h
header. For the AI and AO channels defined here, the calls would be
(&AIC0); // initialize AI
Aio_Scaling(&AOC1); // initialize AO Aio_Scaling
This function ensures the proper scaling of the reading and writing operations. See section 6.5 for details about reading and writing to AIO channels.
fpgaPersonality6
Online Resources for Section G.2
No online resources.