gibt dein compiler da keine warnungen?
int main sollte der vollständigkeit halber einen returnwert haben, den es de facto aber nie braucht, weil das programm vorher
Code:
for(;;);
in einer endlosschleife bleibt, die bei dir aber nicht existiert. und zuletzt wird TCCR2 wahrscheinlich kein binärwert zugewiesen, sondern EDITktal 11111. ausserdem solltest du vielleicht besser die schreibweise
Code:
TCCR2 = (1<<registername) | ... ;
verwenden, denn die wenigsten leute haben die bedeutung der einzelnen bits im kopf... man kann dir dann schneller helfen..

gruesse

EDIT: danke für den hinweis @sternst, habs korrigiert