diff --git a/Services/bordage.c b/Services/bordage.c index ba7dfe8..21915b3 100644 --- a/Services/bordage.c +++ b/Services/bordage.c @@ -3,6 +3,8 @@ #include #include +// int* anglequonveut=0; A DECLARER DANS LE MAIN + void Init_bordage(TIM_TypeDef *Timer, char channel, unsigned short ValARR, unsigned short ValPSC){ MyTimer_Init(Timer,ValARR,ValPSC); Mytimer_PWM(Timer, channel); @@ -10,21 +12,30 @@ void Init_bordage(TIM_TypeDef *Timer, char channel, unsigned short ValARR, unsig MyGPIO_Init(GPIOA, 0, AltOut_Ppull); } -void Update_bodage (TIM_TypeDef *Timer, char channel){ +void Update_bodage (TIM_TypeDef *Timer, char channel, float roulis, int* angle){ float val; + int val2; val = TIM4->CNT; - if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) { - Mytimer_PWM_cycle(Timer, channel, 9); + val2 = TIM4->CNT; + if (roulis < -40.0 || roulis > 40.0) { + Mytimer_PWM_cycle(Timer, channel, 5); } - else - if (val <= 720.0) { - val/= -108.0; - val+= 35.0/3.0; - Mytimer_PWM_cycle(Timer, channel, (int) val); + else { + if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) { + Mytimer_PWM_cycle(Timer, channel, 9); } - else{ - val/= 108.0; - val+= -5.0/3.0; - Mytimer_PWM_cycle(Timer, channel, (int) val); + else + if (val <= 720.0) { + *angle = 2*(val2)/12 -30; + val/= -108.0; + val+= 35.0/3.0; + Mytimer_PWM_cycle(Timer, channel, (int) val); + } + else{ + *angle = -2*(val2)/12 + 210; + val/= 108.0; + val+= -5.0/3.0; + Mytimer_PWM_cycle(Timer, channel, (int) val); + } } } \ No newline at end of file diff --git a/Services/bordage.h b/Services/bordage.h index 8231c50..1d98bf5 100644 --- a/Services/bordage.h +++ b/Services/bordage.h @@ -4,6 +4,6 @@ void Init_bordage(TIM_TypeDef *Timer, char channel, unsigned short ValARR, unsigned short ValPSC); -void Update_bodage (TIM_TypeDef *Timer, char channel); +void Update_bodage (TIM_TypeDef *Timer, char channel, float roulis, int* angle); #endif \ No newline at end of file