Pages: [1]   Go Down
Author Topic: I2C Issue on DUE (With logic analysis)  (Read 618 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Guys,

ok, I'm tired, I spent all day trying to get rid of this strange issue.
Let's take a look...
1) This is the code:

Code:
#include <Wire.h>
int val = 0;

void setup()
{
  Wire.begin(); // join i2c bus

}

void loop()
{
  
  Wire.beginTransmission(0x00); // transmit to device #
  Wire.write(0xc1); //default init command 0xc1
  Wire.write(0xd1); //sub call address select 0xd1
  Wire.write(0x00); //registro initialization call 0x00
  Wire.write(0x01); //registro setup 0x01
  Wire.write(0x14); //primo gruppo led0 init 0x14
  Wire.write(0x55); //(01010101 -> 01 led full on 0x55
  Wire.endTransmission();     // stop transmitting
  
  val++;        // increment value
  if(val == 64) // if reached 64th position (max)
  {
    val = 0;    // start over from lowest value
  }
  delay(500);
}

2) this is are results from the logic analyzer:




The link of the pictures, in case will not work due to access of flickr:
http://farm6.staticflickr.com/5508/9110418244_532144983e_b.jpg
http://farm4.staticflickr.com/3680/9108260063_7071e9a93f_b.jpg

3) Additional info:
Operating systems used to test the sw ubuntu 64bit & win7 64bit.
Latest version of beta 1.5.2 for DUE.


It seems that instead to sending the content of the Wire.write funcion it sends again and again the Wire.beginTransmission value.
If I change the beginTransmission value I simply get the new value repeated again and again for the total number of the Wire.write typed in the code.


I don't have enough knowledge to modify the library or... am I doing something wrong?
Thanks a million for your help!
Dario.
« Last Edit: June 22, 2013, 01:13:36 pm by DarylDee » Logged

0
Offline Offline
God Member
*****
Karma: 26
Posts: 625
Always making something...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Maybe using a non-zero address would help?

 Wire.beginTransmission(0x00); // transmit to device #
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Totally Paul : )
I was confused, with other arduinos you get only the first message repeated then the wire.write condition hangs if no ack is sent from slave device, but not with sam3x.

Thanks!
Logged

Pages: [1]   Go Up
Jump to: