Ajout fichiers manquants
This commit is contained in:
parent
4458f231ff
commit
1c03a2db56
@ -1,9 +1,7 @@
|
|||||||
project(Mod_Communication C)
|
project(Mod_Communication C)
|
||||||
|
|
||||||
add_library(Mod_Communication
|
add_library(Mod_Communication
|
||||||
Servomoteur.c
|
Communication.c
|
||||||
|
messagerie_applicative.c
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(Mod_Communication
|
|
||||||
pico_stdlib
|
|
||||||
)
|
|
||||||
|
|||||||
18
Readme.md
18
Readme.md
@ -1,7 +1,7 @@
|
|||||||
Submodule Servomoteurs pour le RP2040
|
Submodule Communication pour le RP2040
|
||||||
=====================================
|
=====================================
|
||||||
|
|
||||||
Ceci est un submodule git pour intégrer facilement le support des servomoteurs à un projet.
|
Ceci est un submodule git pour intégrer facilement notre protocole de communication à un projet.
|
||||||
On crée ce Submodule en se servant de la documentation disponible ici : https://git-scm.com/book/en/v2/Git-Tools-Submodules
|
On crée ce Submodule en se servant de la documentation disponible ici : https://git-scm.com/book/en/v2/Git-Tools-Submodules
|
||||||
|
|
||||||
Utilisation
|
Utilisation
|
||||||
@ -12,7 +12,7 @@ Ajout du sub-module
|
|||||||
|
|
||||||
Ajouter ce submodule à votre projet. Dans un terminal, dans le répertoire de votre projet, entrez :
|
Ajouter ce submodule à votre projet. Dans un terminal, dans le répertoire de votre projet, entrez :
|
||||||
|
|
||||||
git submodule add https://git.poivron-robotique.fr/Keuronde/RP2040_Servomoteurs.git
|
git submodule add https://git.poivron-robotique.fr/Keuronde/Mod_Communication.git
|
||||||
|
|
||||||
Ajouter le fichier nouvellement créé .gitmodules à votre projet.
|
Ajouter le fichier nouvellement créé .gitmodules à votre projet.
|
||||||
|
|
||||||
@ -23,18 +23,16 @@ Configuration de la compilation
|
|||||||
|
|
||||||
Dans le fichier CMakeLists.txt, ajouter le dossier du sub module:
|
Dans le fichier CMakeLists.txt, ajouter le dossier du sub module:
|
||||||
|
|
||||||
add_subdirectory(RP2040_Servomoteurs)
|
add_subdirectory(Mod_Communication)
|
||||||
|
|
||||||
Dans le fichier CMakeLists.txt, ajouter la bibliothèque RP2040_Servomoteur :
|
Section en cours
|
||||||
|
================
|
||||||
target_link_libraries(Modele_RPiPico
|
|
||||||
...
|
|
||||||
RP2040_Servomoteur
|
|
||||||
)
|
|
||||||
|
|
||||||
Intégration au code source
|
Intégration au code source
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Ajout du fichier d'include :
|
Ajout du fichier d'include :
|
||||||
|
|
||||||
#include "RP2040_Servomoteurs/Servomoteur.h"
|
#include "RP2040_Servomoteurs/Servomoteur.h"
|
||||||
|
|||||||
26
messagerie.c
Normal file
26
messagerie.c
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include "messagerie.h"
|
||||||
|
|
||||||
|
#define NB_MAX_MESSAGE 30
|
||||||
|
|
||||||
|
int index_message=0;
|
||||||
|
struct message_t message_liste[NB_MAX_MESSAGE];
|
||||||
|
|
||||||
|
/// @brief Renvoi 1 si des message sont disponibles
|
||||||
|
/// @return
|
||||||
|
bool messagerie_message_disponible(){
|
||||||
|
return (index_message != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @brief Renvoi un message à traiter, à n'appeler que si message_disponible() renvoie 1
|
||||||
|
/// @return Message
|
||||||
|
struct message_t messagerie_get_message(){
|
||||||
|
index_message = index_message - 1;
|
||||||
|
return message_liste[index_message];
|
||||||
|
}
|
||||||
|
|
||||||
|
void messagerie_put_message(struct message_t message){
|
||||||
|
if(index_message < NB_MAX_MESSAGE-1){
|
||||||
|
message_liste[index_message] = message;
|
||||||
|
index_message = index_message + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
36
messagerie.h
Normal file
36
messagerie.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include "messages_propulsion.h"
|
||||||
|
|
||||||
|
#define MESSAGE_TIMEOUT_US 2000
|
||||||
|
|
||||||
|
struct message_t{
|
||||||
|
uint8_t type; // 'b' pour binaire, '>' pour des logs
|
||||||
|
uint8_t taille_donnees;
|
||||||
|
uint8_t donnees[255];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct message_requete_t{
|
||||||
|
uint8_t commande;
|
||||||
|
uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C)
|
||||||
|
uint8_t adresse_registre; // Adresse du registre lu
|
||||||
|
uint8_t taille_donnees;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct message_applicatif_t{
|
||||||
|
uint8_t commande; // 'r' : réception de données, 'd' : demande de données
|
||||||
|
uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C)
|
||||||
|
uint8_t adresse_registre; // Adresse du registre lu ou écrit
|
||||||
|
uint8_t taille_donnees;
|
||||||
|
union{
|
||||||
|
uint8_t donnees[0xFF];
|
||||||
|
#ifdef MESSAGE_PROPULSION_H
|
||||||
|
struct msg_propulsion_position_t msg_propulsion_position;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}donnees_applicative;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool messagerie_message_disponible();
|
||||||
|
struct message_t messagerie_get_message();
|
||||||
|
void messagerie_put_message(struct message_t message);
|
||||||
@ -1,7 +1,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "messagerie_applicative.h"
|
#include "messagerie_applicative.h"
|
||||||
|
|
||||||
uint8_t memoire_echange[0xFF];
|
#define TAILLE_MEMOIRE_ECHANGE 0xFF
|
||||||
|
|
||||||
|
uint8_t memoire_echange[TAILLE_MEMOIRE_ECHANGE];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -14,11 +16,11 @@ 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;
|
bool mise_a_jour_cde_inv_traj = false;
|
||||||
|
|
||||||
void get_données_reçues(uint8_t * dst, unsigned int taille, uint8_t 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mise_données_dans_échange(uint8_t * source, unsigned int taille, uint8_t registre){
|
void mise_données_dans_échange(uint8_t * source, unsigned int taille, unsigned int registre){
|
||||||
memcpy(&(memoire_echange[registre]), source, taille);
|
memcpy(&(memoire_echange[registre]), source, taille);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,18 +46,26 @@ 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){
|
}else if(adresse <= 0x62){
|
||||||
// Trajet config
|
// Trajet config
|
||||||
mise_a_jour_cde_inv_traj = true;
|
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;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
void écriture_données(unsigned int adresse, uint8_t donnée);
|
void écriture_données(unsigned int adresse, uint8_t donnée);
|
||||||
void get_données_reçues(uint8_t * dst, unsigned int taille, uint8_t registre);
|
void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre);
|
||||||
void mise_données_dans_échange(uint8_t * source, unsigned int taille, uint8_t registre);
|
void mise_données_dans_échange(uint8_t * source, unsigned int taille, unsigned int registre);
|
||||||
|
|
||||||
extern uint8_t memoire_echange[];
|
extern uint8_t memoire_echange[];
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user