Compare commits

..

No commits in common. "7b472725cb6d4ca86acfe5ef790d0db52f281add" and "a37f6fb18f800085e6b178f7fe00da9d1affab3f" have entirely different histories.

9 changed files with 33 additions and 75 deletions

10
.vscode/tasks.json vendored
View File

@ -19,16 +19,6 @@
"kind": "build", "kind": "build",
"isDefault": true "isDefault": true
} }
},
{
"type": "shell",
"command": "mkdir -p build/debug; cd build/debug; cmake -DCMAKE_BUILD_TYPE=Debug ../..; make Flash",
"label": "Flash Debug",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": false
}
} }
], ],
"version": "2.0.0" "version": "2.0.0"

View File

@ -68,5 +68,3 @@ add_custom_target(Flash
# Suppression de la conversion automatique LF -> CRLF # Suppression de la conversion automatique LF -> CRLF
add_definitions(-DPICO_STDIO_ENABLE_CRLF_SUPPORT=0) add_definitions(-DPICO_STDIO_ENABLE_CRLF_SUPPORT=0)

View File

@ -140,7 +140,6 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui
| 0x5F | RW | Flottant 32 bits | Acceleration trajectoire | | 0x5F | RW | Flottant 32 bits | Acceleration trajectoire |
| 0x60 | RW | Flottant 32 bits | Acceleration trajectoire | | 0x60 | RW | Flottant 32 bits | Acceleration trajectoire |
| 0x61 | RW | Flottant 32 bits | Acceleration trajectoire | | 0x61 | RW | Flottant 32 bits | Acceleration trajectoire |
| **0x62** | RW | uint8_t | Commande inversion trajectoire |
| **0x80** | R | flottant 32 bits | Position X en mm | | **0x80** | R | flottant 32 bits | Position X en mm |
| 0x81 | R | flottant 32 bits | Position X en mm | | 0x81 | R | flottant 32 bits | Position X en mm |
| 0x82 | R | flottant 32 bits | Position X en mm | | 0x82 | R | flottant 32 bits | Position X en mm |

View File

@ -1,7 +1,7 @@
// Changer le define en fonction qu'on soit sur les PAMIs ou sur le robot principal // Changer le define en fonction qu'on soit sur les PAMIs ou sur le robot principal
//#define ROBOT_PROPULSION_2026 #define ROBOT_PROPULSION_2026
#define ROBOT_TYPE_PAMI //#define ROBOT_TYPE_PAMI
#ifndef ROBOT_PROPULSION_2026 #ifndef ROBOT_PROPULSION_2026
#ifndef ROBOT_TYPE_PAMI #ifndef ROBOT_TYPE_PAMI

62
main.c
View File

@ -77,7 +77,7 @@ void main(void)
Trajet_init(get_identifiant()); Trajet_init(get_identifiant());
//i2c_maitre_init(); //i2c_maitre_init();
//Servomoteur_Init(); Servomoteur_Init();
communication_init(); communication_init();
@ -95,10 +95,9 @@ void main(void)
gpio_set_dir(LED1PIN, GPIO_OUT ); gpio_set_dir(LED1PIN, GPIO_OUT );
gpio_put(LED1PIN, 1); gpio_put(LED1PIN, 1);
// Code incompatible avec le Pico W gpio_init(PICO_DEFAULT_LED_PIN);
// gpio_init(PICO_DEFAULT_LED_PIN); gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT );
// gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT ); gpio_put(PICO_DEFAULT_LED_PIN, 1);
// gpio_put(PICO_DEFAULT_LED_PIN, 1);
@ -119,13 +118,7 @@ void main(void)
enum etat_trajet_t etat_trajet=TRAJET_EN_COURS; enum etat_trajet_t etat_trajet=TRAJET_EN_COURS;
struct trajectoire_t trajectoire; struct trajectoire_t trajectoire;
uint8_t mode=0; uint8_t mode=0;
#ifdef ROBOT_TYPE_PAMI Trajet_config(TRAJECT_CONFIG_STD);
Trajet_config(100, 200);
#endif
#ifdef ROBOT_PROPULSION_2026
Trajet_config(600, 300);
#endif
while(1){ while(1){
@ -160,8 +153,6 @@ void main(void)
mise_a_jour_vitesse_robot = false; mise_a_jour_vitesse_robot = false;
mise_a_jour_trajectoire = false; mise_a_jour_trajectoire = false;
mise_a_jour_config_trajet = false; mise_a_jour_config_trajet = false;
mise_a_jour_cde_inv_traj = false;
// Copie des données dans la mémoire d'échange // Copie des données dans la mémoire d'échange
// Et actualisation des variables "mise_a_jour_..." // Et actualisation des variables "mise_a_jour_..."
@ -206,17 +197,11 @@ void main(void)
Strategie_interrompre_trajet(); Strategie_interrompre_trajet();
get_données_reçues((uint8_t *) &msg_trajectoire, sizeof(msg_trajectoire), REG_PROPULSION_TRAJECTOIRE); get_données_reçues((uint8_t *) &msg_trajectoire, sizeof(msg_trajectoire), REG_PROPULSION_TRAJECTOIRE);
printf("trajectoire: type: %d,\n point1_x:%.2f, point1_y:%.2f,\n point2_x:%.2f, point2_y:%.2f,\n point3_x:%.2f, point3_y:%.2f\n point4_x:%.2f, point4_y:%.2f\n", printf("trajectoire: type: %d,\n point1_x:%.2f, point1_y:%.2f,\n point2_x:%.2f, point2_y:%.2f,\n point3_x:%.2f, point3_y:%.2f\n point4_x:%.2f, point4_y:%.2f\n",
msg_trajectoire.type, msg_trajectoire.p1.x, msg_trajectoire.p1.y, msg_trajectoire.trajectoire.type, msg_trajectoire.trajectoire.p1.x, msg_trajectoire.trajectoire.p1.y,
msg_trajectoire.p2.x, msg_trajectoire.p2.y, msg_trajectoire.trajectoire.p2.x, msg_trajectoire.trajectoire.p2.y,
msg_trajectoire.p3.x, msg_trajectoire.p3.y, msg_trajectoire.trajectoire.p3.x, msg_trajectoire.trajectoire.p3.y,
msg_trajectoire.p4.x, msg_trajectoire.p4.y); msg_trajectoire.trajectoire.p4.x, msg_trajectoire.trajectoire.p4.y);
trajectoire.type = msg_trajectoire.type; trajectoire = msg_trajectoire.trajectoire;
trajectoire.p1 = msg_trajectoire.p1;
trajectoire.p2 = msg_trajectoire.p2;
trajectoire.p3 = msg_trajectoire.p3;
trajectoire.p4 = msg_trajectoire.p4;
trajectoire.longueur = 0;
mode = 4; mode = 4;
uint8_t etat_action = ACTION_EN_COURS; uint8_t etat_action = ACTION_EN_COURS;
mise_données_dans_échange((uint8_t*) &(etat_action), sizeof(etat_action), REG_PROPULSION_ETAT_TRAJET); mise_données_dans_échange((uint8_t*) &(etat_action), sizeof(etat_action), REG_PROPULSION_ETAT_TRAJET);
@ -225,18 +210,10 @@ void main(void)
if(mise_a_jour_config_trajet){ if(mise_a_jour_config_trajet){
struct msg_propulsion_config_trajet_t msg_propulsion_config_trajet; struct msg_propulsion_config_trajet_t msg_propulsion_config_trajet;
get_données_reçues((uint8_t *) &msg_propulsion_config_trajet, sizeof(msg_propulsion_config_trajet), REG_PROPULSION_CONFIG_TRAJET); get_données_reçues((uint8_t *) &msg_propulsion_config_trajet, sizeof(msg_propulsion_config_trajet), REG_PROPULSION_CONFIG_TRAJET);
printf("Trajet config: %.0f %.0f\n",msg_propulsion_config_trajet.vitesse_mm_s, msg_propulsion_config_trajet.acceleration_mm_ss);
Trajet_config(msg_propulsion_config_trajet.vitesse_mm_s, msg_propulsion_config_trajet.acceleration_mm_ss); Trajet_config(msg_propulsion_config_trajet.vitesse_mm_s, msg_propulsion_config_trajet.acceleration_mm_ss);
} }
/*
if(mise_a_jour_cde_inv_traj){
uint8_t cde_inv_traj;
get_données_reçues(&cde_inv_traj, sizeof(cde_inv_traj), REG_PROPULSION_CDE_INV_TRAJ);
if(cde_inv_traj == 1){
Trajet_inverse();
cde_inv_traj = 0;
mise_données_dans_échange(&cde_inv_traj, sizeof(cde_inv_traj), REG_PROPULSION_CDE_INV_TRAJ);
}
}*/
} }
@ -247,10 +224,10 @@ void main(void)
if(id_carte == 'D'){ if(id_carte == 'D'){
if(message.donnees[4] > 0 && message.donnees[4] < 30){ if(message.donnees[4] > 0 && message.donnees[4] < 30){
//printf("LED ON\n"); //printf("LED ON\n");
//gpio_put(PICO_DEFAULT_LED_PIN, 1); gpio_put(PICO_DEFAULT_LED_PIN, 1);
}else{ }else{
//printf("LED OFF\n"); //printf("LED OFF\n");
//gpio_put(PICO_DEFAULT_LED_PIN, 0); gpio_put(PICO_DEFAULT_LED_PIN, 0);
} }
} }
break; break;
@ -280,6 +257,8 @@ void main(void)
//printf(">nb_message:%u\n",nb_message); //printf(">nb_message:%u\n",nb_message);
} }
// Fin du match
if(temps_ms != Temps_get_temps_ms()){ if(temps_ms != Temps_get_temps_ms()){
if(Temps_get_temps_ms() - temps_ms > 20){ if(Temps_get_temps_ms() - temps_ms > 20){
/// PANIC /// PANIC
@ -344,6 +323,15 @@ void main(void)
mise_données_dans_échange((uint8_t*) &(vitesse_roue_gauche), sizeof(vitesse_roue_gauche), REG_PROPULSION_VITESSE_ROUES_lecture); mise_données_dans_échange((uint8_t*) &(vitesse_roue_gauche), sizeof(vitesse_roue_gauche), REG_PROPULSION_VITESSE_ROUES_lecture);
mise_données_dans_échange((uint8_t*) &(vitesse_roue_droite), sizeof(vitesse_roue_droite), REG_PROPULSION_VITESSE_ROUES_lecture +4); mise_données_dans_échange((uint8_t*) &(vitesse_roue_droite), sizeof(vitesse_roue_droite), REG_PROPULSION_VITESSE_ROUES_lecture +4);
//sleep_ms(1);
//printf("x_mm:%.2f, y_mm:%.2f\n", position.x_mm, position.y_mm);
//gestion_PAMI(step_ms, &asser_pos);
/*if(asser_pos){
AsserMoteur_Gestion(step_ms);
}*/
// Récupération des valeurs pour les mettre dans la mémoire d'échange
// TODO
} }
} }

