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.
Dependencies: ADXL362 mbed MPL3115A2
Diff: main.cpp
- Revision:
- 5:02aa71487c01
- Parent:
- 4:8065ca897f8b
- Child:
- 6:f05c72e636aa
--- a/main.cpp Thu Feb 22 15:45:26 2018 +0000 +++ b/main.cpp Thu Feb 22 20:19:25 2018 +0000 @@ -5,70 +5,87 @@ #include <string> //map of register values and names -std::map< int, int > registerids; -std::map< int, char* > registernames; +int regids[34]; +char* regnames[34]; //populating the map void initmap() { - registerids.insert(0, 0x00); - registers.insert(1, make_pair("DEVID_MST", 0x01)); - registers.insert(2, make_pair("PARTID", 0x02)); - registers.insert(3, make_pair("REVID", 0x03)); - registers.insert(4, make_pair("XDATA", 0x08)); - registers.insert(5, make_pair("YDATA", 0x09)); - registers.insert(6, make_pair("ZDATA", 0x0A)); - registers.insert(7, make_pair("STATUS", 0x0B)); - registers.insert(8, make_pair("FIFO_ENTRIES_L", 0x0C)); - registers.insert(9, make_pair("FIFO_ENTRIES_H", 0x0D)); - registers.insert(10, make_pair("XDATA_L", 0x0E)); - registers.insert(11, make_pair("XDATA_H", 0x0F)); - registers.insert(12, make_pair("YDATA_L", 0x10)); - registers.insert(13, make_pair("YDATA_H", 0x11)); - registers.insert(14, make_pair("ZDATA_L", 0x12)); - registers.insert(15, make_pair("ZDATA_H", 0x13)); - registers.insert(16, make_pair("TEMP_L", 0x14)); - registers.insert(17, make_pair("TEMP_H", 0x15)); - registers.insert(18, make_pair("SOFT_RESET", 0x1F)); - registers.insert(19, make_pair("THRESH_ACT_L", 0x20)); - registers.insert(20, make_pair("THRESH_ACT_H", 0x21)); - registers.insert(21, make_pair("TIME_ACT", 0x22)); - registers.insert(22, make_pair("THRESH_INACT_L", 0x23)); - registers.insert(23, make_pair("THRESH_INACT_H", 0x24)); - registers.insert(24, make_pair("TIME_INACT_L", 0x25)); - registers.insert(25, make_pair("TIME_INACT_H", 0x26)); - registers.insert(26, make_pair("ACT_INACT_CTL", 0x27)); - registers.insert(27, make_pair("FIFO_CONTROL", 0x28)); - registers.insert(28, make_pair("FIFO_SAMPLES", 0x29)); - registers.insert(29, make_pair("INTMAP1", 0x2A)); - registers.insert(30, make_pair("INTMAP2", 0x2B)); - registers.insert(31, make_pair("FILTER_CTL", 0x2C)); - registers.insert(32, make_pair("POWER_CTL", 0x2D)); - registers.insert(33, make_pair("SELF_TEST", 0x2E)); + regids[0] = 0x00; + regids[1] = 0x01; + regids[2] = 0x02; + regids[3] = 0x03; + regids[4] = 0x08; + regids[5] = 0x09; + regids[6] = 0x0A; + regids[7] = 0x0B; + regids[8] = 0x0c; + regids[9] = 0x0D; + regids[10] = 0x0E; + regids[11] = 0x0F; + regids[12] = 0x10; + regids[13] = 0x11; + regids[14] = 0x12; + regids[15] = 0x13; + regids[16] = 0x14; + regids[17] = 0x15; + regids[18] = 0x1F; + regids[19] = 0x20; + regids[20] = 0x21; + regids[21] = 0x22; + regids[22] = 0x23; + regids[23] = 0x24; + regids[24] = 0x25; + regids[25] = 0x26; + regids[26] = 0x27; + regids[27] = 0x28; + regids[28] = 0x29; + regids[29] = 0x2A; + regids[30] = 0x2B; + regids[31] = 0x2C; + regids[32] = 0x2D; + regids[33] = 0x2E; + + regnames[0] = "DEVID_AD"; + regnames[1] = "DEVID_MST"; + regnames[2] = "PARTID"; + regnames[3] = "REVID"; + regnames[4] = "XDATA"; + regnames[5] = "YDATA"; + regnames[6] = "ZDATA"; + regnames[7] = "STATUS"; + regnames[8] = "FIFO_ENTRIES_L"; + regnames[9] = "FIFO_ENTRIES_H"; + regnames[10] = "XDATA_L"; + regnames[11] = "XDATA_H"; + regnames[12] = "YDATA_L"; + regnames[13] = "YDATA_H"; + regnames[14] = "ZDATA_L"; + regnames[15] = "ZDATA_H"; + regnames[16] = "TEMP_L"; + regnames[17] = "TEMP_H"; + regnames[18] = "SOFT_RESET"; + regnames[19] = "THRESH_ACT_L"; + regnames[20] = "THRESH_ACT_H"; + regnames[21] = "TIME_ACT"; + regnames[22] = "THRESH_INACT_L"; + regnames[23] = "THRESH_INACT_H"; + regnames[24] = "TIME_INACT_L"; + regnames[25] = "TIME_INACT_H"; + regnames[26] = "ACT_INACT_CTL"; + regnames[27] = "FIFO_CONTROL"; + regnames[28] = "FIFO_SAMPLES"; + regnames[29] = "INTMAP1"; + regnames[30] = "INTMAP2"; + regnames[31] = "FILTER_CTL"; + regnames[32] = "POWER_CTL"; + regnames[33] = "SELF_TEST"; } // Interface pulled from ADXL362.cpp // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1); -int main() { - initmap(); - adxl362.reset(); - wait_ms(600); // we need to wait at least 500ms after ADXL362 reset - adxl362.set_mode(ADXL362::MEASUREMENT); - int8_t x,y,z; - adxl362_reg_print(start, length); - - while(1) { - x=adxl362.scanx_u8(); - y=adxl362.scany_u8(); - z=adxl362.scanz_u8(); - printf("x = %d y = %d z = %d\r\n",x,y,z); - wait_ms(100); - } -} - int adxl362_reg_print(int s, int l){ //check s is between 0x00 and 0x2E - unsigned char regVal = 0; if(s > 0x2E || s < 0x00){ printf("adx: requires start between 0x00 and 0x2E; given %d (0x%01x)\n", s,s); return -1; @@ -79,7 +96,8 @@ }else{ // start sending stuff //first check DEVID_AD == 0xAD - if(adxl362_board.DEVID_AD != 0xAD){ + int devid = (int) adxl362.read_reg_u16(ADXL362::DEVID_AD); + if(devid != 0xAD){ printf("error: DEVID_AD is not 0xAD; exiting\n"); return -1; }else{ @@ -97,13 +115,34 @@ int in = s; while(in < stop){ //get register name - string name = registers[in].first; //GET NAME - uint16_t val = ADXL362::read_reg_u16(registers[in].secod); //GET REG VAL + char * name = regnames[in]; //GET NAME + ADXL362::ADXL362_register_t reg = (ADXL362::ADXL362_register_t) regids[in]; + int val = (int) adxl362.read_reg_u16(reg); //GET REG VAL //print val - printf("0x%01x: %s=0x%01x\r\n", in, name, val); + printf("0x%01x: %s=0x%01x\r\n", regids[in], name, val); in++; } } } + return 0; +} + +int main() { + initmap(); + adxl362.reset(); + wait_ms(600); // we need to wait at least 500ms after ADXL362 reset + adxl362.set_mode(ADXL362::MEASUREMENT); + int8_t x,y,z; + int start, length; + start = 0; + length = 3; + adxl362_reg_print(start, length); + while(1) { + x=adxl362.scanx_u8(); + y=adxl362.scany_u8(); + z=adxl362.scanz_u8(); + printf("x = %d y = %d z = %d\r\n",x,y,z); + wait_ms(100); + } }