Bayley Wang
/
foc-ed_in_the_bot_compact
robot
callbacks.cpp
- Committer:
- bwang
- Date:
- 2018-04-29
- Revision:
- 212:1e370ffcb73d
- Parent:
- 191:66861311bdcd
- Child:
- 214:c70a6e86417f
File content as of revision 212:1e370ffcb73d:
#include "CommandProcessor.h" #include "defaults.h" #include "derived.h" #include "globals.h" #include "main.h" char linebuf[128]; int index = 0; void rxCallback() { while (io.pc->readable()) { char c = io.pc->getc(); if (c != 127 && c != 8 && c != '\r' && c != '\t') { linebuf[index] = c; index++; io.pc->putc(c); } else if (c == 127 || c == 8) { if (index > 0) { index--; //BS (8) should delete previous char io.pc->putc(127); } } else if (c == '\r') { linebuf[index] = 0; io.pc->putc(c); processCmd(io.pc, io.pref, linebuf); index = 0; io.pc->putc('>'); } } } extern "C" void TIM1_UP_TIM10_IRQHandler(void) { int start_state = io.throttle_in->state(); if (TIM1->SR & TIM_SR_UIF ) { ADC1->CR2 |= 0x40000000; volatile int delay; for (delay = 0; delay < 35; delay++); read.adval1 = ADC1->DR; read.adval2 = ADC2->DR; commutate(); } TIM1->SR = 0x00; int end_state = io.throttle_in->state(); if (start_state != end_state) io.throttle_in->block(); } void update_velocity() { read.last_p_mech = read.p_mech; read.p_mech = io.pos->GetMechPosition(); float dp_mech = read.p_mech - read.last_p_mech; if (dp_mech < -PI) dp_mech += 2 * PI; if (dp_mech > PI) dp_mech -= 2 * PI; float w_raw = dp_mech * F_SW; //rad/s read.w = control.velocity_filter->update(w_raw); }