Browse Source

make code more consistent

Arnaud Vergnet 3 years ago
parent
commit
89867cd01e

+ 4
- 1
MyDrivers/ADC.c View File

@@ -1,6 +1,9 @@
1 1
 #include "ADC.h"
2 2
 #include "stm32f1xx_ll_bus.h" 	// Pour horloge
3 3
 
4
+const float MAX_VOLTS = 3.3;
5
+const float MAX_CONVERTED_VALUE = 4095.0;
6
+
4 7
 void ADC_conf(ADC_TypeDef *adc) 
5 8
 {
6 9
 	if (adc == ADC1) {
@@ -43,7 +46,7 @@ uint16_t ADC_readRaw(ADC_TypeDef *adc, int channel)
43 46
 
44 47
 float ADC_convertToVolt(uint16_t value)
45 48
 {
46
-	return ((double) value) / 4095.0 * 3.3;
49
+	return ((double) value) / MAX_CONVERTED_VALUE * MAX_VOLTS;
47 50
 }
48 51
 
49 52
 

+ 11
- 9
MyDrivers/GPIO.c View File

@@ -1,8 +1,8 @@
1 1
 #include "GPIO.h"
2 2
 #include "stm32f1xx_ll_gpio.h"
3 3
 
4
-void GPIO_conf(GPIO_TypeDef * GPIOx, uint32_t PINx, uint32_t mode, uint32_t outputType, uint32_t pullMode){
5
-	
4
+void GPIO_conf(GPIO_TypeDef * GPIOx, uint32_t PINx, uint32_t mode, uint32_t outputType, uint32_t pullMode)
5
+{
6 6
 	LL_GPIO_InitTypeDef init;
7 7
 	
8 8
 	//Activation de l'horloge
@@ -21,15 +21,17 @@ void GPIO_conf(GPIO_TypeDef * GPIOx, uint32_t PINx, uint32_t mode, uint32_t outp
21 21
 	LL_GPIO_Init(GPIOx, &init);
22 22
 }
23 23
 
24
-void GPIO_setPin(GPIO_TypeDef * GPIOx, uint32_t PINx, int output){
25
-	
26
-	if (output) LL_GPIO_SetOutputPin(GPIOx, PINx);
27
-	else LL_GPIO_ResetOutputPin(GPIOx,PINx);
28
-	
24
+void GPIO_setPin(GPIO_TypeDef * GPIOx, uint32_t PINx, int output)
25
+{
26
+	if (output) {
27
+		LL_GPIO_SetOutputPin(GPIOx, PINx);
28
+	} else {
29
+		LL_GPIO_ResetOutputPin(GPIOx,PINx);
30
+	}
29 31
 };
30 32
 
31
-int GPIO_readPin(GPIO_TypeDef * GPIOx, uint32_t PINx){
32
-	
33
+int GPIO_readPin(GPIO_TypeDef * GPIOx, uint32_t PINx)
34
+{
33 35
 	return LL_GPIO_IsOutputPinSet(GPIOx, PINx);
34 36
 	
35 37
 }

+ 8
- 4
MyDrivers/USART.c View File

@@ -3,7 +3,8 @@
3 3
 #include "stm32f1xx_ll_bus.h" 	// Pour horloge
4 4
 
5 5
 
6
-void Usart_conf(USART_TypeDef *USARTx) {
6
+void Usart_conf(USART_TypeDef *USARTx)
7
+{
7 8
 	int txPin;
8 9
 	GPIO_TypeDef *usartGpio;
9 10
 	
@@ -36,18 +37,21 @@ void Usart_conf(USART_TypeDef *USARTx) {
36 37
 
37 38
 
38 39
 
39
-void Usart_enable(USART_TypeDef *USARTx) {
40
+void Usart_enable(USART_TypeDef *USARTx)
41
+{
40 42
 		LL_USART_Enable(USARTx);
41 43
 }
42 44
 
43 45
 
44
-void sendChar(USART_TypeDef *USARTx, char c) {
46
+void sendChar(USART_TypeDef *USARTx, char c)
47
+{
45 48
 	LL_USART_TransmitData8(USARTx, c);
46 49
 	while (!LL_USART_IsActiveFlag_TXE(USARTx)) {}
47 50
 }
48 51
 
49 52
 
50
-void Usart_send(USART_TypeDef *USARTx, char *msg, int length) {
53
+void Usart_send(USART_TypeDef *USARTx, char *msg, int length)
54
+{
51 55
 	for (int i = 0; i < length; i++) {
52 56
 		sendChar(USARTx, msg[i]);
53 57
 	}

+ 0
- 2
Services/Accelerometer.c View File

@@ -9,8 +9,6 @@
9 9
 
10 10
 
11 11
 const float ZERO_G = 1.65; 	// 0 g
12
-//const float MAX_G = 2.13; 	// 1 g
13
-//const float MIN_G = 1.17; 	// -1 g
14 12
 const float SENSITIVITY = 0.48;
15 13
 
16 14
 void Accelerometer_conf(ADC_TypeDef *adc, GPIO_TypeDef * gpio, int pinx, int piny)

+ 16
- 20
Services/DCMotor.c View File

@@ -1,32 +1,28 @@
1 1
 #include "DCMotor.h"
2
+#include "math.h"
2 3
 
3
-void DCMotor_conf() {
4
-	
4
+void DCMotor_conf(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin)
5
+{
5 6
 	//On règle la vitesse en valeur absolue, ici à 0
6
-	Timer_pwmo_conf(TIM2, LL_TIM_CHANNEL_CH2, 50, 0);
7
+	Timer_pwmo_conf(timer, channel, 50, 0);
7 8
 	
8 9
 	//On règle le sens du moteur, ici sens direct (?)
9
-	GPIO_conf(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT, LL_GPIO_OUTPUT_OPENDRAIN, LL_GPIO_PULL_DOWN);
10
-	GPIO_setPin(GPIOA, LL_GPIO_PIN_2, 0);
10
+	GPIO_conf(gpio, pin, LL_GPIO_MODE_OUTPUT, LL_GPIO_OUTPUT_OPENDRAIN, LL_GPIO_PULL_DOWN);
11
+	GPIO_setPin(gpio, pin, 0);
11 12
 }
12 13
 
13
-void DCMotor_setSpeed(double speed) {
14
-	
15
-	double speedAbs = (speed > 0.) ? speed : -speed;
16
-	int sens = (speed > 0.) ? 1 : 0;
17
-	
18
-	Timer_pwmo_setDutyCycle(TIM2, LL_TIM_CHANNEL_CH2, speedAbs);
19
-	GPIO_setPin(GPIOA, LL_GPIO_PIN_2, sens);
14
+void DCMotor_setSpeed(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin, float speed)
15
+{
16
+	const int dir = (speed > 0.) ? 1 : 0;
20 17
 	
18
+	Timer_pwmo_setDutyCycle(timer, channel, fabs(speed));
19
+	GPIO_setPin(gpio, pin, dir);
21 20
 }
22 21
 
23
-double DCMotor_getSpeed(){
24
-	
25
-	double speedAbs = Timer_pwmo_getDutyCycle(TIM2, LL_TIM_CHANNEL_CH2);
26
-	int sens = GPIO_readPin(GPIOA, LL_GPIO_PIN_2);
27
-	
28
-	double speed = (sens) ? speedAbs : -speedAbs;
29
-	
30
-	return speed;
22
+float DCMotor_getSpeed(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin)
23
+{
24
+	const float speedAbs = Timer_pwmo_getDutyCycle(timer, channel);
25
+	const int dir = GPIO_readPin(gpio, pin);
31 26
 	
27
+	return dir ? speedAbs : -speedAbs;
32 28
 }

+ 3
- 3
Services/DCMotor.h View File

@@ -4,10 +4,10 @@
4 4
 #include "GPIO.h"
5 5
 #include "Timer.h"
6 6
 
7
-void DCMotor_conf(void);
7
+void DCMotor_conf(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin);
8 8
 
9
-void DCMotor_setSpeed(double speed);
9
+void DCMotor_setSpeed(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin, float speed);
10 10
 
11
-double DCMotor_getSpeed(void);
11
+float DCMotor_getSpeed(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin);
12 12
 
13 13
 #endif

+ 10
- 12
Services/RFEmitter.c View File

@@ -1,18 +1,16 @@
1 1
 #include "RFEmitter.h"
2 2
 
3
+void RFEmitter_conf(USART_TypeDef * usart)
4
+{
5
+	Usart_conf(usart);
6
+}
3 7
 
4
-void RFEmitter_conf() {
5
-	
6
-	//On configure l'USART
7
-	Usart_conf(USART1);
8
-	
9
-	//On active l'USART
10
-	Usart_enable(USART1);
11
-	
8
+void RFEmitter_start(USART_TypeDef * usart)
9
+{
10
+	Usart_enable(usart);
12 11
 }
13 12
 
14
-void RFEmitter_send(char * message, int longueur) {
15
-	
16
-	Usart_send(USART1, message, longueur);
17
-	
13
+void RFEmitter_send(USART_TypeDef * usart, char * message, int longueur)
14
+{
15
+	Usart_send(usart, message, longueur);
18 16
 }

+ 4
- 2
Services/RFEmitter.h View File

@@ -3,9 +3,11 @@
3 3
 
4 4
 #include "USART.h"
5 5
 
6
-void RFEmitter_conf(void);
6
+void RFEmitter_conf(USART_TypeDef * usart);
7 7
 	
8
-void RFEmitter_send(char * message, int longueur);
8
+void RFEmitter_start(USART_TypeDef * usart);
9
+
10
+void RFEmitter_send(USART_TypeDef * usart, char * message, int longueur);
9 11
 
10 12
 #endif
11 13
 

+ 9
- 11
Services/RFReceiver.c View File

@@ -1,17 +1,15 @@
1 1
 #include "RFReceiver.h"
2 2
 
3
-void RFReceiver_conf() {
4
-	
5
-	PWMi_conf(TIM4, 1);		
6
-	
7
-	}
3
+void RFReceiver_conf(TIM_TypeDef * timer, int channel)
4
+{
5
+	PWMi_conf(timer, channel);
6
+}
8 7
 
9
-double RFReceiver_getData(){
10
-	
11
-	int duty_cycle = PWMi_getDutyCycle(TIM4);
12
-	int period = PWMi_getPeriod(TIM4);
13
-	double duree_impulsion = duty_cycle * period;
8
+float RFReceiver_getData(TIM_TypeDef * timer)
9
+{
10
+	const int duty_cycle = PWMi_getDutyCycle(timer);
11
+	const int period = PWMi_getPeriod(timer);
12
+	const float duree_impulsion = duty_cycle * period;
14 13
 	
15 14
 	return (duree_impulsion -1) * 200 - 100;
16
-	
17 15
 }

+ 2
- 2
Services/RFReceiver.h View File

@@ -3,8 +3,8 @@
3 3
 
4 4
 #include "Timer.h"
5 5
 
6
-void RFReceiver_conf(void);
6
+void RFReceiver_conf(TIM_TypeDef * timer, int channel);
7 7
 
8
-double RFReceiver_getData(void);
8
+float RFReceiver_getData(TIM_TypeDef * timer);
9 9
 	
10 10
 #endif

+ 12
- 12
Services/Voltage.c View File

@@ -1,21 +1,21 @@
1 1
 #include "Voltage.h"
2 2
 
3 3
 
4
-void Voltage_conf() {
5
-	
4
+void Voltage_conf(ADC_TypeDef * adc, GPIO_TypeDef * gpio, int pin)
5
+{
6 6
 	//On configure le pin qui recevra le signal, ici PC2
7
-	GPIO_conf(GPIOC, LL_GPIO_PIN_2, LL_GPIO_MODE_ANALOG, 0, 0);
7
+	GPIO_conf(gpio, pin, LL_GPIO_MODE_ANALOG, 0, 0);
8 8
 	
9 9
 	//On configure l'ADC 
10
-	ADC_conf(ADC2, 12);
11
-	
12
-	//On démarre l'ADC
13
-	ADC_start(ADC2);
14
-	
10
+	ADC_conf(adc);
15 11
 }
16 12
 
17
-double Voltage_getVoltage() {
18
-	
19
-	return ADC_readVolt(ADC2);
20
-	
13
+void Voltage_start(ADC_TypeDef * adc)
14
+{
15
+	ADC_start(adc);
16
+}
17
+
18
+float Voltage_getVoltage(ADC_TypeDef * adc, int channel) 
19
+{
20
+	return ADC_readVolt(adc, channel);
21 21
 }

+ 4
- 2
Services/Voltage.h View File

@@ -4,8 +4,10 @@
4 4
 #include "ADC.h"
5 5
 #include "GPIO.h"
6 6
 
7
-void Voltage_conf(void);
7
+void Voltage_conf(ADC_TypeDef * adc, GPIO_TypeDef * gpio, int pin);
8 8
 
9
-double Voltage_getVoltage(void);
9
+void Voltage_start(ADC_TypeDef * adc);
10
+
11
+float Voltage_getVoltage(ADC_TypeDef * adc, int channel);
10 12
 
11 13
 #endif

+ 26
- 0
Src/Display.c View File

@@ -1 +1,27 @@
1 1
 #include "Display.h"
2
+#include "Voltage.h"
3
+#include "RFEmitter.h"
4
+
5
+USART_TypeDef * EMITTER_USART = USART1;
6
+
7
+ADC_TypeDef * VOLTAGE_ADC = ADC2;
8
+const int VOLTAGE_CHANNEL = LL_ADC_CHANNEL_12;
9
+GPIO_TypeDef * VOLTAGE_GPIO = GPIOC;
10
+const int VOLTAGE_PIN = LL_GPIO_PIN_2;
11
+
12
+void Display_conf()
13
+{
14
+	Voltage_conf(VOLTAGE_ADC, VOLTAGE_GPIO, VOLTAGE_PIN);
15
+	RFEmitter_conf(EMITTER_USART);
16
+}
17
+
18
+void Display_start()
19
+{
20
+	Voltage_start(VOLTAGE_ADC);
21
+	RFEmitter_start(EMITTER_USART);
22
+}
23
+
24
+void Display_background()
25
+{
26
+	float voltage = Voltage_getVoltage(ADC2, LL_ADC_CHANNEL_12);
27
+}

+ 6
- 0
Src/Display.h View File

@@ -1,4 +1,10 @@
1 1
 #ifndef DISPLAY_H
2 2
 #define DISPLAY_H
3 3
 
4
+void Display_conf(void);
5
+
6
+void Display_start(void);
7
+
8
+void Display_background(void);
9
+
4 10
 #endif

+ 24
- 12
Src/Orientation.c View File

@@ -1,19 +1,31 @@
1 1
 #include "Orientation.h"
2
-#define SEUIL 30
2
+#include "math.h"
3 3
 
4
-void Orientation_conf() {
5
-	
6
-	DCMotor_conf();
7
-	RFReceiver_conf();
8
-	
4
+#define THRESHOLD 30
5
+
6
+TIM_TypeDef * RECEIVER_TIMER = TIM4;
7
+const int RECEIVER_CHANNEL = LL_TIM_CHANNEL_CH1;
8
+
9
+TIM_TypeDef * DCMOTOR_TIMER = TIM2;
10
+const int DCMOTOR_CHANNEL = LL_TIM_CHANNEL_CH2;
11
+GPIO_TypeDef * DCMOTOR_GPIO = GPIOA;
12
+const int DCMOTOR_PIN = LL_GPIO_PIN_2;
13
+
14
+void Orientation_conf() 
15
+{
16
+	DCMotor_conf(DCMOTOR_TIMER, DCMOTOR_CHANNEL, DCMOTOR_GPIO, DCMOTOR_PIN);
17
+	RFReceiver_conf(RECEIVER_TIMER, LL_TIM_CHANNEL_CH1);
9 18
 }
10 19
 
11
-void Orientation_background(){
12
-	
13
-	double speed = RFReceiver_getData();
20
+void Orientation_background()
21
+{
22
+	const float speed = RFReceiver_getData(RECEIVER_TIMER);
14 23
 	
15 24
 	//Si la vitesse (en valeur absolue) ne dépasse pas un certain seuil, on ne démarre pas le moteur
16
-	if (-SEUIL<speed && SEUIL>speed) DCMotor_setSpeed(0);
17
-	else DCMotor_setSpeed(speed);
18
-	
25
+	if (THRESHOLD < fabs(speed)) {
26
+		DCMotor_setSpeed(DCMOTOR_TIMER, DCMOTOR_CHANNEL, DCMOTOR_GPIO, DCMOTOR_PIN, 0);
27
+	}
28
+	else { 
29
+		DCMotor_setSpeed(DCMOTOR_TIMER, DCMOTOR_CHANNEL, DCMOTOR_GPIO, DCMOTOR_PIN, speed);
30
+	}
19 31
 }

+ 7
- 8
Src/Sail.c View File

@@ -21,6 +21,13 @@ void Sail_conf()
21 21
 	IncrementalEncoder_conf(ENCODER_TIMER, ENCODER_GPIO, ENCODER_PIN);
22 22
 }
23 23
 
24
+void Sail_start()
25
+{
26
+	Sail_isEmergencyState = 0;
27
+	ServoMotor_start(MOTOR_TIMER);
28
+	IncrementalEncoder_start(ENCODER_TIMER);
29
+}
30
+
24 31
 int getSailAngle(int windAngle)
25 32
 {
26 33
 	if (windAngle > 180)
@@ -48,11 +55,3 @@ void Sail_setEmergency(int state)
48 55
 	if (Sail_isEmergencyState)
49 56
 		ServoMotor_setAngle(MOTOR_TIMER, MOTOR_CHANNEL, RESET_ANGLE);
50 57
 }
51
-
52
-
53
-void Sail_start()
54
-{
55
-	Sail_isEmergencyState = 0;
56
-	ServoMotor_start(MOTOR_TIMER);
57
-	IncrementalEncoder_start(ENCODER_TIMER);
58
-}

+ 9
- 4
Src/main.c View File

@@ -22,6 +22,8 @@
22 22
 
23 23
 #include "Sail.h"
24 24
 #include "Roll.h"
25
+#include "Display.h"
26
+#include "Orientation.h"
25 27
 
26 28
 #include "Scheduler.h"
27 29
 #include "ADC.h"
@@ -45,10 +47,12 @@ void backgroundTask()
45 47
 	counter++;
46 48
 	Sail_background();
47 49
 	Roll_background();
50
+	Orientation_background();
48 51
 	
49
-	angle = Accelerometer_getAngle(ADC1, LL_ADC_CHANNEL_11);
50 52
 	
51 53
 	// DEBUG
54
+	angle = Accelerometer_getAngle(ADC1, LL_ADC_CHANNEL_11);
55
+	
52 56
 	adcRaw1 = ADC_readRaw(ADC1, LL_ADC_CHANNEL_11);
53 57
 	adcRaw2 = ADC_readRaw(ADC1, LL_ADC_CHANNEL_10);
54 58
 	adcVolt1 = ADC_convertToVolt(adcRaw1);
@@ -59,6 +63,7 @@ void configurePeripherals()
59 63
 {
60 64
 	Sail_conf();
61 65
 	Roll_conf();
66
+	Orientation_conf();
62 67
 	
63 68
 	// DEBUG
64 69
 	ADC_conf(ADC1);
@@ -68,6 +73,7 @@ void startPeripherals()
68 73
 {
69 74
 	Sail_start();
70 75
 	Roll_start();
76
+	Display_start();
71 77
 	
72 78
 	// DEBUG
73 79
 	ADC_start(ADC1);
@@ -90,9 +96,8 @@ int main(void)
90 96
 	Scheduler_conf(backgroundTask);
91 97
 	Scheduler_start();
92 98
 
93
-  while (1)
94
-  {
95
-		// Send to display here
99
+  while (1) {
100
+		Display_background();
96 101
   }
97 102
 }
98 103
 

Loading…
Cancel
Save