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?
Lesezeichen