base program for tilt measurement

Dependencies:   COG4050_ADT7420

Fork of COG4050_adxl355_adxl357 by ADI_CAC

main.cpp

Committer:
vtoffoli
Date:
2018-08-07
Revision:
1:d3aeaa02781d
Parent:
0:74a0756399ff
Child:
2:14dc1ec57f3b

File content as of revision 1:d3aeaa02781d:

#include "mbed.h"

const static uint8_t _WRITE_REG_CMD = 0x0A; // write register
const static uint8_t _READ_REG_CMD = 0x0B; // read register
const static uint8_t _DUMMY_BYTE = 0xAA;


SPI adxl362(SPI1_MOSI, SPI1_MISO, SPI1_SCLK);
DigitalOut CS(SPI1_CS3);

void adxl362_reset(void);
int adxl362_GetID(void);
void adxl362_write_reg(uint8_t reg, uint8_t data);
uint8_t adxl362_read_reg(uint8_t reg);

Serial pc(USBTX, USBRX);

int main() {
    pc.baud(9600);
    pc.printf("SPI ADXL362 Demo\n");
    CS = 1;
    adxl362.lock();
    
    //adxl362_reset();
    wait_ms(600); // we need to wait at least 500ms after ADXL362 reset
    //adxl362.set_mode(ADXL362::MEASUREMENT);
    uint8_t x,y,z; 
    while(1) {
        x=adxl362_GetID();
        //y=adxl362.scany_u8();
        //z=adxl362.scanz_u8();
        //printf("x = %x y = %x z = %x\r\n",x,y,z);
        printf("id = %x \r\n",x);
        wait_ms(10);
    }
}

void adxl362_reset(void)
{   // format
    adxl362.format(8,0);
    adxl362.frequency(5e6);
    
    adxl362_write_reg(0x1F, 0x52);
}
 
void adxl362_write_reg(uint8_t reg, uint8_t data)
{   
    adxl362.format(8, 0);
    CS = 0;
    adxl362.write(_WRITE_REG_CMD);
    adxl362.write(static_cast<uint8_t>(reg));
    adxl362.write(static_cast<uint8_t>(data));
    CS = 1;
}  

uint8_t adxl362_read_reg(uint8_t reg)
{
    uint8_t ret_val;
    CS = 0;
    adxl362.format(8, 0);
    adxl362.write(_READ_REG_CMD);
    adxl362.write(reg);
    ret_val = adxl362.write(_DUMMY_BYTE);
    CS = 1;
    return ret_val;
} 
int adxl362_GetID(void)
{
    uint8_t ret_val;    
    ret_val = adxl362_read_reg(0x00);
    return ret_val; 
}