Hallo,

Ich hab es endlich hingekriegt meinen Asuro über einen Interrupt anhalten zu lassen, wenn er kollidiert (ein Schalter gedrückt wird). Der Code sieht so aus:

Code:
#include "asuro.h"
#include "funktionen.h"

int main(void)

{
	// Initialisierung
	Init();
	sei();
	StartSwitch();
	
	// hier kommt der Hauptteil des Programms
	StatusLED(RED);
	MotorSpeed(120, 120);

	while(1);
	return 0;

}
Das funktioniert auch. Obwohl er schon in der Endlosschleife ist, reagiert er trotzdem noch auf ein Hindernis. ABER, das geht nur bei Endlosschleifen! Wenn ich den MotorSpeed durch Beschleunige(120, 140, 5); ersetze, geht es nicht mehr. Meine Beschleunige-Funktion sieht so aus:
Code:
void Beschleunige(int start, int end, int zeit)
{
	int momentan;
	int durchlaeufe = end - start;
	float zeitschritt = (float) zeit / (float) durchlaeufe * 1000;
	
	for(momentan=start; momentan<end; momentan++)
	{
		Geschwindigkeit(momentan, momentan);
		Warte(zeitschritt);
	}
}
(Warte ist bei mir nichts anderes als Msleep)

Eigentlich tut er also dabei die meiste Zeit "Sleep". Nur das komische ist, wenn ich das Sleep im Hauptteil einfüge, funktioniert es

Code:
#include "asuro.h"
#include "funktionen.h"

int main(void)

{
	// Initialisierung
	Init();
	sei();
	StartSwitch();
	
	// hier kommt der Hauptteil des Programms
	StatusLED(RED);
	Warte(90000);

	while(1);
	return 0;

}
Ich will doch nur, dass der Asuro auch beim beschleunigen Hindernisse erkennt Kann mir bitte jemand helfen?