View File

@ -22,7 +22,7 @@ struct message_applicatif_t{
uint8_t adresse_registre; // Adresse du registre lu ou écrit uint8_t adresse_registre; // Adresse du registre lu ou écrit
uint8_t taille_donnees; uint8_t taille_donnees;
union{ union{
uint8_t donnees[0xFF]; uint8_t donnees[100];
#ifdef MESSAGE_PROPULSION_H #ifdef MESSAGE_PROPULSION_H
struct msg_propulsion_position_t msg_propulsion_position; struct msg_propulsion_position_t msg_propulsion_position;
#endif #endif

View File

@ -1,9 +1,7 @@
#include <string.h> #include <string.h>
#include "messagerie_applicative.h" #include "messagerie_applicative.h"
#define TAILLE_MEMOIRE_ECHANGE 0xFF uint8_t memoire_echange[200];
uint8_t memoire_echange[TAILLE_MEMOIRE_ECHANGE];
@ -14,7 +12,6 @@ bool mise_a_jour_vitesse_roues = false;
bool mise_a_jour_vitesse_robot = false; bool mise_a_jour_vitesse_robot = false;
bool mise_a_jour_trajectoire = false; bool mise_a_jour_trajectoire = false;
bool mise_a_jour_config_trajet = false; bool mise_a_jour_config_trajet = false;
bool mise_a_jour_cde_inv_traj = false;
void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre){ void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre){
memcpy(dst, &(memoire_echange[registre]), taille); memcpy(dst, &(memoire_echange[registre]), taille);
@ -46,26 +43,15 @@ void écriture_données(unsigned int adresse, uint8_t donnée){
}else if(adresse <= 0x59){ // }else if(adresse <= 0x59){ //
// Trajectoire // Trajectoire
mise_a_jour_trajectoire = true; mise_a_jour_trajectoire = true;
}else if(adresse <= 0x61){ }else if(adresse <= 0x61){
// Trajet config // Trajet config
mise_a_jour_config_trajet = true; mise_a_jour_config_trajet = true;
/*
}else if(adresse <= 0x62){
// Trajet config
mise_a_jour_cde_inv_traj = true;
*/
}else { }else {
// Hors mémoire // Hors mémoire
return; return;
} }
// On contrôle qu'on est bien dans la mémoire
if(adresse < TAILLE_MEMOIRE_ECHANGE && adresse >= 0){
memoire_echange[adresse] = donnée; memoire_echange[adresse] = donnée;
}
} }

