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:
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:#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;
}
(Warte ist bei mir nichts anderes als Msleep)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);
}
}
Eigentlich tut er also dabei die meiste Zeit "Sleep". Nur das komische ist, wenn ich das Sleep im Hauptteil einfüge, funktioniert es
:-s
Ich will doch nur, dass der Asuro auch beim beschleunigen Hindernisse erkennt :( Kann mir bitte jemand helfen?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;
}