Achso. Gut, jetzt kompiliert er schonmal durch. Nach dem ersten Hindernis will er aber nicht mehr weiterfahren, er kommt anscheinend aus der while-if-Schleife nicht mehr raus. Meine Vermutung war, dass durch Compiler-Optimierung die Schleife in ein while(1); "umgewandelt" wird, da das abgebrochen ja normalerweise währenddessen nicht verändert werden kann, also habe ich es mit int volatile abgebrochen probiert, aber das Ergebnis ist das gleiche. Ich verzweifel hier langsam

So sieht meine main.c jetzt aus:
Code:
#include "asuro.h"
#include "funktionen.h"

// Standardmäßig auf 1, da am Anfang von 0 beschleunigt werden soll
volatile int abgebrochen = 1;

int main(void)

{
	// Initialisierung
	Init();
	sei();
	StartSwitch();
	
	// hier kommt der Hauptteil des Programms
	StatusLED(RED);
	while (1)
	{
		/*
		** Bei einer Kollision soll wieder von 0 beschleunigt werden und nicht
		** beim vorherigen Beschleunigungsvorgang weiter gemacht werden
		*/
		if (abgebrochen)
		{
			abgebrochen = 0;
			Beschleunige(120, 150, 3);
     		} 
	}

	return 0;

}