Jens Frank Jensen
/
foc-ed_in_the_bot_compact
Diff: callbacks.cpp
- Revision:
- 187:523cf8c962e4
- Child:
- 191:66861311bdcd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/callbacks.cpp Fri Feb 09 23:24:25 2018 +0000 @@ -0,0 +1,61 @@ +#include "CommandProcessor.h" + +#include "defaults.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 != '\r' && c != '\t') { + linebuf[index] = c; + index++; + io.pc->putc(c); + } else if (c == 127) { + if (index > 0) { + index--; + io.pc->putc(c); + } + } 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); +} \ No newline at end of file