Laboratory 6

Dependencies:   ADXL362 mbed

Committer:
jackclar
Date:
Fri Feb 23 16:48:58 2018 +0000
Revision:
4:a6069cbc4c71
Parent:
2:3299365b3e3c
v3

Who changed what in which revision?

UserRevisionLine numberNew 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 4:a6069cbc4c71 20 //ADXL362_knock_detect();
jackclar 4:a6069cbc4c71 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 4:a6069cbc4c71 67 if(start >= 0x00 && start <= 0x2E && length >= 0x00 && (ADXL362.read_reg(ADXL362.DEVID_AD) == 0xAD))
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 }