Reading registers on the USRP

Hi,

I’m having a little trouble reading the readback registers that are on
the
USRP. I know that most registers are write only with their contents
mirrored on the computer. The reason I want read those registers back
is
because of a custom unit I am testing. I currently load a custom
implementation on the USRP that consists of 1 TX chain and 2 custom
units,
one of which feeds back information into the unused readback ports
(rssi0
to rssi3). I’m able to read from the capabilities register using
‘_read_fpga_register(FR_RB_CAPS)’ and it returns a value that makes
sense.
When I try reading from any other register, the value returned is
consistently ‘0’. I’m reading the registers in a loop in case the value
changes after a given amount of time. I’m not sure what to try next,
can
someone give me a new direction?

-Kevin

[email protected] wrote:

When I try reading from any other register, the value returned is
consistently ‘0’. I’m reading the registers in a loop in case the value
changes after a given amount of time. I’m not sure what to try next, can
someone give me a new direction?

-Kevin

This post might help:

http://lists.gnu.org/archive/html/discuss-gnuradio/2007-05/msg00356.html

-Roshan

I’ve read that post before. It more or less gave me reassurances on
what
I had gathered that had to be done to implement a simple in-line
multiplier in the TX chain. The post tells me what registers are
readback, but not how to read them back. When I came across the post
originally, it pointed me in the right direction to where I should
connect
the output of my new module.

-Kevin

On Thu, Feb 14, 2008 at 12:06:34PM -0500, [email protected] wrote:

I’ve read that post before. It more or less gave me reassurances on what
I had gathered that had to be done to implement a simple in-line
multiplier in the TX chain. The post tells me what registers are
readback, but not how to read them back. When I came across the post
originally, it pointed me in the right direction to where I should connect
the output of my new module.

-Kevin

First off please note that readable registers and writable registers
are in two different, non-overlapping address spaces.

If you create a readable register, you can read it’s value using

v = u._read_fpga_reg (int regno)

Eric