11
Dependencies: ADXL362 ATParser MPL3115A2 mbed
Fork of Lab7 by
main.cpp@4:eb81ef9e1621, 2018-04-05 (annotated)
- Committer:
- jackclar
- Date:
- Thu Apr 05 14:43:37 2018 +0000
- Revision:
- 4:eb81ef9e1621
- Parent:
- 2:c322c1331eaa
- Child:
- 5:4a5b8c114486
Lab 9;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fanbsun | 0:9a45e4f07b10 | 1 | #include "mbed.h" |
fanbsun | 0:9a45e4f07b10 | 2 | #include "MPL3115A2.h" |
fanbsun | 0:9a45e4f07b10 | 3 | #include <string> |
fanbsun | 0:9a45e4f07b10 | 4 | #include <math.h> |
jackclar | 4:eb81ef9e1621 | 5 | #include <ATParser.h> |
jackclar | 4:eb81ef9e1621 | 6 | #include "BufferedSerial.h" |
fanbsun | 0:9a45e4f07b10 | 7 | |
jackclar | 4:eb81ef9e1621 | 8 | //Serial pc(SERIAL_TX, SERIAL_RX); |
fanbsun | 0:9a45e4f07b10 | 9 | DigitalOut myled(LED1); |
jackclar | 2:c322c1331eaa | 10 | DigitalOut powerpin(PA_8); // GPIO pin |
jackclar | 4:eb81ef9e1621 | 11 | BufferedSerial pc(SERIAL_TX, SERIAL_RX); |
jackclar | 4:eb81ef9e1621 | 12 | BufferedSerial device(PA_9, PA_10); |
fanbsun | 0:9a45e4f07b10 | 13 | |
fanbsun | 0:9a45e4f07b10 | 14 | // Selects SDA as I2C1_SDA on pin PB_7 |
fanbsun | 0:9a45e4f07b10 | 15 | // Selects SCL on I2C1_SCL on pin PB_6 |
fanbsun | 0:9a45e4f07b10 | 16 | // The I2C address of the pressure sensor is fixed at 0x60. |
fanbsun | 0:9a45e4f07b10 | 17 | MPL3115A2 pressure_sensor(PB_7,PB_6,0x60); |
jackclar | 2:c322c1331eaa | 18 | void mpl3115_reg_print(int start, int length); // prototype |
fanbsun | 0:9a45e4f07b10 | 19 | |
fanbsun | 0:9a45e4f07b10 | 20 | int main() { |
jackclar | 2:c322c1331eaa | 21 | int8_t a; |
jackclar | 2:c322c1331eaa | 22 | uint8_t id; |
fanbsun | 0:9a45e4f07b10 | 23 | double p, t; |
jackclar | 2:c322c1331eaa | 24 | double v , s; |
fanbsun | 0:9a45e4f07b10 | 25 | int cnt = 0; |
fanbsun | 0:9a45e4f07b10 | 26 | myled = 0; |
jackclar | 2:c322c1331eaa | 27 | char c; |
fanbsun | 0:9a45e4f07b10 | 28 | powerpin = 0; |
jackclar | 4:eb81ef9e1621 | 29 | ATParser at = ATParser(device, "\r\n", 256, 2000, false); |
jackclar | 4:eb81ef9e1621 | 30 | char buffer[100]; |
jackclar | 4:eb81ef9e1621 | 31 | pc.baud(115200); |
jackclar | 4:eb81ef9e1621 | 32 | device.baud(115200); |
jackclar | 2:c322c1331eaa | 33 | double alt1 = pressure_sensor.getAltitude(), alt2; // initial alt |
jackclar | 4:eb81ef9e1621 | 34 | |
jackclar | 4:eb81ef9e1621 | 35 | mpl3115_reg_print( 0, 0); |
jackclar | 4:eb81ef9e1621 | 36 | |
jackclar | 2:c322c1331eaa | 37 | while ((id=pressure_sensor.getID())!=0xC4)// wait for the sensor to connect |
jackclar | 2:c322c1331eaa | 38 | { |
jackclar | 2:c322c1331eaa | 39 | wait(1); |
jackclar | 2:c322c1331eaa | 40 | } |
fanbsun | 0:9a45e4f07b10 | 41 | |
fanbsun | 0:9a45e4f07b10 | 42 | while(1) |
fanbsun | 0:9a45e4f07b10 | 43 | { |
jackclar | 4:eb81ef9e1621 | 44 | if(pc.getc() == 's') // if the GPIO pin is pulled high |
jackclar | 2:c322c1331eaa | 45 | { |
jackclar | 2:c322c1331eaa | 46 | myled != myled; |
jackclar | 2:c322c1331eaa | 47 | //turn on and off led at 1Hz |
jackclar | 2:c322c1331eaa | 48 | p=pressure_sensor.getPressure(); |
jackclar | 2:c322c1331eaa | 49 | t=pressure_sensor.getTemperature(); |
jackclar | 4:eb81ef9e1621 | 50 | at.send("Hello"); |
jackclar | 2:c322c1331eaa | 51 | } |
jackclar | 2:c322c1331eaa | 52 | else |
jackclar | 2:c322c1331eaa | 53 | { |
jackclar | 2:c322c1331eaa | 54 | myled = 0; // so we know when no data is being taken |
jackclar | 2:c322c1331eaa | 55 | } |
fanbsun | 0:9a45e4f07b10 | 56 | } |
fanbsun | 0:9a45e4f07b10 | 57 | } |
jackclar | 2:c322c1331eaa | 58 | |
jackclar | 2:c322c1331eaa | 59 | void mpl3115_reg_print(int start, int length) |
jackclar | 2:c322c1331eaa | 60 | { |
jackclar | 2:c322c1331eaa | 61 | uint8_t i, id; |
jackclar | 2:c322c1331eaa | 62 | std::string name; |
jackclar | 2:c322c1331eaa | 63 | uint8_t temp[1]; |
jackclar | 2:c322c1331eaa | 64 | id = pressure_sensor.getID(); |
jackclar | 2:c322c1331eaa | 65 | |
jackclar | 2:c322c1331eaa | 66 | // check start registers |
jackclar | 2:c322c1331eaa | 67 | if(start >= 0x00 && start <= 0x2D && length >= 0x00 && id == 0xC4) |
jackclar | 2:c322c1331eaa | 68 | { |
jackclar | 2:c322c1331eaa | 69 | // print all if length = 0 |
jackclar | 2:c322c1331eaa | 70 | if(length == 0) |
jackclar | 2:c322c1331eaa | 71 | { |
jackclar | 2:c322c1331eaa | 72 | start = 0; |
jackclar | 2:c322c1331eaa | 73 | length = 46; |
jackclar | 2:c322c1331eaa | 74 | } |
jackclar | 2:c322c1331eaa | 75 | |
jackclar | 2:c322c1331eaa | 76 | for(i = start; i < start + length; i++) |
jackclar | 2:c322c1331eaa | 77 | { |
jackclar | 2:c322c1331eaa | 78 | // make sure name is correct |
jackclar | 2:c322c1331eaa | 79 | switch(i) |
jackclar | 2:c322c1331eaa | 80 | { |
jackclar | 2:c322c1331eaa | 81 | case 0x00: |
jackclar | 2:c322c1331eaa | 82 | name = "MPL_STATUS"; |
jackclar | 2:c322c1331eaa | 83 | break; |
jackclar | 2:c322c1331eaa | 84 | case 0x01: |
jackclar | 2:c322c1331eaa | 85 | name = "MPL_OUT_P_MSB"; |
jackclar | 2:c322c1331eaa | 86 | break; |
jackclar | 2:c322c1331eaa | 87 | case 0x02: |
jackclar | 2:c322c1331eaa | 88 | name = "MPL_OUT_P_CSB"; |
jackclar | 2:c322c1331eaa | 89 | break; |
jackclar | 2:c322c1331eaa | 90 | case 0x03: |
jackclar | 2:c322c1331eaa | 91 | name = "MPL_OUT_P_LSB"; |
jackclar | 2:c322c1331eaa | 92 | break; |
jackclar | 2:c322c1331eaa | 93 | case 0x04: |
jackclar | 2:c322c1331eaa | 94 | name = "MPL_OUT_T_MSB"; |
jackclar | 2:c322c1331eaa | 95 | break; |
jackclar | 2:c322c1331eaa | 96 | case 0x05: |
jackclar | 2:c322c1331eaa | 97 | name = "MPL_OUT_T_LSB"; |
jackclar | 2:c322c1331eaa | 98 | break; |
jackclar | 2:c322c1331eaa | 99 | case 0x06: |
jackclar | 2:c322c1331eaa | 100 | name = "MPL_DR_STATUS"; |
jackclar | 2:c322c1331eaa | 101 | break; |
jackclar | 2:c322c1331eaa | 102 | case 0x07: |
jackclar | 2:c322c1331eaa | 103 | name = "MPL_OUT_P_DELTA_MSB"; |
jackclar | 2:c322c1331eaa | 104 | break; |
jackclar | 2:c322c1331eaa | 105 | case 0x08: |
jackclar | 2:c322c1331eaa | 106 | name = "MPL_OUT_P_DELTA_CSB"; |
jackclar | 2:c322c1331eaa | 107 | break; |
jackclar | 2:c322c1331eaa | 108 | case 0x09: |
jackclar | 2:c322c1331eaa | 109 | name = "MPL_OUT_P_DELTA_LSB"; |
jackclar | 2:c322c1331eaa | 110 | break; |
jackclar | 2:c322c1331eaa | 111 | case 0x0A: |
jackclar | 2:c322c1331eaa | 112 | name = "MPL_OUT_T_DELTA_MSB"; |
jackclar | 2:c322c1331eaa | 113 | break; |
jackclar | 2:c322c1331eaa | 114 | case 0x0B: |
jackclar | 2:c322c1331eaa | 115 | name = "MPL_OUT_T_DELTA_LSB"; |
jackclar | 2:c322c1331eaa | 116 | break; |
jackclar | 2:c322c1331eaa | 117 | case 0x0C: |
jackclar | 2:c322c1331eaa | 118 | name = "MPL_WHO_AM_I"; |
jackclar | 2:c322c1331eaa | 119 | break; |
jackclar | 2:c322c1331eaa | 120 | case 0x0D: |
jackclar | 2:c322c1331eaa | 121 | name = "MPL_F_STATUS"; |
jackclar | 2:c322c1331eaa | 122 | break; |
jackclar | 2:c322c1331eaa | 123 | case 0x0E: |
jackclar | 2:c322c1331eaa | 124 | name = "MPL_F_DATA"; |
jackclar | 2:c322c1331eaa | 125 | break; |
jackclar | 2:c322c1331eaa | 126 | case 0x0F: |
jackclar | 2:c322c1331eaa | 127 | name = "MPL_F_SETUP"; |
jackclar | 2:c322c1331eaa | 128 | break; |
jackclar | 2:c322c1331eaa | 129 | case 0x10: |
jackclar | 2:c322c1331eaa | 130 | name = "MPL_TIME_DLY"; |
jackclar | 2:c322c1331eaa | 131 | break; |
jackclar | 2:c322c1331eaa | 132 | case 0x11: |
jackclar | 2:c322c1331eaa | 133 | name = "MPL_SYSMOD"; |
jackclar | 2:c322c1331eaa | 134 | break; |
jackclar | 2:c322c1331eaa | 135 | case 0x12: |
jackclar | 2:c322c1331eaa | 136 | name = "MPL_INT_SOURCE"; |
jackclar | 2:c322c1331eaa | 137 | break; |
jackclar | 2:c322c1331eaa | 138 | case 0x13: |
jackclar | 2:c322c1331eaa | 139 | name = "MPL_PT_DATA_CFG"; |
jackclar | 2:c322c1331eaa | 140 | break; |
jackclar | 2:c322c1331eaa | 141 | case 0x14: |
jackclar | 2:c322c1331eaa | 142 | name = "MPL_BAR_IN_MSB"; |
jackclar | 2:c322c1331eaa | 143 | break; |
jackclar | 2:c322c1331eaa | 144 | case 0x15: |
jackclar | 2:c322c1331eaa | 145 | name = "MPL_BAR_IN_LSB"; |
jackclar | 2:c322c1331eaa | 146 | break; |
jackclar | 2:c322c1331eaa | 147 | case 0x16: |
jackclar | 2:c322c1331eaa | 148 | name = "MPL_P_TGT_MSB"; |
jackclar | 2:c322c1331eaa | 149 | break; |
jackclar | 2:c322c1331eaa | 150 | case 0x17: |
jackclar | 2:c322c1331eaa | 151 | name = "MPL_P_TGT_LSB"; |
jackclar | 2:c322c1331eaa | 152 | break; |
jackclar | 2:c322c1331eaa | 153 | case 0x18: |
jackclar | 2:c322c1331eaa | 154 | name = "MPL_T_TGT"; |
jackclar | 2:c322c1331eaa | 155 | break; |
jackclar | 2:c322c1331eaa | 156 | case 0x19: |
jackclar | 2:c322c1331eaa | 157 | name = "MPL_P_WND_MSB"; |
jackclar | 2:c322c1331eaa | 158 | break; |
jackclar | 2:c322c1331eaa | 159 | case 0x1A: |
jackclar | 2:c322c1331eaa | 160 | name = "MPL_P_WND_LSB"; |
jackclar | 2:c322c1331eaa | 161 | break; |
jackclar | 2:c322c1331eaa | 162 | case 0x1B: |
jackclar | 2:c322c1331eaa | 163 | name = "MPL_T_WND"; |
jackclar | 2:c322c1331eaa | 164 | break; |
jackclar | 2:c322c1331eaa | 165 | case 0x1C: |
jackclar | 2:c322c1331eaa | 166 | name = "MPL_P_MIN_MSB"; |
jackclar | 2:c322c1331eaa | 167 | break; |
jackclar | 2:c322c1331eaa | 168 | case 0x1D: |
jackclar | 2:c322c1331eaa | 169 | name = "MPL_P_MIN_CSB"; |
jackclar | 2:c322c1331eaa | 170 | break; |
jackclar | 2:c322c1331eaa | 171 | case 0x1E: |
jackclar | 2:c322c1331eaa | 172 | name = "MPL_P_MIN_LSB"; |
jackclar | 2:c322c1331eaa | 173 | break; |
jackclar | 2:c322c1331eaa | 174 | case 0x1F: |
jackclar | 2:c322c1331eaa | 175 | name = "MPL_T_MIN_MSB"; |
jackclar | 2:c322c1331eaa | 176 | break; |
jackclar | 2:c322c1331eaa | 177 | case 0x20: |
jackclar | 2:c322c1331eaa | 178 | name = "MPL_T_MIN_LSB"; |
jackclar | 2:c322c1331eaa | 179 | break; |
jackclar | 2:c322c1331eaa | 180 | case 0x21: |
jackclar | 2:c322c1331eaa | 181 | name = "MPL_P_MAX_MSB"; |
jackclar | 2:c322c1331eaa | 182 | break; |
jackclar | 2:c322c1331eaa | 183 | case 0x22: |
jackclar | 2:c322c1331eaa | 184 | name = "MPL_P_MAX_CSB"; |
jackclar | 2:c322c1331eaa | 185 | break; |
jackclar | 2:c322c1331eaa | 186 | case 0x23: |
jackclar | 2:c322c1331eaa | 187 | name = "MPL_P_MAX_LSB"; |
jackclar | 2:c322c1331eaa | 188 | break; |
jackclar | 2:c322c1331eaa | 189 | case 0x24: |
jackclar | 2:c322c1331eaa | 190 | name = "MPL_T_MAX_MSB"; |
jackclar | 2:c322c1331eaa | 191 | break; |
jackclar | 2:c322c1331eaa | 192 | case 0x25: |
jackclar | 2:c322c1331eaa | 193 | name = "MPL_T_MAX_LSB"; |
jackclar | 2:c322c1331eaa | 194 | break; |
jackclar | 2:c322c1331eaa | 195 | case 0x26: |
jackclar | 2:c322c1331eaa | 196 | name = "MPL_CTRL_REG1"; |
jackclar | 2:c322c1331eaa | 197 | break; |
jackclar | 2:c322c1331eaa | 198 | case 0x27: |
jackclar | 2:c322c1331eaa | 199 | name = "MPL_CTRL_REG2"; |
jackclar | 2:c322c1331eaa | 200 | break; |
jackclar | 2:c322c1331eaa | 201 | case 0x28: |
jackclar | 2:c322c1331eaa | 202 | name = "MPL_CTRL_REG3"; |
jackclar | 2:c322c1331eaa | 203 | break; |
jackclar | 2:c322c1331eaa | 204 | case 0x29: |
jackclar | 2:c322c1331eaa | 205 | name = "MPL_CTRL_REG4"; |
jackclar | 2:c322c1331eaa | 206 | break; |
jackclar | 2:c322c1331eaa | 207 | case 0x2A: |
jackclar | 2:c322c1331eaa | 208 | name = "MPL_CTRL_REG5"; |
jackclar | 2:c322c1331eaa | 209 | break; |
jackclar | 2:c322c1331eaa | 210 | case 0x2B: |
jackclar | 2:c322c1331eaa | 211 | name = "MPL_OFF_P"; |
jackclar | 2:c322c1331eaa | 212 | break; |
jackclar | 2:c322c1331eaa | 213 | case 0x2C: |
jackclar | 2:c322c1331eaa | 214 | name = "MPL_OFF_T"; |
jackclar | 2:c322c1331eaa | 215 | break; |
jackclar | 2:c322c1331eaa | 216 | case 0x2D: |
jackclar | 2:c322c1331eaa | 217 | name = "MPL_OFF_h"; |
jackclar | 2:c322c1331eaa | 218 | break; |
jackclar | 2:c322c1331eaa | 219 | } |
jackclar | 2:c322c1331eaa | 220 | // boy I do love switch statments |
jackclar | 2:c322c1331eaa | 221 | pressure_sensor.readRegs(i, temp, 1); |
jackclar | 2:c322c1331eaa | 222 | pc.printf("0x%x: %s=0x%x\n\r", i, name, temp[0]); |
jackclar | 2:c322c1331eaa | 223 | // actually print the contents of the register |
jackclar | 2:c322c1331eaa | 224 | } |
jackclar | 2:c322c1331eaa | 225 | |
jackclar | 2:c322c1331eaa | 226 | } |
jackclar | 2:c322c1331eaa | 227 | } |