N K
/
GaNtroller
a fork of priustroller
Fork of priustroller_current by
Diff: main.cpp
- Revision:
- 27:846c08fb3697
- Parent:
- 26:d00561c7bf43
- Child:
- 29:cb03760ba9ea
--- a/main.cpp Tue Mar 10 17:51:38 2015 +0000 +++ b/main.cpp Sat Mar 14 18:51:36 2015 +0000 @@ -7,19 +7,66 @@ #include "sensors.h" #include "callbacks.h" +//NVIC_SetVector(ADC_IRQn, (uint32_t)ADC_IRQHandler); +//NVIC->IntSelect &= ~(1 << USB_IRQn); +//NVIC_EnableIRQ(TIM2_CC_IRQn); + + + +//NVIC_SetPriority(0); //(uint32_t)SPI_IRQn +//NVIC_EnableIRQ((uint32_t)SPI_IRQn); + +int current1, current2; + +extern "C" void TIM2_Derpy_Handler() +{ + toggler = !toggler; + + ADC1->SQR3 = 0; //clear the conversion sequence register + ADC1->SQR3 |= 1; //set the first bit high (read PA_1 a.k.a ADC1_1 a.k.a. A1 + ADC1->CR2 |= (1 << 30); //(SWSTART = 1) start the conversion + while ((ADC1->SR & 2) == 0){} // while bit 1 of ADC_SR is 0 (not done converting yet), do nothing. + current1 = ADC1->DR; + + ADC1->SQR3 |= 4; //set the first bit high (read PA_4 a.k.a. ADC1_4 a.k.a A2 + ADC1->CR2 |= (1 << 30); // (SWSTART = 1) start the conversion + while ((ADC1->SR & 2) == 0){} // while bit 1 of ADC_SR is 0 (not done converting yet), do nothing. + current2 = ADC1->DR; + + + + TIM2->SR &= ~1; //clear the LSB, that is the UIF - update interrupt flag. The flag is set high each time tim_2 overflows and underflows. we reset it here. + toggler = !toggler; +} + + + + +DigitalOut toggler(D7); //to check loop timing + int main() { + +/* + ADC_SQR1 |= (1 << 20); //we're doing 2 conversions. (p.231) + ADC_CR2 |= (1 << 30); //start conversion mode (p.227) +*/ + NVIC_EnableIRQ(TIM2_IRQn); + NVIC_SetVector(TIM2_IRQn, (uint32_t)TIM2_Derpy_Handler); //just calling it this so it doesn't blend in with the other cryptic register-looking names. + + Context *context = new Context(); context->ConfigureOutputs(D6, D13, D3, D8); - context->ConfigureCurrentSensors(A1, A2, 0.01f, 0.99995f); - context->ConfigureIdPidController(0.01f, 0.8f, 0.0f, 2.0f, -2.0f); - context->ConfigureIqPidController(0.01f, 0.8f, 0.0f, 2.0f, -2.0f); + context->ConfigureCurrentSensors(A1, A2, 0.01f, 0.7f); // I guess this configures the ADCs or something + context->ConfigureIdPidController(0.0000f, 0.0f, 0.0f, 5.0f, -5.0f); + context->ConfigureIqPidController(0.0001f, 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->ConfigurePositionSensor(A4, A5, 0.249f, 0.497f, 0.231f, 0.499f, 205.0f); context->ConfigureReference(5.0f); context->ConfigureDebugger(2, 1000); context->AttachCallBack(&fast, 5000); context->AttachCallBack(&slow, 10); context->AttachCallBack(&debug, 10); context->AttachCallBack(&log, 500); + context->Start(); }