Pages: [1]   Go Down
Author Topic: MultiSpeed I2C Scanner - 50,100,200,400 KHz.  (Read 2196 times)
0 Members and 2 Guests are viewing this topic.
Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There are several good I2C scanners available for the Arduino.
However I missed the feature to scan if a device is reachable at different speeds.

So time to roll my own ...

(I2C EEPROM 24LC256  attached to I2C bus)

when
#define PRINTALL false
the output looks like
Code:
Multispeed - I2C Scanner - V0.1 -

ADDR ADDR 10 50 100 200 400 [KHz]
-----------------------------------------------------------------------
80 0x50 V V V V V

done...

when
#define PRINTALL true
the output looks like
Code:
Multispeed - I2C Scanner - V0.1 -

ADDR ADDR 10 50 100 200 400 [KHz]
-----------------------------------------------------------------------
0 0x0 . . . . .
1 0x1 . . . . .
2 0x2 . . . . .
3 0x3 . . . . .
4 0x4 . . . . .
5 0x5 . . . . .
6 0x6 . . . . .
7 0x7 . . . . .
8 0x8 . . . . .
9 0x9 . . . . .
10 0xA . . . . .
11 0xB . . . . .
12 0xC . . . . .
13 0xD . . . . .
14 0xE . . . . .
15 0xF . . . . .
16 0x10 . . . . .
17 0x11 . . . . .
18 0x12 . . . . .
19 0x13 . . . . .
20 0x14 . . . . .
21 0x15 . . . . .
22 0x16 . . . . .
23 0x17 . . . . .
24 0x18 . . . . .
25 0x19 . . . . .
26 0x1A . . . . .
27 0x1B . . . . .
28 0x1C . . . . .
29 0x1D . . . . .
30 0x1E . . . . .
31 0x1F . . . . .
32 0x20 . . . . .
33 0x21 . . . . .
34 0x22 . . . . .
35 0x23 . . . . .
36 0x24 . . . . .
37 0x25 . . . . .
38 0x26 . . . . .
39 0x27 . . . . .
40 0x28 . . . . .
41 0x29 . . . . .
42 0x2A . . . . .
43 0x2B . . . . .
44 0x2C . . . . .
45 0x2D . . . . .
46 0x2E . . . . .
47 0x2F . . . . .
48 0x30 . . . . .
49 0x31 . . . . .
50 0x32 . . . . .
51 0x33 . . . . .
52 0x34 . . . . .
53 0x35 . . . . .
54 0x36 . . . . .
55 0x37 . . . . .
56 0x38 . . . . .
57 0x39 . . . . .
58 0x3A . . . . .
59 0x3B . . . . .
60 0x3C . . . . .
61 0x3D . . . . .
62 0x3E . . . . .
63 0x3F . . . . .
64 0x40 . . . . .
65 0x41 . . . . .
66 0x42 . . . . .
67 0x43 . . . . .
68 0x44 . . . . .
69 0x45 . . . . .
70 0x46 . . . . .
71 0x47 . . . . .
72 0x48 . . . . .
73 0x49 . . . . .
74 0x4A . . . . .
75 0x4B . . . . .
76 0x4C . . . . .
77 0x4D . . . . .
78 0x4E . . . . .
79 0x4F . . . . .
80 0x50 V V V V V
81 0x51 . . . . .
82 0x52 . . . . .
83 0x53 . . . . .
84 0x54 . . . . .
85 0x55 . . . . .
86 0x56 . . . . .
87 0x57 . . . . .
88 0x58 . . . . .
89 0x59 . . . . .
90 0x5A . . . . .
91 0x5B . . . . .
92 0x5C . . . . .
93 0x5D . . . . .
94 0x5E . . . . .
95 0x5F . . . . .
96 0x60 . . . . .
97 0x61 . . . . .
98 0x62 . . . . .
99 0x63 . . . . .
100 0x64 . . . . .
101 0x65 . . . . .
102 0x66 . . . . .
103 0x67 . . . . .
104 0x68 . . . . .
105 0x69 . . . . .
106 0x6A . . . . .
107 0x6B . . . . .
108 0x6C . . . . .
109 0x6D . . . . .
110 0x6E . . . . .
111 0x6F . . . . .
112 0x70 . . . . .
113 0x71 . . . . .
114 0x72 . . . . .
115 0x73 . . . . .
116 0x74 . . . . .
117 0x75 . . . . .
118 0x76 . . . . .
119 0x77 . . . . .
120 0x78 . . . . .
121 0x79 . . . . .
122 0x7A . . . . .
123 0x7B . . . . .
124 0x7C . . . . .
125 0x7D . . . . .
126 0x7E . . . . .
127 0x7F . . . . .

