Open PBYetml opened 8 months ago
L'évaluation des fichiers sources et headerfiles (GEST_PWM .c et .h) est finie ;)
FCT _INIT.. 1) Il aurait fallut commencer par le démarrage des timers avant celui des OC. Car les OC dépendent des timers. on aurait dû avoir ceci :
void GPWM_Initialize(S_pwmSettings *pData) { //Initialisation état du pont en H BSP_EnableHbrige();
//Démarrage des timers 1 à 4
DRV_TMR0_Start();
DRV_TMR1_Start();
DRV_TMR2_Start();
DRV_TMR3_Start();
//Démarrage des OCs
DRV_OC0_Start();
DRV_OC1_Start();
}
FCT _GET.. 1) Dans notre contexte, la variable "i" est utilisée pour représenter l'indice de la case dans notre tableau "tabValADC". Typiquement, les variables "i" et "j" sont employées dans des boucles "for". Comme nous avons déjà utilisé "i" pour les indices du tableau, nous avons choisi "j" pour notre boucle "for" afin d'éviter toute confusion. 2) On a pas réfléchi et il n'aurait pas dû être static, juste comme ceci : uint8_t j = 0; ça peut arriver à tout le monde de se tromper :)
3 ) on aurait pu faire un "define" dans le gestPWM.h s'appelant " NOMBRE_DE_SAUVAGRDE 10 " et remplacer le 10 par le define. Comme ceci :
void GPWM_GetSettings(S_pwmSettings *pData) { static S_ADCResults tabValADC[NOMBRE_DE_SAUVAGRDE]; //Tableau de sauvegarde des valeurs des ADC
//Calculs des moyennes
for(j = 0; j < NOMBRE_DE_SAUVAGRDE ; j++)
{
moyenneChan0+= tabValADC[j].Chan0;
moyenneChan1 += tabValADC[j].Chan1;
}
moyenneChan0 = moyenneChan0 / NOMBRE_DE_SAUVAGRDE;
moyenneChan1 = moyenneChan1 / NOMBRE_DE_SAUVAGRDE;
if(i >= NOMBRE_DE_SAUVAGRDE)
4) Parce qu'on commence à la valeur 0, donc on fait 1024 - 1 = 1023
abs fait partie de la librairie de la librairie
La librairie "
FCT DISP :
1) On a clear les lignes 2 et 3, car il y avait nos prénoms lors de l'initialisation, puis quand on avait l'affichage de "SpeedSetting" et "absSpeed", nos prénoms se mélangeait avec le texte. la ligne 4 n'avait pas besoin car il y avait pas de texte à la base et la ligne 1 on a réécrit la même chose. 2) On aurait pu faire un DEFINE pour l'alignement de la première ligne et première colonne, puis faire une incrémentation de celle-ci lorsque nécessaire
FCT _EXCPWM :
1) On le laisse à "1" et ça sert à arrêter le moteur (actif bas), cependant on arrête le moteur en mettant les deux entrées à "0" en faisant ceci " AIN1_HBRIDGE_W = 0; AIN2_HBRIDGE_W = 0;"
et on aurait pû faire plutôt : STBY_HBRIDGE_W = 0 ;
2) On pourrait les remplacer par des DEFINE. Elles correspondent aux valeurs obtenus lors de nos calculs (voir page 4 et 5 du rapport)
1999 = valeur max du Timer 2 100 = juste pour une division par cent pour obtenir le pourcentage 4500 = correspond à la valeur obtenue pour la largeur d'impulsion de 2,4 [ms] - celle de 0.6 [ms] Soit : 𝑉𝑎𝑙𝑒𝑢𝑟2.4 − 𝑉𝑎𝑙𝑒𝑢𝑟0.6 = Δ𝑣𝑎𝑙𝑒𝑢𝑟 = 6′000 − 1′500 = 4′500
180 = l'angle absolue va de 0 à 180 degrés, nous avons donc divisé par cette valeur. 1'500 = correponds à la valeur obtenu pour la largeur d'impulsion de 0.6 [ms]
FCT _EXCPWM_SOFT : 1) On l'incrémente à l'aide du Timer 4 comme on peut le voir ci-dessous :
void __ISR(_TIMER_4_VECTOR, ipl7AUTO) IntHandlerDrvTmrInstance3(void)
{
LED1_W = 1; //Sert à prendre les mesures, mais peut être retiré pour le code final
GPWM_ExecPWMSoft(&pData); //Appel de la fonction qui crée le PWMSoft
compteur++;
AUTRES :
1) La variable a été déclarée dans un autre fichier et que si on utilise le mot "extern" on dit au compilateur de nous faire confiance et qu'il va la trouver autre part sans avoir à la déclarer une nouvelle fois.
elle sera dans les fichiers sources suivants : gestPWM.c et system_interrupt.c
on doit faire attention qu'elle soit bien déclarée dans un autre fichier, sinon ça va pas fonctionner.
FCT _INIT..
FCT _GET..
i
etj
?j
est static ? https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L55C1-L56C69abs
est associée ? https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L80FCT _DISP
https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L107C1-L108C26
https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L123 https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L125 https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L127
FCT _EXCPWM
FCT _EXCPWM_SOFT
compteur
=> comment gérez-vous l'état de cette variable https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.c#L173AUTRES
compteur
=> mot clé =>extern
=> qu'est-ce que cela signifie au niveau de la variable ? dans quelles fichiers sources sera-t-elle utiliser ? et que devez-vous faire attention ? https://github.com/Melissaperret/TP1_MINF/blob/0b2cc65bf86d3abcae1f4a8e7c6eada937870d37/Programmation/TP1_TimerPWM/firmware/src/gestPWM.h#L34C8-L34C16