lab5

Dependencies:   ADXL362

Committer:
m0t0
Date:
Fri Mar 02 18:06:26 2018 +0000
Revision:
1:839c14f3143c
Parent:
0:cf970e75e1ae
lab6;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kfricker 0:cf970e75e1ae 1 #include "mbed.h"
kfricker 0:cf970e75e1ae 2 #include "ADXL362.h"
kfricker 0:cf970e75e1ae 3 DigitalOut led1(LED1);
kfricker 0:cf970e75e1ae 4
kfricker 0:cf970e75e1ae 5 // Interface pulled from ADXL362.cpp
kfricker 0:cf970e75e1ae 6 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
kfricker 0:cf970e75e1ae 7 ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
kfricker 0:cf970e75e1ae 8
m0t0 1:839c14f3143c 9
m0t0 1:839c14f3143c 10
kfricker 0:cf970e75e1ae 11 int adxl362_reg_print(int start, int length){
m0t0 1:839c14f3143c 12 typedef enum {
m0t0 1:839c14f3143c 13 DEVID_AD = 0x00,
m0t0 1:839c14f3143c 14 DEVID_MST = 0x01,
m0t0 1:839c14f3143c 15 PARTID = 0x02,
m0t0 1:839c14f3143c 16 REVID = 0x03,
m0t0 1:839c14f3143c 17 XDATA = 0x08,
m0t0 1:839c14f3143c 18 YDATA = 0x09,
m0t0 1:839c14f3143c 19 ZDATA = 0x0A,
m0t0 1:839c14f3143c 20 STATUS = 0x0B,
m0t0 1:839c14f3143c 21 FIFO_ENTRIES_L = 0x0C,
m0t0 1:839c14f3143c 22 FIFO_ENTRIES_H = 0x0D,
m0t0 1:839c14f3143c 23 XDATA_L = 0x0E,
m0t0 1:839c14f3143c 24 XDATA_H = 0x0F,
m0t0 1:839c14f3143c 25 YDATA_L = 0x10,
m0t0 1:839c14f3143c 26 YDATA_H = 0x11,
m0t0 1:839c14f3143c 27 ZDATA_L = 0x12,
m0t0 1:839c14f3143c 28 ZDATA_H = 0x13,
m0t0 1:839c14f3143c 29 TEMP_L = 0x14,
m0t0 1:839c14f3143c 30 TEMP_H = 0x15,
m0t0 1:839c14f3143c 31 // Reserved = 0x16;
m0t0 1:839c14f3143c 32 // Reserved = 0x17;
m0t0 1:839c14f3143c 33 SOFT_RESET = 0x1F,
m0t0 1:839c14f3143c 34 THRESH_ACT_L = 0x20,
m0t0 1:839c14f3143c 35 THRESH_ACT_H = 0x21,
m0t0 1:839c14f3143c 36 TIME_ACT = 0x22,
m0t0 1:839c14f3143c 37 THRESH_INACT_L = 0x23,
m0t0 1:839c14f3143c 38 THRESH_INACT_H = 0x24,
m0t0 1:839c14f3143c 39 TIME_INACT_L = 0x25,
m0t0 1:839c14f3143c 40 TIME_INACT_H = 0x26,
m0t0 1:839c14f3143c 41 ACT_INACT_CTL = 0x27,
m0t0 1:839c14f3143c 42 FIFO_CONTROL = 0x28,
m0t0 1:839c14f3143c 43 FIFO_SAMPLES = 0x29,
m0t0 1:839c14f3143c 44 INTMAP1 = 0x2A,
m0t0 1:839c14f3143c 45 INTMAP2 = 0x2B,
m0t0 1:839c14f3143c 46 FILTER_CTL = 0x2C,
m0t0 1:839c14f3143c 47 POWER_CTL = 0x2D,
m0t0 1:839c14f3143c 48 SELF_TEST = 0x2E,
m0t0 1:839c14f3143c 49 } ADXL362_register_t;
m0t0 1:839c14f3143c 50
m0t0 1:839c14f3143c 51 char *regnames[34] = {"DEVID_AD","DEVID_MST","PARTID","REVID","XDATA","YDATA","ZDATA","STATUS","FIFO_ENTRIES_L",
m0t0 1:839c14f3143c 52 "FIFO_ENTRIES_H","XDATA_L","XDATA_H","YDATA_L","YDATA_H","ZDATA_L","ZDATA_H","TEMP_L",
m0t0 1:839c14f3143c 53 "TEMP_H","SOFT_RESET","THRESH_ACT_L","THRESH_ACT_H","TIME_ACT","THRESH_INACT_L","THRESH_INACT_H","TIME_INACT_L","TIME_INACT_H",
m0t0 1:839c14f3143c 54 "ACT_INACT_CTL","FIFO_CONTROL","FIFO_SAMPLES","INTMAP1","INTMAP2","FILTER_CTL","POWER_CTL",
m0t0 1:839c14f3143c 55 "SELF_TEST"};
m0t0 1:839c14f3143c 56 int val1[34] = { 0x00, 0x01,0x02,0x03,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E};
m0t0 1:839c14f3143c 57 if(0x00<=start && start <=0x2E){
m0t0 1:839c14f3143c 58 if(length>0){
m0t0 1:839c14f3143c 59 int j = 0;
m0t0 1:839c14f3143c 60 //uint8_t adreg = read_reg(ADXL362::DEVID_AD);
m0t0 1:839c14f3143c 61 for(int x = start; x<=length; x++){
m0t0 1:839c14f3143c 62 int val = val1[x];
m0t0 1:839c14f3143c 63 switch(val){
m0t0 1:839c14f3143c 64 case(ADXL362::DEVID_AD):
m0t0 1:839c14f3143c 65 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x],val);
m0t0 1:839c14f3143c 66 break;
m0t0 1:839c14f3143c 67 case(ADXL362::DEVID_MST):
m0t0 1:839c14f3143c 68 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 69 break;
m0t0 1:839c14f3143c 70 case(ADXL362::PARTID):
m0t0 1:839c14f3143c 71 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 72 break;
m0t0 1:839c14f3143c 73 case(ADXL362::REVID):
m0t0 1:839c14f3143c 74 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 75 break;
m0t0 1:839c14f3143c 76 case(ADXL362::XDATA):
m0t0 1:839c14f3143c 77 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 78 break;
m0t0 1:839c14f3143c 79 case(ADXL362::YDATA):
m0t0 1:839c14f3143c 80 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 81 break;
m0t0 1:839c14f3143c 82 case(ADXL362::ZDATA):
m0t0 1:839c14f3143c 83 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 84 break;
m0t0 1:839c14f3143c 85 case(ADXL362::STATUS):
m0t0 1:839c14f3143c 86 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 87 break;
m0t0 1:839c14f3143c 88 case(ADXL362::FIFO_ENTRIES_L):
m0t0 1:839c14f3143c 89 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 90 break;
m0t0 1:839c14f3143c 91 case(ADXL362::FIFO_ENTRIES_H):
m0t0 1:839c14f3143c 92 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 93 break;
m0t0 1:839c14f3143c 94 case(ADXL362::XDATA_L):
m0t0 1:839c14f3143c 95 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 96 break;
m0t0 1:839c14f3143c 97 case(ADXL362::XDATA_H):
m0t0 1:839c14f3143c 98 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 99 break;
m0t0 1:839c14f3143c 100 case(ADXL362::YDATA_L):
m0t0 1:839c14f3143c 101 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 102 break;
m0t0 1:839c14f3143c 103 case(ADXL362::YDATA_H):
m0t0 1:839c14f3143c 104 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 105 break;
m0t0 1:839c14f3143c 106 case(ADXL362::ZDATA_L):
m0t0 1:839c14f3143c 107 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 108 break;
m0t0 1:839c14f3143c 109 case(ADXL362::ZDATA_H):
m0t0 1:839c14f3143c 110 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 111 break;
m0t0 1:839c14f3143c 112 case(ADXL362::TEMP_L):
m0t0 1:839c14f3143c 113 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 114 break;
m0t0 1:839c14f3143c 115 case(ADXL362::TEMP_H):
m0t0 1:839c14f3143c 116 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 117 break;
m0t0 1:839c14f3143c 118 case(ADXL362::SOFT_RESET):
m0t0 1:839c14f3143c 119 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 120 break;
m0t0 1:839c14f3143c 121 case(ADXL362::THRESH_ACT_L):
m0t0 1:839c14f3143c 122 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 123 break;
m0t0 1:839c14f3143c 124 case(ADXL362::THRESH_ACT_H):
m0t0 1:839c14f3143c 125 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 126 break;
m0t0 1:839c14f3143c 127 case(ADXL362::TIME_ACT):
m0t0 1:839c14f3143c 128 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 129 break;
m0t0 1:839c14f3143c 130 case(ADXL362::THRESH_INACT_L):
m0t0 1:839c14f3143c 131 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 132 break;
m0t0 1:839c14f3143c 133 case(ADXL362::THRESH_INACT_H):
m0t0 1:839c14f3143c 134 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 135 break;
m0t0 1:839c14f3143c 136 case(ADXL362::TIME_INACT_L):
m0t0 1:839c14f3143c 137 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 138 break;
m0t0 1:839c14f3143c 139 case(ADXL362::TIME_INACT_H):
m0t0 1:839c14f3143c 140 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 141 break;
m0t0 1:839c14f3143c 142 case(ADXL362::ACT_INACT_CTL):
m0t0 1:839c14f3143c 143 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 144 break;
m0t0 1:839c14f3143c 145 case(ADXL362::INTMAP1):
m0t0 1:839c14f3143c 146 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 147 break;
m0t0 1:839c14f3143c 148 case(ADXL362::INTMAP2):
m0t0 1:839c14f3143c 149 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 150 break;
m0t0 1:839c14f3143c 151 case(ADXL362::FILTER_CTL):
m0t0 1:839c14f3143c 152 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 153 break;
m0t0 1:839c14f3143c 154 case(ADXL362::POWER_CTL):
m0t0 1:839c14f3143c 155 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 156 break;
m0t0 1:839c14f3143c 157 case(ADXL362::SELF_TEST):
m0t0 1:839c14f3143c 158 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 159 break;
m0t0 1:839c14f3143c 160 case(ADXL362::FIFO_CONTROL):
m0t0 1:839c14f3143c 161 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 162 break;
m0t0 1:839c14f3143c 163 case(ADXL362::FIFO_SAMPLES):
m0t0 1:839c14f3143c 164 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 165 break;
m0t0 1:839c14f3143c 166 default: printf("test%0x", val);
m0t0 1:839c14f3143c 167 }
m0t0 1:839c14f3143c 168 j++;
m0t0 1:839c14f3143c 169 }
m0t0 1:839c14f3143c 170 }
m0t0 1:839c14f3143c 171 else if(length==0){
m0t0 1:839c14f3143c 172 int j = 0;
m0t0 1:839c14f3143c 173 //uint8_t adreg = read_reg(ADXL362::DEVID_AD);
m0t0 1:839c14f3143c 174 for(int x = start; x<34; x++){
m0t0 1:839c14f3143c 175 int val=val1[x];
m0t0 1:839c14f3143c 176 //printf("> %0x: %s=%0x \n\r", x, regnames[x],val);
m0t0 1:839c14f3143c 177 switch(val){
m0t0 1:839c14f3143c 178 case(ADXL362::DEVID_AD):
m0t0 1:839c14f3143c 179 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x],val);
m0t0 1:839c14f3143c 180 break;
m0t0 1:839c14f3143c 181 case(ADXL362::DEVID_MST):
m0t0 1:839c14f3143c 182 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 183 break;
m0t0 1:839c14f3143c 184 case(ADXL362::PARTID):
m0t0 1:839c14f3143c 185 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 186 break;
m0t0 1:839c14f3143c 187 case(ADXL362::REVID):
m0t0 1:839c14f3143c 188 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 189 break;
m0t0 1:839c14f3143c 190 case(ADXL362::XDATA):
m0t0 1:839c14f3143c 191 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 192 break;
m0t0 1:839c14f3143c 193 case(ADXL362::YDATA):
m0t0 1:839c14f3143c 194 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 195 break;
m0t0 1:839c14f3143c 196 case(ADXL362::ZDATA):
m0t0 1:839c14f3143c 197 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 198 break;
m0t0 1:839c14f3143c 199 case(ADXL362::STATUS):
m0t0 1:839c14f3143c 200 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 201 break;
m0t0 1:839c14f3143c 202 case(ADXL362::FIFO_ENTRIES_L):
m0t0 1:839c14f3143c 203 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 204 break;
m0t0 1:839c14f3143c 205 case(ADXL362::FIFO_ENTRIES_H):
m0t0 1:839c14f3143c 206 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 207 break;
m0t0 1:839c14f3143c 208 case(ADXL362::XDATA_L):
m0t0 1:839c14f3143c 209 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 210 break;
m0t0 1:839c14f3143c 211 case(ADXL362::XDATA_H):
m0t0 1:839c14f3143c 212 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 213 break;
m0t0 1:839c14f3143c 214 case(ADXL362::YDATA_L):
m0t0 1:839c14f3143c 215 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 216 break;
m0t0 1:839c14f3143c 217 case(ADXL362::YDATA_H):
m0t0 1:839c14f3143c 218 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 219 break;
m0t0 1:839c14f3143c 220 case(ADXL362::ZDATA_L):
m0t0 1:839c14f3143c 221 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 222 break;
m0t0 1:839c14f3143c 223 case(ADXL362::ZDATA_H):
m0t0 1:839c14f3143c 224 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 225 break;
m0t0 1:839c14f3143c 226 case(ADXL362::TEMP_L):
m0t0 1:839c14f3143c 227 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 228 break;
m0t0 1:839c14f3143c 229 case(ADXL362::TEMP_H):
m0t0 1:839c14f3143c 230 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 231 break;
m0t0 1:839c14f3143c 232 case(ADXL362::SOFT_RESET):
m0t0 1:839c14f3143c 233 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 234 break;
m0t0 1:839c14f3143c 235 case(ADXL362::THRESH_ACT_L):
m0t0 1:839c14f3143c 236 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 237 break;
m0t0 1:839c14f3143c 238 case(ADXL362::THRESH_ACT_H):
m0t0 1:839c14f3143c 239 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 240 break;
m0t0 1:839c14f3143c 241 case(ADXL362::TIME_ACT):
m0t0 1:839c14f3143c 242 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 243 break;
m0t0 1:839c14f3143c 244 case(ADXL362::THRESH_INACT_L):
m0t0 1:839c14f3143c 245 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 246 break;
m0t0 1:839c14f3143c 247 case(ADXL362::THRESH_INACT_H):
m0t0 1:839c14f3143c 248 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 249 break;
m0t0 1:839c14f3143c 250 case(ADXL362::TIME_INACT_L):
m0t0 1:839c14f3143c 251 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 252 break;
m0t0 1:839c14f3143c 253 case(ADXL362::TIME_INACT_H):
m0t0 1:839c14f3143c 254 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 255 break;
m0t0 1:839c14f3143c 256 case(ADXL362::ACT_INACT_CTL):
m0t0 1:839c14f3143c 257 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 258 break;
m0t0 1:839c14f3143c 259 case(ADXL362::INTMAP1):
m0t0 1:839c14f3143c 260 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 261 break;
m0t0 1:839c14f3143c 262 case(ADXL362::INTMAP2):
m0t0 1:839c14f3143c 263 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 264 break;
m0t0 1:839c14f3143c 265 case(ADXL362::FILTER_CTL):
m0t0 1:839c14f3143c 266 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 267 break;
m0t0 1:839c14f3143c 268 case(ADXL362::POWER_CTL):
m0t0 1:839c14f3143c 269 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 270 break;
m0t0 1:839c14f3143c 271 case(ADXL362::SELF_TEST):
m0t0 1:839c14f3143c 272 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 273 break;
m0t0 1:839c14f3143c 274 case(ADXL362::FIFO_CONTROL):
m0t0 1:839c14f3143c 275 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 276 break;
m0t0 1:839c14f3143c 277 case(ADXL362::FIFO_SAMPLES):
m0t0 1:839c14f3143c 278 printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
m0t0 1:839c14f3143c 279 break;
m0t0 1:839c14f3143c 280
m0t0 1:839c14f3143c 281 default: printf("MISSING: test%0x\n\r", val);
m0t0 1:839c14f3143c 282 }
m0t0 1:839c14f3143c 283 j++;
kfricker 0:cf970e75e1ae 284 }
m0t0 1:839c14f3143c 285 }
m0t0 1:839c14f3143c 286 else{
m0t0 1:839c14f3143c 287 free(regnames);
m0t0 1:839c14f3143c 288 return 1;
m0t0 1:839c14f3143c 289 }
m0t0 1:839c14f3143c 290 free(regnames);
m0t0 1:839c14f3143c 291 return 0;
m0t0 1:839c14f3143c 292 }
m0t0 1:839c14f3143c 293 else{
m0t0 1:839c14f3143c 294 free(regnames);
m0t0 1:839c14f3143c 295 return 1;
kfricker 0:cf970e75e1ae 296 }
kfricker 0:cf970e75e1ae 297
kfricker 0:cf970e75e1ae 298 }
kfricker 0:cf970e75e1ae 299
m0t0 1:839c14f3143c 300
kfricker 0:cf970e75e1ae 301 int main() {
kfricker 0:cf970e75e1ae 302 adxl362.reset();
kfricker 0:cf970e75e1ae 303 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
kfricker 0:cf970e75e1ae 304 adxl362.set_mode(ADXL362::MEASUREMENT);
kfricker 0:cf970e75e1ae 305 int8_t x,y,z;
kfricker 0:cf970e75e1ae 306
kfricker 0:cf970e75e1ae 307 int8_t current [3] = {0,0,0};
kfricker 0:cf970e75e1ae 308 int8_t accel [3] = {0,0,0};
kfricker 0:cf970e75e1ae 309 int8_t currAdd;
kfricker 0:cf970e75e1ae 310 int8_t diffAdd;
kfricker 0:cf970e75e1ae 311 float threshold = 2;
kfricker 0:cf970e75e1ae 312 float val;
kfricker 0:cf970e75e1ae 313 int knock_counter = 0;
kfricker 0:cf970e75e1ae 314
kfricker 0:cf970e75e1ae 315 while(1) {
kfricker 0:cf970e75e1ae 316 x=adxl362.scanx_u8();
kfricker 0:cf970e75e1ae 317 y=adxl362.scany_u8();
kfricker 0:cf970e75e1ae 318 z=adxl362.scanz_u8();
kfricker 0:cf970e75e1ae 319 current [0] = x;
kfricker 0:cf970e75e1ae 320 current [1] = y;
kfricker 0:cf970e75e1ae 321 current [2] = z;
kfricker 0:cf970e75e1ae 322 currAdd = abs(current[0] + current [1] + current [2]);
kfricker 0:cf970e75e1ae 323 wait_ms(10);
kfricker 0:cf970e75e1ae 324 x=adxl362.scanx_u8();
kfricker 0:cf970e75e1ae 325 y=adxl362.scany_u8();
kfricker 0:cf970e75e1ae 326 z=adxl362.scanz_u8();
kfricker 0:cf970e75e1ae 327 accel[0] = x;
kfricker 0:cf970e75e1ae 328 accel[1] = y;
kfricker 0:cf970e75e1ae 329 accel[2] = z;
kfricker 0:cf970e75e1ae 330 diffAdd = abs(accel[0] + accel [1] + accel [2]);
kfricker 0:cf970e75e1ae 331 wait_ms(10);
kfricker 0:cf970e75e1ae 332 val = abs(currAdd - diffAdd);
kfricker 0:cf970e75e1ae 333
kfricker 0:cf970e75e1ae 334 if(val > threshold){
m0t0 1:839c14f3143c 335 printf("\n\r A knock has been heard ma dude\r\n");
m0t0 1:839c14f3143c 336 printf("Knocks = %d\r\n" , knock_counter);
kfricker 0:cf970e75e1ae 337 knock_counter ++;
kfricker 0:cf970e75e1ae 338 led1 = 1;
kfricker 0:cf970e75e1ae 339 wait_ms(2000);
kfricker 0:cf970e75e1ae 340 led1 = 0;
kfricker 0:cf970e75e1ae 341 }
kfricker 0:cf970e75e1ae 342 // printf("x = %d y = %d z = %d\r\n",x,y,z);
m0t0 1:839c14f3143c 343 //wait_ms(1000);
kfricker 0:cf970e75e1ae 344
m0t0 1:839c14f3143c 345 // adxl362_reg_print(0, 0);
kfricker 0:cf970e75e1ae 346 }
kfricker 0:cf970e75e1ae 347 }