DDS using external spi Dac

The first issue I figured out was in the interrupt
By adding the following line
phaseAccumulatorMSBs = phaseAccumulatorMSBs & 0x03FF ; //Clear bits 13-16
I was successfully able to output a fairly clean 1000 Hz signal using 12 bits of resolution.
I'm guessing since phaseAccumulatorMSBs was defined as a word (16 bits) the excess bits not
used either had random information or were undefined therefore altering the correct value.

ISR(TIMER2_COMPA_vect){
	  word lastPhaseAccumulator = phaseAccumulator;
	  // Update phase accumulator counter, the phase accumulator will automatically overflow at 2^32
	  phaseAccumulator += tuningWordM;
	  // Use the 10 MSBs from phase accumulator as frequency information
	  word phaseAccumulatorMSBs = (phaseAccumulator >> 22); //word is 16 bits but I'm only filling 10
        phaseAccumulatorMSBs  = phaseAccumulatorMSBs & 0x03FF ; //Clear bits 13-16
	  // Set DAC using lookup table (2^10 bits in length)
	  outVal = sineLookup[phaseAccumulatorMSBs];
          writeData(outVal) ;

Magician I unsure what you mean when you said " Don't call writedata from ISR, better do it inside."
Where do you mean by inside?

Now that I have the maximum output frequency how do I determine the proper reference clock to reach 100 kHz?
I referenced the equation fo = mfc / 2n
Assuming my maximum output is 100,000 = m
fc / 232?
But I'm unsure how to incorporate M to correctly determine the fc.
In my code as well I'm unsure how to use M.
Previously I was using this as my M but after some tests I realized this actually had no effect on the signal output

OCR2A = 199;// Set compared value