CPS-Lab*
/
Lab6
Laboratory 6
main.cpp@2:3299365b3e3c, 2018-02-22 (annotated)
- Committer:
- jackclar
- Date:
- Thu Feb 22 23:17:52 2018 +0000
- Revision:
- 2:3299365b3e3c
- Parent:
- 0:1ca806626aba
- Child:
- 4:a6069cbc4c71
v1
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" |
jackclar | 2:3299365b3e3c | 3 | #include <string> |
jackclar | 2:3299365b3e3c | 4 | #include <stdlib.h> |
jackclar | 0:1ca806626aba | 5 | |
jackclar | 0:1ca806626aba | 6 | // Interface pulled from ADXL362.cpp |
jackclar | 0:1ca806626aba | 7 | // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : |
jackclar | 2:3299365b3e3c | 8 | ADXL362 ADXL362(PA_0,PA_7,PA_6,PA_1); |
jackclar | 0:1ca806626aba | 9 | Serial pc(USBTX, USBRX); |
jackclar | 2:3299365b3e3c | 10 | DigitalOut myled(LED3); |
jackclar | 0:1ca806626aba | 11 | |
jackclar | 2:3299365b3e3c | 12 | int ADXL362_reg_print(int start, int length); |
jackclar | 2:3299365b3e3c | 13 | void ADXL362_knock_detect(); |
jackclar | 0:1ca806626aba | 14 | |
jackclar | 0:1ca806626aba | 15 | int main() |
jackclar | 0:1ca806626aba | 16 | { |
jackclar | 2:3299365b3e3c | 17 | ADXL362.reset(); |
jackclar | 0:1ca806626aba | 18 | wait_ms(600); // we need to wait at least 500ms after ADXL362 reset |
jackclar | 2:3299365b3e3c | 19 | ADXL362.set_mode(ADXL362::MEASUREMENT); |
jackclar | 2:3299365b3e3c | 20 | ADXL362_knock_detect(); |
jackclar | 2:3299365b3e3c | 21 | //ADXL362_reg_print(0, 0); |
jackclar | 2:3299365b3e3c | 22 | } |
jackclar | 2:3299365b3e3c | 23 | |
jackclar | 2:3299365b3e3c | 24 | void ADXL362_knock_detect() |
jackclar | 2:3299365b3e3c | 25 | { |
jackclar | 2:3299365b3e3c | 26 | int8_t x1,y1,z1,x2,y2,z2,x,y,z; |
jackclar | 2:3299365b3e3c | 27 | int i = 0; |
jackclar | 2:3299365b3e3c | 28 | while(1) |
jackclar | 2:3299365b3e3c | 29 | { |
jackclar | 2:3299365b3e3c | 30 | |
jackclar | 2:3299365b3e3c | 31 | while(1) |
jackclar | 2:3299365b3e3c | 32 | { |
jackclar | 2:3299365b3e3c | 33 | x1=ADXL362.scanx_u8(); |
jackclar | 2:3299365b3e3c | 34 | y1=ADXL362.scany_u8(); |
jackclar | 2:3299365b3e3c | 35 | z1=ADXL362.scanz_u8(); |
jackclar | 2:3299365b3e3c | 36 | wait_ms(10); |
jackclar | 2:3299365b3e3c | 37 | x2=ADXL362.scanx_u8(); |
jackclar | 2:3299365b3e3c | 38 | y2=ADXL362.scany_u8(); |
jackclar | 2:3299365b3e3c | 39 | z2=ADXL362.scanz_u8(); |
jackclar | 2:3299365b3e3c | 40 | |
jackclar | 2:3299365b3e3c | 41 | x=abs(x1 - x2); |
jackclar | 2:3299365b3e3c | 42 | y=abs(y1 - y2); |
jackclar | 2:3299365b3e3c | 43 | z=abs(z1 - z2); |
jackclar | 2:3299365b3e3c | 44 | |
jackclar | 2:3299365b3e3c | 45 | if (x>7 || y>7 || z>20) |
jackclar | 2:3299365b3e3c | 46 | break; |
jackclar | 2:3299365b3e3c | 47 | |
jackclar | 2:3299365b3e3c | 48 | //printf("x = %d y = %d z = %d\r\n",x,y,z); |
jackclar | 2:3299365b3e3c | 49 | //pc.printf("x = %d, y = %d, z = %d\r\n", x1, y1, z1); |
jackclar | 2:3299365b3e3c | 50 | wait_ms(10); |
jackclar | 2:3299365b3e3c | 51 | } |
jackclar | 2:3299365b3e3c | 52 | |
jackclar | 2:3299365b3e3c | 53 | myled = 1; |
jackclar | 2:3299365b3e3c | 54 | wait(2); |
jackclar | 2:3299365b3e3c | 55 | myled = 0; |
jackclar | 2:3299365b3e3c | 56 | i++; |
jackclar | 2:3299365b3e3c | 57 | pc.printf("%d\r\n", i); |
jackclar | 2:3299365b3e3c | 58 | |
jackclar | 2:3299365b3e3c | 59 | } |
jackclar | 0:1ca806626aba | 60 | } |
jackclar | 0:1ca806626aba | 61 | |
jackclar | 2:3299365b3e3c | 62 | int ADXL362_reg_print(int start, int length) |
jackclar | 0:1ca806626aba | 63 | { |
jackclar | 2:3299365b3e3c | 64 | uint8_t i; |
jackclar | 2:3299365b3e3c | 65 | std::string name; |
jackclar | 2:3299365b3e3c | 66 | ADXL362::ADXL362_register_t reg; |
jackclar | 2:3299365b3e3c | 67 | if(start >= 0x00 && start <= 0x2E && length >= 0x00 && (ADXL362.read_reg(ADXL362.DEVID_AD) == 0xAC)) |
jackclar | 0:1ca806626aba | 68 | { |
jackclar | 2:3299365b3e3c | 69 | if(length == 0) |
jackclar | 2:3299365b3e3c | 70 | { |
jackclar | 2:3299365b3e3c | 71 | start = 0; |
jackclar | 2:3299365b3e3c | 72 | length = 47; |
jackclar | 2:3299365b3e3c | 73 | } |
jackclar | 2:3299365b3e3c | 74 | |
jackclar | 2:3299365b3e3c | 75 | for(i = start; i < start + length; i++) |
jackclar | 0:1ca806626aba | 76 | { |
jackclar | 2:3299365b3e3c | 77 | switch(i) |
jackclar | 2:3299365b3e3c | 78 | { |
jackclar | 2:3299365b3e3c | 79 | case 0x00: |
jackclar | 2:3299365b3e3c | 80 | name = "DEVID_AD"; |
jackclar | 2:3299365b3e3c | 81 | reg = ADXL362.DEVID_AD; |
jackclar | 2:3299365b3e3c | 82 | break; |
jackclar | 2:3299365b3e3c | 83 | case 0x01: |
jackclar | 2:3299365b3e3c | 84 | name = "DEVID_MST"; |
jackclar | 2:3299365b3e3c | 85 | reg = ADXL362.DEVID_MST; |
jackclar | 2:3299365b3e3c | 86 | break; |
jackclar | 2:3299365b3e3c | 87 | case 0x02: |
jackclar | 2:3299365b3e3c | 88 | name = "PARTID"; |
jackclar | 2:3299365b3e3c | 89 | reg = ADXL362.PARTID; |
jackclar | 2:3299365b3e3c | 90 | break; |
jackclar | 2:3299365b3e3c | 91 | case 0x03: |
jackclar | 2:3299365b3e3c | 92 | name = "REVID"; |
jackclar | 2:3299365b3e3c | 93 | reg = ADXL362.REVID; |
jackclar | 2:3299365b3e3c | 94 | break; |
jackclar | 2:3299365b3e3c | 95 | case 0x08: |
jackclar | 2:3299365b3e3c | 96 | name = "XDATA"; |
jackclar | 2:3299365b3e3c | 97 | reg = ADXL362.XDATA; |
jackclar | 2:3299365b3e3c | 98 | break; |
jackclar | 2:3299365b3e3c | 99 | case 0x09: |
jackclar | 2:3299365b3e3c | 100 | name = "YDATA"; |
jackclar | 2:3299365b3e3c | 101 | reg = ADXL362.YDATA; |
jackclar | 2:3299365b3e3c | 102 | break; |
jackclar | 2:3299365b3e3c | 103 | case 0x0A: |
jackclar | 2:3299365b3e3c | 104 | name = "ZDATA"; |
jackclar | 2:3299365b3e3c | 105 | reg = ADXL362.ZDATA; |
jackclar | 2:3299365b3e3c | 106 | break; |
jackclar | 2:3299365b3e3c | 107 | case 0x0B: |
jackclar | 2:3299365b3e3c | 108 | name = "STATUS"; |
jackclar | 2:3299365b3e3c | 109 | reg = ADXL362.STATUS; |
jackclar | 2:3299365b3e3c | 110 | break; |
jackclar | 2:3299365b3e3c | 111 | case 0x0C: |
jackclar | 2:3299365b3e3c | 112 | name = "FIFO_ENTRIES_L"; |
jackclar | 2:3299365b3e3c | 113 | reg = ADXL362.FIFO_ENTRIES_L; |
jackclar | 2:3299365b3e3c | 114 | break; |
jackclar | 2:3299365b3e3c | 115 | case 0x0D: |
jackclar | 2:3299365b3e3c | 116 | name = "FIFO_ENTRIES_H"; |
jackclar | 2:3299365b3e3c | 117 | reg = ADXL362.FIFO_ENTRIES_H; |
jackclar | 2:3299365b3e3c | 118 | break; |
jackclar | 2:3299365b3e3c | 119 | case 0x0E: |
jackclar | 2:3299365b3e3c | 120 | name = "XDATA_L"; |
jackclar | 2:3299365b3e3c | 121 | reg = ADXL362.XDATA_L; |
jackclar | 2:3299365b3e3c | 122 | break; |
jackclar | 2:3299365b3e3c | 123 | case 0x0F: |
jackclar | 2:3299365b3e3c | 124 | name = "XDATA_H"; |
jackclar | 2:3299365b3e3c | 125 | reg = ADXL362.XDATA_H; |
jackclar | 2:3299365b3e3c | 126 | break; |
jackclar | 2:3299365b3e3c | 127 | case 0x10: |
jackclar | 2:3299365b3e3c | 128 | name = "YDATA_L"; |
jackclar | 2:3299365b3e3c | 129 | reg = ADXL362.YDATA_L; |
jackclar | 2:3299365b3e3c | 130 | break; |
jackclar | 2:3299365b3e3c | 131 | case 0x11: |
jackclar | 2:3299365b3e3c | 132 | name = "YDATA_H"; |
jackclar | 2:3299365b3e3c | 133 | reg = ADXL362.YDATA_H; |
jackclar | 2:3299365b3e3c | 134 | break; |
jackclar | 2:3299365b3e3c | 135 | case 0x12: |
jackclar | 2:3299365b3e3c | 136 | name = "ZDATA_L"; |
jackclar | 2:3299365b3e3c | 137 | reg = ADXL362.ZDATA_L; |
jackclar | 2:3299365b3e3c | 138 | break; |
jackclar | 2:3299365b3e3c | 139 | case 0x13: |
jackclar | 2:3299365b3e3c | 140 | name = "ZDATA_H"; |
jackclar | 2:3299365b3e3c | 141 | reg = ADXL362.ZDATA_H; |
jackclar | 2:3299365b3e3c | 142 | break; |
jackclar | 2:3299365b3e3c | 143 | case 0x14: |
jackclar | 2:3299365b3e3c | 144 | name = "TEMP_L"; |
jackclar | 2:3299365b3e3c | 145 | reg = ADXL362.TEMP_L; |
jackclar | 2:3299365b3e3c | 146 | break; |
jackclar | 2:3299365b3e3c | 147 | case 0x15: |
jackclar | 2:3299365b3e3c | 148 | name = "TEMP_H"; |
jackclar | 2:3299365b3e3c | 149 | reg = ADXL362.TEMP_H; |
jackclar | 2:3299365b3e3c | 150 | break; |
jackclar | 2:3299365b3e3c | 151 | case 0x1F: |
jackclar | 2:3299365b3e3c | 152 | name = "SOFT_RESET"; |
jackclar | 2:3299365b3e3c | 153 | reg = ADXL362.SOFT_RESET; |
jackclar | 2:3299365b3e3c | 154 | break; |
jackclar | 2:3299365b3e3c | 155 | case 0x20: |
jackclar | 2:3299365b3e3c | 156 | name = "THRESH_ACT_L"; |
jackclar | 2:3299365b3e3c | 157 | reg = ADXL362.THRESH_ACT_L; |
jackclar | 2:3299365b3e3c | 158 | break; |
jackclar | 2:3299365b3e3c | 159 | case 0x21: |
jackclar | 2:3299365b3e3c | 160 | name = "THRESH_ACT_H"; |
jackclar | 2:3299365b3e3c | 161 | reg = ADXL362.THRESH_ACT_H; |
jackclar | 2:3299365b3e3c | 162 | break; |
jackclar | 2:3299365b3e3c | 163 | case 0x22: |
jackclar | 2:3299365b3e3c | 164 | name = "TIME_ACT"; |
jackclar | 2:3299365b3e3c | 165 | reg = ADXL362.TIME_ACT; |
jackclar | 2:3299365b3e3c | 166 | break; |
jackclar | 2:3299365b3e3c | 167 | case 0x23: |
jackclar | 2:3299365b3e3c | 168 | name = "THRESH_INACT_L"; |
jackclar | 2:3299365b3e3c | 169 | reg = ADXL362.THRESH_INACT_L; |
jackclar | 2:3299365b3e3c | 170 | break; |
jackclar | 2:3299365b3e3c | 171 | case 0x24: |
jackclar | 2:3299365b3e3c | 172 | name = "THRESH_INACT_H"; |
jackclar | 2:3299365b3e3c | 173 | reg = ADXL362.THRESH_INACT_H; |
jackclar | 2:3299365b3e3c | 174 | break; |
jackclar | 2:3299365b3e3c | 175 | case 0x25: |
jackclar | 2:3299365b3e3c | 176 | name = "TIME_INACT_L"; |
jackclar | 2:3299365b3e3c | 177 | reg = ADXL362.TIME_INACT_L; |
jackclar | 2:3299365b3e3c | 178 | break; |
jackclar | 2:3299365b3e3c | 179 | case 0x26: |
jackclar | 2:3299365b3e3c | 180 | name = "TIME_INACT_H"; |
jackclar | 2:3299365b3e3c | 181 | reg = ADXL362.TIME_INACT_H; |
jackclar | 2:3299365b3e3c | 182 | break; |
jackclar | 2:3299365b3e3c | 183 | case 0x27: |
jackclar | 2:3299365b3e3c | 184 | name = "ACT_INACT_CTL"; |
jackclar | 2:3299365b3e3c | 185 | reg = ADXL362.ACT_INACT_CTL; |
jackclar | 2:3299365b3e3c | 186 | break; |
jackclar | 2:3299365b3e3c | 187 | case 0x28: |
jackclar | 2:3299365b3e3c | 188 | name = "FIFO_CONTROL"; |
jackclar | 2:3299365b3e3c | 189 | reg = ADXL362.FIFO_CONTROL; |
jackclar | 2:3299365b3e3c | 190 | break; |
jackclar | 2:3299365b3e3c | 191 | case 0x29: |
jackclar | 2:3299365b3e3c | 192 | name = "FIFO_SAMPLES"; |
jackclar | 2:3299365b3e3c | 193 | reg = ADXL362.FIFO_SAMPLES; |
jackclar | 2:3299365b3e3c | 194 | break; |
jackclar | 2:3299365b3e3c | 195 | case 0x2A: |
jackclar | 2:3299365b3e3c | 196 | name = "INTMAP1"; |
jackclar | 2:3299365b3e3c | 197 | reg = ADXL362.INTMAP1; |
jackclar | 2:3299365b3e3c | 198 | break; |
jackclar | 2:3299365b3e3c | 199 | case 0x2B: |
jackclar | 2:3299365b3e3c | 200 | name = "INTMAP2"; |
jackclar | 2:3299365b3e3c | 201 | reg = ADXL362.INTMAP2; |
jackclar | 2:3299365b3e3c | 202 | break; |
jackclar | 2:3299365b3e3c | 203 | case 0x2C: |
jackclar | 2:3299365b3e3c | 204 | name = "FILTER_CTL"; |
jackclar | 2:3299365b3e3c | 205 | reg = ADXL362.FILTER_CTL; |
jackclar | 2:3299365b3e3c | 206 | break; |
jackclar | 2:3299365b3e3c | 207 | case 0x2D: |
jackclar | 2:3299365b3e3c | 208 | name = "POWER_CTL"; |
jackclar | 2:3299365b3e3c | 209 | reg = ADXL362.POWER_CTL; |
jackclar | 2:3299365b3e3c | 210 | break; |
jackclar | 2:3299365b3e3c | 211 | case 0x2E: |
jackclar | 2:3299365b3e3c | 212 | name = "SELF_TEST"; |
jackclar | 2:3299365b3e3c | 213 | reg = ADXL362.SELF_TEST; |
jackclar | 2:3299365b3e3c | 214 | break; |
jackclar | 2:3299365b3e3c | 215 | } |
jackclar | 2:3299365b3e3c | 216 | pc.printf("0x%x: %s=0x%x\n\r", i, name, ADXL362.read_reg(reg)); |
jackclar | 0:1ca806626aba | 217 | } |
jackclar | 0:1ca806626aba | 218 | } |
jackclar | 0:1ca806626aba | 219 | else |
jackclar | 0:1ca806626aba | 220 | { |
jackclar | 0:1ca806626aba | 221 | pc.printf("Error"); |
jackclar | 2:3299365b3e3c | 222 | return(-1); |
jackclar | 2:3299365b3e3c | 223 | } |
jackclar | 2:3299365b3e3c | 224 | return(0); |
jackclar | 0:1ca806626aba | 225 | } |