N K
/
GaNtroller
a fork of priustroller
Fork of priustroller_current by
main.cpp@10:b4abecccec7a, 2015-03-08 (annotated)
- Committer:
- nki
- Date:
- Sun Mar 08 00:45:28 2015 +0000
- Revision:
- 10:b4abecccec7a
- Parent:
- 9:d3b70c15baa9
- Child:
- 11:dccbaa9274c5
uguu;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bwang | 0:54cf32d35f4d | 1 | #include "includes.h" |
bwang | 1:1f58bdcf2956 | 2 | #include "core.h" |
bwang | 1:1f58bdcf2956 | 3 | #include "sensors.h" |
bwang | 1:1f58bdcf2956 | 4 | #include "meta.h" |
bwang | 0:54cf32d35f4d | 5 | |
nki | 10:b4abecccec7a | 6 | void txCallback() { |
nki | 10:b4abecccec7a | 7 | } |
nki | 10:b4abecccec7a | 8 | |
nki | 10:b4abecccec7a | 9 | // This function is called when a character goes into the RX buffer. |
nki | 10:b4abecccec7a | 10 | void rxCallback() { |
nki | 10:b4abecccec7a | 11 | if(pc->getc()=='r'){ |
nki | 10:b4abecccec7a | 12 | acquire = 1; |
nki | 10:b4abecccec7a | 13 | pc->putc('3'); |
nki | 10:b4abecccec7a | 14 | } |
nki | 10:b4abecccec7a | 15 | if((pc->getc()=='d')&(acquire==0)&(_user->throttle==0)){ |
nki | 10:b4abecccec7a | 16 | for (int i = 0; i < 10000; i++) { |
nki | 10:b4abecccec7a | 17 | pc->printf("%f,", fbuffer[i]); |
nki | 10:b4abecccec7a | 18 | } |
nki | 10:b4abecccec7a | 19 | } |
nki | 10:b4abecccec7a | 20 | pc->putc(pc->getc()); |
nki | 10:b4abecccec7a | 21 | } |
nki | 10:b4abecccec7a | 22 | |
nki | 10:b4abecccec7a | 23 | |
nki | 10:b4abecccec7a | 24 | |
nki | 10:b4abecccec7a | 25 | |
nki | 10:b4abecccec7a | 26 | |
nki | 10:b4abecccec7a | 27 | |
nki | 4:fdadf4a3577a | 28 | Serial *pc = new Serial(SERIAL_TX, SERIAL_RX); |
nki | 6:99ee0ce47fb2 | 29 | float test_alpha = 0; |
nki | 6:99ee0ce47fb2 | 30 | float test_beta = 0; |
nki | 6:99ee0ce47fb2 | 31 | |
nki | 9:d3b70c15baa9 | 32 | float d_mean = 0; |
nki | 9:d3b70c15baa9 | 33 | float q_mean = 0; |
nki | 6:99ee0ce47fb2 | 34 | |
nki | 6:99ee0ce47fb2 | 35 | float test_DtcA; |
nki | 6:99ee0ce47fb2 | 36 | float test_DtcB; |
nki | 6:99ee0ce47fb2 | 37 | float test_DtcC; |
nki | 4:fdadf4a3577a | 38 | |
nki | 10:b4abecccec7a | 39 | float *fbuffer; |
nki | 10:b4abecccec7a | 40 | int acquire = 0; |
nki | 10:b4abecccec7a | 41 | int bufidx = 0; |
nki | 10:b4abecccec7a | 42 | int bufsize = 10000; |
nki | 10:b4abecccec7a | 43 | int skip = 0; |
nki | 10:b4abecccec7a | 44 | |
bwang | 0:54cf32d35f4d | 45 | int main() { |
nki | 4:fdadf4a3577a | 46 | pc->baud(115200); |
nki | 10:b4abecccec7a | 47 | pc->attach(&txCallback, Serial::TxIrq); |
nki | 10:b4abecccec7a | 48 | pc->attach(&rxCallback, Serial::RxIrq); |
nki | 6:99ee0ce47fb2 | 49 | pc->printf("%s\n\r", "Init Serial Comm"); |
nki | 10:b4abecccec7a | 50 | |
nki | 10:b4abecccec7a | 51 | fbuffer = (float*)malloc(bufsize*sizeof(float)); |
nki | 6:99ee0ce47fb2 | 52 | |
nki | 9:d3b70c15baa9 | 53 | PositionSensor *sense_p = new AnalogHallPositionSensor(A4, A5, 0.249f, 0.497f, 0.231f, 0.499f, 205.0f); |
nki | 6:99ee0ce47fb2 | 54 | CurrentSensor *sense_ic = new AnalogCurrentSensor(A1, 0.01); |
bwang | 0:54cf32d35f4d | 55 | CurrentSensor *sense_ib = new AnalogCurrentSensor(A2, 0.01); |
bwang | 0:54cf32d35f4d | 56 | VoltageSensor *sense_bus = new AnalogVoltageSensor(A5, 0.01); |
bwang | 0:54cf32d35f4d | 57 | TempSensor *sense_t_motor = new TempSensor(); |
bwang | 0:54cf32d35f4d | 58 | TempSensor *sense_t_inverter = new TempSensor(); |
nki | 10:b4abecccec7a | 59 | Throttle *throttle = new Throttle(A0, 0.8f, 3.0f); |
bwang | 0:54cf32d35f4d | 60 | |
nki | 10:b4abecccec7a | 61 | PidController *pid_d = new PidController(0.001f, 0.1f, 0.0f, 1.0f, -1.0f); |
nki | 10:b4abecccec7a | 62 | PidController *pid_q = new PidController (0.001f, 0.1f, 0.0f, 5.0f, -5.0f); |
bwang | 3:0a2396597e0d | 63 | |
nki | 6:99ee0ce47fb2 | 64 | Motor *motor = new Motor(sense_ic, sense_ib, sense_p, sense_t_motor); |
bwang | 0:54cf32d35f4d | 65 | Inverter *inverter = new Inverter(D6, D13, D3, D8, sense_bus, sense_t_inverter); |
bwang | 0:54cf32d35f4d | 66 | User *user = new User(throttle); |
bwang | 3:0a2396597e0d | 67 | Modulator *modulator = new SinusoidalModulator(inverter); |
bwang | 3:0a2396597e0d | 68 | StatusUpdater *updater = new StatusUpdater(inverter, motor, user); |
nki | 6:99ee0ce47fb2 | 69 | LoopDriver *driver = new LoopDriver(inverter, motor, user, pid_d, pid_q, modulator, 1.0f, 5000); |
bwang | 0:54cf32d35f4d | 70 | |
bwang | 0:54cf32d35f4d | 71 | motor->Config(4, 20.0f); |
nki | 9:d3b70c15baa9 | 72 | updater->Config(5000, 100, 10); |
nki | 4:fdadf4a3577a | 73 | |
bwang | 3:0a2396597e0d | 74 | driver->Start(); |
bwang | 3:0a2396597e0d | 75 | updater->Start(); |
bwang | 0:54cf32d35f4d | 76 | } |