6,10 → 6,12 |
* Writes the given byte to the register at the address |
*/ |
void WriteSPI(unsigned char addr, unsigned char data) { |
halSPISetPolarityPhase(1,1); // ADXL345 operates in SPI(1,1) |
ADXL_CS_LOW(); |
spiSendByte(addr & ~ADXL_BYTE_WRITE); |
spiSendByte(data); |
ADXL_CS_HIGH(); |
halSPISetPolarityPhase(0,0); // Revert back to SPI(0,0) |
} |
|
/* |
17,10 → 19,12 |
*/ |
unsigned char ReadSPI(unsigned char addr) { |
unsigned char ret; |
halSPISetPolarityPhase(1,1); // ADXL345 operates in SPI(1,1) |
ADXL_CS_LOW(); |
spiSendByte(addr | ADXL_BYTE_READ); |
spiReadFrame(&ret, 1); |
ADXL_CS_HIGH(); |
halSPISetPolarityPhase(0,0); // Revert back to SPI(0,0) |
return ret; |
} |
|
30,10 → 34,12 |
int Read16SPI(unsigned char addr) { |
unsigned char recv[2]; |
int ret; |
halSPISetPolarityPhase(1,1); // ADXL345 operates in SPI(1,1) |
ADXL_CS_LOW(); |
spiSendByte(addr | ADXL_MULTI_BYTE_READ); |
spiReadFrame(recv, 2); |
ADXL_CS_HIGH(); |
halSPISetPolarityPhase(0,0); // Revert back to SPI(0,0) |
ret = recv[0]; |
ret |= recv[1] << 8; |
return ret; |
82,7 → 88,7 |
*/ |
void ADXLInitInterrupts(void) { |
// Set tap acceleration threshold (62.5mg/LSB, 0xFF=16g) |
WriteSPI(ADXL345_REG_THRESH_TAP, 0x20); |
WriteSPI(ADXL345_REG_THRESH_TAP, 0x18); |
|
// Set maximum tap duration (625us/LSB) |
WriteSPI(ADXL345_REG_DUR, 0xFF); |
107,6 → 113,7 |
* Clears any active interrupt flags |
*/ |
void ADXLClearInterrupts(void) { |
ReadSPI(ADXL345_REG_ACT_TAP_STATUS); |
ReadSPI(ADXL345_REG_INT_SOURCE); |
} |
|