Timer0 Phase corected pwm not working HELP

Hi, I'm trying to make an script for testing with an basic h-bridge with external HVIC.

I've setup the phase corected pwm on all 3 timers, timer 2 and timer 1 seems to work fine.
timer0 gives me an PWM, but it's not phase corrected anny help ?

DDRB=(1<<PINB1)|(1<<PINB2)| (1<<PINB3); //output
DDRD=(1<<PIND3)| (1<<PIND6)|(1<<PIND5); // output

TCCR2A |=(1<<COM2B1)|(1<<COM2B0);
OCR2A=0;
OCR2B=0;
ICR1=TOP;
TCCR2A ^= (1<<COM2A1); //clear OC2B on compare match up counting, set on down counting
TCCR2B = (1<<WGM20)|(1<<CS20); //phase correct and no prescaling

TCCR1A =(1<<COM1B1)|(1<<COM1B0); //set OC1A at match on up counting, clear on down counting ; Phase correct
OCR1A=0;
OCR1B=0;
ICR1=TOP;
TCCR1A^=(1<<COM1A1); //clear OC1B on compare match up counting, set on down counting
TCCR1B=(1<<WGM13)|(1<<CS10); //phase correct and no prescaling

TCCR0A |=(1<<COM0B1)|(1<<COM0B0); //set OC0A at match on up counting, clear on down counting ; Phase correct
OCR0A=0;
OCR0B=0;
ICR1=TOP;
TCCR0A^=(1<<COM0A1); //clear OC0B on compare match up counting, set on down counting
TCCR0B=(1<<WGM00)|(1<<CS00); //phase correct and no prescaling

Why not make it clear what values you write to the registers?
You use the flags in the wrong registers anyway, I don't think they document
the code any better that this does:

TCCR0A = 0xE1 ; //  mode 1, set A, clear B on compare match.
TCCR0B = 0x01 ;  // mode 1, prescale divide-by-1
TCNT0 = 0;

WGM00 bit is in TCCR0A, not TCCR0B, hard to spot in your code, but my approach forces
you to look at the relevant section of the datasheet to check its action, which you have
to do anyway...

You can #define the register values with meaningful names too, which is even better:

#define TIMER0_PHASE_CORRECT_SETA_CLRB_PRESCALE1 0xE101

...
inline void reconfig_timer0 (int config)
{
  TCCR0A = config >> 8 ;
  TCCR0B = config & 0xFF ;
  TCNT0 = 0 ;
}

You are free to build up the #defines out of component fields as you see fit by
ORing together:

#define TIMER0_PHASE_CORRECT 0x0100
#define TIMER0_PRESCALE1  0x0001
#define TIMER0_PRESCALE8  0x0002
#define TIMER0_SETA  0xC000
#define TIMER0_CLRA 0x8000
#define TIMER0_SETB  0x3000
#define TIMER0_CLRB 0x2000

etc