Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
main.cpp@132:e36000d354c6, 2020-05-09 (annotated)
- Committer:
- sb8718
- Date:
- Sat May 09 10:13:50 2020 +0000
- Revision:
- 132:e36000d354c6
- Parent:
- 131:8fb226cc407c
- Child:
- 133:278a9afa9e1a
Lab8_1 (well)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sb8718 | 109:5274dd9bebe1 | 1 | #include "mbed.h" |
sb8718 | 130:d19783810c05 | 2 | |
sb8718 | 132:e36000d354c6 | 3 | #define TMP_REG (0x00) |
sb8718 | 132:e36000d354c6 | 4 | #define CONF_REG (0x03) |
sb8718 | 132:e36000d354c6 | 5 | #define ADDR (0x48) |
sb8718 | 132:e36000d354c6 | 6 | |
sb8718 | 132:e36000d354c6 | 7 | I2C i2c(I2C_SDA, I2C_SCL); |
sb8718 | 132:e36000d354c6 | 8 | Serial pc(PA_2, PA_3, 115200); //IR receiver D4 |
sb8718 | 131:8fb226cc407c | 9 | |
sb8718 | 129:53f2df333d65 | 10 | int main() { |
sb8718 | 132:e36000d354c6 | 11 | |
sb8718 | 132:e36000d354c6 | 12 | int status; |
sb8718 | 132:e36000d354c6 | 13 | float temp; |
sb8718 | 132:e36000d354c6 | 14 | char data_write[2]; |
sb8718 | 132:e36000d354c6 | 15 | char data_read[2]; |
sb8718 | 132:e36000d354c6 | 16 | |
sb8718 | 132:e36000d354c6 | 17 | pc.printf("Welcome to I2C Test program\r\n"); |
sb8718 | 132:e36000d354c6 | 18 | |
sb8718 | 132:e36000d354c6 | 19 | i2c.frequency(100000); |
sb8718 | 132:e36000d354c6 | 20 | |
sb8718 | 132:e36000d354c6 | 21 | data_write[0] = CONF_REG; |
sb8718 | 132:e36000d354c6 | 22 | data_write[1] = 0x40; |
sb8718 | 132:e36000d354c6 | 23 | status = i2c.write((ADDR << 1), data_write, 2); |
sb8718 | 132:e36000d354c6 | 24 | if(status != 0) { |
sb8718 | 132:e36000d354c6 | 25 | pc.printf("I2C configuration error!!\r\n"); |
sb8718 | 132:e36000d354c6 | 26 | while(1) { } |
sb8718 | 118:88f30fadf08f | 27 | } |
sb8718 | 132:e36000d354c6 | 28 | |
sb8718 | 132:e36000d354c6 | 29 | while(1) { |
sb8718 | 132:e36000d354c6 | 30 | data_write[0] = TMP_REG; |
sb8718 | 132:e36000d354c6 | 31 | i2c.write((ADDR << 1), data_write, 1, 0); |
sb8718 | 132:e36000d354c6 | 32 | i2c.read(((ADDR << 1) | 0x01), data_read, 2, 0); |
sb8718 | 132:e36000d354c6 | 33 | |
sb8718 | 132:e36000d354c6 | 34 | int tempval = ((int) data_read[0] << 8) | data_read[1]; |
sb8718 | 132:e36000d354c6 | 35 | tempval >>= 3; |
sb8718 | 132:e36000d354c6 | 36 | |
sb8718 | 132:e36000d354c6 | 37 | if((tempval & 0x1000) > 0) { |
sb8718 | 132:e36000d354c6 | 38 | temp = (tempval - 8192)/16.0; |
sb8718 | 132:e36000d354c6 | 39 | } else { |
sb8718 | 132:e36000d354c6 | 40 | temp = tempval/16.0; |
sb8718 | 132:e36000d354c6 | 41 | } |
sb8718 | 132:e36000d354c6 | 42 | |
sb8718 | 132:e36000d354c6 | 43 | pc.printf("temperature = %.4f\r\n",temp); |
sb8718 | 132:e36000d354c6 | 44 | ThisThread::sleep_for(1000); |
sb8718 | 132:e36000d354c6 | 45 | } |
sb8718 | 132:e36000d354c6 | 46 | } |