done...

I'm thinking about adding a few more features and make it menu driven , so one can do different tests without reloading.

as always, remarks and comments are welcome

latest code:
Code:
//
//    FILE: MultiSpeedI2CScanner.ino
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.03
// PURPOSE: I2C scanner @different speeds
//    DATE: 2013-11-05
//     URL:
//
// Released to the public domain
//

#include <Wire.h>
#include <Arduino.h>

// scans devices from 50 to 800KHz I2C speeds.
// lower than 50 is not possible
// DS3231 RTC works on 800 KHz. TWBR = 2; (?)
long speed[] = {
  50, 100, 200, 250, 400, 500, 800 };
const int speeds = sizeof(speed)/sizeof(speed[0]);

// DELAY BETWEEN TESTS
#define RESTORE_LATENCY  5    // for delay between tests of found devices.
bool delayFlag = false;

// MINIMIZE OUTPUT
bool printAll = true;
bool header = true;

// STATE MACHINE
enum states {
  STOP, ONCE, CONT, HELP };
states state = STOP;

uint32_t startScan;
uint32_t stopScan;

void setup()
{
  Serial.begin(115200);
  Wire.begin();
  displayHelp();
}


void loop()
{
  switch (getCommand())
  {
  case 's':
    state = ONCE;
    break;
  case 'c':
    state = CONT;
    break;
  case 'd':
    delayFlag = !delayFlag;
    Serial.print(F("<delay="));
    Serial.println(delayFlag?F("5>"):F("0>"));
    break;
  case 'e':
    // eeprom test TODO
    break;
  case 'h':
    header = !header;
    Serial.print(F("<header="));
    Serial.println(header?F("yes>"):F("no>"));
    break;
  case '?':
    state = HELP;
    break;
  case 'p':
    printAll = !printAll;
    Serial.print(F("<print="));
    Serial.println(printAll?F("all>"):F("found>"));
    break;
  case 'q':
    state = HELP;
    break;
  default:
    break;
  }

  switch(state)
  {
  case ONCE:
    I2Cscan();
    state = HELP;
    break;
  case CONT:
    I2Cscan();
    delay(1000);
    break;    
  case HELP:
    displayHelp();
    state = STOP;
    break;
  case STOP:
    break;
  default: // ignore all non commands
    break;
  }
}

char getCommand()
{
  char c = '\0';
  if (Serial.available())
  {
    c = Serial.read();
  }
  return c;
}

void displayHelp()
{
  Serial.println(F("\nArduino I2C Scanner - 0.1.03\n"));
  Serial.println(F("\ts = single scan"));
  Serial.println(F("\tc = continuous scan - 1 second delay"));
  Serial.println(F("\tq = quit continuous scan"));
  Serial.println(F("\td = toggle latency delay between successful tests."));
  Serial.println(F("\tp = toggle printAll - printFound."));
  Serial.println(F("\th = toggle header - noHeader."));
  Serial.println(F("\t? = help - this page"));
  Serial.println();
}

