aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Abele <jason@ettus.com>2010-06-11 18:22:01 -0700
committerJason Abele <jason@ettus.com>2010-06-11 18:22:01 -0700
commitf73a3688069b69327f6837871e0b524125c67038 (patch)
tree40f184aab626f9cd123d7a238c75dd54e0ba2379
parent13b2be45f22aa52304ef4918d7c7a8e84ffbf264 (diff)
downloaduhd-f73a3688069b69327f6837871e0b524125c67038.tar.gz
uhd-f73a3688069b69327f6837871e0b524125c67038.tar.bz2
uhd-f73a3688069b69327f6837871e0b524125c67038.zip
Fixed USRP2 aux_dac numbering convention
-rw-r--r--host/lib/ic_reg_maps/CMakeLists.txt4
-rwxr-xr-xhost/lib/ic_reg_maps/gen_ad5623_regs.py (renamed from host/lib/ic_reg_maps/gen_ad5624_regs.py)4
-rw-r--r--host/lib/usrp/dboard/db_rfx.cpp2
-rw-r--r--host/lib/usrp/usrp2/dboard_iface.cpp24
4 files changed, 18 insertions, 16 deletions
diff --git a/host/lib/ic_reg_maps/CMakeLists.txt b/host/lib/ic_reg_maps/CMakeLists.txt
index 63378eb89..ba1bbc9f0 100644
--- a/host/lib/ic_reg_maps/CMakeLists.txt
+++ b/host/lib/ic_reg_maps/CMakeLists.txt
@@ -40,8 +40,8 @@ LIBUHD_PYTHON_GEN_SOURCE(
)
LIBUHD_PYTHON_GEN_SOURCE(
- ${CMAKE_SOURCE_DIR}/lib/ic_reg_maps/gen_ad5624_regs.py
- ${CMAKE_BINARY_DIR}/lib/ic_reg_maps/ad5624_regs.hpp
+ ${CMAKE_SOURCE_DIR}/lib/ic_reg_maps/gen_ad5623_regs.py
+ ${CMAKE_BINARY_DIR}/lib/ic_reg_maps/ad5623_regs.hpp
)
LIBUHD_PYTHON_GEN_SOURCE(
diff --git a/host/lib/ic_reg_maps/gen_ad5624_regs.py b/host/lib/ic_reg_maps/gen_ad5623_regs.py
index 24401b878..e653921ba 100755
--- a/host/lib/ic_reg_maps/gen_ad5624_regs.py
+++ b/host/lib/ic_reg_maps/gen_ad5623_regs.py
@@ -22,7 +22,7 @@
########################################################################
REGS_TMPL="""\
data 0[4:15] 0
-addr 0[16:18] 0 DAC_A=0, DAC_B=1, DAC_C=2, DAC_D=3, ALL=7
+addr 0[16:18] 0 DAC_A=0, DAC_B=1, ALL=7
cmd 0[19:21] 0 wr_input_n, up_dac_n, wr_input_n_up_all, wr_up_dac_chan_n, power_down, reset, load_ldac
"""
@@ -41,7 +41,7 @@ boost::uint32_t get_reg(void){
if __name__ == '__main__':
import common; common.generate(
- name='ad5624_regs',
+ name='ad5623_regs',
regs_tmpl=REGS_TMPL,
body_tmpl=BODY_TMPL,
file=__file__,
diff --git a/host/lib/usrp/dboard/db_rfx.cpp b/host/lib/usrp/dboard/db_rfx.cpp
index 17fc00d24..2585dfa8d 100644
--- a/host/lib/usrp/dboard/db_rfx.cpp
+++ b/host/lib/usrp/dboard/db_rfx.cpp
@@ -257,7 +257,7 @@ void rfx_xcvr::set_rx_gain(float gain, const std::string &name){
_rx_gains[name] = gain;
//write the new voltage to the aux dac
- this->get_iface()->write_aux_dac(dboard_iface::UNIT_RX, 1, dac_volts);
+ this->get_iface()->write_aux_dac(dboard_iface::UNIT_RX, 0, dac_volts);
}
else UHD_THROW_INVALID_CODE_PATH();
}
diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp
index 9f7c7f9e6..244f502a4 100644
--- a/host/lib/usrp/usrp2/dboard_iface.cpp
+++ b/host/lib/usrp/usrp2/dboard_iface.cpp
@@ -25,7 +25,7 @@
#include <boost/asio.hpp> //htonl and ntohl
#include <boost/math/special_functions/round.hpp>
#include "ad7922_regs.hpp" //aux adc
-#include "ad5624_regs.hpp" //aux dac
+#include "ad5623_regs.hpp" //aux dac
using namespace uhd;
using namespace uhd::usrp;
@@ -72,7 +72,7 @@ private:
boost::uint32_t _ddr_shadow;
boost::uint32_t _gpio_shadow;
- uhd::dict<unit_t, ad5624_regs_t> _dac_regs;
+ uhd::dict<unit_t, ad5623_regs_t> _dac_regs;
void _write_aux_dac(unit_t);
};
@@ -99,12 +99,12 @@ usrp2_dboard_iface::usrp2_dboard_iface(
_gpio_shadow = 0;
//reset the aux dacs
- _dac_regs[UNIT_RX] = ad5624_regs_t();
- _dac_regs[UNIT_TX] = ad5624_regs_t();
+ _dac_regs[UNIT_RX] = ad5623_regs_t();
+ _dac_regs[UNIT_TX] = ad5623_regs_t();
BOOST_FOREACH(unit_t unit, _dac_regs.keys()){
_dac_regs[unit].data = 1;
- _dac_regs[unit].addr = ad5624_regs_t::ADDR_ALL;
- _dac_regs[unit].cmd = ad5624_regs_t::CMD_RESET;
+ _dac_regs[unit].addr = ad5623_regs_t::ADDR_ALL;
+ _dac_regs[unit].cmd = ad5623_regs_t::CMD_RESET;
this->_write_aux_dac(unit);
}
}
@@ -242,12 +242,14 @@ void usrp2_dboard_iface::_write_aux_dac(unit_t unit){
void usrp2_dboard_iface::write_aux_dac(unit_t unit, int which, float value){
_dac_regs[unit].data = boost::math::iround(4095*value/3.3);
- _dac_regs[unit].cmd = ad5624_regs_t::CMD_WR_UP_DAC_CHAN_N;
+ _dac_regs[unit].cmd = ad5623_regs_t::CMD_WR_UP_DAC_CHAN_N;
+ //standardize on USRP1 interface, A=0, B=1, C=2, D=3
+ //FIXME josh reccommends the use of a nested dictionary
switch(which){
- case 0: _dac_regs[unit].addr = ad5624_regs_t::ADDR_DAC_A; break;
- case 1: _dac_regs[unit].addr = ad5624_regs_t::ADDR_DAC_B; break;
- case 2: _dac_regs[unit].addr = ad5624_regs_t::ADDR_DAC_C; break;
- case 3: _dac_regs[unit].addr = ad5624_regs_t::ADDR_DAC_D; break;
+ case 0: _dac_regs[unit].addr = unit == dboard_iface::UNIT_RX ? ad5623_regs_t::ADDR_DAC_B : ad5623_regs_t::ADDR_DAC_A; break;
+ case 1: _dac_regs[unit].addr = unit == dboard_iface::UNIT_RX ? ad5623_regs_t::ADDR_DAC_A : ad5623_regs_t::ADDR_DAC_B; break;
+ case 2: _dac_regs[unit].addr = unit == dboard_iface::UNIT_RX ? ad5623_regs_t::ADDR_DAC_A : ad5623_regs_t::ADDR_DAC_B; break;
+ case 3: _dac_regs[unit].addr = unit == dboard_iface::UNIT_RX ? ad5623_regs_t::ADDR_DAC_B : ad5623_regs_t::ADDR_DAC_A; break;
default: throw std::runtime_error("not a possible aux dac, must be 0, 1, 2, or 3");
}
this->_write_aux_dac(unit);