00001 /****************************************************************************/ 00033 /***************************************************************************** 00034 * * 00035 * This program is free software; you can redistribute it and/or modify * 00036 * it under the terms of the GNU General Public License as published by * 00037 * the Free Software Foundation; either version 2 of the License, or * 00038 * any later version. * 00039 * * 00040 *****************************************************************************/ 00041 #include "asuro.h" 00042 00043 00044 00045 /*************************************************************************** 00046 * 00047 * sto1 07.01.2006 stochri first implementation 00048 * 00049 * control the motors 00050 * 00051 * input range: -127 full power backturn 00052 * 0 stop motors 00053 * +127 full power vorward 00054 * 00055 * motor direction and speed can be set with one parameter 00056 * 00057 * last modification: 00058 * Ver. Date Author Comments 00059 * ------- ---------- -------------- --------------------------------- 00060 * sto1 07.01.2006 stochri first implementation 00061 * ------- ---------- -------------- --------------------------------- 00062 ****************************************************************************/ 00063 /****************************************************************************/ 00091 void SetMotorPower ( 00092 int8_t leftpwm, 00093 int8_t rightpwm) 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 }