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
main.cpp@4:8065ca897f8b, 2018-02-22 (annotated)
- Committer:
- htdoughe
- Date:
- Thu Feb 22 15:45:26 2018 +0000
- Revision:
- 4:8065ca897f8b
- Parent:
- 3:813694e51f72
- Child:
- 5:02aa71487c01
so many errors but i think i know where to go from here
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rmneubau | 0:0f663d16e8a2 | 1 | #include "mbed.h" |
rmneubau | 0:0f663d16e8a2 | 2 | #include "ADXL362.h" |
htdoughe | 4:8065ca897f8b | 3 | #include "string.h" |
htdoughe | 4:8065ca897f8b | 4 | #include <map> |
htdoughe | 4:8065ca897f8b | 5 | #include <string> |
htdoughe | 4:8065ca897f8b | 6 | |
htdoughe | 4:8065ca897f8b | 7 | //map of register values and names |
htdoughe | 4:8065ca897f8b | 8 | std::map< int, int > registerids; |
htdoughe | 4:8065ca897f8b | 9 | std::map< int, char* > registernames; |
htdoughe | 4:8065ca897f8b | 10 | //populating the map |
htdoughe | 4:8065ca897f8b | 11 | void initmap() { |
htdoughe | 4:8065ca897f8b | 12 | registerids.insert(0, 0x00); |
htdoughe | 4:8065ca897f8b | 13 | registers.insert(1, make_pair("DEVID_MST", 0x01)); |
htdoughe | 4:8065ca897f8b | 14 | registers.insert(2, make_pair("PARTID", 0x02)); |
htdoughe | 4:8065ca897f8b | 15 | registers.insert(3, make_pair("REVID", 0x03)); |
htdoughe | 4:8065ca897f8b | 16 | registers.insert(4, make_pair("XDATA", 0x08)); |
htdoughe | 4:8065ca897f8b | 17 | registers.insert(5, make_pair("YDATA", 0x09)); |
htdoughe | 4:8065ca897f8b | 18 | registers.insert(6, make_pair("ZDATA", 0x0A)); |
htdoughe | 4:8065ca897f8b | 19 | registers.insert(7, make_pair("STATUS", 0x0B)); |
htdoughe | 4:8065ca897f8b | 20 | registers.insert(8, make_pair("FIFO_ENTRIES_L", 0x0C)); |
htdoughe | 4:8065ca897f8b | 21 | registers.insert(9, make_pair("FIFO_ENTRIES_H", 0x0D)); |
htdoughe | 4:8065ca897f8b | 22 | registers.insert(10, make_pair("XDATA_L", 0x0E)); |
htdoughe | 4:8065ca897f8b | 23 | registers.insert(11, make_pair("XDATA_H", 0x0F)); |
htdoughe | 4:8065ca897f8b | 24 | registers.insert(12, make_pair("YDATA_L", 0x10)); |
htdoughe | 4:8065ca897f8b | 25 | registers.insert(13, make_pair("YDATA_H", 0x11)); |
htdoughe | 4:8065ca897f8b | 26 | registers.insert(14, make_pair("ZDATA_L", 0x12)); |
htdoughe | 4:8065ca897f8b | 27 | registers.insert(15, make_pair("ZDATA_H", 0x13)); |
htdoughe | 4:8065ca897f8b | 28 | registers.insert(16, make_pair("TEMP_L", 0x14)); |
htdoughe | 4:8065ca897f8b | 29 | registers.insert(17, make_pair("TEMP_H", 0x15)); |
htdoughe | 4:8065ca897f8b | 30 | registers.insert(18, make_pair("SOFT_RESET", 0x1F)); |
htdoughe | 4:8065ca897f8b | 31 | registers.insert(19, make_pair("THRESH_ACT_L", 0x20)); |
htdoughe | 4:8065ca897f8b | 32 | registers.insert(20, make_pair("THRESH_ACT_H", 0x21)); |
htdoughe | 4:8065ca897f8b | 33 | registers.insert(21, make_pair("TIME_ACT", 0x22)); |
htdoughe | 4:8065ca897f8b | 34 | registers.insert(22, make_pair("THRESH_INACT_L", 0x23)); |
htdoughe | 4:8065ca897f8b | 35 | registers.insert(23, make_pair("THRESH_INACT_H", 0x24)); |
htdoughe | 4:8065ca897f8b | 36 | registers.insert(24, make_pair("TIME_INACT_L", 0x25)); |
htdoughe | 4:8065ca897f8b | 37 | registers.insert(25, make_pair("TIME_INACT_H", 0x26)); |
htdoughe | 4:8065ca897f8b | 38 | registers.insert(26, make_pair("ACT_INACT_CTL", 0x27)); |
htdoughe | 4:8065ca897f8b | 39 | registers.insert(27, make_pair("FIFO_CONTROL", 0x28)); |
htdoughe | 4:8065ca897f8b | 40 | registers.insert(28, make_pair("FIFO_SAMPLES", 0x29)); |
htdoughe | 4:8065ca897f8b | 41 | registers.insert(29, make_pair("INTMAP1", 0x2A)); |
htdoughe | 4:8065ca897f8b | 42 | registers.insert(30, make_pair("INTMAP2", 0x2B)); |
htdoughe | 4:8065ca897f8b | 43 | registers.insert(31, make_pair("FILTER_CTL", 0x2C)); |
htdoughe | 4:8065ca897f8b | 44 | registers.insert(32, make_pair("POWER_CTL", 0x2D)); |
htdoughe | 4:8065ca897f8b | 45 | registers.insert(33, make_pair("SELF_TEST", 0x2E)); |
htdoughe | 4:8065ca897f8b | 46 | } |
htdoughe | 4:8065ca897f8b | 47 | |
rmneubau | 0:0f663d16e8a2 | 48 | // Interface pulled from ADXL362.cpp |
rmneubau | 0:0f663d16e8a2 | 49 | // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : |
rmneubau | 0:0f663d16e8a2 | 50 | ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1); |
rmneubau | 0:0f663d16e8a2 | 51 | |
rmneubau | 0:0f663d16e8a2 | 52 | int main() { |
htdoughe | 4:8065ca897f8b | 53 | initmap(); |
rmneubau | 0:0f663d16e8a2 | 54 | adxl362.reset(); |
rmneubau | 0:0f663d16e8a2 | 55 | wait_ms(600); // we need to wait at least 500ms after ADXL362 reset |
rmneubau | 0:0f663d16e8a2 | 56 | adxl362.set_mode(ADXL362::MEASUREMENT); |
rmneubau | 0:0f663d16e8a2 | 57 | int8_t x,y,z; |
rmneubau | 0:0f663d16e8a2 | 58 | adxl362_reg_print(start, length); |
rmneubau | 0:0f663d16e8a2 | 59 | |
rmneubau | 0:0f663d16e8a2 | 60 | while(1) { |
rmneubau | 0:0f663d16e8a2 | 61 | x=adxl362.scanx_u8(); |
rmneubau | 0:0f663d16e8a2 | 62 | y=adxl362.scany_u8(); |
rmneubau | 0:0f663d16e8a2 | 63 | z=adxl362.scanz_u8(); |
rmneubau | 0:0f663d16e8a2 | 64 | printf("x = %d y = %d z = %d\r\n",x,y,z); |
rmneubau | 0:0f663d16e8a2 | 65 | wait_ms(100); |
rmneubau | 0:0f663d16e8a2 | 66 | } |
rmneubau | 0:0f663d16e8a2 | 67 | } |
rmneubau | 0:0f663d16e8a2 | 68 | |
rmneubau | 0:0f663d16e8a2 | 69 | int adxl362_reg_print(int s, int l){ |
htdoughe | 4:8065ca897f8b | 70 | //check s is between 0x00 and 0x2E |
htdoughe | 4:8065ca897f8b | 71 | unsigned char regVal = 0; |
rmneubau | 0:0f663d16e8a2 | 72 | if(s > 0x2E || s < 0x00){ |
htdoughe | 1:b8716571ecac | 73 | printf("adx: requires start between 0x00 and 0x2E; given %d (0x%01x)\n", s,s); |
htdoughe | 4:8065ca897f8b | 74 | return -1; |
rmneubau | 0:0f663d16e8a2 | 75 | }else if(l < 0){ |
htdoughe | 4:8065ca897f8b | 76 | //check length > 0 |
htdoughe | 1:b8716571ecac | 77 | printf("adx: requires length >= 0, given %d\n", l); |
htdoughe | 4:8065ca897f8b | 78 | return -1; |
rmneubau | 0:0f663d16e8a2 | 79 | }else{ |
rmneubau | 0:0f663d16e8a2 | 80 | // start sending stuff |
rmneubau | 0:0f663d16e8a2 | 81 | //first check DEVID_AD == 0xAD |
htdoughe | 4:8065ca897f8b | 82 | if(adxl362_board.DEVID_AD != 0xAD){ |
htdoughe | 2:496a662be854 | 83 | printf("error: DEVID_AD is not 0xAD; exiting\n"); |
htdoughe | 4:8065ca897f8b | 84 | return -1; |
rmneubau | 0:0f663d16e8a2 | 85 | }else{ |
rmneubau | 0:0f663d16e8a2 | 86 | //now do stuff |
htdoughe | 1:b8716571ecac | 87 | //if length == 0, send everything from s to end of registers |
htdoughe | 4:8065ca897f8b | 88 | //else print from s to l |
htdoughe | 4:8065ca897f8b | 89 | // formula : range = end - start - length |
htdoughe | 4:8065ca897f8b | 90 | // area = start + range |
htdoughe | 4:8065ca897f8b | 91 | int stop = 0; |
htdoughe | 1:b8716571ecac | 92 | if(l == 0){ |
htdoughe | 4:8065ca897f8b | 93 | stop = 34; |
htdoughe | 3:813694e51f72 | 94 | }else{ |
htdoughe | 4:8065ca897f8b | 95 | stop = s + l; |
htdoughe | 4:8065ca897f8b | 96 | } |
htdoughe | 4:8065ca897f8b | 97 | int in = s; |
htdoughe | 4:8065ca897f8b | 98 | while(in < stop){ |
htdoughe | 4:8065ca897f8b | 99 | //get register name |
htdoughe | 4:8065ca897f8b | 100 | string name = registers[in].first; //GET NAME |
htdoughe | 4:8065ca897f8b | 101 | uint16_t val = ADXL362::read_reg_u16(registers[in].secod); //GET REG VAL |
htdoughe | 4:8065ca897f8b | 102 | //print val |
htdoughe | 4:8065ca897f8b | 103 | printf("0x%01x: %s=0x%01x\r\n", in, name, val); |
htdoughe | 4:8065ca897f8b | 104 | in++; |
htdoughe | 1:b8716571ecac | 105 | } |
rmneubau | 0:0f663d16e8a2 | 106 | } |
rmneubau | 0:0f663d16e8a2 | 107 | } |
rmneubau | 0:0f663d16e8a2 | 108 | |
htdoughe | 1:b8716571ecac | 109 | } |