Arexx RP6 V2 Build your own robot kit RP6 V2 Manual Do Utilizador
Códigos do produto
RP6 V2
RP6 ROBOT SYSTEM - 4. Programmierung des RP6
4.6.10. task_RP6System()
Wie wir in den vorangegangenen Abschnitten gesehen haben, muss man vier Funktio-
nen ständig aus der Hauptschleife heraus aufrufen, damit ACS/IRCOMM, Motoren und
Wie wir in den vorangegangenen Abschnitten gesehen haben, muss man vier Funktio-
nen ständig aus der Hauptschleife heraus aufrufen, damit ACS/IRCOMM, Motoren und
Bumper korrekt funktionieren und die ADCs im Hintergrund ausgewertet werden. Um
etwas Schreibarbeit zu sparen und es übersichtlicher zu machen, wurde die Funktion:
etwas Schreibarbeit zu sparen und es übersichtlicher zu machen, wurde die Funktion:
void task_RP6System(void)
implementiert. Sie ruft die Funtionen:
task_ADC();
task_ACS();
task_ACS();
task_bumpers();
task_motionControl();
task_motionControl();
der Reihe nach auf. In den meisten Beispielprogrammen auf der CD werden Sie nur
diese Funktion sehen – die anderen vier werden nur selten direkt verwendet und
meistens über diese Funktion aufgerufen.
meistens über diese Funktion aufgerufen.
An dieser Stelle nochmal wiederholt (wurde weiter oben schon bes-
chrieben, wird aber oft nicht beachtet):
Die Funktion
Die Funktion
task_RP6System
muss man ständig aus dem Hauptpro-
gramm aufrufen – sonst funktioniert die automatische Regelung
nicht!
Ständig aus dem Hauptprogramm aufrufen heisst hier nichts an-
deres, als dass man diese Funktion in der Hauptschleife des Pro-
nicht!
Ständig aus dem Hauptprogramm aufrufen heisst hier nichts an-
deres, als dass man diese Funktion in der Hauptschleife des Pro-
gramms bei jedem Schleifendurchlauf einmal aufrufen muss. Es
reicht, wenn die Funktion alle 10 bis 50 Millisekunden einmal
reicht, wenn die Funktion alle 10 bis 50 Millisekunden einmal
aufgerufen wird. Besser ist es allerdings, die Funktion noch sehr viel
öfter aufzurufen. Es schadet nicht, wenn man die Funktion noch
öfter aufzurufen. Es schadet nicht, wenn man die Funktion noch
schneller aufruft, denn das Timing wird von einem der Hardware-
timer gesteuert. Daher ist es auch egal ob man die Funktion in
timer gesteuert. Daher ist es auch egal ob man die Funktion in
gleichbleibenden Intervallen aufruft, oder ob man mal 1ms und mal
10ms zwischen den einzelnen Aufrufen benötigt. Es kostet auch nur
10ms zwischen den einzelnen Aufrufen benötigt. Es kostet auch nur
unwesentlich mehr Rechenzeit, die Funktion oft aufzurufen. Sie wird
nur komplett ausgeführt, wenn auch etwas zu tun ist.
nur komplett ausgeführt, wenn auch etwas zu tun ist.
Das bedeutet auch, das blockierende Funktionen wie mSleep
nicht zusammen mit task_RP6System verwendet werden soll-
ten! Abgesehen von kurzen Pausen kleiner 25ms.
Verwenden Sie stattdessen besser die Stopwatch Funktionen!
ten! Abgesehen von kurzen Pausen kleiner 25ms.
Verwenden Sie stattdessen besser die Stopwatch Funktionen!
- 105 -