CPS-Lab / Mbed 2 deprecated Lab7

Dependencies:   MPL3115A2 mbed

Committer:
dgutsch
Date:
Thu Mar 01 22:18:57 2018 +0000
Revision:
4:1b449b5bbfe4
Parent:
3:9f3053336250
Child:
6:2568b22678fc
all the code works. still need to:; 1) write data collection function; 2) write python to pull and represent data; 3) update schematic;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jkrzesni 1:a46172536a3a 1 #include "mbed.h"
jkrzesni 2:7c190ac7f4d4 2 #include <iostream>
dgutsch 3:9f3053336250 3 #include "MPL3115A2.h"
jkrzesni 1:a46172536a3a 4
dgutsch 3:9f3053336250 5 Serial pc(SERIAL_TX, SERIAL_RX);
dgutsch 3:9f3053336250 6 DigitalOut myled(LED1);
dgutsch 3:9f3053336250 7 //Selects SDA as I2C1_SDA on pin PB_7
dgutsch 3:9f3053336250 8 //Selects SCL on I2C1_SCL on pin PB_6
dgutsch 3:9f3053336250 9 //the I2c address of the pressure sensor is fixed at 0x60
dgutsch 3:9f3053336250 10 MPL3115A2 pressure_sensor(PB_7, PB_6, 0x60);
dgutsch 3:9f3053336250 11
jkrzesni 1:a46172536a3a 12
dgutsch 4:1b449b5bbfe4 13
jkrzesni 1:a46172536a3a 14 int mpl3115_reg_print(int start, int length);
dgutsch 4:1b449b5bbfe4 15 void register_map_mpl3115A2(int i, int value);
jkrzesni 1:a46172536a3a 16
dgutsch 3:9f3053336250 17
dgutsch 3:9f3053336250 18
jkrzesni 1:a46172536a3a 19 int main() {
dgutsch 3:9f3053336250 20 printf("\n\rMPL3115A2 test\n\r");
dgutsch 4:1b449b5bbfe4 21
dgutsch 3:9f3053336250 22
jkrzesni 1:a46172536a3a 23
dgutsch 4:1b449b5bbfe4 24 printf("start\r\n");
jkrzesni 2:7c190ac7f4d4 25 mpl3115_reg_print(0, 0);
jkrzesni 1:a46172536a3a 26 printf("finish\r\n");
dgutsch 4:1b449b5bbfe4 27 return(0);
dgutsch 3:9f3053336250 28
jkrzesni 1:a46172536a3a 29 }
dgutsch 4:1b449b5bbfe4 30 //void MPL3115A2::readRegs(int addr, uint8_t * data, int len)
jkrzesni 1:a46172536a3a 31 int mpl3115_reg_print(int start, int length) {
dgutsch 4:1b449b5bbfe4 32
dgutsch 4:1b449b5bbfe4 33 if(pressure_sensor.getID() != 0xC4) {
dgutsch 4:1b449b5bbfe4 34 printf("chip is not connected\r\n");
dgutsch 4:1b449b5bbfe4 35 return -1;
dgutsch 4:1b449b5bbfe4 36 }
dgutsch 4:1b449b5bbfe4 37 printf("0xC4! Welcome, user.\r\n");
dgutsch 4:1b449b5bbfe4 38
dgutsch 4:1b449b5bbfe4 39 wait_ms(500);
dgutsch 4:1b449b5bbfe4 40
dgutsch 4:1b449b5bbfe4 41 int l = 0;
dgutsch 4:1b449b5bbfe4 42 l = (length == 0? 45: length); //if length is 0 make l= 46
dgutsch 4:1b449b5bbfe4 43
dgutsch 4:1b449b5bbfe4 44 // check input range: [0x00, 0x2E] 0,46 && confirm length >= 0
dgutsch 4:1b449b5bbfe4 45 if(start < 0 || l > 45 || l < 0) {
dgutsch 4:1b449b5bbfe4 46 printf("illegal input exception\r\n");
dgutsch 4:1b449b5bbfe4 47 return -1;
dgutsch 4:1b449b5bbfe4 48 }
dgutsch 4:1b449b5bbfe4 49
dgutsch 4:1b449b5bbfe4 50 uint8_t data[1];
jkrzesni 2:7c190ac7f4d4 51
dgutsch 4:1b449b5bbfe4 52 // print reg, name, val
dgutsch 4:1b449b5bbfe4 53 for(int i = start; i < l; i++) {
dgutsch 4:1b449b5bbfe4 54 // reading (1 byte its bit oriented)8-bits from each register
dgutsch 4:1b449b5bbfe4 55 pressure_sensor.readRegs(i, data, 1);
dgutsch 4:1b449b5bbfe4 56 //printf("0x%x\tregister: 0x%.2x\r\n", i, data[0]);
dgutsch 4:1b449b5bbfe4 57 register_map_mpl3115A2(i, data[0]);
dgutsch 4:1b449b5bbfe4 58 }
jkrzesni 2:7c190ac7f4d4 59
dgutsch 4:1b449b5bbfe4 60 //printf("Reg Address %d: Register Name = %s", address, name)
jkrzesni 2:7c190ac7f4d4 61 return 0;
jkrzesni 1:a46172536a3a 62 }
jkrzesni 1:a46172536a3a 63
jkrzesni 1:a46172536a3a 64
jkrzesni 2:7c190ac7f4d4 65
jkrzesni 2:7c190ac7f4d4 66
jkrzesni 2:7c190ac7f4d4 67
dgutsch 4:1b449b5bbfe4 68
dgutsch 4:1b449b5bbfe4 69
dgutsch 4:1b449b5bbfe4 70 void register_map_mpl3115A2(int i, int value) {
jkrzesni 1:a46172536a3a 71 //char* regi;
jkrzesni 1:a46172536a3a 72 switch(i) {
jkrzesni 1:a46172536a3a 73 case 0x00:
jkrzesni 1:a46172536a3a 74 // *regi = 'STATUS';
dgutsch 4:1b449b5bbfe4 75 printf("%x:\tSTATUS 0x%.2x\r\n",i,value);
jkrzesni 1:a46172536a3a 76 break;
jkrzesni 1:a46172536a3a 77 case 0x01:
jkrzesni 1:a46172536a3a 78 // *regi = "OUT P_MSB";
dgutsch 4:1b449b5bbfe4 79 printf("%x:\tOUT P_MSB 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 80 break;
jkrzesni 1:a46172536a3a 81 case 0x02:
jkrzesni 1:a46172536a3a 82 // *regi = "OUT_P_CSB";
dgutsch 4:1b449b5bbfe4 83 printf("%x:\tOUT_P_CSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 84 break;
jkrzesni 1:a46172536a3a 85 case 0x03:
jkrzesni 1:a46172536a3a 86 // *regi = "OUT_P_LSB";
dgutsch 4:1b449b5bbfe4 87 printf("%x:\tOUT_P_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 88 break;
jkrzesni 1:a46172536a3a 89 case 0x04:
jkrzesni 1:a46172536a3a 90 // *regi = "OUT_T_MSB";
dgutsch 4:1b449b5bbfe4 91 printf("%x:\tOUT_T_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 92 break;
jkrzesni 1:a46172536a3a 93 case 0x05:
jkrzesni 1:a46172536a3a 94 // *regi = "OUT_T_LSB";
dgutsch 4:1b449b5bbfe4 95 printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 96 break;
jkrzesni 1:a46172536a3a 97 case 0x06:
jkrzesni 1:a46172536a3a 98 // *regi = "DR_STATUS";
dgutsch 4:1b449b5bbfe4 99 printf("%x:\tDR_STATUS= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 100 break;
jkrzesni 1:a46172536a3a 101 case 0x07:
jkrzesni 1:a46172536a3a 102 // *regi = "OUT_P_DELTA_MSB";
dgutsch 4:1b449b5bbfe4 103 printf("%x:\tOUT_P_DELTA_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 104 break;
jkrzesni 1:a46172536a3a 105 case 0x08:
jkrzesni 1:a46172536a3a 106 // *regi = "OUT_P_DELTA_CSB";
dgutsch 4:1b449b5bbfe4 107 printf("%x:\tOUT_P_DELTA_CSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 108 break;
jkrzesni 1:a46172536a3a 109 case 0x09:
jkrzesni 1:a46172536a3a 110 // *regi = "OUT_P_DELTA_LSB";
dgutsch 4:1b449b5bbfe4 111 printf("%x:\tOUT_P_DELTA_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 112 break;
jkrzesni 1:a46172536a3a 113 case 0x0A:
jkrzesni 1:a46172536a3a 114 // *regi = "OUT_T_DELTA_MSB";
dgutsch 4:1b449b5bbfe4 115 printf("%x:\tOUT_T_DELTA_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 116 break;
jkrzesni 1:a46172536a3a 117 case 0x0B:
jkrzesni 1:a46172536a3a 118 // *regi = "OUT_T_DELTA_LSB";
dgutsch 4:1b449b5bbfe4 119 printf("%x:\tOUT_T_DELTA_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 120 break;
jkrzesni 1:a46172536a3a 121 case 0x0C:
jkrzesni 1:a46172536a3a 122 // *regi = "WHO_AM_I";
dgutsch 4:1b449b5bbfe4 123 printf("%x:\tWHO_AM_I= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 124 break;
jkrzesni 1:a46172536a3a 125 case 0x0D:
jkrzesni 1:a46172536a3a 126 // *regi = "F_STATUS";
dgutsch 4:1b449b5bbfe4 127 printf("%x:\tF_STATUS= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 128 break;
jkrzesni 1:a46172536a3a 129 case 0x0E:
jkrzesni 1:a46172536a3a 130 // *regi = "F_DATA";
dgutsch 4:1b449b5bbfe4 131 printf("%x:\tF_DATA= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 132 break;
jkrzesni 1:a46172536a3a 133 case 0x0F:
jkrzesni 1:a46172536a3a 134 // *regi = "F_SETUP";
dgutsch 4:1b449b5bbfe4 135 printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 136 break;
jkrzesni 1:a46172536a3a 137 case 0x10:
jkrzesni 1:a46172536a3a 138 // *regi = "TIME_DLY";
dgutsch 4:1b449b5bbfe4 139 printf("%x:\tTIME_DLY= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 140 break;
jkrzesni 1:a46172536a3a 141 case 0x11:
jkrzesni 1:a46172536a3a 142 // *regi = "SYSMOD";
dgutsch 4:1b449b5bbfe4 143 printf("%x:\tSYSMOD= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 144 break;
jkrzesni 1:a46172536a3a 145 case 0x12:
jkrzesni 1:a46172536a3a 146 // *regi = "INT_SOURCE";
dgutsch 4:1b449b5bbfe4 147 printf("%x:\tINT_SOURCE= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 148 break;
jkrzesni 1:a46172536a3a 149 case 0x13:
jkrzesni 1:a46172536a3a 150 // *regi = "PT_DATA_CFG";
dgutsch 4:1b449b5bbfe4 151 printf("%x:\tPT_DATA_CFG= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 152 break;
jkrzesni 1:a46172536a3a 153 case 0x14:
jkrzesni 1:a46172536a3a 154 // *regi = "BAR_IN_MSB";
dgutsch 4:1b449b5bbfe4 155 printf("%x:\tBAR_IN_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 156 break;
jkrzesni 1:a46172536a3a 157 case 0x15:
jkrzesni 1:a46172536a3a 158 // *regi = "BAR_IN_LSB";
dgutsch 4:1b449b5bbfe4 159 printf("%x:\tBAR_IN_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 160 break;
jkrzesni 1:a46172536a3a 161 case 0x16:
jkrzesni 1:a46172536a3a 162 // *regi = "P_TGT_MSB";
dgutsch 4:1b449b5bbfe4 163 printf("%x:\tP_TGT_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 164 break;
jkrzesni 1:a46172536a3a 165 case 0x17:
jkrzesni 1:a46172536a3a 166 // *regi = "P_TGT_LSB";
dgutsch 4:1b449b5bbfe4 167 printf("%x:\tP_TGT_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 168 break;
jkrzesni 1:a46172536a3a 169 case 0x18:
jkrzesni 1:a46172536a3a 170 // *regi = "T_TGT";
dgutsch 4:1b449b5bbfe4 171 printf("%x:\tT_TGT= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 172 break;
jkrzesni 1:a46172536a3a 173 case 0x19:
jkrzesni 1:a46172536a3a 174 // *regi = "P_WND_MSB";
dgutsch 4:1b449b5bbfe4 175 printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 176 break;
jkrzesni 1:a46172536a3a 177 case 0x1A:
jkrzesni 1:a46172536a3a 178 // *regi = "P_WND_LSB";
dgutsch 4:1b449b5bbfe4 179 printf("%x:\tP_WND_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 180 break;
jkrzesni 1:a46172536a3a 181 case 0x1B:
jkrzesni 1:a46172536a3a 182 // *regi = "T_WND";
dgutsch 4:1b449b5bbfe4 183 printf("%x:\tT_WND= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 184 break;
jkrzesni 1:a46172536a3a 185 case 0x1C:
jkrzesni 1:a46172536a3a 186 // *regi = "P_MIN_MSB";
dgutsch 4:1b449b5bbfe4 187 printf("%x:\tP_MIN_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 188 break;
jkrzesni 1:a46172536a3a 189 case 0x1D:
jkrzesni 1:a46172536a3a 190 // *regi = "P_MIN_CSB";
dgutsch 4:1b449b5bbfe4 191 printf("%x:\tP_MIN_CSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 192 break;
jkrzesni 1:a46172536a3a 193 case 0x1E:
jkrzesni 1:a46172536a3a 194 // *regi = "P_MIN_LSB";
dgutsch 4:1b449b5bbfe4 195 printf("%x:\tP_MIN_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 196 break;
jkrzesni 1:a46172536a3a 197 case 0x1F:
jkrzesni 1:a46172536a3a 198 // *regi = "T_MIN_MSB";
dgutsch 4:1b449b5bbfe4 199 printf("%x:\tT_MIN_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 200 break;
jkrzesni 1:a46172536a3a 201 case 0x20:
jkrzesni 1:a46172536a3a 202 // *regi = "T_MIN_LSB";
dgutsch 4:1b449b5bbfe4 203 printf("%x:\tT_MIN_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 204 break;
jkrzesni 1:a46172536a3a 205 case 0x21:
jkrzesni 1:a46172536a3a 206 // *regi = "P_MAX_MSB";
dgutsch 4:1b449b5bbfe4 207 printf("%x:\tP_MAX_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 208 break;
jkrzesni 1:a46172536a3a 209 case 0x22:
jkrzesni 1:a46172536a3a 210 // *regi = "P_MAX_CSB";
dgutsch 4:1b449b5bbfe4 211 printf("%x:\tP_MAX_CSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 212 break;
jkrzesni 1:a46172536a3a 213 case 0x23:
jkrzesni 1:a46172536a3a 214 // *regi = "P_MAX_LSB";
dgutsch 4:1b449b5bbfe4 215 printf("%x:\tP_MAX_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 216 break;
jkrzesni 1:a46172536a3a 217 case 0x24:
jkrzesni 1:a46172536a3a 218 // *regi = "T_MAX_MSB";
dgutsch 4:1b449b5bbfe4 219 printf("%x:\tT_MAX_MSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 220 break;
jkrzesni 1:a46172536a3a 221 case 0x25:
jkrzesni 1:a46172536a3a 222 // *regi = "T_MAX_LSB";
dgutsch 4:1b449b5bbfe4 223 printf("%x:\tT_MAX_LSB= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 224 break;
jkrzesni 1:a46172536a3a 225 case 0x26:
jkrzesni 1:a46172536a3a 226 // *regi = "CTRL_REG1";
dgutsch 4:1b449b5bbfe4 227 printf("%x:\tCTRL_REG1= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 228 break;
jkrzesni 1:a46172536a3a 229 case 0x27:
jkrzesni 1:a46172536a3a 230 // *regi = "CTRL_REG2";
dgutsch 4:1b449b5bbfe4 231 printf("%x:\tCTRL_REG2= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 232 break;
jkrzesni 1:a46172536a3a 233 case 0x28:
jkrzesni 1:a46172536a3a 234 // *regi = "CTRL_REG3";
dgutsch 4:1b449b5bbfe4 235 printf("%x:\tCTRL_REG3= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 236 break;
jkrzesni 1:a46172536a3a 237 case 0x29:
jkrzesni 1:a46172536a3a 238 // *regi = "CTRL_REG4";
dgutsch 4:1b449b5bbfe4 239 printf("%x:\tCTRL_REG4= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 240 break;
jkrzesni 1:a46172536a3a 241 case 0x2A:
jkrzesni 1:a46172536a3a 242 // *regi = "CTRL_REG5";
dgutsch 4:1b449b5bbfe4 243 printf("%x:\tCTRL_REG5= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 244 break;
jkrzesni 1:a46172536a3a 245 case 0x2B:
jkrzesni 1:a46172536a3a 246 // *regi = "OFF_P";
dgutsch 4:1b449b5bbfe4 247 printf("%x:\tOFF_P= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 248 break;
jkrzesni 1:a46172536a3a 249 case 0x2C:
jkrzesni 1:a46172536a3a 250 // *regi = "OFF_T";
dgutsch 4:1b449b5bbfe4 251 printf("%x:\tOFF_T= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 252 break;
jkrzesni 1:a46172536a3a 253 case 0x2D:
jkrzesni 1:a46172536a3a 254 // *regi = "OFF_H";
dgutsch 4:1b449b5bbfe4 255 printf("%x:\tOFF_H= 0x%.2x\r\n",i, value);
jkrzesni 1:a46172536a3a 256 break;
jkrzesni 1:a46172536a3a 257 }
jkrzesni 1:a46172536a3a 258 }