Toyomasa Watarai
/
i2cdetect
Detect I2C devices
main.cpp@2:85afa5129e56, 2020-12-04 (annotated)
- Committer:
- MACRUM
- Date:
- Fri Dec 04 11:02:11 2020 +0900
- Revision:
- 2:85afa5129e56
- Parent:
- 1:2651ad0f52c0
Update library
Who changed what in which revision?
User | Revision | Line number | New 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 |