lab5
Dependencies: ADXL362
Revision 1:839c14f3143c, committed 2018-03-02
- Comitter:
- m0t0
- Date:
- Fri Mar 02 18:06:26 2018 +0000
- Parent:
- 0:cf970e75e1ae
- Commit message:
- lab6;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Feb 26 01:39:55 2018 +0000
+++ b/main.cpp Fri Mar 02 18:06:26 2018 +0000
@@ -6,21 +6,298 @@
// ADXL362::ADXL362(PinName CS, PinName MOSI, PinName MISO, PinName SCK) :
ADXL362 adxl362(PA_0,PA_7,PA_6,PA_1);
+
+
int adxl362_reg_print(int start, int length){
- for(int x = 0x00; x<=0x2E; x++){
- if(start==x){
- if(length>0){
- if(ADXL362::DEVID_AD==0xAD){
- uint16_t return_val = adxl362.read_reg(ADXL362::DEVID_AD);
+ typedef enum {
+ DEVID_AD = 0x00,
+ DEVID_MST = 0x01,
+ PARTID = 0x02,
+ REVID = 0x03,
+ XDATA = 0x08,
+ YDATA = 0x09,
+ ZDATA = 0x0A,
+ STATUS = 0x0B,
+ FIFO_ENTRIES_L = 0x0C,
+ FIFO_ENTRIES_H = 0x0D,
+ XDATA_L = 0x0E,
+ XDATA_H = 0x0F,
+ YDATA_L = 0x10,
+ YDATA_H = 0x11,
+ ZDATA_L = 0x12,
+ ZDATA_H = 0x13,
+ TEMP_L = 0x14,
+ TEMP_H = 0x15,
+ // Reserved = 0x16;
+ // Reserved = 0x17;
+ SOFT_RESET = 0x1F,
+ THRESH_ACT_L = 0x20,
+ THRESH_ACT_H = 0x21,
+ TIME_ACT = 0x22,
+ THRESH_INACT_L = 0x23,
+ THRESH_INACT_H = 0x24,
+ TIME_INACT_L = 0x25,
+ TIME_INACT_H = 0x26,
+ ACT_INACT_CTL = 0x27,
+ FIFO_CONTROL = 0x28,
+ FIFO_SAMPLES = 0x29,
+ INTMAP1 = 0x2A,
+ INTMAP2 = 0x2B,
+ FILTER_CTL = 0x2C,
+ POWER_CTL = 0x2D,
+ SELF_TEST = 0x2E,
+ } ADXL362_register_t;
+
+ char *regnames[34] = {"DEVID_AD","DEVID_MST","PARTID","REVID","XDATA","YDATA","ZDATA","STATUS","FIFO_ENTRIES_L",
+ "FIFO_ENTRIES_H","XDATA_L","XDATA_H","YDATA_L","YDATA_H","ZDATA_L","ZDATA_H","TEMP_L",
+ "TEMP_H","SOFT_RESET","THRESH_ACT_L","THRESH_ACT_H","TIME_ACT","THRESH_INACT_L","THRESH_INACT_H","TIME_INACT_L","TIME_INACT_H",
+ "ACT_INACT_CTL","FIFO_CONTROL","FIFO_SAMPLES","INTMAP1","INTMAP2","FILTER_CTL","POWER_CTL",
+ "SELF_TEST"};
+ 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};
+ if(0x00<=start && start <=0x2E){
+ if(length>0){
+ int j = 0;
+ //uint8_t adreg = read_reg(ADXL362::DEVID_AD);
+ for(int x = start; x<=length; x++){
+ int val = val1[x];
+ switch(val){
+ case(ADXL362::DEVID_AD):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x],val);
+ break;
+ case(ADXL362::DEVID_MST):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::PARTID):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::REVID):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::STATUS):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_ENTRIES_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_ENTRIES_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TEMP_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TEMP_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::SOFT_RESET):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_ACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_ACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_ACT):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_INACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_INACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_INACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_INACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ACT_INACT_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::INTMAP1):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::INTMAP2):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FILTER_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::POWER_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::SELF_TEST):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_CONTROL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_SAMPLES):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ default: printf("test%0x", val);
+ }
+ j++;
+ }
+ }
+ else if(length==0){
+ int j = 0;
+ //uint8_t adreg = read_reg(ADXL362::DEVID_AD);
+ for(int x = start; x<34; x++){
+ int val=val1[x];
+ //printf("> %0x: %s=%0x \n\r", x, regnames[x],val);
+ switch(val){
+ case(ADXL362::DEVID_AD):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x],val);
+ break;
+ case(ADXL362::DEVID_MST):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::PARTID):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::REVID):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::STATUS):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_ENTRIES_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_ENTRIES_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::XDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::YDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ZDATA_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TEMP_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TEMP_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::SOFT_RESET):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_ACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_ACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_ACT):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_INACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::THRESH_INACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_INACT_L):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::TIME_INACT_H):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::ACT_INACT_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::INTMAP1):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::INTMAP2):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FILTER_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::POWER_CTL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::SELF_TEST):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_CONTROL):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+ case(ADXL362::FIFO_SAMPLES):
+ printf("0x%0x: %s=0x%0x \n\r", j, regnames[x], val);
+ break;
+
+ default: printf("MISSING: test%0x\n\r", val);
+ }
+ j++;
}
- }
- }
+ }
+ else{
+ free(regnames);
+ return 1;
+ }
+ free(regnames);
+ return 0;
+ }
+ else{
+ free(regnames);
+ return 1;
}
- //printf("%x\n","0x" , return_val);
- return return_val;
}
+
int main() {
adxl362.reset();
wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
@@ -55,17 +332,16 @@
val = abs(currAdd - diffAdd);
if(val > threshold){
- printf("A knock has been heard ma dude\r\n");
+ printf("\n\r A knock has been heard ma dude\r\n");
+ printf("Knocks = %d\r\n" , knock_counter);
knock_counter ++;
- printf("Knocks = %d\r\n" , knock_counter);
led1 = 1;
wait_ms(2000);
led1 = 0;
}
// printf("x = %d y = %d z = %d\r\n",x,y,z);
- wait_ms(100);
-
-
+ //wait_ms(1000);
+ // adxl362_reg_print(0, 0);
}
}
\ No newline at end of file