Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 5, 3 & 1

Anonymous
Not applicable

Hello,

   

I bought an i2C interface module to output an analog 0-10 V to four channels. This module receives i2C commands to set the values (0 - 1023) for each (0-3) channel. Here is a link to the module; http://www.horter.de/blog/i2c-analog-output-4-kanaele-10-bit/

   

To test the module, I am using the code in the attached 'main' file. However, this does not result in the output of the module changing values. To confirm the module is working, I tested it with an simple Arduino Uno, and everything seems to be working just fine. On the site of the manufacturer of the module, it is stated that an odd number of bytes should be sent, the first one indicating the channel which will be addressed, the second and the third one containing the LSB and MSB of the value to be set.

   

Can anybody help me on my way on what I'm missing here?

   

Thanks in advance

0 Likes
3 Replies
Bob_Marlowe
Level 10
50 questions asked 10 questions asked 1000 solutions authored
Level 10

Use slave address of 0x58, the R)W bit will be appended automatically.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Yhank you! This indeed did solve the problem. I still don't get why, the actual slave address of the module is 176 or 0xB0, so it sounds odd to have to set the address to 0x58.

   

Thans!

0 Likes
Bob_Marlowe
Level 10
50 questions asked 10 questions asked 1000 solutions authored
Level 10

The "official" slave address, as you name it, is an eight bit address, the last bit indicates writing and reading.

   

As most manufacturers publish, an I2C component uses a 7-bit address and appends the r/w bit automatically to get an 8-bit address.

   

As a general rule of thumb: An I2C address cannot be larger than 127 as far as PSoCs are concerned.

   

 

   

Bob

0 Likes