added start_delay between adc config and pulse card start; configurable via backend.conf
This commit is contained in:
parent
b3c0e85c0c
commit
45008c2138
@ -11,6 +11,7 @@
|
|||||||
#include "drivers/SpinCore-PulseBlaster24Bit/SpinCore-PulseBlaster24Bit.h"
|
#include "drivers/SpinCore-PulseBlaster24Bit/SpinCore-PulseBlaster24Bit.h"
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,6 +30,7 @@
|
|||||||
|
|
||||||
@{
|
@{
|
||||||
*/
|
*/
|
||||||
|
struct timespec start_delay;
|
||||||
|
|
||||||
class general_hardware: public hardware
|
class general_hardware: public hardware
|
||||||
{
|
{
|
||||||
@ -90,8 +92,15 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
USRCONF = 1;
|
USRCONF = 1;
|
||||||
if (!(SYSCONF | USRCONF))
|
if (!(SYSCONF | USRCONF)) {
|
||||||
|
error = NULL;
|
||||||
throw(core_exception("configuration failed!\n"));
|
throw(core_exception("configuration failed!\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
int start_delay_msec = g_key_file_get_integer(cfg_file, "PB", "start_delay_msec", &error);
|
||||||
|
::start_delay = { start_delay_msec/1000, start_delay_msec%1000 * 1000000L};
|
||||||
|
if (error)
|
||||||
|
g_error("%s",error->message);
|
||||||
|
|
||||||
printf("done!\n");
|
printf("done!\n");
|
||||||
/* configure ADC card */
|
/* configure ADC card */
|
||||||
@ -144,6 +153,7 @@ public:
|
|||||||
g_error("%s",error->message);
|
g_error("%s",error->message);
|
||||||
error = NULL;
|
error = NULL;
|
||||||
my_pts = new PTS_latched(pts_id);
|
my_pts = new PTS_latched(pts_id);
|
||||||
|
|
||||||
// PTS 500 has 0.36 or 0.72 above 200MHz ; PTS 310 has 0.225 degrees/step
|
// PTS 500 has 0.36 or 0.72 above 200MHz ; PTS 310 has 0.225 degrees/step
|
||||||
my_pts->phase_step = (float) g_key_file_get_double(cfg_file, "PTS", "phase_stepsize", &error);
|
my_pts->phase_step = (float) g_key_file_get_double(cfg_file, "PTS", "phase_stepsize", &error);
|
||||||
if (error)
|
if (error)
|
||||||
@ -172,6 +182,8 @@ public:
|
|||||||
the_adc->set_daq(*work_copy);
|
the_adc->set_daq(*work_copy);
|
||||||
else
|
else
|
||||||
throw ADC_exception("the_adc == NULL\n");
|
throw ADC_exception("the_adc == NULL\n");
|
||||||
|
// ADC configured wait start_delay_msec before loading and starting pulse card
|
||||||
|
nanosleep(&::start_delay, NULL);
|
||||||
// the pulse generator is necessary
|
// the pulse generator is necessary
|
||||||
if (with_sync) {
|
if (with_sync) {
|
||||||
my_pulseblaster->run_pulse_program_w_sync(*work_copy, my_adc->get_sample_clock_frequency());
|
my_pulseblaster->run_pulse_program_w_sync(*work_copy, my_adc->get_sample_clock_frequency());
|
||||||
@ -232,7 +244,7 @@ public:
|
|||||||
core(conf)
|
core(conf)
|
||||||
{
|
{
|
||||||
the_hardware = new general_hardware();
|
the_hardware = new general_hardware();
|
||||||
the_name = "berta core";
|
the_name = "general core";
|
||||||
}
|
}
|
||||||
virtual const std::string& core_name() const
|
virtual const std::string& core_name() const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user