Arexx RP6 V2 Build your own robot kit RP6 V2 Manual Do Utilizador

Códigos do produto
RP6 V2
Página de 141
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 
Bumper korrekt funktionieren und die ADCs im Hintergrund ausgewertet werden. Um 
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_bumpers();
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. 
An dieser Stelle nochmal wiederholt (wurde weiter oben schon bes-
chrieben, wird aber oft nicht beachtet):
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-
gramms   bei   jedem   Schleifendurchlauf   einmal   aufrufen   muss.   Es 
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 
schneller  aufruft,  denn  das  Timing  wird  von   einem  der  Hardware-
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 
unwesentlich mehr Rechenzeit, die Funktion oft aufzurufen. Sie wird 
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! 
- 105 -