stock mbed AnalogReads current loop closed and working
Fork of priustroller by
Diff: main.cpp
- Revision:
- 11:dccbaa9274c5
- Parent:
- 10:b4abecccec7a
- Child:
- 24:f1ff9c7256b5
--- a/main.cpp Sun Mar 08 00:45:28 2015 +0000 +++ b/main.cpp Sun Mar 08 08:37:38 2015 +0000 @@ -1,76 +1,21 @@ #include "includes.h" +#include "transforms.h" +#include "filters.h" +#include "context.h" #include "core.h" -#include "sensors.h" #include "meta.h" - -void txCallback() { -} - -// This function is called when a character goes into the RX buffer. -void rxCallback() { - if(pc->getc()=='r'){ - acquire = 1; - pc->putc('3'); - } - if((pc->getc()=='d')&(acquire==0)&(_user->throttle==0)){ - for (int i = 0; i < 10000; i++) { - pc->printf("%f,", fbuffer[i]); - } - } - pc->putc(pc->getc()); -} - - - - - - -Serial *pc = new Serial(SERIAL_TX, SERIAL_RX); -float test_alpha = 0; -float test_beta = 0; - -float d_mean = 0; -float q_mean = 0; - -float test_DtcA; -float test_DtcB; -float test_DtcC; +#include "sensors.h" +#include "callbacks.h" -float *fbuffer; -int acquire = 0; -int bufidx = 0; -int bufsize = 10000; -int skip = 0; - -int main() { - pc->baud(115200); - pc->attach(&txCallback, Serial::TxIrq); - pc->attach(&rxCallback, Serial::RxIrq); - pc->printf("%s\n\r", "Init Serial Comm"); - - fbuffer = (float*)malloc(bufsize*sizeof(float)); - - PositionSensor *sense_p = new AnalogHallPositionSensor(A4, A5, 0.249f, 0.497f, 0.231f, 0.499f, 205.0f); - CurrentSensor *sense_ic = new AnalogCurrentSensor(A1, 0.01); - CurrentSensor *sense_ib = new AnalogCurrentSensor(A2, 0.01); - VoltageSensor *sense_bus = new AnalogVoltageSensor(A5, 0.01); - TempSensor *sense_t_motor = new TempSensor(); - TempSensor *sense_t_inverter = new TempSensor(); - Throttle *throttle = new Throttle(A0, 0.8f, 3.0f); - - PidController *pid_d = new PidController(0.001f, 0.1f, 0.0f, 1.0f, -1.0f); - PidController *pid_q = new PidController (0.001f, 0.1f, 0.0f, 5.0f, -5.0f); - - Motor *motor = new Motor(sense_ic, sense_ib, sense_p, sense_t_motor); - Inverter *inverter = new Inverter(D6, D13, D3, D8, sense_bus, sense_t_inverter); - User *user = new User(throttle); - Modulator *modulator = new SinusoidalModulator(inverter); - StatusUpdater *updater = new StatusUpdater(inverter, motor, user); - LoopDriver *driver = new LoopDriver(inverter, motor, user, pid_d, pid_q, modulator, 1.0f, 5000); - - motor->Config(4, 20.0f); - updater->Config(5000, 100, 10); - - driver->Start(); - updater->Start(); +int main() { + Context *context = new Context(); + context->ConfigureOutputs(D6, D13, D3, D8); + context->ConfigureCurrentSensors(A1, A2, 0.01, 0.95); + context->ConfigurePidControllers(0.001f, 0.1f, 0.0f, 5.0f, -5.0f); + context->ConfigureThrottle(A0, 0.8f, 3.0f); + context->ConfigurePositionSensor(A4, A5, 0.249f, 0.497f, 0.231f, 0.499f, 205.0f); + context->AttachCallBack(&fast, 5000); + context->AttachCallBack(&slow, 10); + context->AttachCallBack(&debug, 10); + context->Start(); }