diff options
Diffstat (limited to 'commandline/i2cdetect.c')
-rw-r--r-- | commandline/i2cdetect.c | 49 |
1 files changed, 10 insertions, 39 deletions
diff --git a/commandline/i2cdetect.c b/commandline/i2cdetect.c index ee55528..60a72ac 100644 --- a/commandline/i2cdetect.c +++ b/commandline/i2cdetect.c @@ -10,12 +10,11 @@ int main(int argc, char **argv) { - - i2c_init(); - signed char i; unsigned char id, i2cid; + i2c_init(); + fputs(" 0 1 2 3 4 5 6 7 8 9 a b c d e f", stdout); for (id = 0; id < 128; id++) { @@ -27,43 +26,15 @@ int main(int argc, char **argv) printf("\n%02x:", id); } - set_sda(1); - set_scl(1); - usleep(1000); - set_sda(0); - usleep(1000); - set_scl(0); - verify_sda_low(); - verify_scl_low(); - for (i = 7; i >= -1; i--) { - if ((i < 0) || (i2cid & (1 << i))) { - set_sda(1); - //verify_sda_high(); - } else { - set_sda(0); - //verify_sda_low(); - } - usleep(10); - set_scl(1); - usleep(10); - //verify_scl_high(); - if (i < 0) { - if (get_status() & (1 << BIT_SDA)) - fputs(" --", stdout); - else - printf(" %02x", id); - } - set_scl(0); - usleep(10); - //verify_scl_low(); - } - set_scl(1); - usleep(100); - //verify_scl_high(); - set_sda(1); - usleep(100); - //verify_sda_high(); + i2c_start(); + + if (i2c_tx_byte(i2cid)) + printf(" %02x", id); + else + fputs(" --", stdout); + + i2c_stop(); } fputs("\n", stdout); |