void I2Cscan()
{
  startScan = millis();
  uint8_t count = 0;

  if (header)
  {
    Serial.print(F("TIME\tDEC\tHEX\t"));
    for (uint8_t s = 0; s < speeds; s++)
    {
      Serial.print(F("\t"));
      Serial.print(speed[s]);
    }
    Serial.println(F("\t[KHz]"));
    for (uint8_t s = 0; s < speeds + 5; s++)
    {
      Serial.print(F("--------"));
    }
    Serial.println();
  }

  // TEST
  for (uint8_t address = 0; address < 128; address++)
  {
    bool printLine = printAll;
    bool found[speeds];
    bool fnd = false;

    for (uint8_t s = 0; s < speeds ; s++)
    {
      TWBR = (F_CPU/(speed[s]*1000) - 16)/2;
      Wire.beginTransmission (address);
      found[s] = (Wire.endTransmission () == 0);
      fnd |= found[s];
      // give device 5 millis
      if (fnd && delayFlag) delay(RESTORE_LATENCY);
    }

    if (fnd) count++;
    printLine |= fnd;

    if (printLine)
    {
      Serial.print(millis());
      Serial.print(F("\t"));
      Serial.print(address, DEC);
      Serial.print(F("\t0x"));
      Serial.print(address, HEX);
      Serial.print(F("\t"));

      for (uint8_t s = 0; s < speeds ; s++)
      {
        Serial.print(F("\t"));
        Serial.print(found[s]? F("V"):F("."));
      }
      Serial.println();
    }
  }

  stopScan = millis();
  if (header)
  {
    Serial.println();
    Serial.print(count);
    Serial.print(F(" devices found in "));
    Serial.print(stopScan - startScan);
    Serial.println(F(" milliseconds."));
  }
}
« Last Edit: February 10, 2014, 01:05:18 pm by robtillaart » Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

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

hi there, it's possible the sensor can work with different speed I2C, but only send that data only in at one speed spec??

thank you for your code and for your time

José Luis Rodrigues
Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi there, it's possible the sensor can work with different speed I2C, but only send that data only in at one speed spec??
...
Good question, I don't know.
What I know is that an I2C EEPROM like the 24LC256, has an ~5 millisecond latency after a write. In this period the chip is not reachable (read or write). So different I2C devices can have artefacts, and when I extend this tool I hope to be able to handle them.
FYI my EEPROM lib can be found - http://playground.arduino.cc/Main/LibraryForI2CEEPROM -

The scanner now only checks address reachability (sort of ping for I2C) as there are I2C devices that do not work on all speeds.
For specific devices I want to add additional tests (EEPROM, RTC, DISPLAY, PCF8574, ...)
« Last Edit: November 16, 2013, 10:26:51 am by robtillaart » Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Have added some (menu driven) features. When the application starts you get this menu
Code:
Arduino I2C Scanner - 0.1.02

s = single scan
c = continuous scan - 1 second delay
q = quit continuous scan
d = toggle delay(5) between addresses.
p = toggle printAll - printFound.
h = toggle header - noHeader.
? = help - this page
It can do just a single scan, and it gives output as shown in post above.
A continuous scan, gives the same output with a one second delay in between. This is useful to patch/change address lines to.
To stop the continuous scanning press q (quit).

Then there are three flags that modifies the behaviour.
d: adds 5 millisecond delay between addresses. This is because some devices have a latency and will not react immediately. I'm not happy with this behaviour and it will change in next version.

p: imho the most useful flag, print complete list of addresses or only the ones found. Reduces the output to something the eye can follow.
h: removes the header/footer from the output so only the lines of addresses responding will be shown. Works especially well in combination with p, and I have doubted for some time to combine the p and h flag.

The combination I use often is printFound, noHeader and continuous. It gives output like
Code:
Arduino I2C Scanner - 0.1.02

s = single scan
c = continuous scan - 1 second delay
q = quit continuous scan
d = toggle delay(5) between addresses.
p = toggle printAll - printFound.
h = toggle header - noHeader.
? = help - this page

<print=found>
<header=no>
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V
104 0x68 V V V V V V V

One can see the number of columns has changed as I added additional speeds for I2C: 250 and 500 KHz, 2 speeds at which my RTC and EEPROM work quite well. I also tested 1000 KHz and got mixed results. The RTC did not work reliably at that speed.
(I might try 800 KHz, also a perfect divider of 16 MHz.)

Although still work in progress, the tool already met some of its goals. First on my list is to get delay() behaviour right.

As always comments and remarks are welcome.

update: - code (0.1.02 version)  removed.
« Last Edit: November 16, 2013, 10:38:26 am by robtillaart » Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

