Roulis okay
This commit is contained in:
parent
af2ac44314
commit
624aa536d5
4 changed files with 20 additions and 15 deletions
|
|
@ -4,19 +4,19 @@
|
|||
#include <ADC.h>
|
||||
#include <USART.h>
|
||||
|
||||
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
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue