Bayley Wang
/
priustroller_3
temp repo
Fork of priustroller_2 by
Diff: core/inverter.cpp
- Revision:
- 11:dccbaa9274c5
- Parent:
- 6:99ee0ce47fb2
- Child:
- 25:0003b824dd7d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/inverter.cpp Sun Mar 08 08:37:38 2015 +0000 @@ -0,0 +1,62 @@ +#include "includes.h" +#include "core.h" +#include "sensors.h" + +Inverter::Inverter(PinName ph_a, PinName ph_b, PinName ph_c, PinName en, VoltageSensor *sense_bus, TempSensor *sense_t) { + _en = new DigitalOut(en); + Disable(); + + _pwm_a = new PwmOut(ph_a); + _pwm_b = new PwmOut(ph_b); + _pwm_c = new PwmOut(ph_c); + _pwm_a->period_us(100); + _pwm_b->period_us(100); + _pwm_c->period_us(100); + + _sense_bus = sense_bus; + _sense_t = sense_t; + + SetDtcA(0); + SetDtcB(0); + SetDtcC(0); + + TIM2->CR1 &= ~(TIM_CR1_CEN); + TIM2->CR1 |= TIM_CR1_CMS; + TIM2->CR1 |= TIM_CR1_CEN; + + Enable(); +} + +void Inverter::SetDtcA(float dtc) { + if (dtc < 0) dtc = 0.0f; + if (dtc > 1.0f) dtc = 1.0f; + *_pwm_a = dtc; +} + +void Inverter::SetDtcB(float dtc) { + if (dtc < 0) dtc = 0.0f; + if (dtc > 1.0f) dtc = 1.0f; + *_pwm_b = 1.0f - dtc; +} + +void Inverter::SetDtcC(float dtc) { + if (dtc < 0) dtc = 0.0f; + if (dtc > 1.0f) dtc = 1.0f; + *_pwm_c = dtc; +} + +void Inverter::Enable() { + *_en = 0; +} + +void Inverter::Disable() { + *_en = 1; +} + +float Inverter::GetVbus() { + return _sense_bus->GetVoltage(); +} + +float Inverter::GetTemp() { + return _sense_t->GetTemp(); +} \ No newline at end of file