#include "asuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
void | SetMotorPower (int8_t leftpwm, int8_t rightpwm) |
Steuert die Motorgeschwindigkeit und Drehrichtung der Motoren. |
Die Motorsteuerung erfolgt grundsaetzlich ueber die auf der Asuro-Platine
aufgebauten H-Bruecken. Dies ist eine Schaltung, ueber die ein Strom in
verschiedene Richtungen durch die Motoren geleitet werden kann.
Zur Geschwindigkeitssteuerung werden die beiden im Prozessor vorhandenen
PWM-Kanaele genutzt, deren Ausgangssignale die Staerke des Stromflusses in
den H-Bruecken beinflusst.
Die Initialisierung der PWM-Funktionalitaet erfolgt in der Funktion Init().
V--- - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 05.02.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 18.02.2007 - m.a.r.v.i.n
Datei gesplitted in motor_low.c und motor.c
Definiert in Datei motor.c.
void SetMotorPower | ( | int8_t | leftpwm, | |
int8_t | rightpwm | |||
) |
Steuert die Motorgeschwindigkeit und Drehrichtung der Motoren.
[in] | leftpwm | linker Motor (-rückwaerts, + vorwaerts) (Wertebereich -128...127) |
[in] | rightpwm | rechter Motor (-rückwaerts, + vorwaerts) (Wertebereich -128...127) |
// Setzt die Geschwindigkeit fuer den linken Motor auf 60 (vorwaerts), // und für den rechten Motor auf -60 (rueckwaerts) // Asuro soll auf der Stelle drehen. SetMotorPower (60, -600);
Definiert in Zeile 91 der Datei motor.c.
00094 { 00095 unsigned char left, right; 00096 00097 if (leftpwm < 0) // Ein negativer Wert fuehrt ... 00098 { 00099 left = RWD; // ... zu einer Rueckwaertsfahrt, ... 00100 leftpwm = -leftpwm; // aber immer positiv PWM-Wert 00101 } 00102 else 00103 left = FWD; // ... sonst nach vorne, ... 00104 if (leftpwm == 0) 00105 left = BREAK; // ... oder bei 0 zum Bremsen. 00106 00107 if (rightpwm < 0) 00108 { 00109 right = RWD; 00110 rightpwm = -rightpwm; 00111 } 00112 else 00113 right = FWD; 00114 if (rightpwm == 0) 00115 right = BREAK; 00116 00117 MotorDir (left, right); // Drehrichtung setzen 00118 00119 /* 00120 Die Geschwindigkeitsparameter mit 2 multiplizieren, da der Absolutwert 00121 der Parameter dieser Funktion nur genau die Haelfte von der MotorSpeed()- 00122 Funktion betraegt. 00123 */ 00124 MotorSpeed (leftpwm * 2, rightpwm * 2); 00125 }