101 lines
3.3 KiB
C++
Executable File
101 lines
3.3 KiB
C++
Executable File
/****************************************************************
|
|
* Filename: led_test.cpp
|
|
* Prepared By: James Dudley
|
|
* Date Prepared: February 26, 2018
|
|
* Date Revised: February 26, 2018
|
|
* Revision: 0.0.1
|
|
***************************************************************/
|
|
|
|
#include "BrainStem2/BrainStem-all.h"
|
|
|
|
#define RESISTOR_VALUE 412
|
|
#define POWER_VOLTAGE 5000000
|
|
#define DAC 16
|
|
#define CURRENT 14
|
|
#define VOLTAGE 0
|
|
|
|
int main(int argc, const char * argv[]) {
|
|
// Create BrainStem object
|
|
aMTMDAQ1 daq;
|
|
|
|
// Initialize error tracker
|
|
aErr err = aErrNone;
|
|
|
|
// Discover and connect to MTM-DAQ-1 object
|
|
// Connects to the first USB module discovered
|
|
err = daq.discoverAndConnect(USB);
|
|
if (err != aErrNone) {
|
|
printf("Error connecting to MTM-DAQ-1: %d\n", err);
|
|
return 0;
|
|
}
|
|
|
|
// Run the test twice, once with LED power enabled, once with it disabled
|
|
int8_t enable = 2;
|
|
for (enable = 1; enable >= 0; enable--) {
|
|
// Set MTM-DAQ-1 DAC0 (analog 16) to 5V and enable to power LED
|
|
err = daq.analog[DAC].setVoltage(POWER_VOLTAGE);
|
|
if (err != aErrNone) {
|
|
printf("Error setting DAC voltage: %d\n", err);
|
|
return 0;
|
|
}
|
|
err = daq.analog[DAC].setEnable(enable);
|
|
if (err != aErrNone) {
|
|
printf("Error setting DAC enable to %d: %d\n", enable, err);
|
|
return 0;
|
|
}
|
|
|
|
// Set measurement ranges
|
|
err = daq.analog[VOLTAGE].setRange(12);
|
|
if (err != aErrNone) {
|
|
printf("Error setting Position B analog range to +/-10.24V: %d\n", err);
|
|
return 0;
|
|
}
|
|
err = daq.analog[CURRENT].setRange(9);
|
|
if (err != aErrNone) {
|
|
printf("Error setting Position A->B analog range to +/-5.12V: %d\n", err);
|
|
return 0;
|
|
}
|
|
|
|
aTime_MSSleep(1000); // leave the LED on/off for a second
|
|
|
|
// Read voltage measurements
|
|
int32_t v;
|
|
err = daq.analog[VOLTAGE].getVoltage(&v);
|
|
if (err != aErrNone) {
|
|
printf("Error reading Position B voltage: %d\n", err);
|
|
return 0;
|
|
}
|
|
int32_t v_current;
|
|
err = daq.analog[CURRENT].getVoltage(&v_current);
|
|
if (err != aErrNone) {
|
|
printf("Error reading Position A->B differential voltage: %d\n", err);
|
|
return 0;
|
|
}
|
|
|
|
// Calculate current
|
|
int32_t i = v_current / RESISTOR_VALUE; // I = V / R
|
|
|
|
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
|
|
if (enable) {
|
|
printf("MTM-DAQ-1 DAC0 status: enabled\n");
|
|
} else {
|
|
printf("MTM-DAQ-1 DAC0 status: disabled\n"); }
|
|
printf("Position B voltage (uV): %d\n", v);
|
|
printf("Position B voltage (V): %.3f\n", (float) v / 1e6);
|
|
printf("Position A->B voltage (uV): %d\n", v_current);
|
|
printf("Position A->B current (uA): %d\n", i);
|
|
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
|
|
}
|
|
|
|
err = daq.analog[DAC].setEnable(0);
|
|
if (err != aErrNone) {
|
|
printf("Error disabling DAC: %d\n", err);
|
|
return 0;
|
|
}
|
|
|
|
daq.disconnect();
|
|
|
|
return 0;
|
|
}
|
|
|