1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Add ID test to ADXL345

This commit is contained in:
James Cotton 2012-01-24 01:26:29 -06:00
parent 946c6a7f1d
commit 4d3af7afbf
3 changed files with 32 additions and 1 deletions

View File

@ -172,12 +172,15 @@ MODULE_INITCALL(AttitudeInitialize, AttitudeStart)
/**
* Module thread, should not return.
*/
int32_t adxl_test;
static void AttitudeTask(void *parameters)
{
uint8_t init = 0;
AlarmsClear(SYSTEMALARMS_ALARM_ATTITUDE);
PIOS_ADC_Config((PIOS_ADC_RATE / 1000.0f) * UPDATE_RATE);
adxl_test = PIOS_ADXL345_Test();
// Set critical error and wait until the accel is producing data
while(PIOS_ADXL345_FifoElements() == 0) {

View File

@ -225,6 +225,31 @@ int32_t PIOS_ADXL345_Init(uint32_t spi_id, uint32_t slave_num)
return 0;
}
/**
* @brief Return number of entries in the fifo
*/
int32_t PIOS_ADXL345_Test()
{
if(PIOS_ADXL345_Validate(dev) != 0)
return -1;
if(PIOS_ADXL345_ClaimBus() != 0)
return -2;
uint8_t buf[2] = {0,0};
uint8_t rec[2] = {0,0};
buf[0] = ADXL_WHOAMI | ADXL_READ_BIT;
if(PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],sizeof(buf),NULL) < 0) {
PIOS_ADXL345_ReleaseBus();
return -3;
}
PIOS_ADXL345_ReleaseBus();
return (rec[1] == ADXL_DEVICE_ID) ? 0 : -4;
}
/**
* @brief Return number of entries in the fifo
*/

View File

@ -34,6 +34,8 @@
#define ADXL_READ_BIT 0x80
#define ADXL_MULTI_BIT 0x40
#define ADXL_WHOAMI 0x00
#define ADXL_DEVICE_ID 0xE5
#define ADXL_X0_ADDR 0x32
#define ADXL_FIFOSTATUS_ADDR 0x39
@ -70,7 +72,8 @@ int32_t PIOS_ADXL345_SelectRate(uint8_t rate);
int32_t PIOS_ADXL345_SetRange(uint8_t range);
int32_t PIOS_ADXL345_Init(uint32_t spi_id, uint32_t slave_num);
uint8_t PIOS_ADXL345_Read(struct pios_adxl345_data * data);
int32_t PIOS_ADXL345_FifoElements();
int32_t PIOS_ADXL345_FifoElements();
int32_t PIOS_ADXL345_Test();
#endif