Sensor I2C Coragem
main.cpp@0:4c3c977e65f0, 2020-06-29 (annotated)
- Committer:
- brunnobbco
- Date:
- Mon Jun 29 20:36:27 2020 +0000
- Revision:
- 0:4c3c977e65f0
Sensor I2C Coragem
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunnobbco | 0:4c3c977e65f0 | 1 | #include "mbed.h" |
brunnobbco | 0:4c3c977e65f0 | 2 | |
brunnobbco | 0:4c3c977e65f0 | 3 | //#define ADDR (0x6D<<1) |
brunnobbco | 0:4c3c977e65f0 | 4 | |
brunnobbco | 0:4c3c977e65f0 | 5 | Serial pc(p25, p8); // tx, rx |
brunnobbco | 0:4c3c977e65f0 | 6 | DigitalOut ADR(P0_12); |
brunnobbco | 0:4c3c977e65f0 | 7 | |
brunnobbco | 0:4c3c977e65f0 | 8 | I2C i2c(p13, p15); |
brunnobbco | 0:4c3c977e65f0 | 9 | |
brunnobbco | 0:4c3c977e65f0 | 10 | |
brunnobbco | 0:4c3c977e65f0 | 11 | char buffer[2]; |
brunnobbco | 0:4c3c977e65f0 | 12 | uint16_t aux; |
brunnobbco | 0:4c3c977e65f0 | 13 | |
brunnobbco | 0:4c3c977e65f0 | 14 | int main() |
brunnobbco | 0:4c3c977e65f0 | 15 | { |
brunnobbco | 0:4c3c977e65f0 | 16 | ADR=1; |
brunnobbco | 0:4c3c977e65f0 | 17 | char sco_bit; |
brunnobbco | 0:4c3c977e65f0 | 18 | i2c.frequency(100000); |
brunnobbco | 0:4c3c977e65f0 | 19 | |
brunnobbco | 0:4c3c977e65f0 | 20 | const int addr = 0x6d << 1; |
brunnobbco | 0:4c3c977e65f0 | 21 | char readdata[3]; |
brunnobbco | 0:4c3c977e65f0 | 22 | |
brunnobbco | 0:4c3c977e65f0 | 23 | while(1) |
brunnobbco | 0:4c3c977e65f0 | 24 | { |
brunnobbco | 0:4c3c977e65f0 | 25 | int ret, value, value1, value2; |
brunnobbco | 0:4c3c977e65f0 | 26 | sco_bit = 1; |
brunnobbco | 0:4c3c977e65f0 | 27 | pc.printf("Lendo valor em registrador 0xA5…\r\n"); |
brunnobbco | 0:4c3c977e65f0 | 28 | |
brunnobbco | 0:4c3c977e65f0 | 29 | buffer[0] = 0xA5; |
brunnobbco | 0:4c3c977e65f0 | 30 | |
brunnobbco | 0:4c3c977e65f0 | 31 | //ret = i2c.write((addr << 1) & 0xFE); |
brunnobbco | 0:4c3c977e65f0 | 32 | ret = i2c.write(addr, buffer, 1); |
brunnobbco | 0:4c3c977e65f0 | 33 | |
brunnobbco | 0:4c3c977e65f0 | 34 | if (!ret) // 0:ACK 1:NACK |
brunnobbco | 0:4c3c977e65f0 | 35 | { |
brunnobbco | 0:4c3c977e65f0 | 36 | ret = i2c.read(addr, readdata, 3); |
brunnobbco | 0:4c3c977e65f0 | 37 | |
brunnobbco | 0:4c3c977e65f0 | 38 | if (ret) |
brunnobbco | 0:4c3c977e65f0 | 39 | pc.printf("Erro B %d.\r\n", ret); |
brunnobbco | 0:4c3c977e65f0 | 40 | } |
brunnobbco | 0:4c3c977e65f0 | 41 | else |
brunnobbco | 0:4c3c977e65f0 | 42 | pc.printf("Erro A %d.\r\n", ret); |
brunnobbco | 0:4c3c977e65f0 | 43 | |
brunnobbco | 0:4c3c977e65f0 | 44 | if (!ret) |
brunnobbco | 0:4c3c977e65f0 | 45 | { |
brunnobbco | 0:4c3c977e65f0 | 46 | buffer[0] = 0xA5; |
brunnobbco | 0:4c3c977e65f0 | 47 | buffer[1] = readdata[0] & 0x07; |
brunnobbco | 0:4c3c977e65f0 | 48 | buffer[2] = readdata[1] & 0x0f; |
brunnobbco | 0:4c3c977e65f0 | 49 | buffer[3] = readdata[2] & 0x0d; |
brunnobbco | 0:4c3c977e65f0 | 50 | ret = i2c.write(addr, buffer, 4); |
brunnobbco | 0:4c3c977e65f0 | 51 | |
brunnobbco | 0:4c3c977e65f0 | 52 | if (ret == 0) // 0:ACK 1:NACK |
brunnobbco | 0:4c3c977e65f0 | 53 | { |
brunnobbco | 0:4c3c977e65f0 | 54 | buffer[0] = 0x30; |
brunnobbco | 0:4c3c977e65f0 | 55 | buffer[1] = 0x0A; |
brunnobbco | 0:4c3c977e65f0 | 56 | i2c.write(addr, buffer, 2); |
brunnobbco | 0:4c3c977e65f0 | 57 | i2c.read(addr, sco_bit, 1); |
brunnobbco | 0:4c3c977e65f0 | 58 | |
brunnobbco | 0:4c3c977e65f0 | 59 | if (!sco_bit) |
brunnobbco | 0:4c3c977e65f0 | 60 | { |
brunnobbco | 0:4c3c977e65f0 | 61 | buffer[0] = 0x06; |
brunnobbco | 0:4c3c977e65f0 | 62 | i2c.write(addr, buffer, 1); |
brunnobbco | 0:4c3c977e65f0 | 63 | i2c.read(addr, readdata[0], 3); |
brunnobbco | 0:4c3c977e65f0 | 64 | buffer[0] = 0x07; |
brunnobbco | 0:4c3c977e65f0 | 65 | i2c.write(addr, buffer, 1); |
brunnobbco | 0:4c3c977e65f0 | 66 | i2c.read(addr, readdata[1], 3); |
brunnobbco | 0:4c3c977e65f0 | 67 | buffer[0] = 0x08; |
brunnobbco | 0:4c3c977e65f0 | 68 | i2c.write(addr, buffer, 1); |
brunnobbco | 0:4c3c977e65f0 | 69 | i2c.read(addr, readdata[2], 3); |
brunnobbco | 0:4c3c977e65f0 | 70 | |
brunnobbco | 0:4c3c977e65f0 | 71 | pc.printf("Valor lido: %d\n", readdata); |
brunnobbco | 0:4c3c977e65f0 | 72 | } |
brunnobbco | 0:4c3c977e65f0 | 73 | } |
brunnobbco | 0:4c3c977e65f0 | 74 | else |
brunnobbco | 0:4c3c977e65f0 | 75 | pc.printf("Erro C %d.\r\n", ret); |
brunnobbco | 0:4c3c977e65f0 | 76 | } |
brunnobbco | 0:4c3c977e65f0 | 77 | } |
brunnobbco | 0:4c3c977e65f0 | 78 | } |