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
00001 #include "mbed.h" 00002 #include "ADXL362.h" 00003 #include <string> 00004 #include <stdlib.h> 00005 00006 // Interface pulled from ADXL362.cpp 00007 // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : 00008 ADXL362 ADXL362(PA_0,PA_7,PA_6,PA_1); 00009 Serial pc(USBTX, USBRX); 00010 DigitalOut myled(LED3); 00011 00012 int ADXL362_reg_print(int start, int length); 00013 void ADXL362_knock_detect(); 00014 00015 int main() 00016 { 00017 ADXL362.reset(); 00018 wait_ms(600); // we need to wait at least 500ms after ADXL362 reset 00019 ADXL362.set_mode(ADXL362::MEASUREMENT); 00020 //ADXL362_knock_detect(); 00021 ADXL362_reg_print(0, 0); 00022 } 00023 00024 void ADXL362_knock_detect() 00025 { 00026 int8_t x1,y1,z1,x2,y2,z2,x,y,z; 00027 int i = 0; 00028 while(1) 00029 { 00030 00031 while(1) 00032 { 00033 x1=ADXL362.scanx_u8(); 00034 y1=ADXL362.scany_u8(); 00035 z1=ADXL362.scanz_u8(); 00036 wait_ms(10); 00037 x2=ADXL362.scanx_u8(); 00038 y2=ADXL362.scany_u8(); 00039 z2=ADXL362.scanz_u8(); 00040 00041 x=abs(x1 - x2); 00042 y=abs(y1 - y2); 00043 z=abs(z1 - z2); 00044 00045 if (x>7 || y>7 || z>20) 00046 break; 00047 00048 //printf("x = %d y = %d z = %d\r\n",x,y,z); 00049 //pc.printf("x = %d, y = %d, z = %d\r\n", x1, y1, z1); 00050 wait_ms(10); 00051 } 00052 00053 myled = 1; 00054 wait(2); 00055 myled = 0; 00056 i++; 00057 pc.printf("%d\r\n", i); 00058 00059 } 00060 } 00061 00062 int ADXL362_reg_print(int start, int length) 00063 { 00064 uint8_t i; 00065 std::string name; 00066 ADXL362::ADXL362_register_t reg; 00067 if(start >= 0x00 && start <= 0x2E && length >= 0x00 && (ADXL362.read_reg(ADXL362.DEVID_AD) == 0xAD)) 00068 { 00069 if(length == 0) 00070 { 00071 start = 0; 00072 length = 47; 00073 } 00074 00075 for(i = start; i < start + length; i++) 00076 { 00077 switch(i) 00078 { 00079 case 0x00: 00080 name = "DEVID_AD"; 00081 reg = ADXL362.DEVID_AD; 00082 break; 00083 case 0x01: 00084 name = "DEVID_MST"; 00085 reg = ADXL362.DEVID_MST; 00086 break; 00087 case 0x02: 00088 name = "PARTID"; 00089 reg = ADXL362.PARTID; 00090 break; 00091 case 0x03: 00092 name = "REVID"; 00093 reg = ADXL362.REVID; 00094 break; 00095 case 0x08: 00096 name = "XDATA"; 00097 reg = ADXL362.XDATA; 00098 break; 00099 case 0x09: 00100 name = "YDATA"; 00101 reg = ADXL362.YDATA; 00102 break; 00103 case 0x0A: 00104 name = "ZDATA"; 00105 reg = ADXL362.ZDATA; 00106 break; 00107 case 0x0B: 00108 name = "STATUS"; 00109 reg = ADXL362.STATUS; 00110 break; 00111 case 0x0C: 00112 name = "FIFO_ENTRIES_L"; 00113 reg = ADXL362.FIFO_ENTRIES_L; 00114 break; 00115 case 0x0D: 00116 name = "FIFO_ENTRIES_H"; 00117 reg = ADXL362.FIFO_ENTRIES_H; 00118 break; 00119 case 0x0E: 00120 name = "XDATA_L"; 00121 reg = ADXL362.XDATA_L; 00122 break; 00123 case 0x0F: 00124 name = "XDATA_H"; 00125 reg = ADXL362.XDATA_H; 00126 break; 00127 case 0x10: 00128 name = "YDATA_L"; 00129 reg = ADXL362.YDATA_L; 00130 break; 00131 case 0x11: 00132 name = "YDATA_H"; 00133 reg = ADXL362.YDATA_H; 00134 break; 00135 case 0x12: 00136 name = "ZDATA_L"; 00137 reg = ADXL362.ZDATA_L; 00138 break; 00139 case 0x13: 00140 name = "ZDATA_H"; 00141 reg = ADXL362.ZDATA_H; 00142 break; 00143 case 0x14: 00144 name = "TEMP_L"; 00145 reg = ADXL362.TEMP_L; 00146 break; 00147 case 0x15: 00148 name = "TEMP_H"; 00149 reg = ADXL362.TEMP_H; 00150 break; 00151 case 0x1F: 00152 name = "SOFT_RESET"; 00153 reg = ADXL362.SOFT_RESET; 00154 break; 00155 case 0x20: 00156 name = "THRESH_ACT_L"; 00157 reg = ADXL362.THRESH_ACT_L; 00158 break; 00159 case 0x21: 00160 name = "THRESH_ACT_H"; 00161 reg = ADXL362.THRESH_ACT_H; 00162 break; 00163 case 0x22: 00164 name = "TIME_ACT"; 00165 reg = ADXL362.TIME_ACT; 00166 break; 00167 case 0x23: 00168 name = "THRESH_INACT_L"; 00169 reg = ADXL362.THRESH_INACT_L; 00170 break; 00171 case 0x24: 00172 name = "THRESH_INACT_H"; 00173 reg = ADXL362.THRESH_INACT_H; 00174 break; 00175 case 0x25: 00176 name = "TIME_INACT_L"; 00177 reg = ADXL362.TIME_INACT_L; 00178 break; 00179 case 0x26: 00180 name = "TIME_INACT_H"; 00181 reg = ADXL362.TIME_INACT_H; 00182 break; 00183 case 0x27: 00184 name = "ACT_INACT_CTL"; 00185 reg = ADXL362.ACT_INACT_CTL; 00186 break; 00187 case 0x28: 00188 name = "FIFO_CONTROL"; 00189 reg = ADXL362.FIFO_CONTROL; 00190 break; 00191 case 0x29: 00192 name = "FIFO_SAMPLES"; 00193 reg = ADXL362.FIFO_SAMPLES; 00194 break; 00195 case 0x2A: 00196 name = "INTMAP1"; 00197 reg = ADXL362.INTMAP1; 00198 break; 00199 case 0x2B: 00200 name = "INTMAP2"; 00201 reg = ADXL362.INTMAP2; 00202 break; 00203 case 0x2C: 00204 name = "FILTER_CTL"; 00205 reg = ADXL362.FILTER_CTL; 00206 break; 00207 case 0x2D: 00208 name = "POWER_CTL"; 00209 reg = ADXL362.POWER_CTL; 00210 break; 00211 case 0x2E: 00212 name = "SELF_TEST"; 00213 reg = ADXL362.SELF_TEST; 00214 break; 00215 } 00216 pc.printf("0x%x: %s=0x%x\n\r", i, name, ADXL362.read_reg(reg)); 00217 } 00218 } 00219 else 00220 { 00221 pc.printf("Error"); 00222 return(-1); 00223 } 00224 return(0); 00225 }
Generated on Wed Jul 13 2022 17:25:41 by
1.7.2