Detect I2C devices

Committer:
MACRUM
Date:
Fri Dec 04 11:02:57 2020 +0900
Revision:
3:0ca27c666888
Parent:
2:85afa5129e56
Add mbed_app.json file

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