// Timer : lecture analogique, // EPFL 2026, Pierre-Yves Rochat, pyr@pyr.ch // philippe.muellhaupt@epfl.ch (PWM multiple) #include #include #include #include void main(void) { WDTCTL = WDTPW | WDTHOLD; setupDCO(); InitCarte2025(); Wheel_init(); TA0CTL = TASSEL_2 | ID_0 | MC_2 | TAIE; TA0CCR0 = 1000; TA0CCR1 = 1000; TA0CCR2 = 3000; TA0CCR3 = 12000; TA0CCR4 = 50000; TA0CCTL0 |= CCIE; TA0CCTL1 |= CCIE; TA0CCTL2 |= CCIE; TA0CCTL3 |= CCIE; TA0CCTL4 |= CCIE; __enable_interrupt(); uint16_t roue=0; uint16_t pwmVals[9] = {500,2000,9000,30000,65000,30000,9000,2000,5000}; // idee Ph. Mullhaupt while (1) { // boucle infinie vide roue = Wheel_getValue(); // lecture de la position du potentiomètre TA0CCR0 = pwmVals[(roue >> 6)%9]; // idee Ph. Mullhaupt TA0CCR1 = pwmVals[(roue >> 6)%9+1]; TA0CCR2 = pwmVals[(roue >> 6)%9+2]; TA0CCR3 = pwmVals[(roue >> 6)%9+3]; TA0CCR4 = pwmVals[(roue >> 6)%9+4]; //AfficheLedBleues(roue >>7); // affiche les 5 bits les plus significatifs } } #pragma vector=TIMER0_A1_VECTOR //interrupt_vector __interrupt void Timer_A1(void) { switch (TA0IV) { case 2: Led4Off; break; case 4: Led5Off; break; case 6: Led6Off; break; case 8: Led7Off; break; case 14: Led4On; Led5On; Led6On; Led7On; Led8On; break; } } #pragma vector=TIMER0_A0_VECTOR //interrupt_vector __interrupt void Timer_A0(void) { Led8Off; }