FRC_equipe1 / Mbed 2 deprecated FRC_2019

Dependencies:   mbed

CAN_asser.h

Committer:
Wael_H
Date:
2019-05-20
Revision:
7:753e901d441b
Parent:
5:34048faec367
Child:
8:94ecfe411d02

File content as of revision 7:753e901d441b:

#ifndef CAN_ASSER_H
#define CAN_ASSER_H

#include "mbed.h"
 
#define TE_100US 100
#define TE (TE_100US*0.0001) 
 
#define ASSERVISSEMENT_STOP 0x001  // Stop moteur
#define ASSERVISSEMENT_SPEED_DANGER 0x006  // Vitesse de danger
#define ASSERVISSEMENT_XYT 0x020  // Asservissement (x,y,theta)  (0 : au choix 1 : avant -1 : arrière)
#define ASSERVISSEMENT_COURBURE 0x021  // Asservissement rayon de courbure  (+ gauche, - droite , sens : 1avt , -1arr; enchainement => 1 oui, 0 => non, 2=>derniére instruction de l'enchainement)
#define ASSERVISSEMENT_CONFIG 0x022  // Asservissement paramètre  (définir les valeurs de vitesse max et d'eccélération max)
#define ASSERVISSEMENT_ROTATION 0x023  // Asservissement rotation
#define ASSERVISSEMENT_RECALAGE 0x024  // Moteur tout droit  (recalage : 0 mouvement seul, 1 x, 2y valeur : coordonnée à laquelle est recalé x/y; enchainement => 1 oui, 0 => non)
#define ASSERVISSEMENT_CONFIG_DECEL 0x019 

#define ASSERVISSEMENT_ENABLE 0x1F7  // Activation asservissement  (0 : désactivation, 1 : activation)

#define ASSERVISSEMENT_CONFIG_KPP_DROITE 0x1F1
#define ASSERVISSEMENT_CONFIG_KPI_DROITE 0x1F2
#define ASSERVISSEMENT_CONFIG_KPD_DROITE 0x1F3
#define ASSERVISSEMENT_CONFIG_KPP_GAUCHE 0x1F4
#define ASSERVISSEMENT_CONFIG_KPI_GAUCHE 0x1F5
#define ASSERVISSEMENT_CONFIG_KPD_GAUCHE 0x1F6

#define ODOMETRIE_POSITION 0x26

void can_init(void);
void isr_can();
void trait_can();
void get_pos(CANMessage msg_pos, short* position);

void SendCoefK (unsigned short id, double K);

/*********************************************************************************************************/

/* FUNCTION NAME: SendRawId */
/* DESCRIPTION : Envoie un message sans donnée, c'est-à-dire contenant uniquement un ID, sur le bus CAN */
/*********************************************************************************************************/
void SendRawId (unsigned short id);

/*********************************************************************************************/

/* FUNCTION NAME: SendAck */

/* DESCRIPTION : Envoyer un acknowledge */
/*********************************************************************************************/
void SendAck(unsigned short id, unsigned short from);

/*********************************************************************************************/

/* FUNCTION NAME: GoToPosition */
/* DESCRIPTION : Transmission CAN correspondant à un asservissement en position (x,y,theta) */
/*********************************************************************************************/

void GoToPosition (unsigned short x,unsigned short y,signed short theta,signed char sens);

/****************************************************************************************/

/* FUNCTION NAME: Rotate */

/* DESCRIPTION : Transmission CAN correspondant à une rotation */
/****************************************************************************************/

void Rotate (signed short angle);

/********************************************************************************************
 FUNCTION NAME: GoStraight 
 DESCRIPTION : Transmission CAN correspondant à une ligne droite, avec ou sans recalage 

 recalage : 0 => pas de recalage 

 1 => recalage en X 

 2 => Recalage en Y 

 newValue : Uniquement en cas de recalage, indique la nouvelle valeur de l'odo 

 isEnchainement : Indique si il faut executer l'instruction en enchainement 

 0 => non 

 1 => oui 
 
2 => dernière instruction de l'enchainement 
 ********************************************************************************************/
void GoStraight (signed short distance,unsigned char recalage, unsigned short newValue, unsigned char isEnchainement);

/********************************************************************************************/

/* FUNCTION NAME: BendRadius */

/* DESCRIPTION : Transmission CAN correspondant à un rayon de courbure */
/********************************************************************************************/
void BendRadius (unsigned short rayon,signed short angle,signed char sens, unsigned char enchainement);

void SetOdometrie (unsigned short canId, unsigned short x,unsigned short y,signed short theta);

/****************************************************************************************/

/* FUNCTION NAME: setAsservissementEtat */

/* DESCRIPTION : Activer ou désactiver l'asservissement */
/****************************************************************************************/
void setAsservissementEtat(unsigned char enable);

/****************************************************************************************/

/* FUNCTION NAME: SendSpeed */

/* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */
/****************************************************************************************/
void SendSpeed (unsigned short vitesse, unsigned short acceleration);
/****************************************************************************************/

/* FUNCTION NAME: SendSpeedDecel */

/* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */
/****************************************************************************************/
void SendSpeedDecel (unsigned short vitesse, unsigned short deceleration);


#endif