Discover I2C devices on a bus

Dependencies:   mbed

Committer:
vkottler
Date:
Sat Feb 17 23:51:25 2018 +0000
Revision:
0:4d662897d4a1
I2C testing initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vkottler 0:4d662897d4a1 1 #include "mbed.h"
vkottler 0:4d662897d4a1 2
vkottler 0:4d662897d4a1 3 Serial pc(SERIAL_TX, SERIAL_RX);
vkottler 0:4d662897d4a1 4 I2C i2c(D0, D1);
vkottler 0:4d662897d4a1 5
vkottler 0:4d662897d4a1 6 DigitalOut myled(LED1);
vkottler 0:4d662897d4a1 7
vkottler 0:4d662897d4a1 8 int main() {
vkottler 0:4d662897d4a1 9
vkottler 0:4d662897d4a1 10 pc.baud(115200);
vkottler 0:4d662897d4a1 11 int i = 1;
vkottler 0:4d662897d4a1 12 int devices_found;
vkottler 0:4d662897d4a1 13 uint8_t curr_addr;
vkottler 0:4d662897d4a1 14 char data[1] = {'\0'};
vkottler 0:4d662897d4a1 15 pc.printf("\r\n");
vkottler 0:4d662897d4a1 16 pc.printf("Program begin\r\n");
vkottler 0:4d662897d4a1 17 wait(1);
vkottler 0:4d662897d4a1 18
vkottler 0:4d662897d4a1 19 while(1) {
vkottler 0:4d662897d4a1 20
vkottler 0:4d662897d4a1 21 devices_found = 0;
vkottler 0:4d662897d4a1 22 myled = !myled;
vkottler 0:4d662897d4a1 23
vkottler 0:4d662897d4a1 24 for (i = 0; i < 128; i++) {
vkottler 0:4d662897d4a1 25 curr_addr = i << 1;
vkottler 0:4d662897d4a1 26 if (!i2c.write(curr_addr, data, 1)) {
vkottler 0:4d662897d4a1 27 pc.printf("found device at 0x%x\r\n", curr_addr);
vkottler 0:4d662897d4a1 28 devices_found++;
vkottler 0:4d662897d4a1 29 }
vkottler 0:4d662897d4a1 30 wait(0.2);
vkottler 0:4d662897d4a1 31 }
vkottler 0:4d662897d4a1 32
vkottler 0:4d662897d4a1 33 pc.printf("%d devices found\r\n", devices_found);
vkottler 0:4d662897d4a1 34 wait(2);
vkottler 0:4d662897d4a1 35 }
vkottler 0:4d662897d4a1 36
vkottler 0:4d662897d4a1 37 /* should never get here */
vkottler 0:4d662897d4a1 38 return 0;
vkottler 0:4d662897d4a1 39 }