Abstürzen heißt, dass das Hoch- und Runterdimmen der LEDs solange funktioniert, bis ein Wert aus der AD-Wandlung in die Geschwindigkeitsvariable "v_set" kommt. Dann bleibt die LED einfach auf der aktuellen Helligkeit stehen und nix passiert mehr. Dann hilft nur noch ein Reset.

Die Variablen sind als unsigned int deklariert.

Den ADC lasse ich frei laufen und hole mir den ADC-Wert mittels
ad_result = ADCL;
aus dem Ergebnisregister. (Ich weiß, dass das ADCL-Reg nur die unteren 8 bit enthält; hab auch schon versucht, mit diesem kleineren Wertebereich bis 255 (statt bis 1023) zurecht zu kommen, gibt aber das gleiche Problem.)

Danke schon mal für dein Interesse!