Wenn Du Variablen in einer Interrupt Routine ändern willst, solltest Du die volatile setzen.
Ein 8 Bit Timer kann nur maximal den Zählerstand 255 erreichen, ebenso eine uint8_t Variable - Eventuell hast Du da einen Denkfehler drin.
Noch was ist mir aufgefallen.
Wenn Du einzelne Bits mit dem Hochpfeil ^ bearbeitest kann das schief gehen.
^ bedeutet Exclusiv Oder, wenn das Bit also schon gesetzt war würde es bei einer weiteren 1 wieder gelöscht.
Sicherer ist es mit ODER = |, oder mit UND = & zu arbeiten.
Das ODER benutzt man üblicherweise zum setzen von Bits.
Das UND zum löschen.
Lesezeichen