/* * C11_XMC4500 -utilizare SYSTIMER pentru activare task interogare * potentiometru control turatie motor de curent continuu. * * * */ #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 blink1() // lectura potentiometru { DIGITAL_IO_ToggleOutput (&led1); // led semnalizare ADC_MEASUREMENT_StartConversion(&adc); } void blink2() // actiune 2 { // actiune 2 activabila cu Systimer DIGITAL_IO_ToggleOutput (&led2); } int main(void) { DAVE_Init(); /* Initialization of DAVE APPs */ // systik configurat la >1000us timer_1 = SYSTIMER_CreateTimer(50000, SYSTIMER_MODE_PERIODIC, blink1, NULL); timer_2 = SYSTIMER_CreateTimer(2000000, SYSTIMER_MODE_PERIODIC,blink2, NULL); SYSTIMER_StartTimer(timer_1); // actiune 1 SYSTIMER_StartTimer(timer_2); // actiune 2 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 while(1U) { PWM_SetDutyCycle(&PWM_0,analog*5); for (i=0;i<0xffff;i++); // ADC_MEASUREMENT_StartConversion(&adc); } return 0; }