Hi, I've figured out what I was doing wrong.... No set_filter() once the taps are set (I mistakenly thought that this was implicitly done -- and checking the source code of UHD confirmed that the sptr returned by get_filter() is a sptr to a **copy** of the original filter, and not the actual one!)! :S :S :S :S Now it works like a charm.... Thanks again!!! :) Rob
On 13 September 2017 at 07:11, Rob Heig <robh...@gmail.com> wrote: > Hi, > Thank you both for your help! :) > I had started myself patching UHD for the job like Sylvain did, but that > scared me a bit since I didn't want to stump on the feet of the library and > risk having some strange behaviour, therefore I preferred to ask first ;) > Have a nice day! > Rob > > On 12 September 2017 at 22:15, Julian Arnold <jul...@elitecoding.org> > wrote: > >> Hey, >> >> In case you haven't already adopted the straight forward approach >> mentioned by >> Sylvain I just dug out the tool I mentioned and moved >> it to my github account [1]. >> >> I quickly compiled and linked against a recent version of UHD (3.9.6) to >> confirm that it still works. >> >> Build as usual: >> mkdir build >> cd build >> cmake .. >> make >> >> You can then run the "main" program as follows: >> >> ./main --list >> >> to see a list of all available filters with their corresponding paths. >> Then, you can write new filter coefficients with: >> >> ./main --write_fir --path=<path from run with --list option> >> e.g.: >> ./main --write_fir --path=/mboards/0/dboards/A/rx >> _frontends/A/filters/FIR_1 >> >> this will update the coefficients of FIR_1 and then read the filter again >> to >> check if the coefficients have been updated. >> However, the tool is definitely not polished in any way and does not check >> whether or not the new coefficients actually take effect. >> If they still don't then let me know and I'll try to create a more >> complete >> example application. >> >> [1] https://github.com/jarn0ld/uhd-filter-tool >> >> Cheers, >> Julian >> >> On Tuesday, September 12, 2017 5:16:56 PM CEST Sylvain Munaut wrote: >> > Personally I'm using a patched UHD where I expose the SPI device : >> > >> > >> > diff --git a/host/lib/usrp/b200/b200_impl.cpp >> > b/host/lib/usrp/b200/b200_impl.cpp index a513e1336..01c1e3b51 100644 >> > --- a/host/lib/usrp/b200/b200_impl.cpp >> > +++ b/host/lib/usrp/b200/b200_impl.cpp >> > @@ -549,6 +549,8 @@ b200_impl::b200_impl(const uhd::device_addr_t& >> > device_addr, usb_device_handle::s >> > _adf4001_iface = boost::make_shared<b200_ref_pl >> l_ctrl>(_spi_iface); >> > } >> > >> > + _tree->create<spi_iface::sptr>(mb_path / ("spi")).set(_spi_iface); >> > + >> > //////////////////////////////////////////////////////////// >> //////// >> > // Init codec - turns on clocks >> > //////////////////////////////////////////////////////////// >> //////// >> > >> > >> > Then in my code I can get the SPI object : >> > >> > uhd::spi_iface::sptr spi = >> > usrp->get_device()->get_tree()->access<uhd::spi_iface::sptr> >> ("/mboards/0/spi >> > ").get(); >> > >> > and use read_spi / write_spi to control any register I want. >> > >> > >> > Cheers, >> > >> > Sylvain >> >> >> -- >> Julian Arnold, M.Sc. >> >> Institute for Networked Systems >> RWTH Aachen University >> Kackertstrasse 9 >> 52072 Aachen >> Germany >> > >
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com