#include "Driver_GPIO.h"
#include "MyTimer.h"
#include "MyADC.h"
#include "stm32f10x.h"
#include "bordage.h"

#define TIMER_PWM (TIM3)
#define CANAL_PWM (4)
#define TIMER_CI (TIM2) // Timer codeur incrémental
#define GIROUETTE_PHA (PA1)
#define GIROUETTE_PHB (PA4)
#define GIROUETTE_INDEX (PB0)
#define SERVO_VOILE_PWM (PA4)

/*
*************************************************************************************************
* @brief
* @param -> int angle : angle que l'on veut donner à la voile (entre 0 et 90°)
* @Note -> 
*************************************************************************************************
*/
int bordage ( int angle ) { 
	
	float duty_cycle = ((float) angle)/18.0 + 5.0; // convertit l'angle en rapport cyclique pour la commande du servo moteur

	// Configuration du timer avec une période de 20ms
	MyTimer_Struct_TypeDef TIM;
	TIM.Timer = TIMER_PWM;
	TIM.ARR = 59999;
	TIM.PSC = 23; 
	MyTimer_Base_Init(&TIM);
	
	// PWM 
	MyTimer_PWM (TIMER_PWM, CANAL_PWM);
	Set_Duty_Cycle(TIMER_PWM, CANAL_PWM, duty_cycle);
	
	return 0;
}
 


/*
*************************************************************************************************
* @brief Handler a appeler lorsque l'angle de roulis est supérieur à 40°
* @param ->
* @Note -> 
*************************************************************************************************
*/
void Roulis_Handler ( void )
{
	bordage(0);
}
