Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: lab7.cpp
- Revision:
- 4:1b449b5bbfe4
- Parent:
- 3:9f3053336250
- Child:
- 6:2568b22678fc
--- a/lab7.cpp Thu Mar 01 15:44:10 2018 +0000
+++ b/lab7.cpp Thu Mar 01 22:18:57 2018 +0000
@@ -10,51 +10,54 @@
MPL3115A2 pressure_sensor(PB_7, PB_6, 0x60);
+
int mpl3115_reg_print(int start, int length);
-void register_map(int i, int value);
+void register_map_mpl3115A2(int i, int value);
int main() {
- uint8_t id;
printf("\n\rMPL3115A2 test\n\r");
- while((id = pressure_sensor.getID()) != 0xC4) {
- printf("Status read unsuccessful: Value = 0x%02x\n\r",id);
- printf("Check wiring to the pressure sensor\n\r");
- printf("Retesting for correct ID in 1 second...\n\r");
- wait(1);
-
- }
- pc.printf("Status read successfully: Value = 0x%02x\n\r",id);
- pc.printf("***1hz readings from the pressure sensor***\n\r");
- while(1) {
- pc.printf("%f hPA; %f m\n\r",pressure_sensor.getPressure(),pressure_sensor.getAltitude());
- myled = !myled;
- wait(1);
- }
+
- /*printf("start\r\n");
+ printf("start\r\n");
mpl3115_reg_print(0, 0);
printf("finish\r\n");
- return(0);*/
+ return(0);
}
-
+//void MPL3115A2::readRegs(int addr, uint8_t * data, int len)
int mpl3115_reg_print(int start, int length) {
-
- printf("Success, chip is connected.\r\n");
-
- int l = 0;
- l = (length == 0? 46: length);
+
+ if(pressure_sensor.getID() != 0xC4) {
+ printf("chip is not connected\r\n");
+ return -1;
+ }
+ printf("0xC4! Welcome, user.\r\n");
+
+ wait_ms(500);
+
+ int l = 0;
+ l = (length == 0? 45: length); //if length is 0 make l= 46
+
+ // check input range: [0x00, 0x2E] 0,46 && confirm length >= 0
+ if(start < 0 || l > 45 || l < 0) {
+ printf("illegal input exception\r\n");
+ return -1;
+ }
+
+ uint8_t data[1];
- if(start < 0 || l > 46 || l < 0) {
- printf("illegal input exception\r\n");
- return -1;
- }
-
+ // print reg, name, val
+ for(int i = start; i < l; i++) {
+ // reading (1 byte its bit oriented)8-bits from each register
+ pressure_sensor.readRegs(i, data, 1);
+ //printf("0x%x\tregister: 0x%.2x\r\n", i, data[0]);
+ register_map_mpl3115A2(i, data[0]);
+ }
- //printf("Reg Address %d: Register Name = %s", address, name)
+ //printf("Reg Address %d: Register Name = %s", address, name)
return 0;
}
@@ -62,192 +65,194 @@
-void register_map(int i, int value) {
+
+
+void register_map_mpl3115A2(int i, int value) {
//char* regi;
switch(i) {
case 0x00:
// *regi = 'STATUS';
- printf("%x:\tSTATUS %x\r\n",i,value);
+ printf("%x:\tSTATUS 0x%.2x\r\n",i,value);
break;
case 0x01:
// *regi = "OUT P_MSB";
- printf("%x:\tOUT P_MSB %x\r\n",i, value);
+ printf("%x:\tOUT P_MSB 0x%.2x\r\n",i, value);
break;
case 0x02:
// *regi = "OUT_P_CSB";
- printf("%x:\tOUT_P_CSB= %x\r\n",i, value);
+ printf("%x:\tOUT_P_CSB= 0x%.2x\r\n",i, value);
break;
case 0x03:
// *regi = "OUT_P_LSB";
- printf("%x:\tOUT_P_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_P_LSB= 0x%.2x\r\n",i, value);
break;
case 0x04:
// *regi = "OUT_T_MSB";
- printf("%x:\tOUT_T_MSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_MSB= 0x%.2x\r\n",i, value);
break;
case 0x05:
// *regi = "OUT_T_LSB";
- printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
break;
case 0x06:
// *regi = "DR_STATUS";
- printf("%x:\tDR_STATUS= %x\r\n",i, value);
+ printf("%x:\tDR_STATUS= 0x%.2x\r\n",i, value);
break;
case 0x07:
// *regi = "OUT_P_DELTA_MSB";
- printf("%x:\tOUT_P_DELTA_MSB= %x\r\n",i, value);
+ printf("%x:\tOUT_P_DELTA_MSB= 0x%.2x\r\n",i, value);
break;
case 0x08:
// *regi = "OUT_P_DELTA_CSB";
- printf("%x:\tOUT_P_DELTA_CSB= %x\r\n",i, value);
+ printf("%x:\tOUT_P_DELTA_CSB= 0x%.2x\r\n",i, value);
break;
case 0x09:
// *regi = "OUT_P_DELTA_LSB";
- printf("%x:\tOUT_P_DELTA_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_P_DELTA_LSB= 0x%.2x\r\n",i, value);
break;
case 0x0A:
// *regi = "OUT_T_DELTA_MSB";
- printf("%x:\tOUT_T_DELTA_MSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_DELTA_MSB= 0x%.2x\r\n",i, value);
break;
case 0x0B:
// *regi = "OUT_T_DELTA_LSB";
- printf("%x:\tOUT_T_DELTA_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_DELTA_LSB= 0x%.2x\r\n",i, value);
break;
case 0x0C:
// *regi = "WHO_AM_I";
- printf("%x:\tWHO_AM_I= %x\r\n",i, value);
+ printf("%x:\tWHO_AM_I= 0x%.2x\r\n",i, value);
break;
case 0x0D:
// *regi = "F_STATUS";
- printf("%x:\tF_STATUS= %x\r\n",i, value);
+ printf("%x:\tF_STATUS= 0x%.2x\r\n",i, value);
break;
case 0x0E:
// *regi = "F_DATA";
- printf("%x:\tF_DATA= %x\r\n",i, value);
+ printf("%x:\tF_DATA= 0x%.2x\r\n",i, value);
break;
case 0x0F:
// *regi = "F_SETUP";
- printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
break;
case 0x10:
// *regi = "TIME_DLY";
- printf("%x:\tTIME_DLY= %x\r\n",i, value);
+ printf("%x:\tTIME_DLY= 0x%.2x\r\n",i, value);
break;
case 0x11:
// *regi = "SYSMOD";
- printf("%x:\tSYSMOD= %x\r\n",i, value);
+ printf("%x:\tSYSMOD= 0x%.2x\r\n",i, value);
break;
case 0x12:
// *regi = "INT_SOURCE";
- printf("%x:\tINT_SOURCE= %x\r\n",i, value);
+ printf("%x:\tINT_SOURCE= 0x%.2x\r\n",i, value);
break;
case 0x13:
// *regi = "PT_DATA_CFG";
- printf("%x:\tPT_DATA_CFG= %x\r\n",i, value);
+ printf("%x:\tPT_DATA_CFG= 0x%.2x\r\n",i, value);
break;
case 0x14:
// *regi = "BAR_IN_MSB";
- printf("%x:\tBAR_IN_MSB= %x\r\n",i, value);
+ printf("%x:\tBAR_IN_MSB= 0x%.2x\r\n",i, value);
break;
case 0x15:
// *regi = "BAR_IN_LSB";
- printf("%x:\tBAR_IN_LSB= %x\r\n",i, value);
+ printf("%x:\tBAR_IN_LSB= 0x%.2x\r\n",i, value);
break;
case 0x16:
// *regi = "P_TGT_MSB";
- printf("%x:\tP_TGT_MSB= %x\r\n",i, value);
+ printf("%x:\tP_TGT_MSB= 0x%.2x\r\n",i, value);
break;
case 0x17:
// *regi = "P_TGT_LSB";
- printf("%x:\tP_TGT_LSB= %x\r\n",i, value);
+ printf("%x:\tP_TGT_LSB= 0x%.2x\r\n",i, value);
break;
case 0x18:
// *regi = "T_TGT";
- printf("%x:\tT_TGT= %x\r\n",i, value);
+ printf("%x:\tT_TGT= 0x%.2x\r\n",i, value);
break;
case 0x19:
// *regi = "P_WND_MSB";
- printf("%x:\tOUT_T_LSB= %x\r\n",i, value);
+ printf("%x:\tOUT_T_LSB= 0x%.2x\r\n",i, value);
break;
case 0x1A:
// *regi = "P_WND_LSB";
- printf("%x:\tP_WND_LSB= %x\r\n",i, value);
+ printf("%x:\tP_WND_LSB= 0x%.2x\r\n",i, value);
break;
case 0x1B:
// *regi = "T_WND";
- printf("%x:\tT_WND= %x\r\n",i, value);
+ printf("%x:\tT_WND= 0x%.2x\r\n",i, value);
break;
case 0x1C:
// *regi = "P_MIN_MSB";
- printf("%x:\tP_MIN_MSB= %x\r\n",i, value);
+ printf("%x:\tP_MIN_MSB= 0x%.2x\r\n",i, value);
break;
case 0x1D:
// *regi = "P_MIN_CSB";
- printf("%x:\tP_MIN_CSB= %x\r\n",i, value);
+ printf("%x:\tP_MIN_CSB= 0x%.2x\r\n",i, value);
break;
case 0x1E:
// *regi = "P_MIN_LSB";
- printf("%x:\tP_MIN_LSB= %x\r\n",i, value);
+ printf("%x:\tP_MIN_LSB= 0x%.2x\r\n",i, value);
break;
case 0x1F:
// *regi = "T_MIN_MSB";
- printf("%x:\tT_MIN_MSB= %x\r\n",i, value);
+ printf("%x:\tT_MIN_MSB= 0x%.2x\r\n",i, value);
break;
case 0x20:
// *regi = "T_MIN_LSB";
- printf("%x:\tT_MIN_LSB= %x\r\n",i, value);
+ printf("%x:\tT_MIN_LSB= 0x%.2x\r\n",i, value);
break;
case 0x21:
// *regi = "P_MAX_MSB";
- printf("%x:\tP_MAX_MSB= %x\r\n",i, value);
+ printf("%x:\tP_MAX_MSB= 0x%.2x\r\n",i, value);
break;
case 0x22:
// *regi = "P_MAX_CSB";
- printf("%x:\tP_MAX_CSB= %x\r\n",i, value);
+ printf("%x:\tP_MAX_CSB= 0x%.2x\r\n",i, value);
break;
case 0x23:
// *regi = "P_MAX_LSB";
- printf("%x:\tP_MAX_LSB= %x\r\n",i, value);
+ printf("%x:\tP_MAX_LSB= 0x%.2x\r\n",i, value);
break;
case 0x24:
// *regi = "T_MAX_MSB";
- printf("%x:\tT_MAX_MSB= %x\r\n",i, value);
+ printf("%x:\tT_MAX_MSB= 0x%.2x\r\n",i, value);
break;
case 0x25:
// *regi = "T_MAX_LSB";
- printf("%x:\tT_MAX_LSB= %x\r\n",i, value);
+ printf("%x:\tT_MAX_LSB= 0x%.2x\r\n",i, value);
break;
case 0x26:
// *regi = "CTRL_REG1";
- printf("%x:\tCTRL_REG1= %x\r\n",i, value);
+ printf("%x:\tCTRL_REG1= 0x%.2x\r\n",i, value);
break;
case 0x27:
// *regi = "CTRL_REG2";
- printf("%x:\tCTRL_REG2= %x\r\n",i, value);
+ printf("%x:\tCTRL_REG2= 0x%.2x\r\n",i, value);
break;
case 0x28:
// *regi = "CTRL_REG3";
- printf("%x:\tCTRL_REG3= %x\r\n",i, value);
+ printf("%x:\tCTRL_REG3= 0x%.2x\r\n",i, value);
break;
case 0x29:
// *regi = "CTRL_REG4";
- printf("%x:\tCTRL_REG4= %x\r\n",i, value);
+ printf("%x:\tCTRL_REG4= 0x%.2x\r\n",i, value);
break;
case 0x2A:
// *regi = "CTRL_REG5";
- printf("%x:\tCTRL_REG5= %x\r\n",i, value);
+ printf("%x:\tCTRL_REG5= 0x%.2x\r\n",i, value);
break;
case 0x2B:
// *regi = "OFF_P";
- printf("%x:\tOFF_P= %x\r\n",i, value);
+ printf("%x:\tOFF_P= 0x%.2x\r\n",i, value);
break;
case 0x2C:
// *regi = "OFF_T";
- printf("%x:\tOFF_T= %x\r\n",i, value);
+ printf("%x:\tOFF_T= 0x%.2x\r\n",i, value);
break;
case 0x2D:
// *regi = "OFF_H";
- printf("%x:\tOFF_H= %x\r\n",i, value);
+ printf("%x:\tOFF_H= 0x%.2x\r\n",i, value);
break;
}
}
\ No newline at end of file