uint8_t k < 1000? uint8_t erreicht maximal den Wert 255 und läuft dann über zu 0 ... Volia, eine Endlosschleife ist geboren.
Edit: Zur Methodik
"Hängen bleiben" kann eigentlich nur wenige Ursachen haben. Entweder wird die erwartete Funktionalität nicht ausgeführt weil sie übersprungen oder nicht mehr erreicht wird. Selten bleibt der Controller stehen (sleep!). Die ersten beiden Fälle erfordern also die Identifikation von Situationen, in denen Code umgangen wird oder in (fast) Endlosschleifen übergehen kann.
Bei deinem Beispiel war es der letztere Fall mit dem zu kleinen Datentyp für den erforderlichen Wertebereich.
Was die Fehlersuche angeht: Die Lokalisierung der Ursache kann durch Debugging-Ausgaben, Simulation oder Hardware-Debugging erleichtert werden. Es hilft auch, wenn der Ursprung des Problems durch weglassen unbeteiligter Komponenten eingegrenzt werden kann. Manche Versionsverwaltungssystem bieten außerdem Unterstützung bei der Fehlersuche in dem sie Hilfsmittel zum Auffinden des fehlerhaften Commits bieten (git bisect etc.).
mfG
Markus
Lesezeichen