53 lines
No EOL
1.1 KiB
C
53 lines
No EOL
1.1 KiB
C
#include "stm32f10x.h"
|
|
#include <GPIO.h>
|
|
#include <bordage.h>
|
|
#include <MyTimer.h>
|
|
|
|
// int* anglequonveut=0; A DECLARER DANS LE MAIN
|
|
|
|
void Init_bordage(){
|
|
MyTimer_Init(TIM1,3200,450);
|
|
Mytimer_PWM(TIM1, 1);
|
|
MyTimer_Base_Start(TIM1);
|
|
MyGPIO_Init(GPIOA, 8, AltOut_Ppull);
|
|
}
|
|
|
|
void Update_bordage (TIM_TypeDef *Timer, char channel, char roulis){
|
|
float val;
|
|
val = TIM4->CNT;
|
|
char roulisabs = (1<<7) - (roulis & 0x7F);
|
|
if ((roulis >= 40.0 && !(roulis & (1<<7))) || ((roulis & (1<<7)) && (roulisabs >= 40))) {
|
|
Mytimer_PWM_cycle(Timer, channel, 5);
|
|
}
|
|
else {
|
|
if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) {
|
|
Mytimer_PWM_cycle(Timer, channel, 10);
|
|
}
|
|
else
|
|
if (val <= 720.0) {
|
|
val/= -108.0;
|
|
val+= 35.0/3.0;
|
|
Mytimer_PWM_cycle(Timer, channel, (int) val);
|
|
}
|
|
else{
|
|
val/= 108.0;
|
|
val+= -5.0/3.0;
|
|
Mytimer_PWM_cycle(Timer, channel, (int) val);
|
|
}
|
|
}
|
|
}
|
|
|
|
int Calcul_Angle(){
|
|
int val = TIM4->CNT;
|
|
if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) {
|
|
return 0;
|
|
}
|
|
else{
|
|
if (val <= 720.0) {
|
|
return 2*(val)/12 -30;
|
|
}
|
|
else{
|
|
return -2*(val)/12 + 210;
|
|
}
|
|
}
|
|
} |