Version Compilable : Orchestration de tous les éléments faite (TAF -> Tester)
This commit is contained in:
parent
73b655d977
commit
fd12f4c92b
12 changed files with 216 additions and 96 deletions
|
@ -344,7 +344,7 @@
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>48</LineNumber>
|
<LineNumber>48</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>134218244</Address>
|
<Address>134219720</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
<HtxType>0</HtxType>
|
<HtxType>0</HtxType>
|
||||||
<ManyObjects>0</ManyObjects>
|
<ManyObjects>0</ManyObjects>
|
||||||
|
@ -550,6 +550,18 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>9</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Src\string.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>string.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
|
@ -560,7 +572,7 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>9</FileNumber>
|
<FileNumber>10</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -572,7 +584,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>10</FileNumber>
|
<FileNumber>11</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -584,7 +596,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>11</FileNumber>
|
<FileNumber>12</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -596,7 +608,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>12</FileNumber>
|
<FileNumber>13</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -608,7 +620,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>13</FileNumber>
|
<FileNumber>14</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -636,7 +648,7 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>5</GroupNumber>
|
<GroupNumber>5</GroupNumber>
|
||||||
<FileNumber>14</FileNumber>
|
<FileNumber>15</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -656,7 +668,7 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>15</FileNumber>
|
<FileNumber>16</FileNumber>
|
||||||
<FileType>2</FileType>
|
<FileType>2</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
|
|
@ -427,6 +427,11 @@
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Src\Securite.c</FilePath>
|
<FilePath>..\Src\Securite.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>string.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Src\string.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
@ -908,6 +913,11 @@
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Src\Securite.c</FilePath>
|
<FilePath>..\Src\Securite.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>string.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Src\string.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
|
|
@ -93,6 +93,10 @@ char * AllureToString(int alpha) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GirouetteInitialisee(void) {
|
||||||
|
return initialized;
|
||||||
|
}
|
||||||
|
|
||||||
void EXTI9_5_IRQHandler(void) {
|
void EXTI9_5_IRQHandler(void) {
|
||||||
LL_TIM_SetCounter(TIM3, 0);
|
LL_TIM_SetCounter(TIM3, 0);
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
|
|
|
@ -38,4 +38,6 @@ int RecupAllure(void);
|
||||||
*/
|
*/
|
||||||
char * AllureToString(int alpha);
|
char * AllureToString(int alpha);
|
||||||
|
|
||||||
|
int GirouetteInitialisee(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -99,14 +99,14 @@ int RecupNiveauBatterie(void){
|
||||||
* @param un entier representant le niveau de batterie en pourcentage
|
* @param un entier representant le niveau de batterie en pourcentage
|
||||||
* @retval
|
* @retval
|
||||||
*/
|
*/
|
||||||
void CalculDangerNiveauBatterie(int niveau){
|
int CalculerDangerNiveauBatterie(int niveau){
|
||||||
if ( niveau <= Seuil)
|
if ( niveau <= Seuil)
|
||||||
{
|
{
|
||||||
drapeauDangerBatterie = 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
drapeauDangerBatterie = 0 ;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,15 +117,14 @@ void CalculDangerNiveauBatterie(int niveau){
|
||||||
* @param un entier representant l angle de rouli
|
* @param un entier representant l angle de rouli
|
||||||
* @retval NONE
|
* @retval NONE
|
||||||
*/
|
*/
|
||||||
void CalculerDangerChavirement(int gamma){
|
int CalculerDangerChavirement(int gamma){
|
||||||
if ( gamma >= SeuilAngle)
|
if ( gamma >= SeuilAngle)
|
||||||
{
|
{
|
||||||
drapeauDangerRouli = 1;
|
return 1;
|
||||||
TendreVoile(90); //On lache les voiles si danger de chavirement
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
drapeauDangerRouli = 0 ;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* @param
|
* @param
|
||||||
* @retval
|
* @retval
|
||||||
*/
|
*/
|
||||||
void CalculerDangerChavirement(int gamma);
|
int CalculerDangerChavirement(int gamma);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
|
@ -40,6 +40,6 @@ void ConfSecurite(void);
|
||||||
* @param
|
* @param
|
||||||
* @retval
|
* @retval
|
||||||
*/
|
*/
|
||||||
void CalculDangerNiveauBatterie(int niveau);
|
int CalculerDangerNiveauBatterie(int niveau);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,8 +6,38 @@
|
||||||
#include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config
|
#include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config
|
||||||
#include "Allure.h"
|
#include "Allure.h"
|
||||||
#include "Voile.h"
|
#include "Voile.h"
|
||||||
|
#include "string.h"
|
||||||
|
|
||||||
int drapeauTransmission = 1;
|
#define TAILLE_MESSAGE_MAX 100
|
||||||
|
|
||||||
|
// Structure pour gérer la transmission du message
|
||||||
|
struct t_transmission {
|
||||||
|
char message[TAILLE_MESSAGE_MAX];// Le message lui même
|
||||||
|
int position;// La position du caractere a envoyer
|
||||||
|
int taille_message; //On peut envoyer des messages de tailles variables, il faut donc spécifier la taille
|
||||||
|
char envoyer;// Booléen utilisé comme flag -> vrai on envoie, faux on fait rien
|
||||||
|
char exceptionnel; //Booléen utilisé comme flag -> vrai on envoie un message excep donc, on ne fait pas l'envoi regulier
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialise une structure t_transmission.
|
||||||
|
* @note Structure initialisée : (message -> 00:00:00:, end_of_message -> 0x0D, position -> 0, first_appel -> 1)
|
||||||
|
* @param @ de la structure a initialiser
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void init_t_transmission(struct t_transmission * transmission) {
|
||||||
|
int i;
|
||||||
|
for (i=0; i<TAILLE_MESSAGE_MAX; i++) {
|
||||||
|
transmission->message[i] = '0';
|
||||||
|
}
|
||||||
|
transmission->message[TAILLE_MESSAGE_MAX - 1] = '\0';
|
||||||
|
transmission->position = 0;
|
||||||
|
transmission->taille_message = 0;
|
||||||
|
transmission->envoyer = 0;
|
||||||
|
transmission->exceptionnel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct t_transmission transmission;
|
||||||
|
|
||||||
void ConfTransmission(){
|
void ConfTransmission(){
|
||||||
|
|
||||||
|
@ -22,11 +52,46 @@ void ConfTransmission(){
|
||||||
|
|
||||||
LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_11,LL_GPIO_MODE_OUTPUT);
|
LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_11,LL_GPIO_MODE_OUTPUT);
|
||||||
LL_GPIO_SetPinOutputType(GPIOA,LL_GPIO_PIN_11,LL_GPIO_OUTPUT_PUSHPULL);
|
LL_GPIO_SetPinOutputType(GPIOA,LL_GPIO_PIN_11,LL_GPIO_OUTPUT_PUSHPULL);
|
||||||
|
|
||||||
|
init_t_transmission(&transmission);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void EnvoiRegulier(char * Allure, char * tension){
|
void EnvoiRegulier(char * Allure, char * tension){
|
||||||
|
|
||||||
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
if (!transmission.exceptionnel) {
|
||||||
|
/* Message de la forme suivante :
|
||||||
|
_____________________________
|
||||||
|
Allure actuelle : xxxxxxxxxxx
|
||||||
|
Tension des voiles : xxxxxxxx
|
||||||
|
_____________________________*/
|
||||||
|
|
||||||
|
static char promptligne1[] = "Allure actuelle : ";
|
||||||
|
static int promptligne1size = sizeof(promptligne1);
|
||||||
|
static char promptligne2[] = "Tension des voiles : ";
|
||||||
|
static int promptligne2size = sizeof(promptligne2);
|
||||||
|
static char rc[] = "\n";
|
||||||
|
static int rcsize = sizeof(rc);
|
||||||
|
|
||||||
|
transmission.message[0] = '\0';
|
||||||
|
int current_size = 1;
|
||||||
|
|
||||||
|
current_size = Concatenate(promptligne1, transmission.message, promptligne1size, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(Allure, transmission.message, sizeof(Allure), current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(promptligne2, transmission.message, promptligne2size, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(tension, transmission.message, sizeof(tension), current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
|
||||||
|
transmission.envoyer = 1;
|
||||||
|
transmission.position = 0;
|
||||||
|
transmission.taille_message = current_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
||||||
int tailleAllure = sizeof(Allure);
|
int tailleAllure = sizeof(Allure);
|
||||||
int tailleTension = 8; //ATTENTION TAILLE
|
int tailleTension = 8; //ATTENTION TAILLE
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
@ -44,11 +109,41 @@ void EnvoiRegulier(char * Allure, char * tension){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void EnvoiExceptionnel(char * msgAlarme){
|
void EnvoiExceptionnel(char * msgAlarme){
|
||||||
|
|
||||||
LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
/* Message de la forme suivante :
|
||||||
|
_____________________________
|
||||||
|
Allure actuelle : xxxxxxxxxxx
|
||||||
|
Tension des voiles : xxxxxxxx
|
||||||
|
_____________________________*/
|
||||||
|
|
||||||
|
static char prompt[] = "WARNING : ";
|
||||||
|
static int promptsize = sizeof(prompt);
|
||||||
|
static char rc[] = "\n";
|
||||||
|
static int rcsize = sizeof(rc);
|
||||||
|
|
||||||
|
transmission.message[0] = '\0';
|
||||||
|
int current_size = 1;
|
||||||
|
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(prompt, transmission.message, promptsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(msgAlarme, transmission.message, sizeof(msgAlarme), current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
current_size = Concatenate(rc, transmission.message, rcsize, current_size, TAILLE_MESSAGE_MAX);
|
||||||
|
|
||||||
|
transmission.envoyer = 1;
|
||||||
|
transmission.position = 0;
|
||||||
|
transmission.taille_message = current_size;
|
||||||
|
transmission.exceptionnel = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
||||||
int tailleMessage = sizeof(msgAlarme);
|
int tailleMessage = sizeof(msgAlarme);
|
||||||
int index = 0;
|
int index = 0;
|
||||||
while(index < tailleMessage){
|
while(index < tailleMessage){
|
||||||
|
@ -56,6 +151,20 @@ void EnvoiExceptionnel(char * msgAlarme){
|
||||||
LL_USART_TransmitData8(USART1, (uint8_t) msgAlarme[index]); //On envoie le message (8 bits)
|
LL_USART_TransmitData8(USART1, (uint8_t) msgAlarme[index]); //On envoie le message (8 bits)
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_11);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void EnvoyerCaractere(void) {
|
||||||
|
if (transmission.envoyer) {
|
||||||
|
if (LL_USART_IsActiveFlag_TXE(USART1)) {//On regarde si le flag de transmission terminée est actif
|
||||||
|
if (transmission.position < transmission.taille_message) {
|
||||||
|
LL_USART_TransmitData8(USART1, (uint8_t)(transmission.message[transmission.position]));
|
||||||
|
transmission.position += 1;
|
||||||
|
} else {
|
||||||
|
transmission.envoyer = 0;
|
||||||
|
transmission.exceptionnel = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ void EnvoiRegulier(char * Allure, char * tension);
|
||||||
|
|
||||||
void EnvoiExceptionnel(char * msgAlarme);
|
void EnvoiExceptionnel(char * msgAlarme);
|
||||||
|
|
||||||
|
void EnvoyerCaractere(void);
|
||||||
|
|
||||||
void ConfTransmission(void);
|
void ConfTransmission(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
#include "Voile.h"
|
#include "Voile.h"
|
||||||
#include "stm32f1xx_ll_gpio.h"
|
#include "stm32f1xx_ll_gpio.h"
|
||||||
#include "stm32f1xx_ll_rcc.h" // utile dans la fonction SystemClock_Config
|
|
||||||
#include "stm32f1xx_ll_utils.h" // utile dans la fonction SystemClock_Config
|
|
||||||
#include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config
|
|
||||||
#include "stm32f1xx_ll_tim.h"
|
#include "stm32f1xx_ll_tim.h"
|
||||||
#include "stm32f1xx_ll_bus.h"
|
#include "stm32f1xx_ll_bus.h"
|
||||||
#include "maths.h" //Remplacer par maths.h quand on va tout faire marcher.
|
#include "maths.h" //Remplacer par maths.h quand on va tout faire marcher.
|
||||||
|
|
108
Src/Voilier.c
108
Src/Voilier.c
|
@ -11,30 +11,12 @@
|
||||||
|
|
||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
|
|
||||||
extern int drapeauRecupSecurite; // Flag qui est mis à 1 toute les 10 sec pour recuperer niveau batterie/rouli et envoi régulier
|
void ConfSysTick(void){
|
||||||
extern int drapeauDangerBatterie; //Flag qui est mis à 1 toute les 10 sec si batterie faible --> envoie message alarme
|
|
||||||
extern int drapeauDangerRouli; //Flag qui est mis à 1 toute les 10 sec si rouli pas bon --> envoie message alarme
|
|
||||||
extern int drapeauTransmission;
|
|
||||||
|
|
||||||
void ConfSysTick(){
|
|
||||||
NVIC_EnableIRQ(SysTick_IRQn);
|
|
||||||
SysTick_Config(7200000);
|
SysTick_Config(7200000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SysTick_Handler(void) { /* SysTick interrupt Handler. */
|
void SysTickEnableIT(void) {
|
||||||
static int msTicks = 0;
|
NVIC_EnableIRQ(SysTick_IRQn);
|
||||||
|
|
||||||
msTicks++;
|
|
||||||
|
|
||||||
if (msTicks % 30 == 0){
|
|
||||||
drapeauTransmission = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (msTicks % 90 == 0) {
|
|
||||||
drapeauRecupSecurite = 1;
|
|
||||||
msTicks = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,21 +27,16 @@ void SysTick_Handler(void) { /* SysTick interrupt
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void Setup(){
|
void Setup(){
|
||||||
|
|
||||||
ConfSecurite();
|
ConfSecurite();
|
||||||
ConfAllure();
|
ConfAllure();
|
||||||
ConfVoile();
|
ConfVoile();
|
||||||
ConfGouvernail();
|
ConfGouvernail();
|
||||||
ConfTransmission();
|
ConfTransmission();
|
||||||
ConfSysTick();
|
ConfSysTick();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//on utilise EnvoiRegulier de Transmission
|
|
||||||
//TODO : r<>cuperer les valeurs des params de EnvoiRegulier
|
|
||||||
//Interruption toute les 3s via un Timer qui d<>clenche cette fonction qui permet d'envoyer ce qu'il faut
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
* @note
|
* @note
|
||||||
|
@ -67,33 +44,45 @@ void Setup(){
|
||||||
* @retval
|
* @retval
|
||||||
*/
|
*/
|
||||||
void Envoi3s(){
|
void Envoi3s(){
|
||||||
|
EnvoiRegulier(AllureToString(RecupAllure()), TensionVoileToString(RecupTensionVoile()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief tache qui va fonctionner en fond qui gere l'orientation
|
* @brief tache qui va fonctionner en fond qui gere l'orientation
|
||||||
des voiles, le gouvernail et aussi le systeme anti-chavirement
|
des voiles, le gouvernail et aussi le systeme anti-chavirement
|
||||||
* @note relacher les voiles <=> tendre les voiles avec un angle <EFBFBD> 90<EFBFBD>
|
* @note Le temps d'exécution de cette tache a été mesuré à environ 3.14ms,
|
||||||
|
on peut donc largement la lancer toutes les 100ms en interruption sans risque de trop mobiliser le CPU
|
||||||
* @param None
|
* @param None
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void Background(){
|
void Task100ms(){
|
||||||
//Voiles
|
//Voiles
|
||||||
int allure = RecupAllure(); //on recupere l'allulre via la girouette
|
TendreVoile(CalculerTension(RecupAllure())); //on tend la voile grace à la tension obtenue a partir du calcul et de l'allure lue
|
||||||
int tensionVoile = CalculerTension(allure); //grace <20> l'allure on peut calculer la tension <20> appliquer sur la voile
|
|
||||||
TendreVoile(CalculerTension(RecupAllure())); //on tend la voile gr<67>ce <20> la tension obtenue
|
|
||||||
|
|
||||||
//Gouvernail
|
//Gouvernail
|
||||||
int commande = LireTelecommande(); //on lit la valeur renvoy<6F>e par la t<>l<EFBFBD>commande
|
CommanderMoteur(LireTelecommande()); //On commande le moteur pour aller à la vitesse lue a la télécommande
|
||||||
CommanderMoteur(commande); //On commande le moteur pour aller <20> la vitesse voulue
|
|
||||||
|
|
||||||
//Anti-Chavirement
|
//Anti-Chavirement
|
||||||
/*int rouli = RecupRouli();
|
if(CalculerDangerChavirement(RecupRouli())){//renvoi boolean : int à 0 si faux et 1 si vrai
|
||||||
int danger = CalculerDanger(rouli);//renvoi boolean : int <20> 0 si faux et 1 si vrai
|
|
||||||
if(danger){
|
|
||||||
TendreVoile(90); //si il y a danger on relache les voiles (relacher les voiles = les mettre <20> 90)
|
TendreVoile(90); //si il y a danger on relache les voiles (relacher les voiles = les mettre <20> 90)
|
||||||
}*/
|
EnvoiExceptionnel("Risque de chavirement, voiles choquées");//Et on prévient l'utilisateur
|
||||||
|
}
|
||||||
|
|
||||||
|
//Anti-Chavirement
|
||||||
|
if(CalculerDangerNiveauBatterie(RecupNiveauBatterie())){//renvoi boolean : int à 0 si faux et 1 si vrai
|
||||||
|
EnvoiExceptionnel("Batterie faible");//Et on prévient l'utilisateur
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SysTick_Handler(void) { /* SysTick interrupt Handler. */
|
||||||
|
static int compteur = 0;
|
||||||
|
compteur++;
|
||||||
|
if (compteur == 30) {
|
||||||
|
Envoi3s();
|
||||||
|
compteur = 0;
|
||||||
|
} else {
|
||||||
|
Task100ms();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
@ -101,38 +90,17 @@ int main(){
|
||||||
SystemClock_Config();
|
SystemClock_Config();
|
||||||
|
|
||||||
Setup();
|
Setup();
|
||||||
|
|
||||||
|
EnvoiExceptionnel("Veuillez faire tourner la girouette SVP.");
|
||||||
|
|
||||||
|
while(!GirouetteInitialisee()) {
|
||||||
|
EnvoyerCaractere();
|
||||||
|
}
|
||||||
|
|
||||||
|
SysTickEnableIT();
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
int level ;
|
EnvoyerCaractere();
|
||||||
int rouli;
|
|
||||||
/* Envoi message toute les 3 sec sur l'Allure et la tension voile */
|
|
||||||
if (drapeauTransmission){
|
|
||||||
EnvoiRegulier(AllureToString(RecupAllure()), TensionVoileToString(RecupTensionVoile()));
|
|
||||||
drapeauTransmission = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Recuperation toute les 10 sec niveau batterie et angle chavirement, puis calcul des dangers */
|
|
||||||
if (drapeauRecupSecurite){
|
|
||||||
level = RecupNiveauBatterie();
|
|
||||||
CalculDangerNiveauBatterie( level );
|
|
||||||
rouli = RecupRouli();
|
|
||||||
CalculerDangerChavirement(rouli);
|
|
||||||
drapeauRecupSecurite = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Si batterie faible après recup (toute les 10 sec), envoi alerte batterie faible */
|
|
||||||
if (drapeauDangerBatterie){
|
|
||||||
char * msgBatterie = "Batterie faible";
|
|
||||||
EnvoiExceptionnel(msgBatterie);
|
|
||||||
drapeauDangerBatterie = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Si angle chavirement pas bon après recup (toute les 10 sec), envoi alerte chavirement */
|
|
||||||
if (drapeauDangerRouli){
|
|
||||||
char * msgRouli = "Bateau chavire !";
|
|
||||||
EnvoiExceptionnel(msgRouli);
|
|
||||||
drapeauDangerRouli = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
Src/string.c
Normal file
11
Src/string.c
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
int Concatenate(char * chaine1, char * chaine2, int sizechaine1, int sizechaine2, int sizemax) {
|
||||||
|
if ((sizechaine1 + sizechaine2 - 1) <= sizemax) {
|
||||||
|
int j;
|
||||||
|
for (j=0; j < sizechaine1; j++) {
|
||||||
|
chaine2[(sizechaine2 - 1 )+ j] = chaine1[j];
|
||||||
|
}
|
||||||
|
return sizechaine1 + sizechaine2 - 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
6
Src/string.h
Normal file
6
Src/string.h
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef STRING_H
|
||||||
|
#define STRING_H
|
||||||
|
|
||||||
|
int Concatenate(char * chaine1, char * chaine2, int sizechaine1, int sizechaine2, int sizemax);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue