Mit 16bit / 2 byte Variablen ist das so eine Sache zwischen ISR und Main.
Ich persönlich mache meist solche "if"s in der ISR und setze nur einen Flag für die Mainroutine

Eigentlich aber seh ich keinen Fehler. Versuch wirklich einfach mal ein uint8_t , also nur ein Byte