P422_Labs
/
elevator
lab 7 code
main.cpp@1:2a6907395c5d, 2018-03-10 (annotated)
- Committer:
- m0t0
- Date:
- Sat Mar 10 15:51:19 2018 +0000
- Revision:
- 1:2a6907395c5d
- Parent:
- 0:4350259cf0d0
lab 7;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
m0t0 | 0:4350259cf0d0 | 1 | #include "mbed.h" |
m0t0 | 0:4350259cf0d0 | 2 | #include "MPL3115A2.h" |
m0t0 | 1:2a6907395c5d | 3 | #include "string" |
m0t0 | 1:2a6907395c5d | 4 | #include "ctype.h" |
m0t0 | 0:4350259cf0d0 | 5 | |
m0t0 | 0:4350259cf0d0 | 6 | Serial pc(SERIAL_TX, SERIAL_RX); |
m0t0 | 0:4350259cf0d0 | 7 | DigitalOut myled(LED1); |
m0t0 | 0:4350259cf0d0 | 8 | |
m0t0 | 0:4350259cf0d0 | 9 | // Selects SDA as I2C1_SDA on pin PB_7 |
m0t0 | 0:4350259cf0d0 | 10 | // Selects SCL on I2C1_SCL on pin PB_6 |
m0t0 | 0:4350259cf0d0 | 11 | // The I2C address of the pressure sensor is fixed at 0x60. |
m0t0 | 0:4350259cf0d0 | 12 | MPL3115A2 pressure_sensor(PB_7,PB_6,0x60); |
m0t0 | 0:4350259cf0d0 | 13 | |
m0t0 | 0:4350259cf0d0 | 14 | struct dataPoints |
m0t0 | 0:4350259cf0d0 | 15 | { |
m0t0 | 0:4350259cf0d0 | 16 | double pres; |
m0t0 | 1:2a6907395c5d | 17 | double alt; |
m0t0 | 0:4350259cf0d0 | 18 | |
m0t0 | 0:4350259cf0d0 | 19 | }; |
m0t0 | 0:4350259cf0d0 | 20 | |
m0t0 | 0:4350259cf0d0 | 21 | int mpl3115_reg_print(int start, int length) { |
m0t0 | 0:4350259cf0d0 | 22 | |
m0t0 | 0:4350259cf0d0 | 23 | if(0x00 <= start && start <=0x2D){ |
m0t0 | 0:4350259cf0d0 | 24 | if(length==0){ |
m0t0 | 0:4350259cf0d0 | 25 | length=46; |
m0t0 | 0:4350259cf0d0 | 26 | uint8_t data[1]; |
m0t0 | 0:4350259cf0d0 | 27 | for(int i=start; i<length; i++){ |
m0t0 | 0:4350259cf0d0 | 28 | pressure_sensor.readRegs(i, data, 1); |
m0t0 | 0:4350259cf0d0 | 29 | switch(i){ |
m0t0 | 0:4350259cf0d0 | 30 | case(0x00): |
m0t0 | 0:4350259cf0d0 | 31 | printf("0x%x: MPL_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 32 | break; |
m0t0 | 0:4350259cf0d0 | 33 | case(0x01): |
m0t0 | 0:4350259cf0d0 | 34 | printf("0x%x: MPL_OUT_P_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 35 | break; |
m0t0 | 0:4350259cf0d0 | 36 | case(0x02): |
m0t0 | 0:4350259cf0d0 | 37 | printf("0x%x: MPL_OUT_P_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 38 | break; |
m0t0 | 0:4350259cf0d0 | 39 | case(0x03): |
m0t0 | 0:4350259cf0d0 | 40 | printf("0x%x: MPL_OUT_P_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 41 | break; |
m0t0 | 0:4350259cf0d0 | 42 | case(0x04): |
m0t0 | 0:4350259cf0d0 | 43 | printf("0x%x: MPL_OUT_T_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 44 | break; |
m0t0 | 0:4350259cf0d0 | 45 | case(0x05): |
m0t0 | 0:4350259cf0d0 | 46 | printf("0x%x: MPL_OUT_T_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 47 | break; |
m0t0 | 0:4350259cf0d0 | 48 | case(0x06): |
m0t0 | 0:4350259cf0d0 | 49 | printf("0x%x: MPL_DR_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 50 | break; |
m0t0 | 0:4350259cf0d0 | 51 | case(0x07): |
m0t0 | 0:4350259cf0d0 | 52 | printf("0x%x: MPL_OUT_P_DELTA_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 53 | break; |
m0t0 | 0:4350259cf0d0 | 54 | case(0x08): |
m0t0 | 0:4350259cf0d0 | 55 | printf("0x%x: MPL_OUT_P_DELTA_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 56 | break; |
m0t0 | 0:4350259cf0d0 | 57 | case(0x09): |
m0t0 | 0:4350259cf0d0 | 58 | printf("0x%x: MPL_OUT_P_DELTA_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 59 | break; |
m0t0 | 0:4350259cf0d0 | 60 | case(0x0A): |
m0t0 | 0:4350259cf0d0 | 61 | printf("0x%x: MPL_OUT_T_DELTA_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 62 | break; |
m0t0 | 0:4350259cf0d0 | 63 | case(0x0B): |
m0t0 | 0:4350259cf0d0 | 64 | printf("0x%x: MPL_OUT_T_DELTA_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 65 | break; |
m0t0 | 0:4350259cf0d0 | 66 | case(0x0C): |
m0t0 | 0:4350259cf0d0 | 67 | printf("0x%x: MPL_WHO_AM_I=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 68 | break; |
m0t0 | 0:4350259cf0d0 | 69 | case(0x0D): |
m0t0 | 0:4350259cf0d0 | 70 | printf("0x%x: MPL_F_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 71 | break; |
m0t0 | 0:4350259cf0d0 | 72 | case(0x0E): |
m0t0 | 0:4350259cf0d0 | 73 | printf("0x%x: MPL_F_DATA=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 74 | break; |
m0t0 | 0:4350259cf0d0 | 75 | case(0x0F): |
m0t0 | 0:4350259cf0d0 | 76 | printf("0x%x: MPL_F_SETUP=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 77 | break; |
m0t0 | 0:4350259cf0d0 | 78 | case(0x10): |
m0t0 | 0:4350259cf0d0 | 79 | printf("0x%x: MPL_TIME_DLY=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 80 | break; |
m0t0 | 0:4350259cf0d0 | 81 | case(0x11): |
m0t0 | 0:4350259cf0d0 | 82 | printf("0x%x: MPL_SYSMOD=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 83 | break; |
m0t0 | 0:4350259cf0d0 | 84 | case(0x12): |
m0t0 | 0:4350259cf0d0 | 85 | printf("0x%x: MPL_INT_SOURCE=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 86 | break; |
m0t0 | 0:4350259cf0d0 | 87 | case(0x13): |
m0t0 | 0:4350259cf0d0 | 88 | printf("0x%x: MPL_PT_DATA_CFG=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 89 | break; |
m0t0 | 0:4350259cf0d0 | 90 | case(0x14): |
m0t0 | 0:4350259cf0d0 | 91 | printf("0x%x: MPL_BAR_IN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 92 | break; |
m0t0 | 0:4350259cf0d0 | 93 | case(0x15): |
m0t0 | 0:4350259cf0d0 | 94 | printf("0x%x: MPL_BAR_IN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 95 | break; |
m0t0 | 0:4350259cf0d0 | 96 | case(0x16): |
m0t0 | 0:4350259cf0d0 | 97 | printf("0x%x: MPL_P_TGT_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 98 | break; |
m0t0 | 0:4350259cf0d0 | 99 | case(0x17): |
m0t0 | 0:4350259cf0d0 | 100 | printf("0x%x: MPL_P_TGT_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 101 | break; |
m0t0 | 0:4350259cf0d0 | 102 | case(0x18): |
m0t0 | 0:4350259cf0d0 | 103 | printf("0x%x: MPL_T_TGT=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 104 | break; |
m0t0 | 0:4350259cf0d0 | 105 | case(0x19): |
m0t0 | 0:4350259cf0d0 | 106 | printf("0x%x: MPL_P_WND_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 107 | break; |
m0t0 | 0:4350259cf0d0 | 108 | case(0x1A): |
m0t0 | 0:4350259cf0d0 | 109 | printf("0x%x: MPL_P_WND_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 110 | break; |
m0t0 | 0:4350259cf0d0 | 111 | case(0x1B): |
m0t0 | 0:4350259cf0d0 | 112 | printf("0x%x: MPL_T_WND=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 113 | break; |
m0t0 | 0:4350259cf0d0 | 114 | case(0x1C): |
m0t0 | 0:4350259cf0d0 | 115 | printf("0x%x: MPL_P_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 116 | break; |
m0t0 | 0:4350259cf0d0 | 117 | case(0x1D): |
m0t0 | 0:4350259cf0d0 | 118 | printf("0x%x: MPL_P_MIN_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 119 | break; |
m0t0 | 0:4350259cf0d0 | 120 | case(0x1E): |
m0t0 | 0:4350259cf0d0 | 121 | printf("0x%x: MPL_P_MIN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 122 | break; |
m0t0 | 0:4350259cf0d0 | 123 | case(0x1F): |
m0t0 | 0:4350259cf0d0 | 124 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 125 | break; |
m0t0 | 0:4350259cf0d0 | 126 | case(0x20): |
m0t0 | 0:4350259cf0d0 | 127 | printf("0x%x: MPL_T_MIN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 128 | break; |
m0t0 | 0:4350259cf0d0 | 129 | case(0x21): |
m0t0 | 0:4350259cf0d0 | 130 | printf("0x%x: MPL_P_MAX_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 131 | break; |
m0t0 | 0:4350259cf0d0 | 132 | case(0x22): |
m0t0 | 0:4350259cf0d0 | 133 | printf("0x%x: MPL_P_MAX_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 134 | break; |
m0t0 | 0:4350259cf0d0 | 135 | case(0x23): |
m0t0 | 0:4350259cf0d0 | 136 | printf("0x%x: MPL_P_MAX_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 137 | break; |
m0t0 | 0:4350259cf0d0 | 138 | case(0x24): |
m0t0 | 0:4350259cf0d0 | 139 | printf("0x%x: MPL_T_MAX_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 140 | break; |
m0t0 | 0:4350259cf0d0 | 141 | case(0x25): |
m0t0 | 0:4350259cf0d0 | 142 | printf("0x%x: MPL_T_MAX_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 143 | break; |
m0t0 | 0:4350259cf0d0 | 144 | case(0x26): |
m0t0 | 0:4350259cf0d0 | 145 | printf("0x%x: MPL_CTRL_REG1=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 146 | break; |
m0t0 | 0:4350259cf0d0 | 147 | case(0x27): |
m0t0 | 0:4350259cf0d0 | 148 | printf("0x%x: MPL_CTRL_REG2=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 149 | break; |
m0t0 | 0:4350259cf0d0 | 150 | case(0x28): |
m0t0 | 0:4350259cf0d0 | 151 | printf("0x%x: MPL_CTRL_REG3=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 152 | break; |
m0t0 | 0:4350259cf0d0 | 153 | case(0x29): |
m0t0 | 0:4350259cf0d0 | 154 | printf("0x%x: MPL_CTRL_REG4=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 155 | break; |
m0t0 | 0:4350259cf0d0 | 156 | case(0x2A): |
m0t0 | 0:4350259cf0d0 | 157 | printf("0x%x: MPL_CTRL_REG5=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 158 | break; |
m0t0 | 0:4350259cf0d0 | 159 | case(0x2B): |
m0t0 | 0:4350259cf0d0 | 160 | printf("0x%x: MPL_OFF_P=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 161 | break; |
m0t0 | 0:4350259cf0d0 | 162 | case(0x2C): |
m0t0 | 0:4350259cf0d0 | 163 | printf("0x%x: MPL_OFF_T=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 164 | break; |
m0t0 | 0:4350259cf0d0 | 165 | case(0x2D): |
m0t0 | 0:4350259cf0d0 | 166 | printf("0x%x: MPL_OFF_H=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 167 | break; |
m0t0 | 0:4350259cf0d0 | 168 | case(0x2E): |
m0t0 | 0:4350259cf0d0 | 169 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 170 | break; |
m0t0 | 0:4350259cf0d0 | 171 | case(0x2F): |
m0t0 | 0:4350259cf0d0 | 172 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 173 | break; |
m0t0 | 0:4350259cf0d0 | 174 | } |
m0t0 | 0:4350259cf0d0 | 175 | } |
m0t0 | 0:4350259cf0d0 | 176 | } |
m0t0 | 0:4350259cf0d0 | 177 | else if(length>0){ |
m0t0 | 0:4350259cf0d0 | 178 | uint8_t data[1]; |
m0t0 | 0:4350259cf0d0 | 179 | for(int i=start; i<length; i++){ |
m0t0 | 0:4350259cf0d0 | 180 | pressure_sensor.readRegs(i, data, 1); |
m0t0 | 0:4350259cf0d0 | 181 | switch(i){ |
m0t0 | 0:4350259cf0d0 | 182 | case(0x00): |
m0t0 | 0:4350259cf0d0 | 183 | printf("0x%x: MPL_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 184 | break; |
m0t0 | 0:4350259cf0d0 | 185 | case(0x01): |
m0t0 | 0:4350259cf0d0 | 186 | printf("0x%x: MPL_OUT_P_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 187 | break; |
m0t0 | 0:4350259cf0d0 | 188 | case(0x02): |
m0t0 | 0:4350259cf0d0 | 189 | printf("0x%x: MPL_OUT_P_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 190 | break; |
m0t0 | 0:4350259cf0d0 | 191 | case(0x03): |
m0t0 | 0:4350259cf0d0 | 192 | printf("0x%x: MPL_OUT_P_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 193 | break; |
m0t0 | 0:4350259cf0d0 | 194 | case(0x04): |
m0t0 | 0:4350259cf0d0 | 195 | printf("0x%x: MPL_OUT_T_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 196 | break; |
m0t0 | 0:4350259cf0d0 | 197 | case(0x05): |
m0t0 | 0:4350259cf0d0 | 198 | printf("0x%x: MPL_OUT_T_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 199 | break; |
m0t0 | 0:4350259cf0d0 | 200 | case(0x06): |
m0t0 | 0:4350259cf0d0 | 201 | printf("0x%x: MPL_DR_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 202 | break; |
m0t0 | 0:4350259cf0d0 | 203 | case(0x07): |
m0t0 | 0:4350259cf0d0 | 204 | printf("0x%x: MPL_OUT_P_DELTA_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 205 | break; |
m0t0 | 0:4350259cf0d0 | 206 | case(0x08): |
m0t0 | 0:4350259cf0d0 | 207 | printf("0x%x: MPL_OUT_P_DELTA_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 208 | break; |
m0t0 | 0:4350259cf0d0 | 209 | case(0x09): |
m0t0 | 0:4350259cf0d0 | 210 | printf("0x%x: MPL_OUT_P_DELTA_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 211 | break; |
m0t0 | 0:4350259cf0d0 | 212 | case(0x0A): |
m0t0 | 0:4350259cf0d0 | 213 | printf("0x%x: MPL_OUT_T_DELTA_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 214 | break; |
m0t0 | 0:4350259cf0d0 | 215 | case(0x0B): |
m0t0 | 0:4350259cf0d0 | 216 | printf("0x%x: MPL_OUT_T_DELTA_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 217 | break; |
m0t0 | 0:4350259cf0d0 | 218 | case(0x0C): |
m0t0 | 0:4350259cf0d0 | 219 | printf("0x%x: MPL_WHO_AM_I=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 220 | break; |
m0t0 | 0:4350259cf0d0 | 221 | case(0x0D): |
m0t0 | 0:4350259cf0d0 | 222 | printf("0x%x: MPL_F_STATUS=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 223 | break; |
m0t0 | 0:4350259cf0d0 | 224 | case(0x0E): |
m0t0 | 0:4350259cf0d0 | 225 | printf("0x%x: MPL_F_DATA=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 226 | break; |
m0t0 | 0:4350259cf0d0 | 227 | case(0x0F): |
m0t0 | 0:4350259cf0d0 | 228 | printf("0x%x: MPL_F_SETUP=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 229 | break; |
m0t0 | 0:4350259cf0d0 | 230 | case(0x10): |
m0t0 | 0:4350259cf0d0 | 231 | printf("0x%x: MPL_TIME_DLY=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 232 | break; |
m0t0 | 0:4350259cf0d0 | 233 | case(0x11): |
m0t0 | 0:4350259cf0d0 | 234 | printf("0x%x: MPL_SYSMOD=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 235 | break; |
m0t0 | 0:4350259cf0d0 | 236 | case(0x12): |
m0t0 | 0:4350259cf0d0 | 237 | printf("0x%x: MPL_INT_SOURCE=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 238 | break; |
m0t0 | 0:4350259cf0d0 | 239 | case(0x13): |
m0t0 | 0:4350259cf0d0 | 240 | printf("0x%x: MPL_PT_DATA_CFG=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 241 | break; |
m0t0 | 0:4350259cf0d0 | 242 | case(0x14): |
m0t0 | 0:4350259cf0d0 | 243 | printf("0x%x: MPL_BAR_IN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 244 | break; |
m0t0 | 0:4350259cf0d0 | 245 | case(0x15): |
m0t0 | 0:4350259cf0d0 | 246 | printf("0x%x: MPL_BAR_IN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 247 | break; |
m0t0 | 0:4350259cf0d0 | 248 | case(0x16): |
m0t0 | 0:4350259cf0d0 | 249 | printf("0x%x: MPL_P_TGT_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 250 | break; |
m0t0 | 0:4350259cf0d0 | 251 | case(0x17): |
m0t0 | 0:4350259cf0d0 | 252 | printf("0x%x: MPL_P_TGT_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 253 | break; |
m0t0 | 0:4350259cf0d0 | 254 | case(0x18): |
m0t0 | 0:4350259cf0d0 | 255 | printf("0x%x: MPL_T_TGT=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 256 | break; |
m0t0 | 0:4350259cf0d0 | 257 | case(0x19): |
m0t0 | 0:4350259cf0d0 | 258 | printf("0x%x: MPL_P_WND_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 259 | break; |
m0t0 | 0:4350259cf0d0 | 260 | case(0x1A): |
m0t0 | 0:4350259cf0d0 | 261 | printf("0x%x: MPL_P_WND_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 262 | break; |
m0t0 | 0:4350259cf0d0 | 263 | case(0x1B): |
m0t0 | 0:4350259cf0d0 | 264 | printf("0x%x: MPL_T_WND=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 265 | break; |
m0t0 | 0:4350259cf0d0 | 266 | case(0x1C): |
m0t0 | 0:4350259cf0d0 | 267 | printf("0x%x: MPL_P_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 268 | break; |
m0t0 | 0:4350259cf0d0 | 269 | case(0x1D): |
m0t0 | 0:4350259cf0d0 | 270 | printf("0x%x: MPL_P_MIN_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 271 | break; |
m0t0 | 0:4350259cf0d0 | 272 | case(0x1E): |
m0t0 | 0:4350259cf0d0 | 273 | printf("0x%x: MPL_P_MIN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 274 | break; |
m0t0 | 0:4350259cf0d0 | 275 | case(0x1F): |
m0t0 | 0:4350259cf0d0 | 276 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 277 | break; |
m0t0 | 0:4350259cf0d0 | 278 | case(0x20): |
m0t0 | 0:4350259cf0d0 | 279 | printf("0x%x: MPL_T_MIN_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 280 | break; |
m0t0 | 0:4350259cf0d0 | 281 | case(0x21): |
m0t0 | 0:4350259cf0d0 | 282 | printf("0x%x: MPL_P_MAX_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 283 | break; |
m0t0 | 0:4350259cf0d0 | 284 | case(0x22): |
m0t0 | 0:4350259cf0d0 | 285 | printf("0x%x: MPL_P_MAX_CSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 286 | break; |
m0t0 | 0:4350259cf0d0 | 287 | case(0x23): |
m0t0 | 0:4350259cf0d0 | 288 | printf("0x%x: MPL_P_MAX_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 289 | break; |
m0t0 | 0:4350259cf0d0 | 290 | case(0x24): |
m0t0 | 0:4350259cf0d0 | 291 | printf("0x%x: MPL_T_MAX_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 292 | break; |
m0t0 | 0:4350259cf0d0 | 293 | case(0x25): |
m0t0 | 0:4350259cf0d0 | 294 | printf("0x%x: MPL_T_MAX_LSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 295 | break; |
m0t0 | 0:4350259cf0d0 | 296 | case(0x26): |
m0t0 | 0:4350259cf0d0 | 297 | printf("0x%x: MPL_CTRL_REG1=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 298 | break; |
m0t0 | 0:4350259cf0d0 | 299 | case(0x27): |
m0t0 | 0:4350259cf0d0 | 300 | printf("0x%x: MPL_CTRL_REG2=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 301 | break; |
m0t0 | 0:4350259cf0d0 | 302 | case(0x28): |
m0t0 | 0:4350259cf0d0 | 303 | printf("0x%x: MPL_CTRL_REG3=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 304 | break; |
m0t0 | 0:4350259cf0d0 | 305 | case(0x29): |
m0t0 | 0:4350259cf0d0 | 306 | printf("0x%x: MPL_CTRL_REG4=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 307 | break; |
m0t0 | 0:4350259cf0d0 | 308 | case(0x2A): |
m0t0 | 0:4350259cf0d0 | 309 | printf("0x%x: MPL_CTRL_REG5=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 310 | break; |
m0t0 | 0:4350259cf0d0 | 311 | case(0x2B): |
m0t0 | 0:4350259cf0d0 | 312 | printf("0x%x: MPL_OFF_P=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 313 | break; |
m0t0 | 0:4350259cf0d0 | 314 | case(0x2C): |
m0t0 | 0:4350259cf0d0 | 315 | printf("0x%x: MPL_OFF_T=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 316 | break; |
m0t0 | 0:4350259cf0d0 | 317 | case(0x2D): |
m0t0 | 0:4350259cf0d0 | 318 | printf("0x%x: MPL_OFF_H=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 319 | break; |
m0t0 | 0:4350259cf0d0 | 320 | case(0x2E): |
m0t0 | 0:4350259cf0d0 | 321 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 322 | break; |
m0t0 | 0:4350259cf0d0 | 323 | case(0x2F): |
m0t0 | 0:4350259cf0d0 | 324 | printf("0x%x: MPL_T_MIN_MSB=0x%x\r\n",i,data[0]); |
m0t0 | 0:4350259cf0d0 | 325 | break; |
m0t0 | 0:4350259cf0d0 | 326 | } |
m0t0 | 0:4350259cf0d0 | 327 | } |
m0t0 | 0:4350259cf0d0 | 328 | return 0; |
m0t0 | 0:4350259cf0d0 | 329 | } |
m0t0 | 0:4350259cf0d0 | 330 | else{ |
m0t0 | 0:4350259cf0d0 | 331 | return -1; |
m0t0 | 0:4350259cf0d0 | 332 | } |
m0t0 | 0:4350259cf0d0 | 333 | } |
m0t0 | 1:2a6907395c5d | 334 | } |
m0t0 | 1:2a6907395c5d | 335 | |
m0t0 | 1:2a6907395c5d | 336 | //Solution entails |
m0t0 | 1:2a6907395c5d | 337 | char s[1]; |
m0t0 | 1:2a6907395c5d | 338 | int main() { |
m0t0 | 1:2a6907395c5d | 339 | |
m0t0 | 1:2a6907395c5d | 340 | dataPoints data[100]; |
m0t0 | 1:2a6907395c5d | 341 | |
m0t0 | 1:2a6907395c5d | 342 | uint8_t id; |
m0t0 | 1:2a6907395c5d | 343 | pc.printf("\n\r*** MPL3115A2 Pressure/Altitude Sensor Test *** \n\r"); |
m0t0 | 1:2a6907395c5d | 344 | while ((id=pressure_sensor.getID())!=0xC4) { |
m0t0 | 1:2a6907395c5d | 345 | pc.printf("Status read unsuccessful: Value = 0x%02x\n\r",id); |
m0t0 | 1:2a6907395c5d | 346 | pc.printf("Check wiring to the pressure sensor\n\r",id); |
m0t0 | 1:2a6907395c5d | 347 | pc.printf("Retesting for correct ID in 1 second...\n\r"); |
m0t0 | 1:2a6907395c5d | 348 | wait(1); |
m0t0 | 1:2a6907395c5d | 349 | } |
m0t0 | 1:2a6907395c5d | 350 | //uint8_t tmp[2]; |
m0t0 | 1:2a6907395c5d | 351 | //tmp[0] = 0x26; |
m0t0 | 1:2a6907395c5d | 352 | // pressure_sensor.readRegs(0x26, &tmp[1], 1); |
m0t0 | 1:2a6907395c5d | 353 | // tmp[1] = tmp[1] & 0xC6; |
m0t0 | 1:2a6907395c5d | 354 | // pressure_sensor.writeRegs(tmp,2); |
m0t0 | 1:2a6907395c5d | 355 | pc.printf("Status read successfully: Value = 0x%02x\n\r",id); |
m0t0 | 1:2a6907395c5d | 356 | pc.printf("***1hz readings from the pressure sensor***\n\r"); |
m0t0 | 1:2a6907395c5d | 357 | |
m0t0 | 1:2a6907395c5d | 358 | int counter= 0; |
m0t0 | 1:2a6907395c5d | 359 | while(1) { |
m0t0 | 1:2a6907395c5d | 360 | mpl3115_reg_print(0,0); |
m0t0 | 1:2a6907395c5d | 361 | //this is where I would check for the GPIO pin if implemented |
m0t0 | 1:2a6907395c5d | 362 | if(counter!=100){ |
m0t0 | 1:2a6907395c5d | 363 | dataPoints p1 = {0,0}; |
m0t0 | 1:2a6907395c5d | 364 | //pc.printf("%f hPA; %f m\n\r",pressure_sensor.getPressure(),pressure_sensor.getAltitude()); |
m0t0 | 1:2a6907395c5d | 365 | p1.pres = pressure_sensor.getPressure(); |
m0t0 | 1:2a6907395c5d | 366 | p1.alt = pressure_sensor.getAltitude(); |
m0t0 | 1:2a6907395c5d | 367 | data[counter] = p1; |
m0t0 | 1:2a6907395c5d | 368 | //pc.printf("STORED VALUES: \n\r Pressure: %f hPA, Altitude: %f m\n\r",data[0].pres,data[0].alt); |
m0t0 | 1:2a6907395c5d | 369 | pc.printf("DATA STORED\n\r"); |
m0t0 | 1:2a6907395c5d | 370 | if (pc.readable()){ |
m0t0 | 1:2a6907395c5d | 371 | s[1]=pc.getc(); |
m0t0 | 1:2a6907395c5d | 372 | if(s[1] == 'p'){ |
m0t0 | 1:2a6907395c5d | 373 | pc.printf("STORED VALUES: \n\r Pressure: %f hPA, Altitude: %f m\n\r",data[0].pres,data[0].alt); |
m0t0 | 1:2a6907395c5d | 374 | for(int i=1; i<=counter; i++){ |
m0t0 | 1:2a6907395c5d | 375 | pc.printf("Pressure: %f hPA, Altitude: %f m\n\r",data[i].pres,data[i].alt); |
m0t0 | 1:2a6907395c5d | 376 | s[1] = 'x'; |
m0t0 | 1:2a6907395c5d | 377 | |
m0t0 | 1:2a6907395c5d | 378 | } |
m0t0 | 1:2a6907395c5d | 379 | } |
m0t0 | 1:2a6907395c5d | 380 | } |
m0t0 | 1:2a6907395c5d | 381 | |
m0t0 | 1:2a6907395c5d | 382 | |
m0t0 | 1:2a6907395c5d | 383 | //if the counter is going to go over the 100 limit reset it to zero and then |
m0t0 | 1:2a6907395c5d | 384 | if(counter+1<=100){ |
m0t0 | 1:2a6907395c5d | 385 | counter++; |
m0t0 | 1:2a6907395c5d | 386 | } |
m0t0 | 1:2a6907395c5d | 387 | else{ |
m0t0 | 1:2a6907395c5d | 388 | counter=0; |
m0t0 | 1:2a6907395c5d | 389 | } |
m0t0 | 1:2a6907395c5d | 390 | myled = !myled; |
m0t0 | 1:2a6907395c5d | 391 | wait(1); |
m0t0 | 1:2a6907395c5d | 392 | } |
m0t0 | 1:2a6907395c5d | 393 | else{ |
m0t0 | 1:2a6907395c5d | 394 | pc.printf("STORED VALUES: \n\r Pressure: %f hPA, Altitude: %f m\n\r",data[0].pres,data[0].alt); |
m0t0 | 1:2a6907395c5d | 395 | for(int i=1; i<=counter; i++){ |
m0t0 | 1:2a6907395c5d | 396 | pc.printf("Pressure: %f hPA, Altitude: %f m\n\r",data[i].pres,data[i].alt); |
m0t0 | 1:2a6907395c5d | 397 | } |
m0t0 | 1:2a6907395c5d | 398 | for(int i=0; i<=100; i++){ |
m0t0 | 1:2a6907395c5d | 399 | data[i].pres=NULL; |
m0t0 | 1:2a6907395c5d | 400 | data[i].alt=NULL; |
m0t0 | 1:2a6907395c5d | 401 | } |
m0t0 | 1:2a6907395c5d | 402 | pc.printf("Cleared Data \n\r"); |
m0t0 | 1:2a6907395c5d | 403 | } |
m0t0 | 1:2a6907395c5d | 404 | |
m0t0 | 1:2a6907395c5d | 405 | } |
m0t0 | 1:2a6907395c5d | 406 | |
m0t0 | 1:2a6907395c5d | 407 | |
m0t0 | 1:2a6907395c5d | 408 | } |