CPS-Lab* / Mbed 2 deprecated Lab6

Dependencies:   ADXL362 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }