52 lines
No EOL
1.6 KiB
C
52 lines
No EOL
1.6 KiB
C
#include <stm32f10x.h>
|
|
#include <roulis.h>
|
|
#include <MySPI.h>
|
|
#include <MyTimer.h>
|
|
|
|
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(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(0x0A);
|
|
MySPI_Set_NSS();
|
|
|
|
MySPI_Clear_NSS();
|
|
MySPI_Send((0x31)|(1<<7)); // On veut écrire à l'adresse de DATA_FORMAT
|
|
MySPI_Send(0x03);
|
|
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
|
|
} |