tengo 27336 bytes aproximadamente en un PIC24FJ, y 24038 bytes en un PIC18 la diferencia es porque en el primero tengo mas memoria que en el segundo, así que puedo usar mas funciones pero es solo lo básico, con salida en cuaterniones, el PIC24FJ con C30 y el otro con C18
El DMP, digital motion processor, es una caracteristica del chip que te da la salida en cuaterniones o en ángulos euler, no hay necesidad de hacer calcularlos en un pic el chip lo hace internamente pero es algo complicado hacerlo funcionar por falta de documentación de parte del fabricante pero las prestaciones que da hace que valga la pena el esfuerzo, hay varios videos en Youtube sobre el funcionamiento del DMP con arduino, Yo ya tengo las librerías funcionando para Microchip pero esperare completarlas mas para publicarlas
La FIFO es una buena opción para la lectura de datos porque evitas tomar la lectura en tiempos diferentes, lo que te afecta en los cálculos, si la estas usando te recomiendo emplear la interrupción, aunque sea a nivel software, y emplear la lectura burst en el I2C