📄 ain_sample.c
字号:
/***************************************************************************
ain_sample.c
Z-World Inc 2003
This sample program is intended for RabbitNet RN1100 Digital I/O boards.
Description
===========
This program demonstrates how to use the analog input functions on voltage
inputs. The program will continuously display the voltage (average
of 10 samples) that is present on the A/D channels.
This program will first look for a device and use the first one found
using rn_find() and the product RN1100 as the search criteria.
Instructions
============
1. Connect a voltmeter to the output of the power supply that you will
monitor.
2. Preset the voltage on the power supply to be within the voltage
range of the A/D converter channel that your going to test. For
input channels AIN00 and AIN01 input voltage range is 0 to +10V.
AIN02 input voltage is 0 to +1V and AIN03 input voltage is +/-0.25V.
3. Power-on the controller.
4. Connect the output of power supply to one of the AIN channels.
5. Compile and run this program.
6. Vary the voltage on a AIN channel, the voltage displayed in the STDIO
window and voltmeter should track each other.
***************************************************************************/
#class auto /* Change local var storage default to "auto" */
//////
// Search criteria
//////
#define MATCHFLAG RN_MATCH_PRDID //set flag to search for product ID
#define MATCHPID RN1100 //RN1100 DI/0 board
#define NUMSAMPLES 10
#define STARTCHAN 0
#define ENDCHAN 3
nodebug
void msDelay(unsigned int delay)
{
auto unsigned long done_time;
done_time = MS_TIMER + delay;
while( (long) (MS_TIMER - done_time) < 0 );
}
// set the STDIO cursor location and display a string
void DispStr(int x, int y, char *s)
{
x += 0x20;
y += 0x20;
printf ("\x1B=%c%c%s", x, y, s);
}
///////////////////////////////////////////////////////////////////////////
void main ()
{
auto int channel, status, device0;
auto char s[80];
auto float voltinput[ENDCHAN+1];
auto rn_search newdev;
brdInit(); //initialize controller
rn_init(RN_PORTS, 1); //initialize controller RN ports
//search for device match
newdev.flags = MATCHFLAG;
newdev.productid = MATCHPID;
if ((device0 = rn_find(&newdev)) == -1)
{
printf("\n no device found\n");
exit(0);
}
// enable on all channels for conversions
for(channel = STARTCHAN; channel <= ENDCHAN; channel++)
{
status = rn_anaInConfig(device0, channel, ADCENABLE, 0, 0);
}
sprintf(s, "A/D input voltage for channels %d - %d", STARTCHAN, ENDCHAN );
DispStr(2, 2, s);
DispStr(2, 3, "--------------------------------------");
for(;;)
{
for (channel = STARTCHAN; channel < ENDCHAN; channel++)
{
// sample each channel
status = rn_anaInVolts(device0, channel, &voltinput[channel], NUMSAMPLES, 0);
}
// read channel 3
status = rn_anaInDiff(device0, channel, &voltinput[channel], NUMSAMPLES, 0);
for(channel = STARTCHAN; channel <= ENDCHAN; channel++)
{
sprintf(s, "Channel = %2d Voltage = %.3f ", channel, voltinput[channel]);
DispStr(2, channel+ 6, s);
}
}
}
///////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -