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.
main.cpp@5:4d6ef028eeae, 2020-12-30 (annotated)
- Committer:
- timo_k2
- Date:
- Wed Dec 30 14:41:19 2020 +0000
- Revision:
- 5:4d6ef028eeae
- Parent:
- 4:a6069cbc4c71
- Child:
- 6:a0b604602460
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jackclar | 0:1ca806626aba | 1 | #include "mbed.h" |
jackclar | 0:1ca806626aba | 2 | #include "ADXL362.h" |
timo_k2 | 5:4d6ef028eeae | 3 | |
timo_k2 | 5:4d6ef028eeae | 4 | |
jackclar | 0:1ca806626aba | 5 | // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : |
timo_k2 | 5:4d6ef028eeae | 6 | ADXL362 ADXL362(D5,D11,D12,D13); |
timo_k2 | 5:4d6ef028eeae | 7 | |
timo_k2 | 5:4d6ef028eeae | 8 | DigitalOut moveLed(D1); |
jackclar | 0:1ca806626aba | 9 | |
jackclar | 2:3299365b3e3c | 10 | int ADXL362_reg_print(int start, int length); |
timo_k2 | 5:4d6ef028eeae | 11 | void ADXL362_movement_detect(); |
jackclar | 0:1ca806626aba | 12 | |
jackclar | 0:1ca806626aba | 13 | int main() |
jackclar | 0:1ca806626aba | 14 | { |
jackclar | 2:3299365b3e3c | 15 | ADXL362.reset(); |
timo_k2 | 5:4d6ef028eeae | 16 | // we need to wait at least 500ms after ADXL362 reset |
timo_k2 | 5:4d6ef028eeae | 17 | ThisThread::sleep_for(600ms); |
jackclar | 2:3299365b3e3c | 18 | ADXL362.set_mode(ADXL362::MEASUREMENT); |
jackclar | 4:a6069cbc4c71 | 19 | ADXL362_reg_print(0, 0); |
timo_k2 | 5:4d6ef028eeae | 20 | ADXL362_movement_detect(); |
jackclar | 2:3299365b3e3c | 21 | } |
jackclar | 2:3299365b3e3c | 22 | |
timo_k2 | 5:4d6ef028eeae | 23 | void ADXL362_movement_detect() |
jackclar | 2:3299365b3e3c | 24 | { |
timo_k2 | 5:4d6ef028eeae | 25 | int8_t x1,y1,z1,x2,y2,z2,x,y,z,dx,dy,dz; |
timo_k2 | 5:4d6ef028eeae | 26 | int i = 0; |
jackclar | 2:3299365b3e3c | 27 | while(1) |
jackclar | 2:3299365b3e3c | 28 | { |
jackclar | 2:3299365b3e3c | 29 | |
jackclar | 2:3299365b3e3c | 30 | while(1) |
jackclar | 2:3299365b3e3c | 31 | { |
jackclar | 2:3299365b3e3c | 32 | x1=ADXL362.scanx_u8(); |
jackclar | 2:3299365b3e3c | 33 | y1=ADXL362.scany_u8(); |
jackclar | 2:3299365b3e3c | 34 | z1=ADXL362.scanz_u8(); |
timo_k2 | 5:4d6ef028eeae | 35 | ThisThread::sleep_for(10ms); |
jackclar | 2:3299365b3e3c | 36 | x2=ADXL362.scanx_u8(); |
jackclar | 2:3299365b3e3c | 37 | y2=ADXL362.scany_u8(); |
jackclar | 2:3299365b3e3c | 38 | z2=ADXL362.scanz_u8(); |
jackclar | 2:3299365b3e3c | 39 | |
timo_k2 | 5:4d6ef028eeae | 40 | x=(x1 + x2)/2; |
timo_k2 | 5:4d6ef028eeae | 41 | y=(y1 + y2)/2; |
timo_k2 | 5:4d6ef028eeae | 42 | z=(z1 + z2)/2; |
jackclar | 2:3299365b3e3c | 43 | |
timo_k2 | 5:4d6ef028eeae | 44 | dx=abs(x1 - x2); |
timo_k2 | 5:4d6ef028eeae | 45 | dy=abs(y1 - y2); |
timo_k2 | 5:4d6ef028eeae | 46 | dz=abs(z1 - z2); |
timo_k2 | 5:4d6ef028eeae | 47 | |
timo_k2 | 5:4d6ef028eeae | 48 | if (dx>10 || dy>10 || dz>10) |
jackclar | 2:3299365b3e3c | 49 | break; |
jackclar | 2:3299365b3e3c | 50 | |
timo_k2 | 5:4d6ef028eeae | 51 | printf("x = %3d y = %3d z = %3d dx = %3d dy = %3d dz = %3d\r\n",x,y,z,dx,dy,dz); |
jackclar | 2:3299365b3e3c | 52 | //pc.printf("x = %d, y = %d, z = %d\r\n", x1, y1, z1); |
timo_k2 | 5:4d6ef028eeae | 53 | //wait_ms(10); |
timo_k2 | 5:4d6ef028eeae | 54 | ThisThread::sleep_for(100ms); |
jackclar | 2:3299365b3e3c | 55 | } |
jackclar | 2:3299365b3e3c | 56 | |
timo_k2 | 5:4d6ef028eeae | 57 | moveLed = 1; |
timo_k2 | 5:4d6ef028eeae | 58 | //wait(2); |
timo_k2 | 5:4d6ef028eeae | 59 | ThisThread::sleep_for(2s); |
timo_k2 | 5:4d6ef028eeae | 60 | moveLed = 0; |
jackclar | 2:3299365b3e3c | 61 | i++; |
timo_k2 | 5:4d6ef028eeae | 62 | printf("%d\r\n", i); |
jackclar | 2:3299365b3e3c | 63 | |
jackclar | 2:3299365b3e3c | 64 | } |
jackclar | 0:1ca806626aba | 65 | } |
jackclar | 0:1ca806626aba | 66 | |
jackclar | 2:3299365b3e3c | 67 | int ADXL362_reg_print(int start, int length) |
timo_k2 | 5:4d6ef028eeae | 68 | /* |
timo_k2 | 5:4d6ef028eeae | 69 | * The register bit allocations are explained in the datasheet |
timo_k2 | 5:4d6ef028eeae | 70 | * https://www.analog.com/media/en/technical-documentation/data-sheets/ADXL362.pdf |
timo_k2 | 5:4d6ef028eeae | 71 | * starting on page 23. |
timo_k2 | 5:4d6ef028eeae | 72 | */ |
jackclar | 0:1ca806626aba | 73 | { |
jackclar | 2:3299365b3e3c | 74 | uint8_t i; |
timo_k2 | 5:4d6ef028eeae | 75 | char name[32]; |
timo_k2 | 5:4d6ef028eeae | 76 | char note[64]; |
timo_k2 | 5:4d6ef028eeae | 77 | |
jackclar | 2:3299365b3e3c | 78 | ADXL362::ADXL362_register_t reg; |
jackclar | 4:a6069cbc4c71 | 79 | if(start >= 0x00 && start <= 0x2E && length >= 0x00 && (ADXL362.read_reg(ADXL362.DEVID_AD) == 0xAD)) |
jackclar | 0:1ca806626aba | 80 | { |
jackclar | 2:3299365b3e3c | 81 | if(length == 0) |
jackclar | 2:3299365b3e3c | 82 | { |
jackclar | 2:3299365b3e3c | 83 | start = 0; |
jackclar | 2:3299365b3e3c | 84 | length = 47; |
jackclar | 2:3299365b3e3c | 85 | } |
jackclar | 2:3299365b3e3c | 86 | |
jackclar | 2:3299365b3e3c | 87 | for(i = start; i < start + length; i++) |
jackclar | 0:1ca806626aba | 88 | { |
jackclar | 2:3299365b3e3c | 89 | switch(i) |
jackclar | 2:3299365b3e3c | 90 | { |
jackclar | 2:3299365b3e3c | 91 | case 0x00: |
timo_k2 | 5:4d6ef028eeae | 92 | snprintf(name, 32, "DEVID_AD" ); |
timo_k2 | 5:4d6ef028eeae | 93 | snprintf(note, 64, "default 0xAD = I am the ADXL362"); |
jackclar | 2:3299365b3e3c | 94 | reg = ADXL362.DEVID_AD; |
jackclar | 2:3299365b3e3c | 95 | break; |
jackclar | 2:3299365b3e3c | 96 | case 0x01: |
timo_k2 | 5:4d6ef028eeae | 97 | snprintf(name, 32, "DEVID_MST" ); |
timo_k2 | 5:4d6ef028eeae | 98 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 99 | reg = ADXL362.DEVID_MST; |
jackclar | 2:3299365b3e3c | 100 | break; |
jackclar | 2:3299365b3e3c | 101 | case 0x02: |
timo_k2 | 5:4d6ef028eeae | 102 | snprintf(name, 32, "PARTID" ); |
timo_k2 | 5:4d6ef028eeae | 103 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 104 | reg = ADXL362.PARTID; |
jackclar | 2:3299365b3e3c | 105 | break; |
jackclar | 2:3299365b3e3c | 106 | case 0x03: |
timo_k2 | 5:4d6ef028eeae | 107 | snprintf(name, 32, "REVID" ); |
timo_k2 | 5:4d6ef028eeae | 108 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 109 | reg = ADXL362.REVID; |
jackclar | 2:3299365b3e3c | 110 | break; |
jackclar | 2:3299365b3e3c | 111 | case 0x08: |
timo_k2 | 5:4d6ef028eeae | 112 | snprintf(name, 32, "XDATA" ); |
timo_k2 | 5:4d6ef028eeae | 113 | snprintf(note, 63, "binary 8bit, two's complement"); |
jackclar | 2:3299365b3e3c | 114 | reg = ADXL362.XDATA; |
jackclar | 2:3299365b3e3c | 115 | break; |
jackclar | 2:3299365b3e3c | 116 | case 0x09: |
timo_k2 | 5:4d6ef028eeae | 117 | snprintf(name, 32, "YDATA" ); |
timo_k2 | 5:4d6ef028eeae | 118 | snprintf(note, 64, "binary 8bit, two's complement"); |
jackclar | 2:3299365b3e3c | 119 | reg = ADXL362.YDATA; |
jackclar | 2:3299365b3e3c | 120 | break; |
jackclar | 2:3299365b3e3c | 121 | case 0x0A: |
timo_k2 | 5:4d6ef028eeae | 122 | snprintf(name, 32, "ZDATA" ); |
timo_k2 | 5:4d6ef028eeae | 123 | snprintf(note, 64, "binary 8bit, two's complement"); |
jackclar | 2:3299365b3e3c | 124 | reg = ADXL362.ZDATA; |
jackclar | 2:3299365b3e3c | 125 | break; |
jackclar | 2:3299365b3e3c | 126 | case 0x0B: |
timo_k2 | 5:4d6ef028eeae | 127 | snprintf(name, 32, "STATUS" ); |
timo_k2 | 5:4d6ef028eeae | 128 | snprintf(note, 64, "typically 0x41, 4=awake, 1=data ready"); |
jackclar | 2:3299365b3e3c | 129 | reg = ADXL362.STATUS; |
jackclar | 2:3299365b3e3c | 130 | break; |
jackclar | 2:3299365b3e3c | 131 | case 0x0C: |
timo_k2 | 5:4d6ef028eeae | 132 | snprintf(name, 32, "FIFO_ENTRIES_L" ); |
timo_k2 | 5:4d6ef028eeae | 133 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 134 | reg = ADXL362.FIFO_ENTRIES_L; |
jackclar | 2:3299365b3e3c | 135 | break; |
jackclar | 2:3299365b3e3c | 136 | case 0x0D: |
timo_k2 | 5:4d6ef028eeae | 137 | snprintf(name, 32, "FIFO_ENTRIES_H" ); |
timo_k2 | 5:4d6ef028eeae | 138 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 139 | reg = ADXL362.FIFO_ENTRIES_H; |
jackclar | 2:3299365b3e3c | 140 | break; |
jackclar | 2:3299365b3e3c | 141 | case 0x0E: |
timo_k2 | 5:4d6ef028eeae | 142 | snprintf(name, 32, "XDATA_L" ); |
timo_k2 | 5:4d6ef028eeae | 143 | snprintf(note, 64, "binary 12bit, two's complement"); |
jackclar | 2:3299365b3e3c | 144 | reg = ADXL362.XDATA_L; |
jackclar | 2:3299365b3e3c | 145 | break; |
jackclar | 2:3299365b3e3c | 146 | case 0x0F: |
timo_k2 | 5:4d6ef028eeae | 147 | snprintf(name, 32, "XDATA_H" ); |
timo_k2 | 5:4d6ef028eeae | 148 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 149 | reg = ADXL362.XDATA_H; |
jackclar | 2:3299365b3e3c | 150 | break; |
jackclar | 2:3299365b3e3c | 151 | case 0x10: |
timo_k2 | 5:4d6ef028eeae | 152 | snprintf(name, 32, "YDATA_L" ); |
timo_k2 | 5:4d6ef028eeae | 153 | snprintf(note, 64, "binary 12bit, two's complement"); |
jackclar | 2:3299365b3e3c | 154 | reg = ADXL362.YDATA_L; |
jackclar | 2:3299365b3e3c | 155 | break; |
jackclar | 2:3299365b3e3c | 156 | case 0x11: |
timo_k2 | 5:4d6ef028eeae | 157 | snprintf(name, 32, "YDATA_H" ); |
timo_k2 | 5:4d6ef028eeae | 158 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 159 | reg = ADXL362.YDATA_H; |
jackclar | 2:3299365b3e3c | 160 | break; |
jackclar | 2:3299365b3e3c | 161 | case 0x12: |
timo_k2 | 5:4d6ef028eeae | 162 | snprintf(name, 32, "ZDATA_L" ); |
timo_k2 | 5:4d6ef028eeae | 163 | snprintf(note, 64, "binary 12bit, two's complement"); |
jackclar | 2:3299365b3e3c | 164 | reg = ADXL362.ZDATA_L; |
jackclar | 2:3299365b3e3c | 165 | break; |
jackclar | 2:3299365b3e3c | 166 | case 0x13: |
timo_k2 | 5:4d6ef028eeae | 167 | snprintf(name, 32, "ZDATA_H" ); |
timo_k2 | 5:4d6ef028eeae | 168 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 169 | reg = ADXL362.ZDATA_H; |
jackclar | 2:3299365b3e3c | 170 | break; |
jackclar | 2:3299365b3e3c | 171 | case 0x14: |
timo_k2 | 5:4d6ef028eeae | 172 | snprintf(name, 32, "TEMP_L" ); |
timo_k2 | 5:4d6ef028eeae | 173 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 174 | reg = ADXL362.TEMP_L; |
jackclar | 2:3299365b3e3c | 175 | break; |
jackclar | 2:3299365b3e3c | 176 | case 0x15: |
timo_k2 | 5:4d6ef028eeae | 177 | snprintf(name, 32, "TEMP_H" ); |
timo_k2 | 5:4d6ef028eeae | 178 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 179 | reg = ADXL362.TEMP_H; |
jackclar | 2:3299365b3e3c | 180 | break; |
jackclar | 2:3299365b3e3c | 181 | case 0x1F: |
timo_k2 | 5:4d6ef028eeae | 182 | snprintf(name, 32, "SOFT_RESET" ); |
timo_k2 | 5:4d6ef028eeae | 183 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 184 | reg = ADXL362.SOFT_RESET; |
jackclar | 2:3299365b3e3c | 185 | break; |
jackclar | 2:3299365b3e3c | 186 | case 0x20: |
timo_k2 | 5:4d6ef028eeae | 187 | snprintf(name, 32, "THRESH_ACT_L" ); |
timo_k2 | 5:4d6ef028eeae | 188 | snprintf(note, 64, "Activity threshold value, binary 16bit"); |
jackclar | 2:3299365b3e3c | 189 | reg = ADXL362.THRESH_ACT_L; |
jackclar | 2:3299365b3e3c | 190 | break; |
jackclar | 2:3299365b3e3c | 191 | case 0x21: |
timo_k2 | 5:4d6ef028eeae | 192 | snprintf(name, 32, "THRESH_ACT_H" ); |
timo_k2 | 5:4d6ef028eeae | 193 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 194 | reg = ADXL362.THRESH_ACT_H; |
jackclar | 2:3299365b3e3c | 195 | break; |
jackclar | 2:3299365b3e3c | 196 | case 0x22: |
timo_k2 | 5:4d6ef028eeae | 197 | snprintf(name, 32, "TIME_ACT" ); |
timo_k2 | 5:4d6ef028eeae | 198 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 199 | reg = ADXL362.TIME_ACT; |
jackclar | 2:3299365b3e3c | 200 | break; |
jackclar | 2:3299365b3e3c | 201 | case 0x23: |
timo_k2 | 5:4d6ef028eeae | 202 | snprintf(name, 32, "THRESH_INACT_L" ); |
timo_k2 | 5:4d6ef028eeae | 203 | snprintf(note, 64, "Inactivity threshold value, binary 16bit"); |
jackclar | 2:3299365b3e3c | 204 | reg = ADXL362.THRESH_INACT_L; |
jackclar | 2:3299365b3e3c | 205 | break; |
jackclar | 2:3299365b3e3c | 206 | case 0x24: |
timo_k2 | 5:4d6ef028eeae | 207 | snprintf(name, 32, "THRESH_INACT_H" ); |
timo_k2 | 5:4d6ef028eeae | 208 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 209 | reg = ADXL362.THRESH_INACT_H; |
jackclar | 2:3299365b3e3c | 210 | break; |
jackclar | 2:3299365b3e3c | 211 | case 0x25: |
timo_k2 | 5:4d6ef028eeae | 212 | snprintf(name, 32, "TIME_INACT_L" ); |
timo_k2 | 5:4d6ef028eeae | 213 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 214 | reg = ADXL362.TIME_INACT_L; |
jackclar | 2:3299365b3e3c | 215 | break; |
jackclar | 2:3299365b3e3c | 216 | case 0x26: |
timo_k2 | 5:4d6ef028eeae | 217 | snprintf(name, 32, "TIME_INACT_H" ); |
timo_k2 | 5:4d6ef028eeae | 218 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 219 | reg = ADXL362.TIME_INACT_H; |
jackclar | 2:3299365b3e3c | 220 | break; |
jackclar | 2:3299365b3e3c | 221 | case 0x27: |
timo_k2 | 5:4d6ef028eeae | 222 | snprintf(name, 32, "ACT_INACT_CTL" ); |
timo_k2 | 5:4d6ef028eeae | 223 | snprintf(note, 64, "default 0x00 = disable, 0x01 = enable"); |
jackclar | 2:3299365b3e3c | 224 | reg = ADXL362.ACT_INACT_CTL; |
jackclar | 2:3299365b3e3c | 225 | break; |
jackclar | 2:3299365b3e3c | 226 | case 0x28: |
timo_k2 | 5:4d6ef028eeae | 227 | snprintf(name, 32, "FIFO_CONTROL" ); |
timo_k2 | 5:4d6ef028eeae | 228 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 229 | reg = ADXL362.FIFO_CONTROL; |
jackclar | 2:3299365b3e3c | 230 | break; |
jackclar | 2:3299365b3e3c | 231 | case 0x29: |
timo_k2 | 5:4d6ef028eeae | 232 | snprintf(name, 32, "FIFO_SAMPLES" ); |
timo_k2 | 5:4d6ef028eeae | 233 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 234 | reg = ADXL362.FIFO_SAMPLES; |
jackclar | 2:3299365b3e3c | 235 | break; |
jackclar | 2:3299365b3e3c | 236 | case 0x2A: |
timo_k2 | 5:4d6ef028eeae | 237 | snprintf(name, 32, "INTMAP1" ); |
timo_k2 | 5:4d6ef028eeae | 238 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 239 | reg = ADXL362.INTMAP1; |
jackclar | 2:3299365b3e3c | 240 | break; |
jackclar | 2:3299365b3e3c | 241 | case 0x2B: |
timo_k2 | 5:4d6ef028eeae | 242 | snprintf(name, 32, "INTMAP2" ); |
timo_k2 | 5:4d6ef028eeae | 243 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 244 | reg = ADXL362.INTMAP2; |
jackclar | 2:3299365b3e3c | 245 | break; |
jackclar | 2:3299365b3e3c | 246 | case 0x2C: |
timo_k2 | 5:4d6ef028eeae | 247 | snprintf(name, 32, "FILTER_CTL" ); |
timo_k2 | 5:4d6ef028eeae | 248 | snprintf(note, 64, "default 0x13, 1=half samplin freq, 3=freq 100 sampl/sec"); |
jackclar | 2:3299365b3e3c | 249 | reg = ADXL362.FILTER_CTL; |
jackclar | 2:3299365b3e3c | 250 | break; |
jackclar | 2:3299365b3e3c | 251 | case 0x2D: |
timo_k2 | 5:4d6ef028eeae | 252 | snprintf(name, 32, "POWER_CTL" ); |
timo_k2 | 5:4d6ef028eeae | 253 | snprintf(note, 64, "default 0x02 = measure 3D"); |
jackclar | 2:3299365b3e3c | 254 | reg = ADXL362.POWER_CTL; |
jackclar | 2:3299365b3e3c | 255 | break; |
jackclar | 2:3299365b3e3c | 256 | case 0x2E: |
timo_k2 | 5:4d6ef028eeae | 257 | snprintf(name, 32, "SELF_TEST" ); |
timo_k2 | 5:4d6ef028eeae | 258 | snprintf(note, 64, "-"); |
jackclar | 2:3299365b3e3c | 259 | reg = ADXL362.SELF_TEST; |
jackclar | 2:3299365b3e3c | 260 | break; |
jackclar | 2:3299365b3e3c | 261 | } |
timo_k2 | 5:4d6ef028eeae | 262 | // Printing register content as hexadecimal and the notes |
timo_k2 | 5:4d6ef028eeae | 263 | printf("register %d %s %x %s\n", i, name, ADXL362.read_reg(reg), note); |
jackclar | 0:1ca806626aba | 264 | } |
jackclar | 0:1ca806626aba | 265 | } |
jackclar | 0:1ca806626aba | 266 | else |
jackclar | 0:1ca806626aba | 267 | { |
timo_k2 | 5:4d6ef028eeae | 268 | printf("Error"); |
jackclar | 2:3299365b3e3c | 269 | return(-1); |
jackclar | 2:3299365b3e3c | 270 | } |
jackclar | 2:3299365b3e3c | 271 | return(0); |
timo_k2 | 5:4d6ef028eeae | 272 | } |