Melissaperret / TP1_MINF

0 stars 0 forks source link

GestPWM.c -> bugs / améliorations / remarques #3

Open PBYetml opened 8 months ago

PBYetml commented 8 months ago

FCT _INIT..

FCT _GET..

FCT _DISP

FCT _EXCPWM

FCT _EXCPWM_SOFT

AUTRES

PBYetml commented 7 months ago

L'évaluation des fichiers sources et headerfiles (GEST_PWM .c et .h) est finie ;)

Melissaperret commented 7 months ago

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 " " se trouve dans : "bsp.h" qui est appelé avec la librairie " #include "bsp.h" " dans le fichier system_config.h, et le fichier " system_config.h" est appelé dans le "app.h" qui lui même est appelé dans le fichier "gestPWM.c" on aurait pu directement inclure la librairie dans le "gestPWM.c "

Melissaperret commented 7 months ago

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.