Atmega328 fast PWM (mode 15) on timer 1 not working
I see one problem, but without a setup to test on: I can't say for sure if it's your only problem.

You're trying to set the WGM11 bit in TCCR1B to one when it really is in TCCR1A. Because of this, the WGM bits are 0x1101, and not 0x1111 that you want.

See below the TCCR1A register:



So this is the Waveform Generation Mode (WGM) that you are setting at.



It's "Reserved", so nothing.

You need to set WGM11 in TCCR1A:

TCCR1A |= (1 &lt;&lt; WGM11) | (1 &lt;&lt; WGM10);
TCCR1B |= (1 &lt;&lt; WGM12) | (1 &lt;&lt; WGM13);