Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

Committer:
nki
Date:
Sun Mar 15 01:45:22 2015 +0000
Revision:
30:2b6d426f3bfc
Parent:
29:cb03760ba9ea
Child:
31:86b87913d8e1
New interrupt driven current-sensing; current sensors have a ~0.2A offset

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 0:54cf32d35f4d 1 #include "includes.h"
bwang 11:dccbaa9274c5 2 #include "transforms.h"
bwang 11:dccbaa9274c5 3 #include "filters.h"
bwang 11:dccbaa9274c5 4 #include "context.h"
bwang 1:1f58bdcf2956 5 #include "core.h"
bwang 1:1f58bdcf2956 6 #include "meta.h"
bwang 11:dccbaa9274c5 7 #include "sensors.h"
bwang 11:dccbaa9274c5 8 #include "callbacks.h"
nki 4:fdadf4a3577a 9
nki 30:2b6d426f3bfc 10 volatile unsigned short global_ib, global_ic;
nki 30:2b6d426f3bfc 11 uint32_t channel_ib, channel_ic;
nki 27:846c08fb3697 12
nki 27:846c08fb3697 13 extern "C" void TIM2_Derpy_Handler()
nki 27:846c08fb3697 14 {
nki 29:cb03760ba9ea 15 TIM2->SR &= ~1;
nki 30:2b6d426f3bfc 16 ADC1->SQR1 &= ~ADC_SQR1_L;
nki 30:2b6d426f3bfc 17 ADC1->SQR3 = 0;
nki 30:2b6d426f3bfc 18 ADC1->SQR3 |= channel_ib;
nki 29:cb03760ba9ea 19 ADC1->CR2 |= ADC_CR2_SWSTART;
nki 29:cb03760ba9ea 20 while ((ADC1->SR & 2) == 0){}
nki 29:cb03760ba9ea 21 global_ib = ADC1->DR;
nki 29:cb03760ba9ea 22
nki 30:2b6d426f3bfc 23 ADC1->SQR3 = 0;
nki 30:2b6d426f3bfc 24 ADC1->SQR3 |= channel_ic;
nki 29:cb03760ba9ea 25 ADC1->CR2 |= ADC_CR2_SWSTART;
nki 29:cb03760ba9ea 26 while ((ADC1->SR & 2) == 0){}
nki 29:cb03760ba9ea 27 global_ic = ADC1->DR;
nki 27:846c08fb3697 28 }
nki 27:846c08fb3697 29
bwang 11:dccbaa9274c5 30 int main() {
nki 27:846c08fb3697 31 NVIC_EnableIRQ(TIM2_IRQn);
nki 29:cb03760ba9ea 32 NVIC_SetVector(TIM2_IRQn, (uint32_t)TIM2_Derpy_Handler);
nki 29:cb03760ba9ea 33
bwang 11:dccbaa9274c5 34 Context *context = new Context();
bwang 11:dccbaa9274c5 35 context->ConfigureOutputs(D6, D13, D3, D8);
nki 29:cb03760ba9ea 36 context->ConfigurePositionSensor(A4, A5, 0.249f, 0.497f, 0.231f, 0.499f, 205.0f);
nki 27:846c08fb3697 37 context->ConfigureIdPidController(0.0000f, 0.0f, 0.0f, 5.0f, -5.0f);
nki 27:846c08fb3697 38 context->ConfigureIqPidController(0.0001f, 0.1f, 0.0f, 5.0f, -5.0f);
bwang 11:dccbaa9274c5 39 context->ConfigureThrottle(A0, 0.8f, 3.0f);
nki 29:cb03760ba9ea 40 context->ConfigureCurrentSensors(A1, A2, 0.01f, 0.7f); // I guess this configures the ADCs or something
bwang 24:f1ff9c7256b5 41 context->ConfigureReference(5.0f);
bwang 24:f1ff9c7256b5 42 context->ConfigureDebugger(2, 1000);
bwang 11:dccbaa9274c5 43 context->AttachCallBack(&fast, 5000);
bwang 11:dccbaa9274c5 44 context->AttachCallBack(&slow, 10);
bwang 11:dccbaa9274c5 45 context->AttachCallBack(&debug, 10);
bwang 24:f1ff9c7256b5 46 context->AttachCallBack(&log, 500);
nki 29:cb03760ba9ea 47 context->InitData();
bwang 11:dccbaa9274c5 48 context->Start();
bwang 0:54cf32d35f4d 49 }