Do you expect the Arduino to wake up from power down mode by a signal on the I2C bus? This only works if the Arduino is an I2C slave. The ADXL345 is not able to be an I2C master, so your setup won't work. Correct me if I got something wrong.

What's possible, is to connect the INT1 or INT2 of the ADXL345 to either INT0 or INT1 of the Arduino. The interrupt pins are able to wake an ATmega chip from power down sleep mode.

the ADXL's INT1 pin is connected to pin 11 in the Arduino UNO, to wake up it with a PCINT (internal interruption). But instead of wake up the Arduino, it remains sleep until it wakes up by the watchdog.

//set values for what is a tap, and what is a double tap (0-255) adxl.setTapThreshold(10); //62.5mg per increment adxl.setTapDuration(15); //625?s per increment adxl.setDoubleTapLatency(10); //1.25ms per increment adxl.setDoubleTapWindow(80); //1.25ms per increment

if the accelerometer device has an "interrupt" output, that doesn't go through the I2C bus, that would be a separatewired connection from the "interrupt" output pin on the accelerometer chip or breakout board, to some pin on theArduino capable of recognising the interrupt state change.

I'm kinda new to the AVRs, so forgive me if I say something stupid. You seem to be wanting it to wake up by using a PCINTx (interrupt on pin change) instead of INT0 or INT1 which are on fixed pins and can't be reassigned. The datasheet says that if the external device attempting to wake up the AVR doesn't hold the signal long enough for the AVR to wake up and get going, that the chip will wake up but NOT generate an interrupt. Could this be what you are seeing? What happens if you force it by just touching a wire to the pin?

That could be a problem.Using the internal pullups, the I2C bus will go in a floating state when the ATmega goes asleep. It may set the ADXL into any state, that's why I assumed that the INT1 will never be activated in this case (see above). I would install external 4k7 pullups and try again. As long as there's no activity on the bus this shouldn't consume much power.

The interrupt from the accelerometer chip or breakout board is NOT using the I2C bus. If you use it,it is connected directly to one of the digital pins of the arduino.

This is clear already, there's a separate line (INT1) that has to go to a GPIO on the Arduino, we discussed this earlier in the thread.

But the whole chip is controlled by the I2C bus. If the OP is using the internal pull-ups for driving the I2C bus, the bus goes to a floating, not defined state when the ATmega goes asleep. Do you know how the ADXL345 reacts on that? Me not, because it's probably also not defined. That's why I suggested using external pull-ups.

I agree with pylon, put in the external pull-ups. If the I2C inputs float, it's anyone's guess as to what might happen. Chances are though that whatever happens, won't do it consistently.

Also, I want to reiterate that the CPU won't call the ISR unless the int-on-change pin still reflects the change. It appears that the ADXL345 will hold the INT output pin high until the internal registers are read. This should allow for any length of wake-up time the CPU needs.