update:
+ removed the 10 KHz test as TWBR is not valid for 10KHz as TWBR is a byte .. smiley-red  
+ updated title of thread.

new 0.1.03 version:  (replaces all earlier versions)
+ removed 10 KHz
+ added 800 KHz (my RTC DS3231 seems to work reliably on this speed)
+ fixed TWBR math
+ d: delay toggle => now only waits for 5 millis if device is found.
+ added millis() time stamp in the output.

latest version of the code see first post
« Last Edit: February 10, 2014, 01:06:18 pm by robtillaart » Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Rapa Nui
Offline Offline
Edison Member
*
Karma: 52
Posts: 1990
Pukao hats cleaning services
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

FYI: scan of the GY-80 10DOF module (with v. 0.1.03):
Code:
TIME    DEC     HEX             50      100     200     250     400     500     800     [KHz]
------------------------------------------------------------------------------------------------
1561    0       0x0             .       .       .       .       .       .       .
1563    1       0x1             .       .       .       .       .       .       V
1565    2       0x2             .       .       .       .       .       .       .
1568    3       0x3             .       .       .       .       .       .       V
1570    4       0x4             .       .       .       .       .       .       .
..
1618    24      0x18            .       .       .       .       .       .       .
1620    25      0x19            .       .       .       .       .       .       V
1623    26      0x1A            .       .       .       .       .       .       .
1626    27      0x1B            .       .       .       .       .       .       V
1628    28      0x1C            .       .       .       .       .       .       .
1631    29      0x1D            .       .       .       .       .       .       V
1633    30      0x1E            V       V       V       V       V       V       .
1635    31      0x1F            .       .       .       .       .       .       V
1638    32      0x20            .       .       .       .       .       .       .
1640    33      0x21            .       .       .       .       .       .       V
1643    34      0x22            .       .       .       .       .       .       .
1645    35      0x23            .       .       .       .       .       .       V
1647    36      0x24            .       .       .       .       .       .       .
1650    37      0x25            .       .       .       .       .       .       V
1652    38      0x26            .       .       .       .       .       .       .
1655    39      0x27            .       .       .       .       .       .       V
1657    40      0x28            .       .       .       .       .       .       .
1659    41      0x29            .       .       .       .       .       .       V
1662    42      0x2A            .       .       .       .       .       .       .
..
1756    80      0x50            .       .       .       .       .       .       .
1759    81      0x51            .       .       .       .       .       .       V
1761    82      0x52            .       .       .       .       .       .       .
1764    83      0x53            V       V       V       V       V       V       V
1766    84      0x54            .       .       .       .       .       .       .
1768    85      0x55            .       .       .       .       .       .       V
1771    86      0x56            .       .       .       .       .       .       .
1773    87      0x57            .       .       .       .       .       .       V
1776    88      0x58            .       .       .       .       .       .       .
1778    89      0x59            .       .       .       .       .       .       V
1780    90      0x5A            .       .       .       .       .       .       .
1783    91      0x5B            .       .       .       .       .       .       V
1785    92      0x5C            .       .       .       .       .       .       .
1788    93      0x5D            .       .       .       .       .       .       V
1790    94      0x5E            .       .       .       .       .       .       .
1793    95      0x5F            .       .       .       .       .       .       V
1796    96      0x60            .       .       .       .       .       .       .
1798    97      0x61            .       .       .       .       .       .       V
1801    98      0x62            .       .       .       .       .       .       .
1803    99      0x63            .       .       .       .       .       .       V
1805    100     0x64            .       .       .       .       .       .       .
1808    101     0x65            .       .       .       .       .       .       V
1810    102     0x66            .       .       .       .       .       .       .
1813    103     0x67            .       .       .       .       .       .       V
1815    104     0x68            .       .       .       .       .       .       .
1818    105     0x69            V       V       V       V       V       V       V
1820    106     0x6A            .       .       .       .       .       .       .
1823    107     0x6B            .       .       .       .       .       .       V
1825    108     0x6C            .       .       .       .       .       .       .
1828    109     0x6D            .       .       .       .       .       .       V
1830    110     0x6E            .       .       .       .       .       .       .
1833    111     0x6F            .       .       .       .       .       .       V
1836    112     0x70            .       .       .       .       .       .       .
1839    113     0x71            .       .       .       .       .       .       V
1841    114     0x72            .       .       .       .       .       .       .
1844    115     0x73            .       .       .       .       .       .       V
1846    116     0x74            .       .       .       .       .       .       .
1849    117     0x75            .       .       .       .       .       .       V
1851    118     0x76            .       .       .       .       .       .       .
1854    119     0x77            V       V       V       V       V       V       V
1856    120     0x78            .       .       .       .       .       .       .
1859    121     0x79            .       .       .       .       .       .       V
1861    122     0x7A            .       .       .       .       .       .       .
1864    123     0x7B            .       .       .       .       .       .       V
1866    124     0x7C            .       .       .       .       .       .       .
1869    125     0x7D            .       .       .       .       .       .       V
1871    126     0x7E            .       .       .       .       .       .       .
1874    127     0x7F            .       .       .       .       .       .       V

