Atmega32 PWM on all four PWM pins
While it may not be your only problem (for example, your code is very light on configuration and seems to rely a lot on defaults, which may not be what you assumed) one serious issue that jumps out is in improperly using the TCCR0-specific bitmasks for all of the timer configuration registers:

TCCR0  |= (1&lt;&lt;WGM00)|(1&lt;&lt;WGM01)|(1&lt;&lt;COM01)|(1&lt;&lt;CS00);
TCCR1A |= (1&lt;&lt;WGM00)|(1&lt;&lt;WGM01)|(1&lt;&lt;COM01)|(1&lt;&lt;CS00); 
TCCR1B |= (1&lt;&lt;WGM00)|(1&lt;&lt;WGM01)|(1&lt;&lt;COM01)|(1&lt;&lt;CS00);
TCCR2  |= (1&lt;&lt;WGM00)|(1&lt;&lt;WGM01)|(1&lt;&lt;COM01)|(1&lt;&lt;CS00);


In fact, these are not all the same, and those for TCCR1A are among the most unique.

If you examine &lt;avr/iom32.h&gt; or presumably the data sheet, you will see for example that the available WGM bits in TCCR1A are called  WGM11 and WGM10, not WGM01 and WGM00 which are not present in this register and have different values where they do occur for TCCR0 than the funcitonally comparable bits in TCCR1A do.

So at minimum, you need to correct the quoted block of configuration code to use the proper bit pattern names or at least values applicable to each of the registers you are attempting to configure.

But more generally, you should double check all involved registers, both timer and higher level, which are involved in making this work, and be sure that the values you explicitly set or rely on from power-on defaults are in fact those suitable to your goal.