diff --git a/Services/Batterie.c b/Services/Batterie.c index 5352a41..f0e4836 100644 --- a/Services/Batterie.c +++ b/Services/Batterie.c @@ -14,24 +14,13 @@ void MyBatterie_Init(void){ MyADC_Init(ADC1,14); // Init ADC channel 14 pour convertir valeur MyADC_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie - //My_USART_Init(USART1); // Init USART pour envoyer batterie - start_conversion(ADC1); // Premiere conversion } void handler_ADC (void){ - //last2++; - //if (tickms - last2 >= 2000) { - //last2 = tickms; - d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique - d = d*3.3/4096; - d = d*13*100/12; - //send_USART_String(USART1,"Batterie : "); - //send_USART(USART1,((int)d/10) + '0'); // Envoie le chiffre des dizaines - //send_USART(USART1,((int)d%10) + '0'); // Envoie le chiffre des unités - //send_USART_String(USART1,"%\n"); - //} - //start_conversion(ADC1); // Recommence la conversion pour le prochain + d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique + d = d*3.3/4096; + d = d*13*100/12; } void Gestion_Conversion_ADC(void){ diff --git a/Services/Batterie.h b/Services/Batterie.h index 7a9c35b..e330816 100644 --- a/Services/Batterie.h +++ b/Services/Batterie.h @@ -3,9 +3,32 @@ #include +/** + * @brief Initialise la batterie avec : initialisation de ADC1 et de son interruption, et lance la première conversion + Configure l'IO + - Réception de la batterie: In_Analog (GPIOC,4); + * @param aucun + */ void MyBatterie_Init(void); + +/** + * @brief Callback ADC12 : calcul le pourcentage de la batterie + * @param aucun + */ void handler_ADC(void); + +/** + * @brief Gestion du lancement de la conversion de l'ADC : lance une conversion toutes les Xms avec systick + ATTENTION : initialisation requise du service systick préalable + * @param aucun + */ void Gestion_Conversion_ADC(void); + +/** + * @brief Retourne la valeur de la batterie + * @param aucun + * @sortie pourcentage de batterie + */ int MyBatterie_val(); #endif \ No newline at end of file diff --git a/Services/Plateau.c b/Services/Plateau.c index 67da5bc..66283a0 100644 --- a/Services/Plateau.c +++ b/Services/Plateau.c @@ -5,7 +5,7 @@ #include void handler_USART1 (void) { -//Pour le projet : Lancer PWM en fonction de la valeur du curseur + // Lancement d'une PWM en fonction de la valeur reçue et du bit de sens char data = USART1->DR; char valabs; if (data & (1<<7)) { diff --git a/Services/Plateau.h b/Services/Plateau.h index 1061462..e1bb4a3 100644 --- a/Services/Plateau.h +++ b/Services/Plateau.h @@ -1,7 +1,20 @@ #ifndef MYPLATEAU_H #define MYPLATEAU_H +/** + * @brief Initialise le plateau avec : PWM a 20kHz sur Timer 3 channel 3, interruption UART1 + Configure les 2 IOs + - Timer 3 channel 3: AltOut_Ppull (GPIOB,0); + - Bit de sens : Out_Ppull (GPIOA,1); + * @param aucun + */ void Plateau_Init (void); + + +/** + * @brief Définition du callback de l'UART1 : Set la PWM et le bit de sens + * @param : aucun + */ void handler_USART1 (void); #endif \ No newline at end of file diff --git a/Services/Systick.h b/Services/Systick.h index 7e54ed2..e41df0e 100644 --- a/Services/Systick.h +++ b/Services/Systick.h @@ -1,6 +1,10 @@ #ifndef SYSTICK_H #define SYSTICK_H +/** + * @brief Initialise le systick pour générer une interruption toutes les ms + * @param aucun + */ void MySystick_Init(void); #endif \ No newline at end of file diff --git a/Services/Transmission.c b/Services/Transmission.c index 2cf6f58..11c4696 100644 --- a/Services/Transmission.c +++ b/Services/Transmission.c @@ -8,19 +8,19 @@ uint32_t last3 = 0; uint32_t last4 = 0; void Transmission_Init(void){ - My_USART_Init(USART1); //USART3 + My_USART_Init(USART1); } void Transmission_allure(int angle_voiles){ if (tickms-last1 >= 5000){ last1 = tickms; - if (angle_voiles < 23) send_USART_String(USART1,"Le bateau navigue vent debout. \n"); //USART3 - else if (angle_voiles < 27) send_USART_String(USART1,"Le bateau navigue au pres. \n"); //USART3 - else if (angle_voiles < 38) send_USART_String(USART1,"Le bateau navigue au pres bon plein. \n"); //USART3 - else if (angle_voiles < 53) send_USART_String(USART1,"Le bateau navigue au travers. \n"); //USART3 - else if (angle_voiles < 71) send_USART_String(USART1,"Le bateau navigue au grand large. \n"); //USART3 - else if (angle_voiles <= 90) send_USART_String(USART1,"Le bateau navigue vent arriere. \n"); //USART3 - else send_USART_String(USART1,"ERREUR DANS L'ANGLE!! \n"); //USART3 + if (angle_voiles < 23) send_USART_String(USART1,"Le bateau navigue vent debout. \n"); + else if (angle_voiles < 27) send_USART_String(USART1,"Le bateau navigue au pres. \n"); + else if (angle_voiles < 38) send_USART_String(USART1,"Le bateau navigue au pres bon plein. \n"); + else if (angle_voiles < 53) send_USART_String(USART1,"Le bateau navigue au travers. \n"); + else if (angle_voiles < 71) send_USART_String(USART1,"Le bateau navigue au grand large. \n"); + else if (angle_voiles <= 90) send_USART_String(USART1,"Le bateau navigue vent arriere. \n"); + else send_USART_String(USART1,"ERREUR DANS L'ANGLE!! \n"); } } @@ -28,14 +28,14 @@ void Transmission_batterie(int batterie){ if (tickms-last3 >= 5000){ last3 = tickms; if(batterie > 50){ - send_USART_String(USART1,"Batterie : "); //USART3 + send_USART_String(USART1,"Batterie : "); } else{ - send_USART_String(USART1, "SEUIL DE BATTERIE ATTEINT : "); //USART3 + send_USART_String(USART1, "SEUIL DE BATTERIE ATTEINT : "); } - send_USART(USART1,(batterie/10) + '0'); // Envoie le chiffre des dizaines //USART3 - send_USART(USART1,(batterie%10) + '0'); // Envoie le chiffre des unités //USART3 - send_USART_String(USART1,"%\n"); //USART3 + send_USART(USART1,(batterie/10) + '0'); // Envoie le chiffre des dizaines + send_USART(USART1,(batterie%10) + '0'); // Envoie le chiffre des unités + send_USART_String(USART1,"%\n"); } } @@ -44,22 +44,22 @@ void Transmission_roulis(char roulis){ if (tickms-last4 >= 2000){ last4 = tickms; if (roulis >= 40 && !(roulis & (1<<7))){ - send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n"); //USART3 - send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines //USART3 - send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités //USART3 + send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n"); + send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines + send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités } else if (roulis & (1<<7)) { angabs = (1<<7) - (roulis & 0x7F); - if (angabs >= 40) send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n"); //USART3 + if (angabs >= 40) send_USART_String(USART1, "ANGLE DE ROULIS TROP ELEVE : DEBORDAGE!!! \n"); else send_USART_String(USART1, "Angle de roulis : "); send_USART(USART1,(angabs/10) + '0'); send_USART(USART1,(angabs%10) + '0'); } else { - send_USART_String(USART1, "Angle de roulis : "); //USART3 - send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines //USART3 - send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités //USART3 + send_USART_String(USART1, "Angle de roulis : "); + send_USART(USART1,(roulis/10) + '0'); // Envoie le chiffre des dizaines + send_USART(USART1,(roulis%10) + '0'); // Envoie le chiffre des unités } - send_USART_String(USART1," degre(s)\n"); //USART3 + send_USART_String(USART1," degre(s)\n"); } } \ No newline at end of file diff --git a/Services/Transmission.h b/Services/Transmission.h index c4d03be..739928f 100644 --- a/Services/Transmission.h +++ b/Services/Transmission.h @@ -1,9 +1,34 @@ #ifndef TRANSMISSION_H #define TRANSMISSION_H +/** + * @brief Initialise la transmission sur UART1 + * @param aucun + */ void Transmission_Init(void); + + +/** + * @brief Permet de transmettre l'allure du voilier à la tablette, en fonction de l'angle de bordage des voiles, toutes les Xms + ATTENTION : initialisation requise du service systick préalable + * @param angle des voiles + */ void Transmission_allure(int angle_voiles); + + +/** + * @brief Permet de transmettre la batterie du voilier à la tablette, toutes les Xms + ATTENTION : initialisation requise du service systick préalable + * @param pourcentage de batterie + */ void Transmission_batterie(int batterie); + + +/** + * @brief Permet de transmettre l'angle de roulis à la tablette, toutes les Xms + ATTENTION : initialisation requise du service systick préalable + * @param angle de toulis en degrés + */ void Transmission_roulis(char roulis); #endif \ No newline at end of file diff --git a/Services/bordage.h b/Services/bordage.h index f2518b9..cbbed07 100644 --- a/Services/bordage.h +++ b/Services/bordage.h @@ -2,10 +2,27 @@ #define BORDAGE_H #include "stm32f10x.h" + +/** +* @brief Initialise le bordage avec : PWM sur timer 1 channel 1 à 50Hz + Configure l'IO + - Timer 1 channel 1: AltOut_Ppull (GPIOA,8); + * @param aucun + */ void Init_bordage(); + +/** + * @brief Fait le bordage des voiles en fonction de l'angle de la girouette et de l'angle de roulis + * @param Timer, channel utilisé (on pourrait enlever car ce n'est pas reconfigurable et laisser TIM1, channel 1 partout) et angle de roulis en degrés + */ void Update_bordage (TIM_TypeDef *Timer, char channel, char roulis); + +/** + * @brief Calcule l'angle des voiles à partir de l'angle de la girouette + * @param aucun + */ int Calcul_Angle(); #endif \ No newline at end of file diff --git a/Services/roulis.h b/Services/roulis.h index e2cd6f9..4641ca4 100644 --- a/Services/roulis.h +++ b/Services/roulis.h @@ -1,14 +1,23 @@ #ifndef MYROULIS_H #define MYROULIS_H -/* Description des besoins au niveau service (ne pas oublier de gérer cs/NSS !!!) -- Fonction d'init de l'accéléromètre -- Fonction de calcul angle de roulis sur interruption externe GPIOA pin 6 -Ou sinon sur interruption d'un timer a 100HZ -*/ - +/** + * @brief Initialise le roulis avec : initialisation de l'accéléromètre, interruption sur Timer 2 à 100Hz + * @param aucun + */ void MyRoulis_Init(void); + +/** + * @brief callback du timer 3 : Récupère les données des axes y et z de l'accéléromètre + * @param aucun + */ void MyRoulis_Data(void); + +/** + * @brief Calcul la valeur de l'angle de roulis + * @param aucun + * @sortie angle de roulis en radiant + */ float MyRoulis_Angle(); #endif \ No newline at end of file