66 devices found in 322 milliseconds.
« Last Edit: November 16, 2013, 12:38:19 pm by pito » Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Pito,
Very interesting results especially the 800 KHz results at every odd address. I have not seen it

What board are you using?
What is the value of the pull up resistors used? I assume at this speed the squareness of the signal is very important?
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Rapa Nui
Offline Offline
Edison Member
*
Karma: 52
Posts: 1990
Pukao hats cleaning services
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Solder-less breadboard, 1284p @16MHz, 3V3, maybe 10k pullups (I have to check).
I'll try with smaller pullups..
2k2 pullups:
Code:
TIME    DEC     HEX             50      100     200     250     400     500     800     [KHz]
------------------------------------------------------------------------------------------------
303     0       0x0             .       .       .       .       .       .       .
306     1       0x1             .       .       .       .       .       .       V
308     2       0x2             .       .       .       .       .       .       .
310     3       0x3             .       .       .       .       .       .       V
312     4       0x4             .       .       .       .       .       .       .
314     5       0x5             .       .       .       .       .       .       .
316     6       0x6             .       .       .       .       .       .       .
319     7       0x7             .       .       .       .       .       .       V
321     8       0x8             .       .       .       .       .       .       .
323     9       0x9             .       .       .       .       .       .       .
325     10      0xA             .       .       .       .       .       .       .
327     11      0xB             .       .       .       .       .       .       .
329     12      0xC             .       .       .       .       .       .       .
332     13      0xD             .       .       .       .       .       .       .
334     14      0xE             .       .       .       .       .       .       .
336     15      0xF             .       .       .       .       .       .       V
338     16      0x10            .       .       .       .       .       .       .
342     17      0x11            .       .       .       .       .       .       .
344     18      0x12            .       .       .       .       .       .       .
346     19      0x13            .       .       .       .       .       .       .
349     20      0x14            .       .       .       .       .       .       .
351     21      0x15            .       .       .       .       .       .       .
353     22      0x16            .       .       .       .       .       .       .
356     23      0x17            .       .       .       .       .       .       .
358     24      0x18            .       .       .       .       .       .       .
360     25      0x19            .       .       .       .       .       .       .
363     26      0x1A            .       .       .       .       .       .       .
365     27      0x1B            .       .       .       .       .       .       .
367     28      0x1C            .       .       .       .       .       .       .
370     29      0x1D            .       .       .       .       .       .       .
372     30      0x1E            V       V       V       V       V       V       .
374     31      0x1F            .       .       .       .       .       .       V
377     32      0x20            .       .       .       .       .       .       .
379     33      0x21            .       .       .       .       .       .       .
381     34      0x22            .       .       .       .       .       .       .
385     35      0x23            .       .       .       .       .       .       .
..
412     47      0x2F            .       .       .       .       .       .       .
415     48      0x30            .       .       .       .       .       .       .
417     49      0x31            .       .       .       .       .       .       .
419     50      0x32            .       .       .       .       .       .       .
422     51      0x33            .       .       .       .       .       .       .
424     52      0x34            .       .       .       .       .       .       .
427     53      0x35            .       .       .       .       .       .       .
430     54      0x36            .       .       .       .       .       .       .
432     55      0x37            .       .       .       .       .       .       .
434     56      0x38            .       .       .       .       .       .       .
437     57      0x39            .       .       .       .       .       .       .
439     58      0x3A            .       .       .       .       .       .       .
441     59      0x3B            .       .       .       .       .       .       .
444     60      0x3C            .       .       .       .       .       .       .
446     61      0x3D            .       .       .       .       .       .       .
448     62      0x3E            .       .       .       .       .       .       .
451     63      0x3F            .       .       .       .       .       .       V
453     64      0x40            .       .       .       .       .       .       .
455     65      0x41            .       .       .       .       .       .       .
..
482     76      0x4C            .       .       .       .       .       .       .
484     77      0x4D            .       .       .       .       .       .       .
487     78      0x4E            .       .       .       .       .       .       .
489     79      0x4F            .       .       .       .       .       .       .
491     80      0x50            .       .       .       .       .       .       .
494     81      0x51            .       .       .       .       .       .       .
496     82      0x52            .       .       .       .       .       .       .
498     83      0x53            .       V       V       V       V       V       .
500     84      0x54            .       .       .       .       .       .       .
503     85      0x55            .       .       .       .       .       .       .
505     86      0x56            .       .       .       .       .       .       .
..
541     101     0x65            .       .       .       .       .       .       .
543     102     0x66            .       .       .       .       .       .       .
546     103     0x67            .       .       .       .       .       .       .
548     104     0x68            .       .       .       .       .       .       .
551     105     0x69            V       V       V       V       V       V       .
553     106     0x6A            .       .       .       .       .       .       .
557     107     0x6B            .       .       .       .       .       .       .
559     108     0x6C            .       .       .       .       .       .       .
561     109     0x6D            .       .       .       .       .       .       .
564     110     0x6E            .       .       .       .       .       .       .
566     111     0x6F            .       .       .       .       .       .       .
569     112     0x70            .       .       .       .       .       .       .
571     113     0x71            .       .       .       .       .       .       .
573     114     0x72            .       .       .       .       .       .       .
576     115     0x73            .       .       .       .       .       .       .
578     116     0x74            .       .       .       .       .       .       .
581     117     0x75            .       .       .       .       .       .       .
583     118     0x76            .       .       .       .       .       .       .
585     119     0x77            V       V       V       V       V       V       .
588     120     0x78            .       .       .       .       .       .       .
590     121     0x79            .       .       .       .       .       .       .
593     122     0x7A            .       .       .       .       .       .       .
595     123     0x7B            .       .       .       .       .       .       .
598     124     0x7C            .       .       .       .       .       .       .
601     125     0x7D            .       .       .       .       .       .       .
603     126     0x7E            .       .       .       .       .       .       .
606     127     0x7F            .       .       .       .       .       .       V

The same with 680ohm pullups. The GY-80 module includes a level translator afaik, so the pullups value may not have direct impact on the signal shape at the sensors..
« Last Edit: November 16, 2013, 03:23:22 pm by pito » Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have pull ups of 3.2K (measured value), so my signal might be more "square"
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Edison Member
*
Karma: 9
Posts: 1010
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I have added a link to your MultiSpeed I2C Scanner in http://playground.arduino.cc/Main/I2cScanner
See the "Interesting Links" section.
But I don't like that link to reply 4.

robtillaart, could you give your Multispeed I2C Scanner it's own place and adjust that link in the i2c_scanner ?
You could add it to the i2c_scanner page, but perhaps that is confusing for new users, that page is very simple now, and that is better for new users.
Another option to edit your first post, and make that the main article and for your scanner.
Logged

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

good proposal,
will put the link in the first post.
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Global Moderator
Netherlands
Online Online
Shannon Member
*****
Karma: 169
Posts: 12441
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@krodal
+ moved last code to first post
+ updated link in the 12csanner page
+ added a small header in i2c scanner page (you may remove it)
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Pages: [1]   Go Up
Jump to: