Toyomasa Watarai / Mbed OS i2cdetect
Committer:
MACRUM
Date:
Mon Apr 23 09:25:26 2018 +0000
Revision:
0:81685bb49271
Child:
1:2651ad0f52c0
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:81685bb49271 1 #include "mbed.h"
MACRUM 0:81685bb49271 2
MACRUM 0:81685bb49271 3 DigitalOut led1(LED1);
MACRUM 0:81685bb49271 4 Serial pc(USBTX, USBRX);
MACRUM 0:81685bb49271 5 I2C i2c(D14, D15);
MACRUM 0:81685bb49271 6
MACRUM 0:81685bb49271 7 // main() runs in its own thread in the OS
MACRUM 0:81685bb49271 8 int main() {
MACRUM 0:81685bb49271 9 char buf[10];
MACRUM 0:81685bb49271 10 buf[0] = 0;
MACRUM 0:81685bb49271 11 pc.printf(" 0 1 2 3 4 5 6 7 8 9 a b c d e f\n");
MACRUM 0:81685bb49271 12 for (int adrs = 0; adrs < 0x80; adrs += 16) {
MACRUM 0:81685bb49271 13 pc.printf("%02x: ", adrs);
MACRUM 0:81685bb49271 14 for (int i = 0; i < 16; i++) {
MACRUM 0:81685bb49271 15 i2c.write(((adrs + i) << 1), buf, 1);
MACRUM 0:81685bb49271 16 int ret = i2c.read(((adrs + i) << 1), buf, 2);
MACRUM 0:81685bb49271 17 if ((adrs+i) == 0 || (adrs+i) == 1 || (adrs+i) == 2) {
MACRUM 0:81685bb49271 18 pc.printf(" ");
MACRUM 0:81685bb49271 19 continue;
MACRUM 0:81685bb49271 20 }
MACRUM 0:81685bb49271 21 if ((adrs+i) >= 0x78) {
MACRUM 0:81685bb49271 22 pc.printf("\n");
MACRUM 0:81685bb49271 23 break;
MACRUM 0:81685bb49271 24 }
MACRUM 0:81685bb49271 25 if (ret == 1) {
MACRUM 0:81685bb49271 26 pc.printf("-- ");
MACRUM 0:81685bb49271 27 }
MACRUM 0:81685bb49271 28 if (ret == 0) {
MACRUM 0:81685bb49271 29 pc.printf("%02x ", (adrs + i));
MACRUM 0:81685bb49271 30 }
MACRUM 0:81685bb49271 31 }
MACRUM 0:81685bb49271 32 pc.printf("\n");
MACRUM 0:81685bb49271 33 }
MACRUM 0:81685bb49271 34
MACRUM 0:81685bb49271 35 while (true) {
MACRUM 0:81685bb49271 36 led1 = !led1;
MACRUM 0:81685bb49271 37 wait(0.5);
MACRUM 0:81685bb49271 38 }
MACRUM 0:81685bb49271 39 }
MACRUM 0:81685bb49271 40