Modifications

548 octets ajoutés ,  23 mars 2021 à 13:12
Ligne 324 : Ligne 324 :  
<br>
 
<br>
 
'''Affichage des valeurs souhaitées'''<br>
 
'''Affichage des valeurs souhaitées'''<br>
Dans notre code
+
Pour transmettre les différentes valeurs souhaitées, nous avons ajouté dans le code de la STM les fonctions mentionnées plus haut.  
Pour transmettre les différentes valeurs, nous avons donc utilisé les fonctions mentionnées plus haut.  
+
On envoie ensuite les données dans un ordre précis : on commence par envoyer le flag qui va nous permettre de marquer le début de chaque nouveau while, nous avons choisi de lui donner la valeur -9999 car cette valeur ne peut être atteinte par aucune autre données que nous affichons. Il n'y a donc pas de problème possible de ce côté là. Ce flag nous sera utile pour la suite car cela signalera à l'application qui réceptionne les données quand nous serons au début de la boucle while du code. Cela permet donc de synchroniser l'envoi des données.
On commence par envoyer le flag, nous avons choisi de lui donner la valeur -100. Ce flag nous sera utile pour la suite car cela signalera à l'application qui réceptionne les données quand nous serons au début de la boucle while du code. Cela permet donc de synchroniser l'envoi des données.
   
On convertit ensuite chacune des valeurs a envoyer en texte afin de pouvoir les envoyer sous forme de texte à l'aide de la fonction sprintf.
 
On convertit ensuite chacune des valeurs a envoyer en texte afin de pouvoir les envoyer sous forme de texte à l'aide de la fonction sprintf.
*On synchronise donc les données de manières temporelles, afin que l'application reçoive les données régulièrement et est le temps de les traiter et de les afficher, d'où la présence de "osDelay" dans le code de la stm32. Il faut aussi accordé l'horloge de l'application afin qu'elle soit en phase avec le code de la STM32
+
*On synchronise donc les données de manières temporelles, afin que l'application reçoive les données régulièrement et ait le temps de les traiter et de les afficher, d'où la présence de "osDelay" dans le code de la STM32. Il faut aussi accorder l'horloge de l'application afin qu'elle soit en phase avec le code de la STM32. Par exemple, si on choisit d'écrire dans le code de la STM "osDelay(200)" entre chaque Transmit alors on devra régler la Clock de l'application sur 200. Si on ne fait pas ça l'affichage ne sera pas synchronisé.
*Afin de synchroniser l'arriver des données, on envoie un flag qui équivaut à une valeur fixe, reconnaissable facilement et difficilement atteignable par les autres valeurs des autres buffers (par exemple : -9999). Celui-ci permet donc de signaler à l'application, qu'un cycle d'envoie des données commence.
+
 
*Les encodeurs sont gérer par un contrôleur MCP233 sur le robot, qui est connecté à l'UART1 de la stm32. On doit donc récupérer les valeurs des encodeurs à travers l'UART1 et le MCP233. On utilise des fonctions déjà crées par les équipes de Polybot, à savoir : <br>
+
*Concernant la valeur de la tension de la batterie, il faut récupérer cette valeur sur le bus CAN1 car elle est gérée par une autre STM32 qui communique avec la STM principale par bus CAN. La communication n'étant pas encore en place, nous ne pouvons pas encore récupérer la valeur de tension. De ce fait, nous retournons une valeur fixe de 17V. Lorsque la communication avec le bus CAN sera réalisée, il sera possible de modifier la fonction pour que l'on renvoie la valeur réelle de la tension.
  uint8_t MCP233_readEncoderCountM1(MCP233_t *mcp, int32_t *count)  
+
 
  uint8_t MCP233_readEncoderCountM2(MCP233_t *mcp, int32_t *count)  
+
*Pour calculer la vitesse du robot, sa position et la distance parcourue, on a besoin de récupérer les valeurs renvoyées par les encodeurs. Les encodeurs nous indique précisément le nombre de tours qu'a réalisé chaque roue du robot. Ils sont gérés par un contrôleur MCP233 sur le robot, qui est connecté à l'UART1 de la STM. On doit donc récupérer les valeurs des encodeurs à travers l'UART1 et le MCP233. On utilise des fonctions déjà crées par les équipes de Polybot, à savoir :  
Elles permettent de récupérer les valeurs d'incrémentation des encodeurs et les stockent à des adresses (int32_t *count). L'argument (MCP233_t *mcp) permet quant à lui de lire dans le contrôleur MCP233. <br>
+
  *uint8_t '''MCP233_readEncoderCountM1'''(MCP233_t *mcp, int32_t *count)  
En ce qui concerne la valeur de la tension de la batterie, il faut récupérer cette valeur sur le bus CAN1 car cette valeur est gérée par une autre STM32 qui communique avec notre STM32 par bus CAN. La communication n'étant pas encore en place, nous ne pouvons pas encore récupérer la valeur de tension. Mais nous avons mis tout en place pour implémenter cette fonctionnalité. <br>
+
  *uint8_t '''MCP233_readEncoderCountM2'''(MCP233_t *mcp, int32_t *count)  
 +
Ces fonctions permettent de récupérer les valeurs d'incrémentation des encodeurs et les stockent à des adresses (int32_t *count). L'argument (MCP233_t *mcp) permet quant à lui de lire dans le contrôleur MCP233. <br>
 +
 
 
*Afin d'obtenir les différentes données à envoyer, à savoir la vitesse, la distance parcourue, ainsi que la position (x,y) du robot, nous devons mettre en place des calculs spécifiques. On notera que l'on ne peut pas reset les encodeurs car ceux ci servent aussi à asservir les moteurs du robot en position. On va donc d'abord mettre en place quelques lignes permettant de faire nos calculs comme si nous avions un reset des encodeurs : <br>
 
*Afin d'obtenir les différentes données à envoyer, à savoir la vitesse, la distance parcourue, ainsi que la position (x,y) du robot, nous devons mettre en place des calculs spécifiques. On notera que l'on ne peut pas reset les encodeurs car ceux ci servent aussi à asservir les moteurs du robot en position. On va donc d'abord mettre en place quelques lignes permettant de faire nos calculs comme si nous avions un reset des encodeurs : <br>
 
(lignes de code RESET) <br>
 
(lignes de code RESET) <br>
243

modifications