View File

@ -14,4 +14,3 @@ extern bool mise_a_jour_vitesse_roues;
extern bool mise_a_jour_vitesse_robot; extern bool mise_a_jour_vitesse_robot;
extern bool mise_a_jour_trajectoire; extern bool mise_a_jour_trajectoire;
extern bool mise_a_jour_config_trajet; extern bool mise_a_jour_config_trajet;
extern bool mise_a_jour_cde_inv_traj;

View File

@ -12,7 +12,6 @@
#define REG_PROPULSION_VITESSE_ROBOT 0x1A #define REG_PROPULSION_VITESSE_ROBOT 0x1A
#define REG_PROPULSION_TRAJECTOIRE 0x22 #define REG_PROPULSION_TRAJECTOIRE 0x22
#define REG_PROPULSION_CONFIG_TRAJET 0x5A #define REG_PROPULSION_CONFIG_TRAJET 0x5A
#define REG_PROPULSION_CDE_INV_TRAJ 0x62
#define REG_PROPULSION_ABSCISSE 0x8C #define REG_PROPULSION_ABSCISSE 0x8C
#define REG_PROPULSION_POSITION_CONSIGNE 0x90 #define REG_PROPULSION_POSITION_CONSIGNE 0x90
#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98 #define REG_PROPULSION_VITESSE_ROUES_lecture 0x98
@ -36,8 +35,7 @@ struct msg_propulsion_vitesse_robot_t {
}; };
struct msg_trajectoire_t { struct msg_trajectoire_t {
enum trajectoire_type_t type; struct trajectoire_t trajectoire;
struct point_xy_t p1, p2, p3, p4;
}; };
struct msg_propulsion_config_trajet_t { struct msg_propulsion_config_trajet_t {