Hey everyone,
I experience some randomness in the timing of the ouput of my SDR, when
applying a TTL signal to the GPIO. The TTL signal is fed to Pin 2 of the
GPIO and has a Voltage of ~3V. It also is of arbitrary length (~10
microseconds - several seconds). When the trigger is active it takes
between 0.25 - 20 ms until the SDR starts streaming the data (measured
with an oscilloscope, comparing the starting time of the trigger and
streamed data). The data streamed is made of several hundred buffers and
contains a modulation of the carrier frequency.
Is there any way to control the starting time of streaming, when the
trigger was applied?
Below is a part of the code, where the "trigger" is applied. It is
pretty much based on the tx_waveforms example code/./
#define MAN_GPIO_MASK (1 << 2)
#define ATR_MASKS (AMP_GPIO_MASK | MAN_GPIO_MASK)
// set up our values for ATR control: 1 for ATR, 0 for manual
#define ATR_CONTROL (AMP_GPIO_MASK & ~MAN_GPIO_MASK)
// set up the GPIO directions: 1 for output, 0 for input
#define GPIO_DDR (AMP_GPIO_MASK & ~MAN_GPIO_MASK)
.....
Buffer production & stuff
...
uhd::tx_metadata_t md;
md.start_of_burst = true;
md.end_of_burst = true;
md.has_time_spec = false;
usrp->set_gpio_attr("FP0", "CTRL", 0);
usrp->set_gpio_attr("FP0", "DDR", 0);
while (true) {
int readback = 0;
if (stop_signal_called) break;
int initialise = usrp->get_gpio_attr("FP0", "READBACK", 0);
if (readback != initialise) {
readback = initialise;
if (initialise = 1)
{
for (int i = 0; i < line; i++) {
tx_stream->send(
buff_ptrs[i], spb, md
);
}
}
}
boost::this_thread::sleep(boost::posix_time::microseconds(1));
}
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com