N K
/
GaNtroller
a fork of priustroller
Fork of priustroller_current by
main.cpp
- Committer:
- nki
- Date:
- 2015-03-14
- Revision:
- 27:846c08fb3697
- Parent:
- 26:d00561c7bf43
- Child:
- 29:cb03760ba9ea
File content as of revision 27:846c08fb3697:
#include "includes.h" #include "transforms.h" #include "filters.h" #include "context.h" #include "core.h" #include "meta.h" #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.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->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(); }