You're probably right that a custom FPGA image would be needed here. On Fri, Sep 10, 2021 at 11:07 AM Dobler, Anton <anton.dob...@unibw.de> wrote:
> PS: Forgot to mention that I am using a USRP N310 and its front panel > GPIO... > > > Thank you for your help! > ------------------------------ > *Von:* Discuss-gnuradio <discuss-gnuradio-bounces+anton.dobler= > unibw...@gnu.org> im Auftrag von Dobler, Anton <anton.dob...@unibw.de> > *Gesendet:* Freitag, 10. September 2021 16:18 > *An:* discuss-gnuradio@gnu.org > *Betreff:* USRP, GPIO toggling and Gnuradio > > > Dear all, > > I am currently trying to write an OOT block to switch a GPIO pin high or > low depending on the input signal. So far it has worked with the > configuration of the pins and I can also switch the pins according to the > input signal in a relatively simple flowgraph consisting of a signal > generator that produces a square wave signal. > > The block's work function looks like this: > > int GPIO_IO_impl::work(int noutput_items, > gr_vector_const_void_star &input_items, > gr_vector_void_star &output_items) > { > > > const float *in_signal = (const float *) input_items[0]; > > > for(int i=0; i < noutput_items; i++) { > > if(in_signal[i] >= d_threshold) > { > _dev->set_gpio_attr(gpio, std::string("OUT"), "HIGH", > 0xffffffff) > } > > if(in_signal[i] < d_threshold) > { > _dev->set_gpio_attr(gpio, std::string("OUT"), "LOW", > 0xffffff); > } > boost::this_thread::sleep_for(boost::chrono::nanoseconds((unsigned > long long)d_samp_period)); > > } > > return noutput_items; > } > > The sleep function is important in that without it, regardless of the > sampling rate of the square wave signal, the pin is switched with a period > of 20us. If I use the sleep function, the whole thing works better, but > only up to a sampling rate of about 20kHz. I have read a little bit about > the function of the scheduler in GNURadio, but I did not find a solution. > > Starting from the standing approach, I have tried using both Timed > Commands and Boost Signals, with the result that the pins are switched > completely asynchronously. Since I don't really know what to do at this > point, I wanted to ask if any of you had experience with this kind of OOT > block in GNURadio. > > > > Best regards, > > > Anton > > > > >