merge from simon to master

This commit is contained in:
Guilhem Chambaud 2023-04-11 15:26:48 +02:00
commit 1ea43525ce
4 changed files with 99 additions and 0 deletions

View file

@ -0,0 +1,30 @@
# **Tableau de répartition des services
| Service | Nom | Fonction |
| ---- | :-:| :-:|
|Girouette|Simon|Mesure de l'angle girouette.|
|Module Xbee|Yohan|Communication a distance.|
|IMU|Guilhem|Mesure de roulis, système anti-chavirement.|
|RTC|Guilhem|Horloge temp réel.|
|Mesure analogique|Yohan|Mesure de la tension de batterie.|
|Servo moteur|Alix|Controle de l'écoute des voiles.|
|Motoréducteur|Alix|Rotation du plateau.|
# **Tableau de répartition des périphériques
| Service | Nom | Designation| Périphériques Timer| Channel Timer|Périphériques GPIOX|
| ---- | :-:| :-:| :-:|:-:|:-:|
|Girouette|Simon|NC|Timer-4 1MHz| 0 |PB6 PB7 PA0|
|Module Xbee|Yohan|UART|NC| NC |PA9 PA10|
|IMU|Guilhem|SPI|NC| NC |PA4 PA5 PB10 PB11|
|RTC|Alix|I2C|NC| NC |PB12 PB13 PB14 PB15|
|Mesure analogique|Yohan|NC|Timer-5 1Hz| 10 |PC0|
|Servo moteur|Alix|PWM|Timer-2 50Hz | 2 |PA1|
|Motoréducteur|Alix|NC|Timer-3 50KHz| 3 |PB0|

View file

@ -0,0 +1,53 @@
#include "girouette.h"
void MyGirouette_Init(TIM_TypeDef *TIMX)
{
//configuration gpiob6 et gpiob7 en entrées In_Floating imposer par le timer4
MyGPIO_Struct_TypeDef MyGPIO={GPIOB,6,In_Floating};
MyGPIO_Init(&MyGPIO);
MyGPIO.GPIO_Pin=7;
MyGPIO_Init(&MyGPIO);
//config pa0 en entrées
MyGPIO.GPIO_Pin=0;
MyGPIO.GPIO=GPIOA;
MyGPIO_Init(&MyGPIO);
//configuration TIM4 reset a 360
MyTimer_Struct_Typedef MyTimerGirouette ={TIMX,1439,0};
MyTimer_Base_Init(&MyTimerGirouette);
TIMX->SMCR &=~0x07;
TIMX->SMCR |=TIM_SMCR_SMS_1;
TIMX->CCMR1 &=~(0xF2F2);
TIMX->CCMR1 |= TIM_CCMR1_CC1S_0;
TIMX->CCMR1 |= TIM_CCMR1_CC2S_0; //CC2S dans CCMR1 et pas CCMR2
TIMX->CCER &=~TIM_CCER_CC1P;
TIMX->CCER &=~TIM_CCER_CC2P;
TIMX->CCMR1&=~(0x0F<<4); //IC1F
TIMX->CCMR1&=~(0x0F<<12);//IC2F
TIMX->CR1 |= 1;
}
int MyGirouette_Angle(TIM_TypeDef *TIMX)
{
return (TIMX->CNT)/4;
}
void MyGirouette_Init_IT_Z(uint8_t GPIO_Pin)
{
RCC->APB2ENR |=0x01;
EXTI->IMR |= (0x01<<GPIO_Pin); // Autorisation de l'interruption de la ligne
EXTI->RTSR|= (0x01<<GPIO_Pin); // Activation du déclenchement de l'interruption sur un front montant
AFIO->EXTICR[0] &= ~(0x0000000F);// L'interruption « EXTI0 » doit être provoquée par une modification PA0
NVIC->ISER[0] |= (1 << (6 & 0x1F)); // Autorisation de l'interruption « EXTI0 » NUMERO 6,
}
void EXTI0_IRQHandler(void) {
TIM4->CNT=0;
EXTI->PR|=0x01;
}

View file

@ -0,0 +1,10 @@
#ifndef MYMOTOR_H
#define MYMOTOR_H
#include "stm32f10x.h"
#include "../driver/gpio.h"
#include "../driver/timer.h"
int MyGirouette_Angle(TIM_TypeDef *TIMX);
void MyGirouette_Init(TIM_TypeDef *TIMX);
#endif

View file

@ -6,10 +6,12 @@
#include "remote.h" #include "remote.h"
#include "accelerometer.h" #include "accelerometer.h"
#include "battery.h" #include "battery.h"
#include "timer.h"
void initImplementation(void); void initImplementation(void);
float GX, GY, GZ; float GX, GY, GZ;
int Angle_Girouette=0;
int main (void) int main (void)
{ {
@ -22,6 +24,7 @@ int main (void)
Lecture_accelerometre(&GX,&GY,&GZ); Lecture_accelerometre(&GX,&GY,&GZ);
if(GZ < 5.5) if(GZ < 5.5)
MyServo_ChangeAngle(179); MyServo_ChangeAngle(179);
Angle_Girouette=MyGirouette_Angle(TIM4);
}; };
} }
@ -31,6 +34,8 @@ void initImplementation(void)
MyServo_ChangeAngle(179); MyServo_ChangeAngle(179);
initRemote(); initRemote();
Init_accelerometre(); Init_accelerometre();
MyGirouette_Init(TIM4);
MyGirouette_Init_IT_Z(0);
testRemote(); testRemote();
MyMotor_Init(); MyMotor_Init();
MyMotor_ChangeSpeed(0); MyMotor_ChangeSpeed(0);
@ -38,3 +43,4 @@ void initImplementation(void)
MyRTC_Init(); MyRTC_Init();
initBattery(); initBattery();
} }