robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Sun Nov 11 12:34:19 2018 +0000
Revision:
240:2aaffa217627
Parent:
236:29ee9e1ccf61
Child:
242:ac30f04fd6f7
added speed mode (untested), other changes - see CHANGELOG

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 181:d3510c8beab6 1 #include "mbed.h"
bwang 181:d3510c8beab6 2 #include "CommandProcessor.h"
bwang 181:d3510c8beab6 3 #include "PreferenceWriter.h"
bwang 181:d3510c8beab6 4
bwang 181:d3510c8beab6 5 #include "prefs.h"
bwang 181:d3510c8beab6 6 #include "globals.h"
bwang 181:d3510c8beab6 7
bwang 196:7172e6e28867 8 #include "hardware.h"
bwang 185:5c102874b490 9 #include "defaults.h"
bwang 185:5c102874b490 10 #include "derived.h"
bwang 181:d3510c8beab6 11
bwang 234:ad68d7f8eff1 12 #include "errors.h"
bwang 232:47f6cf4f9126 13 #include "Calibration.h"
bwang 232:47f6cf4f9126 14
bwang 181:d3510c8beab6 15 void cmd_setp(Serial *pc, char *buf) {
bwang 234:ad68d7f8eff1 16 if (BREMS_src == CMD_SRC_TERMINAL) {
bwang 235:fe49ec4e9c97 17 control.user_cmd = atof(buf);
bwang 236:29ee9e1ccf61 18 if (!checks_passed() && control.user_cmd != 0.0f) {
bwang 234:ad68d7f8eff1 19 pc->printf("%s\n", "Errors present, setting to 0.0");
bwang 235:fe49ec4e9c97 20 control.user_cmd = 0.0f;
bwang 234:ad68d7f8eff1 21 }
bwang 234:ad68d7f8eff1 22 }
bwang 181:d3510c8beab6 23 }
bwang 181:d3510c8beab6 24
bwang 181:d3510c8beab6 25 void cmd_mode(Serial *pc, char *buf) {
bwang 200:4999d5e6c63d 26 if (control.user_cmd != 0.0f || control.torque_percent != 0.0f) {
bwang 200:4999d5e6c63d 27 pc->printf("%s\n", "Turn off motor first");
bwang 200:4999d5e6c63d 28 return;
bwang 200:4999d5e6c63d 29 }
bwang 181:d3510c8beab6 30 int n = str_to_mode(buf);
bwang 181:d3510c8beab6 31 if (n < 0) {
bwang 181:d3510c8beab6 32 pc->printf("%s\n", "Invalid Mode");
bwang 181:d3510c8beab6 33 return;
bwang 181:d3510c8beab6 34 }
bwang 181:d3510c8beab6 35 BREMS_mode = n;
bwang 232:47f6cf4f9126 36
bwang 232:47f6cf4f9126 37 //ZERO and CHR are special modes - they execute run-once functions
bwang 232:47f6cf4f9126 38 //and override commutation, then exit to CFG
bwang 232:47f6cf4f9126 39 if (BREMS_mode == MODE_ZERO) {
bwang 232:47f6cf4f9126 40 calibrate_position(&io);
bwang 232:47f6cf4f9126 41 control.user_cmd = 0.0f;
bwang 232:47f6cf4f9126 42 BREMS_mode = MODE_CFG;
bwang 232:47f6cf4f9126 43 }
bwang 232:47f6cf4f9126 44 else if (BREMS_mode == MODE_CHR) {
bwang 232:47f6cf4f9126 45 control.user_cmd = 0.0f;
bwang 232:47f6cf4f9126 46 BREMS_mode = MODE_CFG;
bwang 232:47f6cf4f9126 47 }
bwang 232:47f6cf4f9126 48 else
bwang 232:47f6cf4f9126 49 {
bwang 232:47f6cf4f9126 50 pc->printf("Set mode to %s\n", mode_to_str(n));
bwang 232:47f6cf4f9126 51 }
bwang 181:d3510c8beab6 52 }
bwang 181:d3510c8beab6 53
bwang 181:d3510c8beab6 54 void cmd_src(Serial *pc, char *buf) {
bwang 200:4999d5e6c63d 55 if (control.user_cmd != 0.0f || control.torque_percent != 0.0f) {
bwang 200:4999d5e6c63d 56 pc->printf("%s\n", "Turn off motor first");
bwang 200:4999d5e6c63d 57 return;
bwang 200:4999d5e6c63d 58 }
bwang 181:d3510c8beab6 59 int n = str_to_src(buf);
bwang 181:d3510c8beab6 60 if (n < 0) {
bwang 181:d3510c8beab6 61 pc->printf("%s\n", "Invalid Source");
bwang 181:d3510c8beab6 62 return;
bwang 181:d3510c8beab6 63 }
bwang 181:d3510c8beab6 64 BREMS_src = n;
bwang 181:d3510c8beab6 65 pc->printf("Set source to %s\n", src_to_str(n));
bwang 181:d3510c8beab6 66 }
bwang 181:d3510c8beab6 67
bwang 181:d3510c8beab6 68 void cmd_op(Serial *pc, char *buf) {
bwang 200:4999d5e6c63d 69 if (control.user_cmd != 0.0f || control.torque_percent != 0.0f) {
bwang 200:4999d5e6c63d 70 pc->printf("%s\n", "Turn off motor first");
bwang 200:4999d5e6c63d 71 return;
bwang 200:4999d5e6c63d 72 }
bwang 181:d3510c8beab6 73 int n = str_to_op(buf);
bwang 181:d3510c8beab6 74 if (n < 0) {
bwang 240:2aaffa217627 75 pc->printf("%s\n", "Invalid operation");
bwang 181:d3510c8beab6 76 return;
bwang 181:d3510c8beab6 77 }
bwang 181:d3510c8beab6 78 BREMS_op = n;
bwang 181:d3510c8beab6 79 pc->printf("Set operation to %s\n", op_to_str(n));
bwang 181:d3510c8beab6 80 }
bwang 181:d3510c8beab6 81
bwang 181:d3510c8beab6 82 void cmd_exit(Serial *pc) {
bwang 205:5cfe6d7e08a3 83 if (control.user_cmd != 0.0f || control.torque_percent != 0.0f) {
bwang 205:5cfe6d7e08a3 84 pc->printf("%s\n", "Turn off motor first");
bwang 205:5cfe6d7e08a3 85 return;
bwang 205:5cfe6d7e08a3 86 }
bwang 181:d3510c8beab6 87 BREMS_mode = MODE_RUN;
bwang 181:d3510c8beab6 88 pc->printf("%s\n", "Run mode ON");
bwang 181:d3510c8beab6 89 }