Test des sorties PWM et sens des moteurs : OK
This commit is contained in:
		
							parent
							
								
									e6de7a72fd
								
							
						
					
					
						commit
						26329bfeef
					
				
							
								
								
									
										25
									
								
								Moteurs.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								Moteurs.c
									
									
									
									
									
								
							| @ -15,7 +15,7 @@ | ||||
| 
 | ||||
| uint slice_moteur_A, slice_moteur_B, slice_moteur_C; | ||||
| 
 | ||||
| 
 | ||||
| /// @brief Initialisation les entrées / sorties requises pour les moteurs
 | ||||
| void Moteur_Init(){ | ||||
|     // Initialisation des broches pour les PWM
 | ||||
|     gpio_set_function(MOTEUR_A_VITESSE, GPIO_FUNC_PWM); | ||||
| @ -26,9 +26,9 @@ void Moteur_Init(){ | ||||
|     gpio_init(MOTEUR_A_SENS); | ||||
|     gpio_init(MOTEUR_B_SENS); | ||||
|     gpio_init(MOTEUR_C_SENS); | ||||
|     gpio_set_dir(MOTEUR_A_SENS, true); | ||||
|     gpio_set_dir(MOTEUR_B_SENS, true); | ||||
|     gpio_set_dir(MOTEUR_C_SENS, true); | ||||
|     gpio_set_dir(MOTEUR_A_SENS, GPIO_OUT); | ||||
|     gpio_set_dir(MOTEUR_B_SENS, GPIO_OUT); | ||||
|     gpio_set_dir(MOTEUR_C_SENS, GPIO_OUT); | ||||
| 
 | ||||
|     // Configuration des PWM à 1 kHz
 | ||||
|     // Clock_system 125 MHz - 16 bits PWM (65536)
 | ||||
| @ -44,7 +44,7 @@ void Moteur_Init(){ | ||||
| 
 | ||||
|     pwm_config_set_clkdiv_int(&pwm_moteur, 2);  | ||||
|     pwm_config_set_phase_correct(&pwm_moteur, false); | ||||
|     pwm_config_set_wrap(&pwm_moteur, (uint16_t)65635); | ||||
|     pwm_config_set_wrap(&pwm_moteur, (uint16_t)65535); | ||||
| 
 | ||||
|     pwm_init(slice_moteur_A, &pwm_moteur, true); | ||||
|     pwm_init(slice_moteur_B, &pwm_moteur, true); | ||||
| @ -57,6 +57,9 @@ void Moteur_Init(){ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /// @brief Configure le PWM et la broche de sens en fonction de la vitesse et du moteur
 | ||||
| /// @param moteur : Moteur (voir enum t_moteur)
 | ||||
| /// @param vitesse : Vitesse entre -32767 et 32767
 | ||||
| void Moteur_SetVitesse(enum t_moteur moteur, int16_t vitesse ){ | ||||
|     uint16_t u_vitesse; | ||||
| 
 | ||||
| @ -70,27 +73,27 @@ void Moteur_SetVitesse(enum t_moteur moteur, int16_t vitesse ){ | ||||
|         case MOTEUR_A: | ||||
|             pwm_set_chan_level(slice_moteur_A, PWM_CHAN_A, u_vitesse); | ||||
|             if(vitesse < 0){ | ||||
|                 gpio_put(MOTEUR_A_SENS, false); | ||||
|                 gpio_put(MOTEUR_A_SENS, 0); | ||||
|             }else{ | ||||
|                 gpio_put(MOTEUR_A_SENS, true); | ||||
|                 gpio_put(MOTEUR_A_SENS, 1); | ||||
|             } | ||||
|             break; | ||||
| 
 | ||||
|         case MOTEUR_B: | ||||
|             pwm_set_chan_level(slice_moteur_B, PWM_CHAN_A, u_vitesse); | ||||
|             if(vitesse < 0){ | ||||
|                 gpio_put(MOTEUR_B_SENS, false); | ||||
|                 gpio_put(MOTEUR_B_SENS, 0); | ||||
|             }else{ | ||||
|                 gpio_put(MOTEUR_B_SENS, true); | ||||
|                 gpio_put(MOTEUR_B_SENS, 1); | ||||
|             } | ||||
|             break; | ||||
| 
 | ||||
|         case MOTEUR_C: | ||||
|             pwm_set_chan_level(slice_moteur_C, PWM_CHAN_A, u_vitesse); | ||||
|             if(vitesse < 0){ | ||||
|                 gpio_put(MOTEUR_B_SENS, false); | ||||
|                 gpio_put(MOTEUR_C_SENS, 0); | ||||
|             }else{ | ||||
|                 gpio_put(MOTEUR_B_SENS, true); | ||||
|                 gpio_put(MOTEUR_C_SENS, 1); | ||||
|             } | ||||
|             break; | ||||
|     } | ||||
|  | ||||
							
								
								
									
										108
									
								
								test.c
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								test.c
									
									
									
									
									
								
							| @ -7,14 +7,16 @@ | ||||
| #include "Temps.h" | ||||
| #include "spi_nb.h" | ||||
| #include "Servomoteur.h" | ||||
| #include "QEI.h" | ||||
| 
 | ||||
| const uint LED_PIN = 25; | ||||
| 
 | ||||
| #define V_INIT -999.0 | ||||
| #define TEST_TIMEOUT_US 10000000 | ||||
| 
 | ||||
| int mode_test(); | ||||
| 
 | ||||
| int test_moteurs(); | ||||
| int test_vitesse_moteur(enum t_moteur moteur); | ||||
| 
 | ||||
| int main() { | ||||
|     bi_decl(bi_program_description("This is a test binary.")); | ||||
| @ -37,10 +39,14 @@ int main() { | ||||
| 
 | ||||
|     //while(1);
 | ||||
|     Temps_init(); | ||||
|     Gyro_Init(); | ||||
|     Moteur_Init(); | ||||
| 
 | ||||
|     while(mode_test()); | ||||
| 
 | ||||
|     Gyro_Init(); | ||||
| 
 | ||||
|      | ||||
| 
 | ||||
|     temps_ms = Temps_get_temps_ms(); | ||||
|     temps_ms_old = temps_ms; | ||||
|     while (1) {  | ||||
| @ -95,29 +101,113 @@ int main() { | ||||
| 
 | ||||
| // Mode test : renvoie 0 pour quitter le mode test
 | ||||
| int mode_test(){ | ||||
|     static int iteration = 3; | ||||
|     printf("Appuyez sur une touche pour entrer en mode test :\n"); | ||||
|     printf("M - pour les moteurs\n"); | ||||
|     int rep = getchar_timeout_us(10000000); | ||||
|     stdio_flush(); | ||||
|     int rep = getchar_timeout_us(TEST_TIMEOUT_US); | ||||
|     stdio_flush(); | ||||
|     switch (rep) | ||||
|     { | ||||
|     case 'M': | ||||
|     case 'm': | ||||
|         /* code */ | ||||
| 
 | ||||
|         while(test_moteurs()); | ||||
|         break; | ||||
|     case PICO_ERROR_TIMEOUT: | ||||
|         printf("Sortie du mode test\n"); | ||||
|         return 0; | ||||
|         iteration--;         | ||||
|         if(iteration == 0){ | ||||
|             printf("Sortie du mode test\n"); | ||||
|             return 0; | ||||
|         } | ||||
| 
 | ||||
|     default: | ||||
|         printf("Commande inconnue\n"); | ||||
|         return 1; | ||||
|         break; | ||||
|     } | ||||
|     return 1; | ||||
|      | ||||
| } | ||||
| 
 | ||||
| int test_moteurs(){ | ||||
|     int lettre_moteur; | ||||
| 
 | ||||
|     printf("Indiquez le moteurs à tester (A, B ou C):\n"); | ||||
|     int moteur = getchar_timeout_us(0); | ||||
|     printf("Moteur choisi : %d %x", moteur, moteur); | ||||
|     do{ | ||||
|          lettre_moteur = getchar_timeout_us(TEST_TIMEOUT_US); | ||||
|     }while(lettre_moteur == PICO_ERROR_TIMEOUT); | ||||
|     printf("Moteur choisi : %c %d %x\n", lettre_moteur, lettre_moteur, lettre_moteur); | ||||
|     stdio_flush(); | ||||
| 
 | ||||
|     switch (lettre_moteur) | ||||
|     { | ||||
|     case 'A': | ||||
|     case 'a': | ||||
|         while(test_vitesse_moteur(MOTEUR_A)); | ||||
|         break; | ||||
| 
 | ||||
|     case 'B': | ||||
|     case 'b': | ||||
|         while(test_vitesse_moteur(MOTEUR_B)); | ||||
|         break; | ||||
| 
 | ||||
|     case 'C': | ||||
|     case 'c': | ||||
|         while(test_vitesse_moteur(MOTEUR_C)); | ||||
|         break; | ||||
|      | ||||
|     case 'Q': | ||||
|     case 'q': | ||||
|         return 0; | ||||
|         break; | ||||
|      | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
|      | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| int test_vitesse_moteur(enum t_moteur moteur){ | ||||
|     printf("Vitesse souhaitée :\n0 - 0%%\n1 - 10%%\n2 - 20%%\n...\n9 - 90%%\nA - 100%%\n"); | ||||
| 
 | ||||
|     int vitesse_moteur; | ||||
|     do{  | ||||
|         vitesse_moteur = getchar_timeout_us(TEST_TIMEOUT_US); | ||||
|     }while(vitesse_moteur == PICO_ERROR_TIMEOUT); | ||||
|     stdio_flush(); | ||||
|      | ||||
|     switch (vitesse_moteur) | ||||
|     { | ||||
|     case '0': | ||||
|     case '1': | ||||
|     case '2': | ||||
|     case '3': | ||||
|     case '4': | ||||
|     case '5': | ||||
|     case '6': | ||||
|     case '7': | ||||
|     case '8': | ||||
|     case '9': | ||||
|         printf("Vitesse choisie : %c0%%\n", vitesse_moteur); | ||||
|         Moteur_SetVitesse(moteur, (vitesse_moteur - '0') * 32767.0 / 10.); | ||||
|         break; | ||||
| 
 | ||||
|     case 'A': | ||||
|     case 'a': | ||||
|         printf("Vitesse choisie : 100%%\n"); | ||||
|         Moteur_SetVitesse(moteur, (int16_t) 32766.0); | ||||
|         break; | ||||
|          | ||||
| 
 | ||||
|     case 'q': | ||||
|     case 'Q': | ||||
|         return 0; | ||||
|         break; | ||||
| 
 | ||||
|     default: | ||||
|         break; | ||||
|     } | ||||
|     return 1; | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user