diff --git a/.cproject b/.cproject
index 6c826b3..032667f 100644
--- a/.cproject
+++ b/.cproject
@@ -23,7 +23,7 @@
-
+
@@ -115,7 +115,7 @@
-
+
diff --git a/Core/Inc/stm32f7xx_it.h b/Core/Inc/stm32f7xx_it.h
index 07bb136..a173c23 100644
--- a/Core/Inc/stm32f7xx_it.h
+++ b/Core/Inc/stm32f7xx_it.h
@@ -55,6 +55,7 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
+void ADC_IRQHandler(void);
void TIM6_DAC_IRQHandler(void);
void LTDC_IRQHandler(void);
void DMA2D_IRQHandler(void);
diff --git a/Core/Src/isrs.cpp b/Core/Src/isrs.cpp
new file mode 100644
index 0000000..9d0f9e2
--- /dev/null
+++ b/Core/Src/isrs.cpp
@@ -0,0 +1,14 @@
+/*
+ * isrs.cpp
+ *
+ * Created on: Dec 12, 2023
+ * Author: remi.heredero
+ */
+
+#include "stm32f7xx_hal.h"
+
+
+extern "C" void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef * hadc) {
+ volatile uint32_t value = HAL_ADC_GetValue(hadc);
+}
+
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 94a1f20..ba4c304 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -144,8 +144,13 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
- while (1)
- {
+ while (1) {
+
+ HAL_ADC_Start_IT(&hadc3);
+ HAL_Delay(2000);
+
+
+
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
diff --git a/Core/Src/stm32f7xx_hal_msp.c b/Core/Src/stm32f7xx_hal_msp.c
index ae7504b..4e8e232 100644
--- a/Core/Src/stm32f7xx_hal_msp.c
+++ b/Core/Src/stm32f7xx_hal_msp.c
@@ -116,6 +116,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(ARDUINO_A0_GPIO_Port, &GPIO_InitStruct);
+ /* ADC3 interrupt Init */
+ HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(ADC_IRQn);
/* USER CODE BEGIN ADC3_MspInit 1 */
/* USER CODE END ADC3_MspInit 1 */
@@ -152,6 +155,8 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
HAL_GPIO_DeInit(ARDUINO_A0_GPIO_Port, ARDUINO_A0_Pin);
+ /* ADC3 interrupt DeInit */
+ HAL_NVIC_DisableIRQ(ADC_IRQn);
/* USER CODE BEGIN ADC3_MspDeInit 1 */
/* USER CODE END ADC3_MspDeInit 1 */
diff --git a/Core/Src/stm32f7xx_it.c b/Core/Src/stm32f7xx_it.c
index 489046c..54f847d 100644
--- a/Core/Src/stm32f7xx_it.c
+++ b/Core/Src/stm32f7xx_it.c
@@ -55,6 +55,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
+extern ADC_HandleTypeDef hadc3;
extern DMA2D_HandleTypeDef hdma2d;
extern LTDC_HandleTypeDef hltdc;
extern TIM_HandleTypeDef htim6;
@@ -201,6 +202,20 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32f7xx.s). */
/******************************************************************************/
+/**
+ * @brief This function handles ADC1, ADC2 and ADC3 global interrupts.
+ */
+void ADC_IRQHandler(void)
+{
+ /* USER CODE BEGIN ADC_IRQn 0 */
+
+ /* USER CODE END ADC_IRQn 0 */
+ HAL_ADC_IRQHandler(&hadc3);
+ /* USER CODE BEGIN ADC_IRQn 1 */
+
+ /* USER CODE END ADC_IRQn 1 */
+}
+
/**
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
*/
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..080b44b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+
+
+# Question on tasks
+## Task 5
+Comme prochaine tâche, nous voulons analyser les temps d'exécution des différents composants du logiciel.
+En principe, nous avons deux composants qui peuvent être exécutés à deux vitesses différentes :
+
+|#|Composant|Timing|
+|--|--|--|
+|1|Conversion du signal analogue|1 kHz ou plus|
+|2|Rafraichissement de l'écran|20 à 60 fois par seconde|
+
+### Question 1
+> Est-ce qu'il est possible d'exécuter le composant #1 avec un XF (ou un RTOS) ? Justifiez votre réponse.
+
+Il vaut mieux utiliser un timer hardward pour aller plus vite
+
+### Question 2
+> Est-ce qu'il est possible d'exécuter le composant #2 avec un XF (ou un RTOS) ? Justifiez votre réponse.
+
+La vitesse d'un XF est largement suffisante. Le temps le plus rapide est de 1/60 = 16,7ms.
+Avec des ticks toutes les millisecondes, le XF est largement capable
+
+### Question 3
+> Si l'on combine un timer hardware avec un XF, lequel des deux composants doit être priorisé ? Justifiez votre réponse.
+
+La conversion du signal analogue doit être prioritaire. On doit donc mettre la priorité sur le timer hard.
+
+## Task 7
+### Question 1
+> Combien de mesures [Samples/s] le convertisseur A/D doit-il effectuer par seconde pour pouvoir échantillonner des signaux avec des fréquences jusqu'à 1 kHz ?
+
+Tout dépend de la résolution souhaitée. Il nous faut au miminum 2 fois la fréquence la plus élevée de notre signal.
+Dans notre cas, il nous faut au minimu fs = 2*1kHz = 2kHz
+
+### Question 2
+> Faut-il un filtre ? Si oui, quelle sera la fréquence de coupure de ce filtre ?
+
+Oui pour éviter les fréquences de repliement.
+Il faut le dimensionner à Fs/2
+
+### Question 3
+> Est-ce la fréquence donnée par le théorème d’échantillonnage ou devrait-elle être plus élevée ?
+
+Il nous faudra beaucoup plus que 2 points par sinus. Tout dépend de la résolution souhaitée
+
+### Question 4
+> Lequel des canaux du ADC3 doit être utilisé pour pouvoir mesurer / échantillonner le signal à l'aide de la broche PA0 ?
+
+Il faut utiliser le chanal ADC3_IN0
+
+### Question 5
+> Est-ce que le ADC pourrait éventuellement effectuer des mesures à des intervalles réguliers à l'aide de ses propres moyens ?
+
+Pour que l'ADC effectue des mesures par ses propres moyens il faudrait le mettre en mode continu.
+Mais se ne serait pas à interval régulier, il effectuerait une mesure dès la précédente terminée.
diff --git a/RealtimeOscilloscope Debug.launch b/RealtimeOscilloscope Debug.launch
index 626f57c..dfdbe1d 100644
--- a/RealtimeOscilloscope Debug.launch
+++ b/RealtimeOscilloscope Debug.launch
@@ -75,5 +75,6 @@
+
diff --git a/RealtimeOscilloscope.ioc b/RealtimeOscilloscope.ioc
index b0dee1f..2d1ffbe 100644
--- a/RealtimeOscilloscope.ioc
+++ b/RealtimeOscilloscope.ioc
@@ -254,6 +254,7 @@ Mcu.UserConstants=
Mcu.UserName=STM32F746NGHx
MxCube.Version=6.5.0
MxDb.Version=DB.6.0.50
+NVIC.ADC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.DMA2D_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true