void ADXL362::setRange(uint8_t Range){ // Modify range (+-2g +-4g +-8g - ADXL362 Datasheep Page 33 // Choose RangeFlag between XL362_FILTER_FLAG_2G (default), XL362_FILTER_FLAG_4G, XL362_FILTER_FLAG_8G uint8_t temp = SPIreadOneRegister(XL362_FILTER_CTL); // read Reg XL362_FILTER_CTL before modifying #ifdef ADXL362_DEBUG Serial.print( "Setting Measurement Range - Reg XL362_FILTER_CTL before = "); Serial.print(temp); #endif switch ( Range ) { // Range affects converting LSB to mg case XL362_FILTER_FLAG_2G: mgperLSB = 1; break; case XL362_FILTER_FLAG_4G: mgperLSB = 2; break; case XL362_FILTER_FLAG_8G: mgperLSB = 4; break; default: // YOU SHOULDN'T BE HERE ! mgperLSB = 1; break; } temp = temp & 0b00111111 | Range; SPIwriteOneRegister(XL362_FILTER_CTL, temp); // Write to XL362_FILTER_CTL delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(XL362_FILTER_CTL); Serial.print( ", Reg after = "); Serial.println(temp); #endif }
void ADXL362::setupDCInactivityInterrupt(int threshold, uint8_t time){ // Setup motion and time thresholds SPIwriteTwoRegisters(XL362_THRESH_ACT_L, threshold); SPIwriteOneRegister(XL362_TIME_ACT, time); // turn on inactivity interrupt uint8_t ACT_INACT_CTL_Reg = SPIreadOneRegister(XL362_ACT_INACT_CTL); // Read current reg value ACT_INACT_CTL_Reg = ACT_INACT_CTL_Reg | (0x04); // turn on bit 3, INACT_EN SPIwriteOneRegister(XL362_ACT_INACT_CTL, ACT_INACT_CTL_Reg); // Write new reg value #ifdef ADXL362_DEBUG Serial.print("DC Activity Threshold set to "); Serial.print(SPIreadTwoRegisters(XL362_THRESH_ACT_L)); Serial.print(", Time threshold set to "); Serial.print(SPIreadOneRegister(XL362_TIME_ACT)); Serial.print(", ACT_INACT_CTL Register is "); Serial.println(SPIreadOneRegister(XL362_ACT_INACT_CTL), HEX); #endif }
int ADXL362::readY(){ int8_t YDATA = SPIreadOneRegister(0x09); //#ifdef ADXL362_DEBUG // Serial.print( "\tYDATA = "); // Serial.println(YDATA); //#endif return (int)YDATA; }
int ADXL362::readZ(){ int8_t ZDATA = SPIreadOneRegister(0x0A); //#ifdef ADXL362_DEBUG // Serial.print( "\tZDATA = "); // Serial.println(ZDATA); //#endif return (int)ZDATA; }
//reading off the 8-bit register as documented in the ADXL362 spec //IMPORTANT to make it a signed 8-bit int so that the data is interpreted correctly int ADXL362::readX(){ int8_t XDATA = SPIreadOneRegister(0x08); //#ifdef ADXL362_DEBUG // Serial.print( "XDATA = "); // Serial.println(XDATA); //#endif return (int)XDATA; }
void ADXL362::setupACInactivityInterrupt(int threshold, int time){ // Setup motion and time thresholds SPIwriteTwoRegisters(0x23, threshold); SPIwriteTwoRegisters(0x25, time); // turn on inactivity interrupt byte ACT_INACT_CTL_Reg = SPIreadOneRegister(0x27); // Read current reg value ACT_INACT_CTL_Reg = ACT_INACT_CTL_Reg | (0x0C); // turn on bit 3 and 4, INACT_AC_DCB, INACT_EN SPIwriteOneRegister(0x27, ACT_INACT_CTL_Reg); // Write new reg value ACT_INACT_CTL_Reg = SPIreadOneRegister(0x27); // Verify properly written #ifdef ADXL362_DEBUG Serial.print("AC Inactivity Threshold set to "); Serial.print(SPIreadTwoRegisters(0x23)); Serial.print(", Time Inactivity set to "); Serial.print(SPIreadTwoRegisters(0x25)); Serial.print(", ACT_INACT_CTL Register is "); Serial.println(ACT_INACT_CTL_Reg, HEX); #endif }
void ADXL362::setupDCActivityInterrupt(int threshold, byte time){ // Setup motion and time thresholds SPIwriteTwoRegisters(0x20, threshold); SPIwriteOneRegister(0x22, time); // turn on activity interrupt byte ACT_INACT_CTL_Reg = SPIreadOneRegister(0x27); // Read current reg value ACT_INACT_CTL_Reg = ACT_INACT_CTL_Reg | (0x01); // turn on bit 1, ACT_EN SPIwriteOneRegister(0x27, ACT_INACT_CTL_Reg); // Write new reg value ACT_INACT_CTL_Reg = SPIreadOneRegister(0x27); // Verify properly written #ifdef ADXL362_DEBUG Serial.print("DC Activity Threshold set to "); Serial.print(SPIreadTwoRegisters(0x20)); Serial.print(", Time threshold set to "); Serial.print(SPIreadOneRegister(0x22)); Serial.print(", ACT_INACT_CTL Register is "); Serial.println(ACT_INACT_CTL_Reg, HEX); #endif }
// // beginMeasure() // turn on Measurement mode - required after reset // void ADXL362::beginMeasure() { uint8_t temp = SPIreadOneRegister(XL362_POWER_CTL); // read Reg 2D before modifying for measure mode #ifdef ADXL362_DEBUG Serial.print( "Setting Measeurement Mode - Reg XL362_POWER_CTL before = "); Serial.print(temp); #endif // turn on measurement mode temp = (temp & 0b11111100) | XL362_POWER_FLAG_MEASURE_RUNING; // turn on measurement bit in Reg XL362_POWER_CTL SPIwriteOneRegister(XL362_POWER_CTL, temp); // Write to XL362_POWER_CTL, Measurement Mode delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(XL362_POWER_CTL); Serial.print( ", Reg XL362_POWER_CTL after = "); Serial.println(temp); #endif }
void ADXL362::setNoiseLevel(uint8_t NoiseLevel){ // modify Noise Level - ADXL362 Datasheep Page 34 // Choose NoiseLevel between XL362_POWER_FLAG_NOISE_NORMAL (default), XL362_POWER_FLAG_NOISE_LOW, XL362_POWER_FLAG_NOISE_ULTRALOW uint8_t temp = SPIreadOneRegister(XL362_POWER_CTL); // read Reg XL362_FILTER_CTL before modifying #ifdef ADXL362_DEBUG Serial.print( "Setting Output Data Rate - Reg XL362_POWER_CTL before = "); Serial.print(temp); #endif temp = temp & 0b11001111 | NoiseLevel; SPIwriteOneRegister(XL362_POWER_CTL, temp); // Write to XL362_FILTER_CTL delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(XL362_POWER_CTL); Serial.print( ", Reg after = "); Serial.println(temp); #endif }
void ADXL362::setOutputDatarate(uint8_t ODR){ // modify Output Data Rate - ADXL362 Datasheep Page 33 // Choose ODR between XL362_FILTER_FLAG_ODR12, XL362_FILTER_FLAG_ODR25, XL362_FILTER_FLAG_ODR50, XL362_FILTER_FLAG_ODR100 (default), XL362_FILTER_FLAG_ODR200 , XL362_FILTER_FLAG_ODR400 uint8_t temp = SPIreadOneRegister(XL362_FILTER_CTL); // read Reg XL362_FILTER_CTL before modifying #ifdef ADXL362_DEBUG Serial.print( "Setting Output Data Rate - Reg XL362_FILTER_CTL before = "); Serial.print(temp); #endif temp = temp & 0b11111000 | ODR; SPIwriteOneRegister(XL362_FILTER_CTL, temp); // Write to XL362_FILTER_CTL delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(XL362_FILTER_CTL); Serial.print( ", Reg after = "); Serial.println(temp); #endif }
void ADXL362::setBandwidth(uint8_t BandWidth){ // modify Bandwidth - ADXL362 Datasheep Page 33 // Choose Bandwidth between XL362_FILTER_FLAG_HBW (default), XL362_FILTER_FLAG_FBW uint8_t temp = SPIreadOneRegister(XL362_FILTER_CTL); // read Reg XL362_FILTER_CTL before modifying #ifdef ADXL362_DEBUG Serial.print( "Setting BandWidth - Reg XL362_FILTER_CTL before = "); Serial.print(temp); #endif temp = temp & 0b11101111 | BandWidth; SPIwriteOneRegister(XL362_FILTER_CTL, temp); // Write to XL362_FILTER_CTL delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(XL362_FILTER_CTL); Serial.print( ", Reg after = "); Serial.println(temp); #endif }
// // beginMeasure() // turn on Measurement mode - required after reset // void ADXL362::beginMeasure() { byte temp = SPIreadOneRegister(0x2D); // read Reg 2D before modifying for measure mode #ifdef ADXL362_DEBUG Serial.print( "Setting Measeurement Mode - Reg 2D before = "); Serial.print(temp); #endif // turn on measurement mode byte tempwrite = temp | 0x02; // turn on measurement bit in Reg 2D SPIwriteOneRegister(0x2D, tempwrite); // Write to POWER_CTL_REG, Measurement Mode delay(10); #ifdef ADXL362_DEBUG temp = SPIreadOneRegister(0x2D); Serial.print( ", Reg 2D after = "); Serial.println(temp); Serial.println(); #endif }