CPS-Lab
/
Lab6
Vibration Detector
main.cpp@0:7c6ad753eedb, 2018-03-10 (annotated)
- Committer:
- kmhatre
- Date:
- Sat Mar 10 01:54:03 2018 +0000
- Revision:
- 0:7c6ad753eedb
Vibration Detector
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kmhatre | 0:7c6ad753eedb | 1 | /* |
kmhatre | 0:7c6ad753eedb | 2 | * ENGR E 210 - CYBER PHYSICAL SYSTEMS (DIGITAL SYSTEMS) |
kmhatre | 0:7c6ad753eedb | 3 | * LAB 6 - VIBRATION DETECTOR |
kmhatre | 0:7c6ad753eedb | 4 | * CODE BY KRISH HEMANT MHATRE AND ETHAN ZHANG |
kmhatre | 0:7c6ad753eedb | 5 | */ |
kmhatre | 0:7c6ad753eedb | 6 | |
kmhatre | 0:7c6ad753eedb | 7 | #include "mbed.h" |
kmhatre | 0:7c6ad753eedb | 8 | #include "ADXL362.h" |
kmhatre | 0:7c6ad753eedb | 9 | |
kmhatre | 0:7c6ad753eedb | 10 | // Interface pulled from ADXL362.cpp |
kmhatre | 0:7c6ad753eedb | 11 | // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : |
kmhatre | 0:7c6ad753eedb | 12 | ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1); |
kmhatre | 0:7c6ad753eedb | 13 | DigitalOut led1(LED1); |
kmhatre | 0:7c6ad753eedb | 14 | int adxl362_reg_print(int start, int length); |
kmhatre | 0:7c6ad753eedb | 15 | |
kmhatre | 0:7c6ad753eedb | 16 | int main() { |
kmhatre | 0:7c6ad753eedb | 17 | adxl362.reset(); |
kmhatre | 0:7c6ad753eedb | 18 | wait_ms(600); // we need to wait at least 500ms after ADXL362 reset |
kmhatre | 0:7c6ad753eedb | 19 | adxl362.set_mode(ADXL362::MEASUREMENT); |
kmhatre | 0:7c6ad753eedb | 20 | int i = adxl362_reg_print(0, 50); |
kmhatre | 0:7c6ad753eedb | 21 | |
kmhatre | 0:7c6ad753eedb | 22 | /* int8_t x,y,z; |
kmhatre | 0:7c6ad753eedb | 23 | int knock = -2; |
kmhatre | 0:7c6ad753eedb | 24 | led1 = 0; |
kmhatre | 0:7c6ad753eedb | 25 | while(1) |
kmhatre | 0:7c6ad753eedb | 26 | { |
kmhatre | 0:7c6ad753eedb | 27 | if(!led1) |
kmhatre | 0:7c6ad753eedb | 28 | { |
kmhatre | 0:7c6ad753eedb | 29 | int a = x+y+z; |
kmhatre | 0:7c6ad753eedb | 30 | x=adxl362.scanx_u8(); |
kmhatre | 0:7c6ad753eedb | 31 | y=adxl362.scany_u8(); |
kmhatre | 0:7c6ad753eedb | 32 | z=adxl362.scanz_u8(); |
kmhatre | 0:7c6ad753eedb | 33 | int b = x+y+z; |
kmhatre | 0:7c6ad753eedb | 34 | printf("x = %d y = %d z = %d\r\n",x,y,z); |
kmhatre | 0:7c6ad753eedb | 35 | if(a-b > 2 || b-a > 2) |
kmhatre | 0:7c6ad753eedb | 36 | { |
kmhatre | 0:7c6ad753eedb | 37 | knock++; |
kmhatre | 0:7c6ad753eedb | 38 | led1 = 1; |
kmhatre | 0:7c6ad753eedb | 39 | } |
kmhatre | 0:7c6ad753eedb | 40 | printf("knocks = %d\r\n", knock); |
kmhatre | 0:7c6ad753eedb | 41 | wait_ms(400); |
kmhatre | 0:7c6ad753eedb | 42 | } |
kmhatre | 0:7c6ad753eedb | 43 | else |
kmhatre | 0:7c6ad753eedb | 44 | { |
kmhatre | 0:7c6ad753eedb | 45 | wait(2); |
kmhatre | 0:7c6ad753eedb | 46 | led1 = 0; |
kmhatre | 0:7c6ad753eedb | 47 | } |
kmhatre | 0:7c6ad753eedb | 48 | }*/ |
kmhatre | 0:7c6ad753eedb | 49 | |
kmhatre | 0:7c6ad753eedb | 50 | } |
kmhatre | 0:7c6ad753eedb | 51 | |
kmhatre | 0:7c6ad753eedb | 52 | |
kmhatre | 0:7c6ad753eedb | 53 | |
kmhatre | 0:7c6ad753eedb | 54 | int adxl362_reg_print(int start, int length) |
kmhatre | 0:7c6ad753eedb | 55 | { |
kmhatre | 0:7c6ad753eedb | 56 | int return_value = 0; |
kmhatre | 0:7c6ad753eedb | 57 | char *text; |
kmhatre | 0:7c6ad753eedb | 58 | int value, address; |
kmhatre | 0:7c6ad753eedb | 59 | if(start < 0x00 || start > 0x2E) |
kmhatre | 0:7c6ad753eedb | 60 | { |
kmhatre | 0:7c6ad753eedb | 61 | return_value = -1; |
kmhatre | 0:7c6ad753eedb | 62 | exit(0); |
kmhatre | 0:7c6ad753eedb | 63 | } |
kmhatre | 0:7c6ad753eedb | 64 | else |
kmhatre | 0:7c6ad753eedb | 65 | { |
kmhatre | 0:7c6ad753eedb | 66 | int i = start; |
kmhatre | 0:7c6ad753eedb | 67 | for(i = start; i < length; i++) |
kmhatre | 0:7c6ad753eedb | 68 | { |
kmhatre | 0:7c6ad753eedb | 69 | address = ADXL362::ADXL362_register_t(i); |
kmhatre | 0:7c6ad753eedb | 70 | if(i == 0) |
kmhatre | 0:7c6ad753eedb | 71 | { |
kmhatre | 0:7c6ad753eedb | 72 | text = "DEVID_AD"; |
kmhatre | 0:7c6ad753eedb | 73 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 74 | } |
kmhatre | 0:7c6ad753eedb | 75 | else if(i == 1) |
kmhatre | 0:7c6ad753eedb | 76 | { |
kmhatre | 0:7c6ad753eedb | 77 | text = "DEVID_MST"; |
kmhatre | 0:7c6ad753eedb | 78 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 79 | } |
kmhatre | 0:7c6ad753eedb | 80 | else if(i == 2) |
kmhatre | 0:7c6ad753eedb | 81 | { |
kmhatre | 0:7c6ad753eedb | 82 | text = "PARTID"; |
kmhatre | 0:7c6ad753eedb | 83 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 84 | } |
kmhatre | 0:7c6ad753eedb | 85 | else if(i == 3) |
kmhatre | 0:7c6ad753eedb | 86 | { |
kmhatre | 0:7c6ad753eedb | 87 | text = "REVID"; |
kmhatre | 0:7c6ad753eedb | 88 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 89 | } |
kmhatre | 0:7c6ad753eedb | 90 | else if(i == 8) |
kmhatre | 0:7c6ad753eedb | 91 | { |
kmhatre | 0:7c6ad753eedb | 92 | text = "XDATA"; |
kmhatre | 0:7c6ad753eedb | 93 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 94 | } |
kmhatre | 0:7c6ad753eedb | 95 | else if(i == 9) |
kmhatre | 0:7c6ad753eedb | 96 | { |
kmhatre | 0:7c6ad753eedb | 97 | text = "YDATA"; |
kmhatre | 0:7c6ad753eedb | 98 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 99 | } |
kmhatre | 0:7c6ad753eedb | 100 | else if(i == 10) |
kmhatre | 0:7c6ad753eedb | 101 | { |
kmhatre | 0:7c6ad753eedb | 102 | text = "ZDATA"; |
kmhatre | 0:7c6ad753eedb | 103 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 104 | } |
kmhatre | 0:7c6ad753eedb | 105 | else if(i == 11) |
kmhatre | 0:7c6ad753eedb | 106 | { |
kmhatre | 0:7c6ad753eedb | 107 | text = "STATUS"; |
kmhatre | 0:7c6ad753eedb | 108 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 109 | } |
kmhatre | 0:7c6ad753eedb | 110 | else if(i == 12) |
kmhatre | 0:7c6ad753eedb | 111 | { |
kmhatre | 0:7c6ad753eedb | 112 | text = "FIFO_ENTRIES_L"; |
kmhatre | 0:7c6ad753eedb | 113 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 114 | } |
kmhatre | 0:7c6ad753eedb | 115 | else if(i == 13) |
kmhatre | 0:7c6ad753eedb | 116 | { |
kmhatre | 0:7c6ad753eedb | 117 | text = "FIFO_ENTRIES_H"; |
kmhatre | 0:7c6ad753eedb | 118 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 119 | } |
kmhatre | 0:7c6ad753eedb | 120 | else if(i == 14) |
kmhatre | 0:7c6ad753eedb | 121 | { |
kmhatre | 0:7c6ad753eedb | 122 | text = "XDATA_L"; |
kmhatre | 0:7c6ad753eedb | 123 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 124 | } |
kmhatre | 0:7c6ad753eedb | 125 | else if(i == 15) |
kmhatre | 0:7c6ad753eedb | 126 | { |
kmhatre | 0:7c6ad753eedb | 127 | text = "XDATA_H"; |
kmhatre | 0:7c6ad753eedb | 128 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 129 | } |
kmhatre | 0:7c6ad753eedb | 130 | else if(i == 16) |
kmhatre | 0:7c6ad753eedb | 131 | { |
kmhatre | 0:7c6ad753eedb | 132 | text = "YDATA_L"; |
kmhatre | 0:7c6ad753eedb | 133 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 134 | } |
kmhatre | 0:7c6ad753eedb | 135 | else if(i == 17) |
kmhatre | 0:7c6ad753eedb | 136 | { |
kmhatre | 0:7c6ad753eedb | 137 | text = "YDATA_H"; |
kmhatre | 0:7c6ad753eedb | 138 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 139 | } |
kmhatre | 0:7c6ad753eedb | 140 | else if(i == 18) |
kmhatre | 0:7c6ad753eedb | 141 | { |
kmhatre | 0:7c6ad753eedb | 142 | text = "ZDATA_L"; |
kmhatre | 0:7c6ad753eedb | 143 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 144 | } |
kmhatre | 0:7c6ad753eedb | 145 | else if(i == 19) |
kmhatre | 0:7c6ad753eedb | 146 | { |
kmhatre | 0:7c6ad753eedb | 147 | text = "ZDATA_H"; |
kmhatre | 0:7c6ad753eedb | 148 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 149 | } |
kmhatre | 0:7c6ad753eedb | 150 | else if(i == 20) |
kmhatre | 0:7c6ad753eedb | 151 | { |
kmhatre | 0:7c6ad753eedb | 152 | text = "TEMP_L"; |
kmhatre | 0:7c6ad753eedb | 153 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 154 | } |
kmhatre | 0:7c6ad753eedb | 155 | else if(i == 21) |
kmhatre | 0:7c6ad753eedb | 156 | { |
kmhatre | 0:7c6ad753eedb | 157 | text = "TEMP_H"; |
kmhatre | 0:7c6ad753eedb | 158 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 159 | } |
kmhatre | 0:7c6ad753eedb | 160 | else if(i == 31) |
kmhatre | 0:7c6ad753eedb | 161 | { |
kmhatre | 0:7c6ad753eedb | 162 | text = "SOFT_RESET"; |
kmhatre | 0:7c6ad753eedb | 163 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 164 | } |
kmhatre | 0:7c6ad753eedb | 165 | else if(i == 32) |
kmhatre | 0:7c6ad753eedb | 166 | { |
kmhatre | 0:7c6ad753eedb | 167 | text = "THRESH_ACT_L"; |
kmhatre | 0:7c6ad753eedb | 168 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 169 | } |
kmhatre | 0:7c6ad753eedb | 170 | else if(i == 33) |
kmhatre | 0:7c6ad753eedb | 171 | { |
kmhatre | 0:7c6ad753eedb | 172 | text = "THRESH_ACT_H"; |
kmhatre | 0:7c6ad753eedb | 173 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 174 | } |
kmhatre | 0:7c6ad753eedb | 175 | else if(i == 34) |
kmhatre | 0:7c6ad753eedb | 176 | { |
kmhatre | 0:7c6ad753eedb | 177 | text = "TIME_ACT"; |
kmhatre | 0:7c6ad753eedb | 178 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 179 | } |
kmhatre | 0:7c6ad753eedb | 180 | else if(i == 35) |
kmhatre | 0:7c6ad753eedb | 181 | { |
kmhatre | 0:7c6ad753eedb | 182 | text = "THREST_INACT_L"; |
kmhatre | 0:7c6ad753eedb | 183 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 184 | } |
kmhatre | 0:7c6ad753eedb | 185 | else if(i == 36) |
kmhatre | 0:7c6ad753eedb | 186 | { |
kmhatre | 0:7c6ad753eedb | 187 | text = "THRESH_INACT_H"; |
kmhatre | 0:7c6ad753eedb | 188 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 189 | } |
kmhatre | 0:7c6ad753eedb | 190 | else if(i == 37) |
kmhatre | 0:7c6ad753eedb | 191 | { |
kmhatre | 0:7c6ad753eedb | 192 | text = "TIME_INACT_L"; |
kmhatre | 0:7c6ad753eedb | 193 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 194 | } |
kmhatre | 0:7c6ad753eedb | 195 | else if(i == 38) |
kmhatre | 0:7c6ad753eedb | 196 | { |
kmhatre | 0:7c6ad753eedb | 197 | text = "TIME_INACT_H"; |
kmhatre | 0:7c6ad753eedb | 198 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 199 | } |
kmhatre | 0:7c6ad753eedb | 200 | else if(i == 39) |
kmhatre | 0:7c6ad753eedb | 201 | { |
kmhatre | 0:7c6ad753eedb | 202 | text = "ACT_INACT_CTL"; |
kmhatre | 0:7c6ad753eedb | 203 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 204 | } |
kmhatre | 0:7c6ad753eedb | 205 | else if(i == 40) |
kmhatre | 0:7c6ad753eedb | 206 | { |
kmhatre | 0:7c6ad753eedb | 207 | text = "FIFO_CONTROL"; |
kmhatre | 0:7c6ad753eedb | 208 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 209 | } |
kmhatre | 0:7c6ad753eedb | 210 | else if(i == 41) |
kmhatre | 0:7c6ad753eedb | 211 | { |
kmhatre | 0:7c6ad753eedb | 212 | text = "FIFO_SAMPLES"; |
kmhatre | 0:7c6ad753eedb | 213 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 214 | } |
kmhatre | 0:7c6ad753eedb | 215 | else if(i == 42) |
kmhatre | 0:7c6ad753eedb | 216 | { |
kmhatre | 0:7c6ad753eedb | 217 | text = "INTMAP1"; |
kmhatre | 0:7c6ad753eedb | 218 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 219 | } |
kmhatre | 0:7c6ad753eedb | 220 | else if(i == 43) |
kmhatre | 0:7c6ad753eedb | 221 | { |
kmhatre | 0:7c6ad753eedb | 222 | text = "INTMAP2"; |
kmhatre | 0:7c6ad753eedb | 223 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 224 | } |
kmhatre | 0:7c6ad753eedb | 225 | else if(i == 44) |
kmhatre | 0:7c6ad753eedb | 226 | { |
kmhatre | 0:7c6ad753eedb | 227 | text = "FILTER_CTL"; |
kmhatre | 0:7c6ad753eedb | 228 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 229 | } |
kmhatre | 0:7c6ad753eedb | 230 | else if(i == 45) |
kmhatre | 0:7c6ad753eedb | 231 | { |
kmhatre | 0:7c6ad753eedb | 232 | text = "POWER_CTL"; |
kmhatre | 0:7c6ad753eedb | 233 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 234 | } |
kmhatre | 0:7c6ad753eedb | 235 | else if(i == 46) |
kmhatre | 0:7c6ad753eedb | 236 | { |
kmhatre | 0:7c6ad753eedb | 237 | text = "SELF_TEXT"; |
kmhatre | 0:7c6ad753eedb | 238 | value = (adxl362.read_reg((ADXL362::ADXL362_register_t(i)))); |
kmhatre | 0:7c6ad753eedb | 239 | } |
kmhatre | 0:7c6ad753eedb | 240 | else |
kmhatre | 0:7c6ad753eedb | 241 | { |
kmhatre | 0:7c6ad753eedb | 242 | text = "NULL"; |
kmhatre | 0:7c6ad753eedb | 243 | value = NULL; |
kmhatre | 0:7c6ad753eedb | 244 | } |
kmhatre | 0:7c6ad753eedb | 245 | if(i <= 46 && text != "NULL") |
kmhatre | 0:7c6ad753eedb | 246 | { |
kmhatre | 0:7c6ad753eedb | 247 | printf("0x%2.2hhX: %s=0x%2.2hhX \n\r", address, text, value); |
kmhatre | 0:7c6ad753eedb | 248 | } |
kmhatre | 0:7c6ad753eedb | 249 | } |
kmhatre | 0:7c6ad753eedb | 250 | } |
kmhatre | 0:7c6ad753eedb | 251 | |
kmhatre | 0:7c6ad753eedb | 252 | return return_value; |
kmhatre | 0:7c6ad753eedb | 253 | } |