I2C Help Please

Hi everyone!I’m a new and still learning. I’m hoping someone could help me decipher it. I’m working on a volume control IC NJW1150 and have gotten it to work with a buttons and a atmega2560. I cant figure out what the address number is for the tone control Bass and treble. It has a chart showing the binaries but when I turn it into a number I get a high number the doesn’t seem right to me.Thanks

3.JPG

If things are wired check with this program and ensure you are talking to your unit

Then seeing some code would help...

Everything works great. what I did was. Its a woofer box surround system logitech 5300. I didn't have the control pod so I made my own with my arduino mega and buttons and led etc... I thought I would need the original master ( The POD controller to abstract the code from)Not the Slave that's the njw 1150 isn't it..the one that I tell to jump and it will ask How High. LOL Are you saying I can scan and get the instructions from the slave IC?I'll try it. I just got another arduino uno. I got it just incase I needed an extra IC to help me figure it out.Thanks I'll let you know what happens.

I cant figure out what the address number is for the tone control Bass and treble.

Register 0x07. The four high bits are treble, and the four low bits are bass.

It has a chart showing the binaries but when I turn it into a number I get a high number the doesn't seem right to me.Thanks

Please explain more. What does not seem correct?

The way I read the control command table for register 0x07 is that bits 7 and 4 are sign designators, where a 1 is +db and a 0 is -db. The next three bits set the value with values of 8/4/2.

The example show 8 = 100 and 10 = 101 with the sign(0 or 1) in the msb

More of me trying to understand it and to writ a sketch.I have the existing sketch that works great. I'll study more and reply how I.m reading it. I'm looking to see the numbers you came up with. Hope that helps me understand.Ill look at more examples too. thanks Maybe you can check what I come up with and let me know if I'm getting it.

How did you get values of 8/4/2 100=8,101=10 When I converted to deci I get 100=4 101=5 Do you see the 2nd to last example the last 3 bits are 111 but the table is different. Is that a misprint? cause 111=7

Do I sound lost? Everytime I think I understand it. when I start converting it doesn't make sense like I cant get those values you got.

Do you see the 2nd to last example the last 3 bits are 111 but the table is different. Is that a misprint? cause 111=7

Yes, I think this is a misprint.

I cant get those values you got

.

I think that the scaling used is a custom one, based on binary, where the low three bits have value 8/4/2 and not exactly the four low bits of binary (8/4/2/1) as you are expecting it. Interpreting it this way is the only way I can make sense of the examples +/- 10 or 8 db. None of the other registers appear to have a sign.

I don't know anything about audio but maybe for this bass/treble balance there's no value to a 1db resolution, and the sign is more important.

Please explain to me what you mean (8/4/2/1) what does that mean based from my chart. Where you got those number in laymans term. for an idiot like me. One byte concist of D7,D6,D5,D4,D3,D2,D1,D0.

d7 IS ALSO THE MSB OR ITS THE NUMBER 8 BIT IN THE BYTE. d6 IS REALLY BIT 7 IN THE TABLE d0 IS REALLY nUMBER 1 IN THE BYTE OF 8 BITS. aM i UNDERSTANDING THIS RIGHT?

When you said 7 and 4 are the sign designaters is really D7 colum and D3 colum because the table starts with D0 not D1 but D0 is really bit 1 in a normal 8 bit. Am I making any sense?So D7,D6,D5,D4 would be treble.D3,D2,D1,D0 wouild be Bass. So D7 Would be 1 for +dB and 0 -dB in D7 for treble and in D3 for Bass. Then ,D6,D5,D4, Would be the level of dB for treble and ,D2,D1,D0 would be the level for bass. Does this sound right?If not caould you please use the terms from chart and the D7,D6,D5,etc to describe how you got those numbers from the rows or colums. etc

aM i UNDERSTANDING THIS RIGHT?

Yes. I apologize for making a mistake when I said bit 7 and bit 4. I intended to write bit 7 and bit 3 with the 8 bits zero indexed and running from 7 to 0 from left to right.

Am I making any sense? So D7,D6,D5,D4 would be treble.D3,D2,D1,D0 wouild be Bass. So D7 Would be 1 for +dB and 0 -dB in D7 for treble and in D3 for Bass. Then ,D6,D5,D4, Would be the level of dB for treble and ,D2,D1,D0 would be the level for bass.

This is correct. I'm sure I confused you with the bit 4 mistake.

Instead of thinking of the entire register as a byte, perhaps its best to think of it as two four bit nibbles that have numerical values, which are "sort of" binary. The leftmost bit of the the four (7 and 3) is the sign. The right three bits of the four are the value. The only way that I can make sense of the examples given in the chart is if those three bits have values of 8, 4 and 2.

I'm following you!!That's what I did was split it in half.So far I am understanding it except how did you get those numbers?I gave you examples of the numbers I was getting.SO far I understand what you said in your original reply with a little figuring out and I thank you.Only don't get how you came up with those numbers unless there is more errors on the chart.So far you have helped me and I thank you!!

I've tried to convert from binary from the chart to get 8,4,2. I've tried to reproduce getting what you have gotten and have had no luck. I only got 4.After I understand that part. I'm only half way to getting this done. I then Have to put all this into a sketch.I have a lot ahead of me to do still.

Here is the data sheet with all the information.

njw1150 volume control IC2.pdf (212 KB)

I see this on page 8

  1. TREBLE =+/-10dB 2) BASS =+/-10dB

and then there is this table on page 11.
Tone Control.PNG

D7 and D3 are clearly the sign bits with a 1 being + and a 0 being -. The +10 = 1101 and the plus 8 = 1100 indicate to me that the values of
D6 = 2^3 = 8
D5 = 2^2 = 4
D4 = 2^1 = 2

D2 = 2^3 = 8
D1 = 2^2 = 4
D0 = 2^1 = 2

101 = 18 + 04 +12 = 10.
100 = 1
8 + 04 +02 = 8.

The example for 0db indicates that there are two ways to write it, but with each sign the three bits with values are all 0.

The -8db and -10db examples have a misprint. On the left where they show the pattern they have
01000100 and 01010101

Then in the remarks they state 01000111 = -8db. This has to be a misprint. If anything it should be -14 db but I don’t think that the ranges go beyond 10.

They also state 01010101 = -10db which is consistent.

EDIT:

When I converted to deci I get 100=4 101=5

Another way to look at this is to treat D6:D4 and D2:D0 as the standard three lowest binary bits with values 2^2 = 4 2^1 = 2 and 2^0 = 1. The number you get is then multiplied by 2 or bit shifted (<<1) left by by 1 whichever way you prefer to think about it.