roulis v2
This commit is contained in:
parent
6c90c91fba
commit
13e7f95ce0
3 changed files with 60 additions and 4 deletions
|
|
@ -1,20 +1,52 @@
|
||||||
#include <stm32f10x.h>
|
#include <stm32f10x.h>
|
||||||
#include <roulis.h>
|
#include <roulis.h>
|
||||||
#include <MySPI.h>
|
#include <MySPI.h>
|
||||||
|
#include <MyTimer.h>
|
||||||
|
|
||||||
void MyRoulis_Init(void){
|
void MyRoulis_Init(void){
|
||||||
MySPI_Init(SPI1);
|
MySPI_Init(SPI1);
|
||||||
MySPI_Clear_NSS();
|
|
||||||
|
|
||||||
// Initialisation des registres externes
|
// 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|(1<<7))); // On veut écrire à l'adresse de POWER_CTL : 0x2D
|
||||||
MySPI_Send(1<<3); // On veut mettre le bit "measure" à 1;
|
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)|(1<<7)); // On veut écrire à l'adresse de BW_RATE
|
||||||
MySPI_Send(0x0A);
|
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)|(1<<7)); // On veut écrire à l'adresse de DATA_FORMAT
|
||||||
MySPI_Send(0x03);
|
MySPI_Send(0x03);
|
||||||
|
|
||||||
MySPI_Set_NSS();
|
MySPI_Set_NSS();
|
||||||
|
|
||||||
|
MyTimer_Init(TIM2,3600,200); // Configurer le timer2 a 100Hz
|
||||||
|
MyTimer_ActiveIT(TIM2,0,&MyRoulis_angle);// Configurer interruption sur timer2
|
||||||
|
MyTimer_Base_Start(TIM2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyRoulis_angle(void){
|
||||||
|
|
||||||
|
// Récupération des registred DATAX0..DATAZ1 (6 registres)
|
||||||
|
MySPI_Clear_NSS(); // Début transmission X
|
||||||
|
MySPI_Send((0x32)|(0<<7)|(1<<6)); // On veut lire les 2 bytes DATAX
|
||||||
|
char x1 = MySPI_Read(); // premier byte
|
||||||
|
char x2 = MySPI_Read(); // deuxième byte
|
||||||
|
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
|
||||||
|
char y1 = MySPI_Read(); // premier byte
|
||||||
|
char y2 = MySPI_Read(); // deuxième byte
|
||||||
|
MySPI_Set_NSS(); // Fin transmission X
|
||||||
|
|
||||||
|
MySPI_Clear_NSS(); // Début transmission Z
|
||||||
|
MySPI_Send((0x36)|(0<<7)|(1<<6)); // On veut lire les 2 bytes DATAZ
|
||||||
|
char z1 = MySPI_Read(); // premier byte
|
||||||
|
char z2 = MySPI_Read(); // deuxième byte
|
||||||
|
MySPI_Set_NSS(); // Fin transmission Z
|
||||||
|
|
||||||
|
// Calcul de l'angle alpha
|
||||||
}
|
}
|
||||||
|
|
@ -3,9 +3,11 @@
|
||||||
|
|
||||||
/* Description des besoins au niveau service (ne pas oublier de gérer cs/NSS !!!)
|
/* Description des besoins au niveau service (ne pas oublier de gérer cs/NSS !!!)
|
||||||
- Fonction d'init de l'accéléromètre
|
- Fonction d'init de l'accéléromètre
|
||||||
- Fonction de calcul angle de roulis sur interruption externe GPIOA pin 6
|
- Fonction de calcul angle de roulis sur interruption externe GPIOA pin 6
|
||||||
|
Ou sinon sur interruption d'un timer a 100HZ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void MyRoulis_Init(void);
|
void MyRoulis_Init(void);
|
||||||
|
void MyRoulis_angle(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
24
readme.txt
24
readme.txt
|
|
@ -1 +1,23 @@
|
||||||
Fin du drivers SPI, il faudrait maintenant vérifier son fonctionnement.
|
Fin du drivers SPI, il faudrait maintenant vérifier son fonctionnement et faire le roulis.
|
||||||
|
|
||||||
|
Port map carte nucléo :
|
||||||
|
|
||||||
|
Plateau :
|
||||||
|
|
||||||
|
Timer 3 (channel 3)
|
||||||
|
? PA1 : Output push pull (bit sens)
|
||||||
|
! PA9 : Alternate output push pull (ligne TX UART1, not used)
|
||||||
|
! PA10 : Floating input (ligne RX UART1)
|
||||||
|
! PB0 : Alternate output push pull (PWM)
|
||||||
|
prio interruption usart1 : 6
|
||||||
|
|
||||||
|
|
||||||
|
SPI / roulis :
|
||||||
|
|
||||||
|
! PA4 : Output push pull (SPI1 NSS)
|
||||||
|
! PA5 : Alternate output push pull (SPI1 SCK)
|
||||||
|
! PA6 : Floating input (SPI1 MISO)
|
||||||
|
! PA7 : Alternate output push pull (SPI1 MOSI)
|
||||||
|
prio interruption timer2 : 0
|
||||||
|
|
||||||
|
Pour le roulis, je ne suis pas sur de comment retourner l'angle (par interruption d'un timer?? si oui comment le retourner??), il faut voir comment le calculer aussi
|
||||||
Loading…
Reference in a new issue