summaryrefslogtreecommitdiffstats
path: root/Motor.cpp
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2007-04-13 19:58:03 +0200
committerneoraider <devnull@localhost>2007-04-13 19:58:03 +0200
commit7da669b97ec71f138c74d562b8a3b219d3f98a50 (patch)
tree089226274f422ae1b486cf44d36751de47bca01c /Motor.cpp
parente26a1dc73313098cef235918d237f9b1a6e4cb5f (diff)
downloadrc2007-rescue-7da669b97ec71f138c74d562b8a3b219d3f98a50.tar
rc2007-rescue-7da669b97ec71f138c74d562b8a3b219d3f98a50.zip
Makefile angelegt; Grundfunktionen erweitert
Diffstat (limited to 'Motor.cpp')
-rw-r--r--Motor.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/Motor.cpp b/Motor.cpp
new file mode 100644
index 0000000..7060967
--- /dev/null
+++ b/Motor.cpp
@@ -0,0 +1,29 @@
+#include "Motor.h"
+
+#include "util.h"
+
+
+Motor::Motor(volatile uint8_t *port, volatile uint8_t *pwmPort, uint8_t fwdMask, uint8_t revMask) {
+ this->port = port;
+ this->pwmPort = pwmPort;
+ this->fwdMask = fwdMask;
+ this->revMask = revMask;
+
+ setSpeed(0);
+}
+
+void Motor::setSpeed(int speed) {
+ this->speed = CLAMP(-255, speed, 255);
+
+ if(speed > 0) {
+ *port &= ~revMask;
+ *port |= fwdMask;
+ }
+ else if(speed < 0) {
+ *port &= ~fwdMask;
+ *port |= revMask;
+ }
+ else *port |= fwdMask|revMask;
+
+ *pwmPort = ABS(this->speed);
+}