diff --git a/Services/Batterie.c b/Services/Batterie.c index 4b8e3d2..faeed3d 100644 --- a/Services/Batterie.c +++ b/Services/Batterie.c @@ -4,19 +4,19 @@ #include #include -int a; +int d; void MyBatterie_Init(void){ MyGPIO_Init(GPIOC,4,In_Floating); // Init PORT pour recevoir tension - MyADC_Init(ADC1,14); // Init ADC pour convertir valeur + MyADC_Init(ADC1,14); // Init ADC channel 14 pour convertir valeur My_USART_Init(USART2); // Init USART pour envoyer batterie MyGPIO_Init(GPIOA,2,AltOut_Ppull); // Init PORT pour envoyer pourcentage batterie MyADC_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie } void handler_ADC (void){ - a = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique - send_USART(USART2,a*13*100/12); // Envoie la valeur numérique*13 + d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique + send_USART(USART2,d*13*100/12); // Envoie la valeur numérique*13 send_USART(USART2,'%'); start_conversion(ADC1); // Recommence la conversion pour le prochain } \ No newline at end of file diff --git a/Services/roulis.c b/Services/roulis.c index 8b772e1..e891c3e 100644 --- a/Services/roulis.c +++ b/Services/roulis.c @@ -6,23 +6,26 @@ //char x1,x2 char y1,y2,z1,z2; +short y,z; +float a,b; +float alpha; void MyRoulis_Init(void){ MySPI_Init(SPI1); // Initialisation des registres externes MySPI_Clear_NSS(); // Déput transmission - MySPI_Send((0x2D|(1<<7))); // On veut écrire à l'adresse de POWER_CTL : 0x2D + MySPI_Send((0x2D|(0<<7))); // On veut écrire à l'adresse de POWER_CTL : 0x2D MySPI_Send(1<<3); // On veut mettre le bit "measure" à 1; MySPI_Set_NSS(); // Fin transmission MySPI_Clear_NSS(); - MySPI_Send((0x2C)|(1<<7)); // On veut écrire à l'adresse de BW_RATE + MySPI_Send((0x2C)|(0<<7)); // On veut écrire à l'adresse de BW_RATE MySPI_Send(0x0A); MySPI_Set_NSS(); MySPI_Clear_NSS(); - MySPI_Send((0x31)|(1<<7)); // On veut écrire à l'adresse de DATA_FORMAT + MySPI_Send((0x31)|(0<<7)); // On veut écrire à l'adresse de DATA_FORMAT MySPI_Send(0x03); MySPI_Set_NSS(); @@ -41,23 +44,25 @@ void MyRoulis_Data(void){ // MySPI_Set_NSS(); // Fin transmission X MySPI_Clear_NSS(); // Début transmission Y - MySPI_Send((0x34)|(0<<7)|(1<<6)); // On veut lire les 2 bytes DATAY + MySPI_Send((0x34)|(1<<7)|(1<<6)); // On veut lire les 2 bytes DATAY y1 = MySPI_Read(); // premier byte y2 = MySPI_Read(); // deuxième byte MySPI_Set_NSS(); // Fin transmission Y MySPI_Clear_NSS(); // Début transmission Z - MySPI_Send((0x36)|(0<<7)|(1<<6)); // On veut lire les 2 bytes DATAZ + MySPI_Send((0x36)|(1<<7)|(1<<6)); // On veut lire les 2 bytes DATAZ z1 = MySPI_Read(); // premier byte z2 = MySPI_Read(); // deuxième byte MySPI_Set_NSS(); // Fin transmission Z } -int MyRoulis_Angle(){ +float MyRoulis_Angle(){ //Calcul de l'angle alpha //int x = x1 + (x2 << 8); - int y = y1 + (y2 << 8); - int z = z1 + (z2 << 8); - int alpha = atan(y / z); //sqrtf(x*x + y*y) + y = y1 + (y2 << 8); + z = z1 + (z2 << 8); + a = (float)z*32.0/(float)(1<<10); + b = (float)y*32.0/(float)(1<<10); + alpha = atan((float)y/(float)z); return alpha; } \ No newline at end of file diff --git a/Services/roulis.h b/Services/roulis.h index 0d7bece..e2cd6f9 100644 --- a/Services/roulis.h +++ b/Services/roulis.h @@ -9,6 +9,6 @@ Ou sinon sur interruption d'un timer a 100HZ void MyRoulis_Init(void); void MyRoulis_Data(void); -int MyRoulis_Angle(); +float MyRoulis_Angle(); #endif \ No newline at end of file diff --git a/drivers/MySPI.c b/drivers/MySPI.c index 5147a58..ff851f2 100644 --- a/drivers/MySPI.c +++ b/drivers/MySPI.c @@ -9,7 +9,7 @@ void MySPI_Init(SPI_TypeDef * SPI){ // Initialisationdes PORTS IOs MyGPIO_Init(GPIOA,4,Out_Ppull); MyGPIO_Init(GPIOA,5,AltOut_Ppull); - MyGPIO_Init(GPIOA,6,In_Floating); + MyGPIO_Init(GPIOA,6,In_PullDown); MyGPIO_Init(GPIOA,7,AltOut_Ppull); } else if (SPI == SPI2) {