#include "asuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
void | MotorSpeed (unsigned char left_speed, unsigned char right_speed) |
Steuert die Geschwindigkeit der Motoren. | |
void | MotorDir (unsigned char left_dir, unsigned char right_dir) |
Steuert die Drehrichtung der Motoren. | |
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().
sto1 - 07.01.2006 - stochri
+++ SetMotorPower()
first implementation
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)
Definiert in Datei motor.c.
void MotorDir | ( | unsigned char | left_dir, | |
unsigned char | right_dir | |||
) | [inline] |
Steuert die Drehrichtung der Motoren.
[in] | left_dir | Richtung des linken Motors [ FWD | RWD | BREAK | FREE ] |
[in] | right_dir | Richtung des rechten Motors [ FWD | RWD | BREAK | FREE ] |
Definiert in Zeile 127 der Datei motor.c.
00130 { 00131 PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | left_dir; 00132 PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | right_dir; 00133 }
void MotorSpeed | ( | unsigned char | left_speed, | |
unsigned char | right_speed | |||
) | [inline] |
Steuert die Geschwindigkeit der Motoren.
[in] | left_speed | Geschwindigkeit linker Motor (Bereich 0..255) |
[in] | right_speed | Geschwindigkeit rechter Motor (Bereich 0..255) |
// Setzt die Geschwindigkeit fuer den linken Motor // auf 150 und stoppt den rechten Motor. MotorSpeed (150, 0);
Definiert in Zeile 84 der 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 183 der Datei motor.c.
00186 { 00187 unsigned char left, right; 00188 00189 if (leftpwm < 0) // Ein negativer Wert fuehrt ... 00190 { 00191 left = RWD; // ... zu einer Rueckwaertsfahrt, ... 00192 leftpwm = -leftpwm; // aber immer positiv PWM-Wert 00193 } 00194 else 00195 left = FWD; // ... sonst nach vorne, ... 00196 if (leftpwm == 0) 00197 left = BREAK; // ... oder bei 0 zum Bremsen. 00198 00199 if (rightpwm < 0) 00200 { 00201 right = RWD; 00202 rightpwm = -rightpwm; 00203 } 00204 else 00205 right = FWD; 00206 if (rightpwm == 0) 00207 right = BREAK; 00208 00209 MotorDir (left, right); // Drehrichtung setzen 00210 00211 /* 00212 Die Geschwindigkeitsparameter mit 2 multiplizieren, da der Absolutwert 00213 der Parameter dieser Funktion nur genau die Haelfte von der MotorSpeed()- 00214 Funktion betraegt. 00215 */ 00216 MotorSpeed (leftpwm * 2, rightpwm * 2); 00217 }