Wenn UART Empfang nicht in der Hauptschleife ausgewertet wird, passen die Werte auf dem Stack nicht. Irgendwann wird dieser dann überlaufen.
Ich würde für die Berechnungen am Anfang des Programmes eine Sub erstellen und diese dann nach dem bestimmten UART Befehl aufrufen.
Goto 0 springt an den Anfang des Programmes (Adresse 0). Dort wird normal auch alles neu initialisiert. Aber so weit wolltest Du ja nicht zurückspringen. Ich nutze für einen Reset
immer den Watchdog. Einfach einschalten und dann ein do:loop hinterher und der AVR startet neu.
Lesezeichen