/* * C12_XMC4500 - Control BLDC prevazut cu ESC de tip Readytosky. * Semnalul PWM este generat la iesirea P0.12 * Potentiometru control conectat la P14.1 * */ #include //Declarations from DAVE Code Generation (includes SFR declaration) uint32_t timer_1; uint32_t timer_2; int analog; // rezultat conversie AD void adch() // rutina tratare intrerupere modul AD { analog = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel_A); //lectura data } int i; void delay() { for(i=0;i<0xfffff;i++); } void blink1() // lectura potentiometru { DIGITAL_IO_ToggleOutput (&led1); // led semnalizare ADC_MEASUREMENT_StartConversion(&adc); } int main(void) { DAVE_Init(); /* Initialization of DAVE APPs */ // systik configurat la >1000us timer_1 = SYSTIMER_CreateTimer(50000, SYSTIMER_MODE_PERIODIC, blink1, NULL); SYSTIMER_StartTimer(timer_1); // actiune 1 PWM_Init (&PWM_0); // initializare modul PWM PWM_SetFreq(&PWM_0,50); // perioada 20 milisecunde PWM_SetDutyCycle(&PWM_0,0); // nu genereaza semnal PWM_Start(&PWM_0); // porneste pwm cu factor zero // sevventa initializare ESC PWM_SetDutyCycle(&PWM_0,1000); //setare 2000 microsec vit. maxima delay(); delay(); delay();delay();delay(); delay(); delay(); delay();delay();delay(); // pe aici se conecteaza alimentarea delay(); delay(); delay();delay();delay(); // trebuie identificat wait 5secunde. delay(); delay(); delay();delay();delay(); PWM_SetDutyCycle(&PWM_0,300); // setare viteza minima delay(); delay(); delay();delay();delay(); delay(); delay(); delay(); delay(); delay();delay();delay(); delay(); delay(); delay();delay();delay();// wait 5 secunde // ESC finalizat initializare while(1U) { PWM_SetDutyCycle(&PWM_0,200+analog*3); // control turatie for (i=0;i<0xffff;i++); // ADC_MEASUREMENT_StartConversion(&adc); } return 0; }