Commit b17887c5 authored by Matthieu Cattin's avatar Matthieu Cattin

test06: Uses common modules, added exception handling.

parent 05a3ec17
...@@ -4,15 +4,28 @@ ...@@ -4,15 +4,28 @@
# Author: Matthieu Cattin <matthieu.cattin@cern.ch> # Author: Matthieu Cattin <matthieu.cattin@cern.ch>
# Licence: GPL v2 or later. # Licence: GPL v2 or later.
# Website: http://www.ohwr.org # Website: http://www.ohwr.org
# Last modifications: 23/5/2012
# Import system modules
import sys import sys
import rr
import time import time
import os import os
# Add common modules and libraries location to path
sys.path.append('../../../')
sys.path.append('../../../gnurabbit/python/')
sys.path.append('../../../common/')
# Import common modules
from ptsexcept import * from ptsexcept import *
import rr
# Import specific modules
from fmc_adc_spec import *
from fmc_adc import *
import fmc_adc
from PAGE.Agilent33250A import * from PAGE.Agilent33250A import *
from PAGE.SineWaveform import * from PAGE.SineWaveform import *
...@@ -22,76 +35,98 @@ test06: Test trigger input ...@@ -22,76 +35,98 @@ test06: Test trigger input
Note: Requires test00.py to run first to load the firmware! Note: Requires test00.py to run first to load the firmware!
""" """
USB_DEVICE = "/dev/ttyUSB0"
RS232_BAUD = 57600
NB_CHANNELS = 4
PRE_TRIG_SAMPLES = 500
POST_TRIG_SAMPLES = 500
NB_SHOTS = 1
TIMEOUT = 1
def main (default_directory='.'): def main (default_directory='.'):
""" # Constants declaration
path_fpga_loader = '../../../gnurabbit/user/fpga_loader'; TEST_NB = 6
path_firmware = '../firmwares/spec_fmcadc100m14b4cha.bin'; EXPECTED_BITSTREAM_TYPE = 0x1
firmware_loader = os.path.join(default_directory, path_fpga_loader) USB_DEVICE = "/dev/ttyUSB0"
bitstream = os.path.join(default_directory, path_firmware) RS232_BAUD = 57600
print firmware_loader + ' ' + bitstream NB_CHANNELS = 4
os.system( firmware_loader + ' ' + bitstream ) PRE_TRIG_SAMPLES = 500
POST_TRIG_SAMPLES = 500
time.sleep(2); NB_SHOTS = 1
""" TIMEOUT = 0.1
# Objects declaration
spec = rr.Gennum() # bind to the SPEC board start_test_time = time.time()
fmc = fmc_adc.CFmcAdc100Ms(spec) print "================================================================================"
gen = Agilent33250A(device=USB_DEVICE, bauds=RS232_BAUD) print "Test%02d start\n" % TEST_NB
sine = SineWaveform()
# SPEC object declaration
# Set sine params print "Loading hardware access library and opening device.\n"
sine.frequency = 1E3 spec = rr.Gennum()
sine.amplitude = 1
sine.dc = 0 # Carrier object declaration (SPEC board specific part)
# Used to check that the firmware is loaded.
# Set AWG and turn it ON try:
gen.connect() carrier = CFmcAdc100mSpec(spec, EXPECTED_BITSTREAM_TYPE)
gen.output = True except FmcAdc100mSpecOperationError as e:
gen.sync = True raise PtsCritical("Carrier init failed, test stopped: %s" % e)
gen.play(sine)
# Mezzanine object declaration (FmcAdc100m14b4cha board specific part)
# Disconnect all inputs try:
for i in range(1, NB_CHANNELS+1): fmc = CFmcAdc100m(spec)
fmc.set_input_range(i, "OPEN") except FmcAdc100mOperationError as e:
raise PtsCritical("Mezzanine init failed, test stopped: %s" % e)
# Set trigger
# hw trig, rising edge, external, sw disable, no delay try:
fmc.set_trig_config(1, 0, 1, 1, 0, 0, 0) gen = Agilent33250A(device=USB_DEVICE, bauds=RS232_BAUD)
sine = SineWaveform()
# Set acquisition
fmc.set_pre_trig_samples(PRE_TRIG_SAMPLES) # Set sine params
fmc.set_post_trig_samples(POST_TRIG_SAMPLES) sine.frequency = 1E3
fmc.set_shots(NB_SHOTS) sine.amplitude = 1
sine.dc = 0
# Start acquisition
fmc.stop_acq() # Set AWG and turn it ON
print('Acquisition FSM state : %s (should be IDLE)') % fmc.get_acq_fsm_state() gen.connect()
fmc.start_acq() gen.output = True
time.sleep(TIMEOUT) gen.sync = True
gen.play(sine)
# Switch AWG OFF
gen.output = False # Disconnect all inputs
gen.sync = False for i in range(1, NB_CHANNELS+1):
gen.close() fmc.set_input_range(i, "OPEN")
# Check if the trigger has been received # Set trigger
if('WAIT_TRIG' == fmc.get_acq_fsm_state()): # hw trig, rising edge, external, sw disable, no delay
print('Acquisition FSM state : %s') % fmc.get_acq_fsm_state() fmc.set_trig_config(1, 0, 1, 1, 1, 0, 0)
raise PtsError('External trigger input is not working')
else: # Set acquisition
print('The external trigger input is working fine.') fmc.set_pre_trig_samples(PRE_TRIG_SAMPLES)
fmc.set_post_trig_samples(POST_TRIG_SAMPLES)
fmc.set_shots(NB_SHOTS)
# Start acquisition
fmc.stop_acq()
print "Acquisition FSM state : %s (should be IDLE)" % fmc.get_acq_fsm_state()
fmc.start_acq()
print "Wait for trigger."
time.sleep(TIMEOUT)
# Switch AWG OFF
gen.output = False
gen.sync = False
gen.close()
# Check if the trigger has been received
if('WAIT_TRIG' == fmc.get_acq_fsm_state()):
print "Acquisition FSM state : %s" % fmc.get_acq_fsm_state()
raise PtsError('External trigger input is not working.')
else:
print "The external trigger input is working fine."
except FmcAdc100mOperationError as e:
raise PtsError("Test Failed: %s" % e)
print ""
print "==> End of test%02d" % TEST_NB
print "================================================================================"
end_test_time = time.time()
print "Test%02d elapsed time: %.2f seconds\n" % (TEST_NB, end_test_time-start_test_time)
if __name__ == '__main__' : if __name__ == '__main__' :
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment