robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Sat Feb 10 03:42:07 2018 +0000
Revision:
191:66861311bdcd
Parent:
187:523cf8c962e4
Child:
212:1e370ffcb73d
02/09/2018 22:41 - removed ROW, COLUMNS from configurable values, for now. removed a bunch of extra #include's

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 187:523cf8c962e4 1 #include "CommandProcessor.h"
bwang 187:523cf8c962e4 2
bwang 187:523cf8c962e4 3 #include "defaults.h"
bwang 191:66861311bdcd 4 #include "derived.h"
bwang 187:523cf8c962e4 5 #include "globals.h"
bwang 187:523cf8c962e4 6 #include "main.h"
bwang 187:523cf8c962e4 7
bwang 187:523cf8c962e4 8 char linebuf[128];
bwang 187:523cf8c962e4 9 int index = 0;
bwang 187:523cf8c962e4 10
bwang 187:523cf8c962e4 11 void rxCallback() {
bwang 187:523cf8c962e4 12 while (io.pc->readable()) {
bwang 187:523cf8c962e4 13 char c = io.pc->getc();
bwang 187:523cf8c962e4 14 if (c != 127 && c != '\r' && c != '\t') {
bwang 187:523cf8c962e4 15 linebuf[index] = c;
bwang 187:523cf8c962e4 16 index++;
bwang 187:523cf8c962e4 17 io.pc->putc(c);
bwang 187:523cf8c962e4 18 } else if (c == 127) {
bwang 187:523cf8c962e4 19 if (index > 0) {
bwang 187:523cf8c962e4 20 index--;
bwang 187:523cf8c962e4 21 io.pc->putc(c);
bwang 187:523cf8c962e4 22 }
bwang 187:523cf8c962e4 23 } else if (c == '\r') {
bwang 187:523cf8c962e4 24 linebuf[index] = 0;
bwang 187:523cf8c962e4 25 io.pc->putc(c);
bwang 187:523cf8c962e4 26 processCmd(io.pc, io.pref, linebuf);
bwang 187:523cf8c962e4 27 index = 0;
bwang 187:523cf8c962e4 28 io.pc->putc('>');
bwang 187:523cf8c962e4 29 }
bwang 187:523cf8c962e4 30 }
bwang 187:523cf8c962e4 31 }
bwang 187:523cf8c962e4 32
bwang 187:523cf8c962e4 33 extern "C" void TIM1_UP_TIM10_IRQHandler(void) {
bwang 187:523cf8c962e4 34 int start_state = io.throttle_in->state();
bwang 187:523cf8c962e4 35
bwang 187:523cf8c962e4 36 if (TIM1->SR & TIM_SR_UIF ) {
bwang 187:523cf8c962e4 37 ADC1->CR2 |= 0x40000000;
bwang 187:523cf8c962e4 38 volatile int delay;
bwang 187:523cf8c962e4 39 for (delay = 0; delay < 35; delay++);
bwang 187:523cf8c962e4 40
bwang 187:523cf8c962e4 41 read.adval1 = ADC1->DR;
bwang 187:523cf8c962e4 42 read.adval2 = ADC2->DR;
bwang 187:523cf8c962e4 43
bwang 187:523cf8c962e4 44 commutate();
bwang 187:523cf8c962e4 45 }
bwang 187:523cf8c962e4 46 TIM1->SR = 0x00;
bwang 187:523cf8c962e4 47 int end_state = io.throttle_in->state();
bwang 187:523cf8c962e4 48 if (start_state != end_state) io.throttle_in->block();
bwang 187:523cf8c962e4 49 }
bwang 187:523cf8c962e4 50
bwang 187:523cf8c962e4 51 void update_velocity() {
bwang 187:523cf8c962e4 52 read.last_p_mech = read.p_mech;
bwang 187:523cf8c962e4 53 read.p_mech = io.pos->GetMechPosition();
bwang 187:523cf8c962e4 54
bwang 187:523cf8c962e4 55 float dp_mech = read.p_mech - read.last_p_mech;
bwang 187:523cf8c962e4 56 if (dp_mech < -PI) dp_mech += 2 * PI;
bwang 187:523cf8c962e4 57 if (dp_mech > PI) dp_mech -= 2 * PI;
bwang 187:523cf8c962e4 58
bwang 187:523cf8c962e4 59 float w_raw = dp_mech * F_SW; //rad/s
bwang 187:523cf8c962e4 60
bwang 187:523cf8c962e4 61 read.w = control.velocity_filter->update(w_raw);
bwang 187:523cf8c962e4 62 }