CPS-Lab*
/
Lab6
Laboratory 6
main.cpp
- Committer:
- jackclar
- Date:
- 2018-02-22
- Revision:
- 2:3299365b3e3c
- Parent:
- 0:1ca806626aba
- Child:
- 4:a6069cbc4c71
File content as of revision 2:3299365b3e3c:
#include "mbed.h" #include "ADXL362.h" #include <string> #include <stdlib.h> // Interface pulled from ADXL362.cpp // ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) : ADXL362 ADXL362(PA_0,PA_7,PA_6,PA_1); Serial pc(USBTX, USBRX); DigitalOut myled(LED3); int ADXL362_reg_print(int start, int length); void ADXL362_knock_detect(); int main() { ADXL362.reset(); wait_ms(600); // we need to wait at least 500ms after ADXL362 reset ADXL362.set_mode(ADXL362::MEASUREMENT); ADXL362_knock_detect(); //ADXL362_reg_print(0, 0); } void ADXL362_knock_detect() { int8_t x1,y1,z1,x2,y2,z2,x,y,z; int i = 0; while(1) { while(1) { x1=ADXL362.scanx_u8(); y1=ADXL362.scany_u8(); z1=ADXL362.scanz_u8(); wait_ms(10); x2=ADXL362.scanx_u8(); y2=ADXL362.scany_u8(); z2=ADXL362.scanz_u8(); x=abs(x1 - x2); y=abs(y1 - y2); z=abs(z1 - z2); if (x>7 || y>7 || z>20) break; //printf("x = %d y = %d z = %d\r\n",x,y,z); //pc.printf("x = %d, y = %d, z = %d\r\n", x1, y1, z1); wait_ms(10); } myled = 1; wait(2); myled = 0; i++; pc.printf("%d\r\n", i); } } int ADXL362_reg_print(int start, int length) { uint8_t i; std::string name; ADXL362::ADXL362_register_t reg; if(start >= 0x00 && start <= 0x2E && length >= 0x00 && (ADXL362.read_reg(ADXL362.DEVID_AD) == 0xAC)) { if(length == 0) { start = 0; length = 47; } for(i = start; i < start + length; i++) { switch(i) { case 0x00: name = "DEVID_AD"; reg = ADXL362.DEVID_AD; break; case 0x01: name = "DEVID_MST"; reg = ADXL362.DEVID_MST; break; case 0x02: name = "PARTID"; reg = ADXL362.PARTID; break; case 0x03: name = "REVID"; reg = ADXL362.REVID; break; case 0x08: name = "XDATA"; reg = ADXL362.XDATA; break; case 0x09: name = "YDATA"; reg = ADXL362.YDATA; break; case 0x0A: name = "ZDATA"; reg = ADXL362.ZDATA; break; case 0x0B: name = "STATUS"; reg = ADXL362.STATUS; break; case 0x0C: name = "FIFO_ENTRIES_L"; reg = ADXL362.FIFO_ENTRIES_L; break; case 0x0D: name = "FIFO_ENTRIES_H"; reg = ADXL362.FIFO_ENTRIES_H; break; case 0x0E: name = "XDATA_L"; reg = ADXL362.XDATA_L; break; case 0x0F: name = "XDATA_H"; reg = ADXL362.XDATA_H; break; case 0x10: name = "YDATA_L"; reg = ADXL362.YDATA_L; break; case 0x11: name = "YDATA_H"; reg = ADXL362.YDATA_H; break; case 0x12: name = "ZDATA_L"; reg = ADXL362.ZDATA_L; break; case 0x13: name = "ZDATA_H"; reg = ADXL362.ZDATA_H; break; case 0x14: name = "TEMP_L"; reg = ADXL362.TEMP_L; break; case 0x15: name = "TEMP_H"; reg = ADXL362.TEMP_H; break; case 0x1F: name = "SOFT_RESET"; reg = ADXL362.SOFT_RESET; break; case 0x20: name = "THRESH_ACT_L"; reg = ADXL362.THRESH_ACT_L; break; case 0x21: name = "THRESH_ACT_H"; reg = ADXL362.THRESH_ACT_H; break; case 0x22: name = "TIME_ACT"; reg = ADXL362.TIME_ACT; break; case 0x23: name = "THRESH_INACT_L"; reg = ADXL362.THRESH_INACT_L; break; case 0x24: name = "THRESH_INACT_H"; reg = ADXL362.THRESH_INACT_H; break; case 0x25: name = "TIME_INACT_L"; reg = ADXL362.TIME_INACT_L; break; case 0x26: name = "TIME_INACT_H"; reg = ADXL362.TIME_INACT_H; break; case 0x27: name = "ACT_INACT_CTL"; reg = ADXL362.ACT_INACT_CTL; break; case 0x28: name = "FIFO_CONTROL"; reg = ADXL362.FIFO_CONTROL; break; case 0x29: name = "FIFO_SAMPLES"; reg = ADXL362.FIFO_SAMPLES; break; case 0x2A: name = "INTMAP1"; reg = ADXL362.INTMAP1; break; case 0x2B: name = "INTMAP2"; reg = ADXL362.INTMAP2; break; case 0x2C: name = "FILTER_CTL"; reg = ADXL362.FILTER_CTL; break; case 0x2D: name = "POWER_CTL"; reg = ADXL362.POWER_CTL; break; case 0x2E: name = "SELF_TEST"; reg = ADXL362.SELF_TEST; break; } pc.printf("0x%x: %s=0x%x\n\r", i, name, ADXL362.read_reg(reg)); } } else { pc.printf("Error"); return(-1); } return(0); }