Lab 6?

Fork of ADXL362 by Analog Devices

main.cpp

Committer:
youngs2
Date:
2018-02-21
Revision:
2:ea455df926ce
Child:
3:cfbb323cbf96

File content as of revision 2:ea455df926ce:

#include "mbed.h"
#include "ADXL362.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);

 
int adxl362_reg_print(int start, int length) {
    int i = start, end = start + length;
    if(length == 0) {
     i = 0x00;
     end = 0x2E;     
    }
    if(start > 0x2E || start < 0x00)
        return(-1);
    if(length < 0)
        return(-1);
    if (adxl362.read_reg((ADXL362::ADXL362_register_t) 0x00) != 0xAD)
        return(-1);
    for( i = start; i <= end; i++) {
     if (i == 0x16 || i == 0x17) continue;
     char name[25];
     uint8_t regval = adxl362.read_reg((ADXL362::ADXL362_register_t) i);
     //printf("%X = %X\n\r", i, regval);
     switch (regval) { 
        case 0x00:
            strcpy(name,"DEVID_A");
            break;
        case 0x01:
            strcpy(name,"DEVID_MST");
            break;
        case 0x02:
            strcpy(name, "PARTID");
            break;
        case 0x03:
            strcpy(name,"REVID");
            break;
        case 0x08:
            strcpy(name,"XDATA");
            break;
        case 0x09:
            strcpy(name,"YDATA");
            break;
        case 0x0A:
            strcpy(name,"ZDATA");
            break;
        case 0x0B:
            strcpy(name,"STATUS");
            break;
        case 0x0C:
            strcpy(name,"FIFO_ENTRIES_L");
            break;
        case 0x0D:
            strcpy(name,"FIFO_ENTRIES_H");
            break;
        case 0x0E:
            strcpy(name,"XDATA_L");
            break;
        case 0x0F:
            strcpy(name,"XDATA_H");
            break;
        case 0x10:
            strcpy(name,"YDATA_L");
            break;
        case 0x11:
            strcpy(name,"YDATA_H");
            break;
        case 0x12:
            strcpy(name,"ZDATA_L");
            break;
        case 0x13:
            strcpy(name,"ZDATA_H");
            break;
        case 0x14:
            strcpy(name,"TEMP_L");
            break;
        case 0x15:
            strcpy(name,"TEMP_H");
            break;
        case 0x1F:
            strcpy(name,"SOFT_RESET");
            break;
        case 0x20:
            strcpy(name,"THRESH_ACT_L");
            break;
        case 0x21:
            strcpy(name,"THRESH_ACT_H");
            break;
        case 0x22:
            strcpy(name,"TIME_ACT");
            break;
        case 0x23:
            strcpy(name,"THRES_INACT_L");
            break;
        case 0x24:
            strcpy(name,"THRESH_INACT_H");
            break;
        case 0x25:
            strcpy(name,"TIME_INACT_L");
            break;
        case 0x26:
            strcpy(name,"TIME_INACT_H");
            break;
        case 0x27:
            strcpy(name,"ACT_INACT_CTL");
            break;
        case 0x28:
            strcpy(name,"FIFO_CONTROL");
            break;
        case 0x29:
            strcpy(name,"FIFO_SAMPLES");
            break;
        case 0x2A:
            strcpy(name,"INTMAP1");
            break;
        case 0x2B:
            strcpy(name,"INTMAP2");
            break;
        case 0x2C:
            strcpy(name,"FILTER_CTL");
            break;
        case 0x2D:
            strcpy(name,"POWER_CTL");
            break;
        case 0x2E:
            strcpy(name,"SELF_TEST");
            break;
        default:
            printf("ERR\n\r");
    } 
    printf("%X: %s = %X\n\r", i, name, regval); 
    }
    return(0);
    
} 



int main() {
    adxl362.reset();
    wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
    adxl362.set_mode(ADXL362::MEASUREMENT);
    /*int8_t x,y,z; 
    
    while(1) {
        x=adxl362.scanx_u8();
        y=adxl362.scany_u8();
        z=adxl362.scanz_u8();
        //printf("x = %d y = %d z = %d\r\n",x,y,z);
        wait_ms(100);
    }*/
    int return_val = adxl362_reg_print(0, 3);
    while(1);
}