/* * L8 - Control motor DC cu driver TLE 526 conectat la XMC2G. Viteza se controleaza prin PWM aplicat la intrarea IN1. Sensul de rotatie se stabileste prin valoarea logica aplicata la intrarea IN2. Comanda este receptionata prin BT conectat la UART. Tx este conectat la P0.7 Rx este conectat la P0.6. Pentru test se poate redirectiona catre un terminal conectat la UART -DEBUG , respectiv Tx -P2.1 si Rx -P2.2. PWM pentru viteza este generat la iesirea P0.8, sensul de rotatie este stabilit prin valoarea logica de la iesirea P0.9. * * */ #include void delay() { int i; for (i=0;i<0x0ffff;i++); // aprox 1 secunda cu 5f } int main(void) { uint8_t j; // car. receptionat DAVE_Init(); //* Initializare DAVE APPs DIGITAL_IO_SetOutputLow (&sens); // sens rotatie PWM_SetFreq(&PWM_0, 50); // frecventa 50 Hz PWM_SetDutyCycle(&PWM_0,98000 ); // stabileste viteza mica PWM_Start(&PWM_0); UART_SetRXFIFOTriggerLimit(&UART_0, 0); // buffer 1 caracter while(1U) { if(UART_GetRXFIFOStatus(&UART_0)) // caracater disponibil { UART_ClearRXFIFOStatus(&UART_0, 1); // anuleaza stare j = UART_GetReceivedWord(&UART_0); // lectura data if (j=='1') // motor 1 { DIGITAL_IO_SetOutputLow (&sens); // sens rotatie PWM_SetDutyCycle(&PWM_0, 1000); // turatie mare } if(j=='2') // motor 2 { DIGITAL_IO_SetOutputLow (&sens); // sens rotatie PWM_SetDutyCycle(&PWM_0, 10000); // turatie mica } if (j=='3') // motor 3 { DIGITAL_IO_SetOutputHigh (&sens); // inversare sens PWM_SetDutyCycle(&PWM_0, 1000); // turatie mare } } } return 0; }