81 lines
2.6 KiB
Python
Executable File
81 lines
2.6 KiB
Python
Executable File
###############################################################################
|
|
# Filename: short_test.py
|
|
# Prepared By: James Dudley
|
|
# Date Prepared: March 2, 2018
|
|
# Date Revised: March 2, 2018
|
|
# Revision: 0.0.1
|
|
###############################################################################
|
|
|
|
import brainstem # Import BrainStem API
|
|
from brainstem.result import Result # For easy access to error constants
|
|
from time import sleep, time
|
|
|
|
RAIL = 1 # Power rail to use for test
|
|
VOLTAGE = 3300000 # Set voltage for Rail 0
|
|
CYCLE_TIME = 0.2 # Time to pause between readings, seconds
|
|
TOTAL_TIME = 5 # Time to keep test running, seconds
|
|
|
|
# Generic function to run BrainStem commands with error checking
|
|
def step(func, func_str, *args):
|
|
print '>> ' + func_str[0].upper() + func_str[1:] # Capitalize first letter of string
|
|
res = func(*args)
|
|
err = val = res
|
|
if isinstance(err, Result):
|
|
err = res.error
|
|
val = res.value
|
|
|
|
if err is not Result.NO_ERROR:
|
|
raise Exception('Error %s: %d' % (func_str, err))
|
|
|
|
return val
|
|
|
|
|
|
def main():
|
|
# Create MTM-PM-1 object
|
|
pm = brainstem.stem.MTMPM1() # Uses default module address
|
|
|
|
# Initialize error tracker
|
|
err = Result.NO_ERROR
|
|
|
|
try:
|
|
# Discover and connect to MTM-PM-1 object
|
|
# Connects to the first USB module discovered
|
|
step(pm.discoverAndConnect, 'connecting to MTM-PM-1', brainstem.link.Spec.USB)
|
|
|
|
if RAIL is 0:
|
|
# Set Rail voltage
|
|
step(pm.rail[RAIL].setVoltage,'setting Rail %d voltage to %d' % (RAIL, VOLTAGE), 1)
|
|
|
|
# Enable Rail
|
|
step(pm.rail[RAIL].setEnable,'enabling Rail %d' % RAIL, 1)
|
|
|
|
enable_str = ['OFF', 'ON']
|
|
tStart = tNow = time()
|
|
while tNow < tStart + TOTAL_TIME:
|
|
tNow = time()
|
|
# Get MTM-PM-1 Rail enable state
|
|
enable = step(pm.rail[RAIL].getEnable, 'reading Rail %d enable state' % RAIL)
|
|
|
|
# Read MTM-PM-1 Rail voltage
|
|
v = step(pm.rail[RAIL].getVoltage, 'reading Rail %d voltage' % RAIL)
|
|
|
|
print '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
|
|
print 'Enable State: %s' % enable_str[enable]
|
|
print 'Rail voltage (V): %.3f' % (v / 1.e6)
|
|
print '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
|
|
|
|
sleep(CYCLE_TIME)
|
|
|
|
step(pm.rail[RAIL].setEnable, 'disabling Rail %d' % RAIL, 0)
|
|
|
|
except Exception as exc:
|
|
print exc
|
|
|
|
finally:
|
|
pm.disconnect() # Clean up possible remaining connections
|
|
del pm # Clean up MTM-PM-1 object
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|