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
>
>
>
>
>

Reply via email to