Arduino Mega - Enabling CTC mode disables timer
I think your problem is that you are using the wrong "TOP" counter value register.

OCR3B =  CMP_FAST; // CMP_FAST = 40


should be:

OCR3A =  CMP_FAST; // CMP_FAST = 40


I am not too familiar with the workings of the AVR times, but according to the datasheet:


  In Clear Timer on Compare or CTC mode (WGM22:0 = 2), the OCR2A Register is used to manipulate the counter resolution. In CTC mode the counter is cleared to zero when the counter value (TCNT2) matches the OCR2A. The OCR2A defines the top value for the counter, hence also its resolution.


(Note: it only mentions the register for timer 2, but the same holds true for all the timers in the same class, including timer 3).

Since OCR3A is zero it never triggers a match.  And since there is only one counter (TCNT3) which gets reset to 0 on a match, there can only be one register to compare to, and that is the "A" register. The "B" register appears to be redundant in CTC mode.

You may also need to switch to the COMPA vector (I am not sure on this one TBH)