Medición de angulos pitch y roll con ADXL345

Hola a todos. Necesito medir angulos Pitch y roll, al menos de 0° -270° usando un acelerometro ADXL345. Use el codigo de Sparkfun, pero no encuentro la manera de calcularlos bien, se me presenta un error cuando Pitch esta en 80° el angulo roll° se modifica. Quien me ayude, le quedare muy agradecido.

Asi lo calculo:

//Calculo de los angulos Pitch t roll, negativos y positivos de 0-90
roll = (atan2(fxg,sqrt(fygfyg + fzgfzg)) * 180.0) / PI;
pitch = (atan2(fyg,sqrt(fxgfxg + fzgfzg)) * 180.0) / PI;
//Calculo de los angulos de 0-180, este nos indicara los angulos de la rotacion de la mano
roll2 = atan2(fxg,fzg) * 57.2957;
pitch2 = atan2(fyg,fzg) * 57.295;

El codigo lo anexo a continuacion:

Prueba_separada_angulos.ino (5.02 KB)