From 40eb56d9296eee70440e89d8c81604c2c8391db8 Mon Sep 17 00:00:00 2001 From: Samuel Date: Sat, 30 May 2026 21:19:44 +0200 Subject: [PATCH] Si memoire_echange[0x5D] vaut 0, tout va bien. Si memoire_echange[0x5D] vaut 1, '0' ou '1', plus rien ne marche --- .vscode/tasks.json | 10 ++++++++++ CMakeLists.txt | 2 ++ config_robot.h | 4 ++-- main.c | 33 ++++++++++++++++++++------------- messagerie.h | 2 +- messagerie_applicative.c | 14 ++++++++++++-- 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index c98bf9b..0abf495 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -19,6 +19,16 @@ "kind": "build", "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" diff --git a/CMakeLists.txt b/CMakeLists.txt index 208c5b0..13e5203 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,3 +68,5 @@ add_custom_target(Flash # Suppression de la conversion automatique LF -> CRLF add_definitions(-DPICO_STDIO_ENABLE_CRLF_SUPPORT=0) + + diff --git a/config_robot.h b/config_robot.h index 9c7a436..7ecba7c 100644 --- a/config_robot.h +++ b/config_robot.h @@ -1,7 +1,7 @@ // Changer le define en fonction qu'on soit sur les PAMIs ou sur le robot principal -#define ROBOT_PROPULSION_2026 -//#define ROBOT_TYPE_PAMI +//#define ROBOT_PROPULSION_2026 +#define ROBOT_TYPE_PAMI #ifndef ROBOT_PROPULSION_2026 #ifndef ROBOT_TYPE_PAMI diff --git a/main.c b/main.c index 2d9b47e..6f3485f 100644 --- a/main.c +++ b/main.c @@ -48,6 +48,8 @@ int get_couleur(void); void gestion_PAMI(uint32_t step_ms, int * asser_pos); void gestion_VL53L8CX(void); +extern uint8_t memoire_echange[]; + #ifdef ROBOT_PROPULSION_2026 const uint32_t step_ms=10; #else @@ -66,6 +68,8 @@ void main(void) struct message_t message; bool fin_match = false; + memoire_echange[0x5D]=1; // Si 0, c'est OK, sinon, ça fait n'importe quoi ! + stdio_init_all(); Temps_init(); @@ -95,9 +99,10 @@ void main(void) gpio_set_dir(LED1PIN, GPIO_OUT ); gpio_put(LED1PIN, 1); - gpio_init(PICO_DEFAULT_LED_PIN); - gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT ); - gpio_put(PICO_DEFAULT_LED_PIN, 1); + // Code incompatible avec le Pico W + // gpio_init(PICO_DEFAULT_LED_PIN); + // gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT ); + // gpio_put(PICO_DEFAULT_LED_PIN, 1); @@ -118,8 +123,13 @@ void main(void) enum etat_trajet_t etat_trajet=TRAJET_EN_COURS; struct trajectoire_t trajectoire; uint8_t mode=0; - //Trajet_config(TRAJECT_CONFIG_STD); +#ifdef ROBOT_TYPE_PAMI + Trajet_config(100, 200); +#endif +#ifdef ROBOT_PROPULSION_2026 Trajet_config(600, 300); +#endif + while(1){ @@ -211,13 +221,12 @@ void main(void) } if(mise_a_jour_config_trajet){ + struct msg_trajectoire_t msg_trajectoire; + get_données_reçues((uint8_t *) &msg_trajectoire, sizeof(msg_trajectoire), REG_PROPULSION_TRAJECTOIRE); 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); - 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); } - + /* 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); @@ -226,7 +235,7 @@ void main(void) cde_inv_traj = 0; mise_données_dans_échange(&cde_inv_traj, sizeof(cde_inv_traj), REG_PROPULSION_CDE_INV_TRAJ); } - } + }*/ } @@ -237,10 +246,10 @@ void main(void) if(id_carte == 'D'){ if(message.donnees[4] > 0 && message.donnees[4] < 30){ //printf("LED ON\n"); - gpio_put(PICO_DEFAULT_LED_PIN, 1); + //gpio_put(PICO_DEFAULT_LED_PIN, 1); }else{ //printf("LED OFF\n"); - gpio_put(PICO_DEFAULT_LED_PIN, 0); + //gpio_put(PICO_DEFAULT_LED_PIN, 0); } } break; @@ -270,8 +279,6 @@ void main(void) //printf(">nb_message:%u\n",nb_message); } - // Fin du match - if(temps_ms != Temps_get_temps_ms()){ if(Temps_get_temps_ms() - temps_ms > 20){ /// PANIC diff --git a/messagerie.h b/messagerie.h index 719c23f..9554886 100644 --- a/messagerie.h +++ b/messagerie.h @@ -22,7 +22,7 @@ struct message_applicatif_t{ uint8_t adresse_registre; // Adresse du registre lu ou écrit uint8_t taille_donnees; union{ - uint8_t donnees[100]; + uint8_t donnees[0xFF]; #ifdef MESSAGE_PROPULSION_H struct msg_propulsion_position_t msg_propulsion_position; #endif diff --git a/messagerie_applicative.c b/messagerie_applicative.c index 652bce5..7290b4a 100644 --- a/messagerie_applicative.c +++ b/messagerie_applicative.c @@ -1,7 +1,9 @@ #include #include "messagerie_applicative.h" -uint8_t memoire_echange[200]; +#define TAILLE_MEMOIRE_ECHANGE 0xFF + +uint8_t memoire_echange[TAILLE_MEMOIRE_ECHANGE]; @@ -44,18 +46,26 @@ void écriture_données(unsigned int adresse, uint8_t donnée){ }else if(adresse <= 0x59){ // // Trajectoire mise_a_jour_trajectoire = true; + }else if(adresse <= 0x61){ // Trajet config mise_a_jour_config_trajet = true; + + /* }else if(adresse <= 0x62){ // Trajet config mise_a_jour_cde_inv_traj = true; + */ }else { // Hors mémoire 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; + }