From 119f092978986f9ec9fa266aae00d04659a56f03 Mon Sep 17 00:00:00 2001 From: glenntamayo Date: Tue, 4 Jul 2017 22:51:55 +0800 Subject: [PATCH] Addition of FIFO Control and Status --- src/SparkFun_ADXL345.cpp | 31 +++++++++++++++++++++++++++++++ src/SparkFun_ADXL345.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/src/SparkFun_ADXL345.cpp b/src/SparkFun_ADXL345.cpp index 1e91bcd..ac46428 100644 --- a/src/SparkFun_ADXL345.cpp +++ b/src/SparkFun_ADXL345.cpp @@ -819,3 +819,34 @@ void print_byte(byte val){ Serial.print(val >> i & 1, BIN); } } + +/********************** FIFO Control and Status *********************/ +/* Activates FIFO Modes */ +void ADXL345::setFIFOMode(String FIFOMode) { + if (FIFOMode == "FIFO") { + writeTo(ADXL345_FIFO_CTL, 95); + } else if (FIFOMode == "Stream") { + writeTo(ADXL345_FIFO_CTL, 159); + } else if(FIFOMode == "Trigger") { + writeTo(ADXL345_FIFO_CTL, 223); + } else { //Bypass Mode + writeTo(ADXL345_FIFO_CTL, 31); + } +} + +byte ADXL345::getFIFOMode() { + byte control = 0; + for(int i=0; i<8; i++) { + control |= getRegisterBit(ADXL345_FIFO_CTL, i) << i; + } + return control; +} + +//returns number of data values stored in FIFO +byte ADXL345::getFIFOStatus() { + byte numEntries = 0; + for(int i=0; i<6; i++) { + numEntries |= getRegisterBit(ADXL345_FIFO_STATUS, i) << i; + } + return numEntries; +} \ No newline at end of file diff --git a/src/SparkFun_ADXL345.h b/src/SparkFun_ADXL345.h index 504a23a..79cc83e 100644 --- a/src/SparkFun_ADXL345.h +++ b/src/SparkFun_ADXL345.h @@ -218,6 +218,10 @@ class ADXL345 void setJustifyBit(bool justifyBit); void printAllRegister(); + void setFIFOMode(String FIFOMode); + byte getFIFOMode(); + byte getFIFOStatus(); + private: void writeTo(byte address, byte val); void writeToI2C(byte address, byte val);