Als allererstes entfernst du mal sämtliche cli/sei aus den Interrupt-Funktionen, die haben darin nichts verloren (verursachen höchstens Probleme).

Dann hast du einen logischen Fehler:
ist der wert dann ebi 0 angelangt, schalte ich den interrupt für das OCR register frei,
Das Interrupt-Flag ist aber längst gesetzt, so dass der Interrupt dann sofort nach dem Ende der Overflow-ISR kommt, und nicht erst beim nächsten Compare-Ereignis. Du musst also auch noch das Flag löschen.