Du hast auch noch ein Problem mit deinen Interrupts. Auch wenn ein Interrupt gerade nicht enabled ist, setzt das entsprechende Ereignis doch das zugehörige Flag. Wenn der Interrupt dann enabled wird, kommt er sofort, weil das Flag ja schon gesetzt ist. Also musst du im INT0-Interrupt das Flag für den Overflow löschen, und im Overflow-Interrupt nach dem letzten Bit das Flag für INT0. Aber Achtung, schau erst im Datenblatt nach, wie man diese Flags löscht, ein "&=~" wäre da nämlich falsch.
PS: Benutze entweder die Bezeichnung GIMSK oder die Bezeichnung GICR. Beides zu benutzen verwirrt doch nur.
Lesezeichen