pour trouver l'automate de reception can

Fork of CRAC-Strat_copy by Clement Breteau

Committer:
antbig
Date:
Sat Apr 23 09:16:14 2016 +0000
Revision:
5:dcd817534b57
Parent:
1:116040d14164
Ajout du choix de la couleur et de l'id de la strat?gie ? utiliser via CAN

Who changed what in which revision?

UserRevisionLine numberNew contents of line
antbig 0:ad97421fb1fb 1 #ifndef CRAC_AX12
antbig 0:ad97421fb1fb 2 #define CRAC_AX12
antbig 0:ad97421fb1fb 3
antbig 0:ad97421fb1fb 4 #include "global.h"
antbig 0:ad97421fb1fb 5
antbig 0:ad97421fb1fb 6 #define MAX_AX12 30
antbig 0:ad97421fb1fb 7
antbig 0:ad97421fb1fb 8
antbig 0:ad97421fb1fb 9 #define AX12_REG_ID 0x03
antbig 0:ad97421fb1fb 10 #define AX12_REG_BAUD 0x04
antbig 0:ad97421fb1fb 11 #define AX12_REG_DELAY_TIME 0x05
antbig 0:ad97421fb1fb 12 #define AX12_REG_CW_LIMIT 0x06
antbig 0:ad97421fb1fb 13 #define AX12_REG_CCW_LIMIT 0x08
antbig 0:ad97421fb1fb 14 #define AX12_REG_TEMP_MAX 0x0B
antbig 0:ad97421fb1fb 15 #define AX12_REG_LOWEST_VOLTAGE 0x0C
antbig 0:ad97421fb1fb 16 #define AX12_REG_HIGHEST_VOLTAGE 0x0D
antbig 0:ad97421fb1fb 17 #define AX12_REG_MAX_TORQUE 0x0E
antbig 0:ad97421fb1fb 18 #define AX12_REG_SATUS_RETURN 0x10
antbig 0:ad97421fb1fb 19 #define AX12_REG_ALARM_LED 0x11
antbig 0:ad97421fb1fb 20 #define AX12_REG_ALARM_SHUTDOWN 0x12
antbig 0:ad97421fb1fb 21 #define AX12_REG_DOWN_CALIBRATION 0x14
antbig 0:ad97421fb1fb 22 #define AX12_REG_UP_CALIBRATION 0x16
antbig 0:ad97421fb1fb 23 #define AX12_REG_TORQUE_ENABLE 0x18
antbig 0:ad97421fb1fb 24 #define AX12_REG_LED 0x19
antbig 0:ad97421fb1fb 25 #define AX12_REG_CW_MARGIN 0x1A
antbig 0:ad97421fb1fb 26 #define AX12_REG_CCW_MARGIN 0x1B
antbig 0:ad97421fb1fb 27 #define AX12_REG_CW_SLOPE 0x1C
antbig 0:ad97421fb1fb 28 #define AX12_REG_CCW_SLOPE 0x1D
antbig 0:ad97421fb1fb 29 #define AX12_REG_GOAL_POSITION 0x1E
antbig 0:ad97421fb1fb 30 #define AX12_REG_MOVING_SPEED 0x20
antbig 0:ad97421fb1fb 31 #define AX12_REG_TORQUE_LIMIT 0x22
antbig 0:ad97421fb1fb 32 #define AX12_REG_POSITION 0x24
antbig 0:ad97421fb1fb 33 #define AX12_REG_PRESENT_SPEED 0x26
antbig 0:ad97421fb1fb 34 #define AX12_REG_PRESENT_LOAD 0x28
antbig 0:ad97421fb1fb 35 #define AX12_REG_VOLTS 0x2A
antbig 0:ad97421fb1fb 36 #define AX12_REG_TEMP 0x2B
antbig 0:ad97421fb1fb 37 #define AX12_REG_INSTRUCTION 0x2C
antbig 0:ad97421fb1fb 38 #define AX12_REG_MOVING 0x2E
antbig 0:ad97421fb1fb 39 #define AX12_REG_LOCK 0x2F
antbig 0:ad97421fb1fb 40 #define AX12_REG_PUNCH 0x30
antbig 0:ad97421fb1fb 41
antbig 0:ad97421fb1fb 42
antbig 0:ad97421fb1fb 43 #define AX12_MODE_POSITION 0
antbig 0:ad97421fb1fb 44 #define AX12_MODE_ROTATION 1
antbig 0:ad97421fb1fb 45
antbig 0:ad97421fb1fb 46 #define AX12_CW 1
antbig 0:ad97421fb1fb 47 #define AX12_CCW 0
antbig 0:ad97421fb1fb 48
antbig 0:ad97421fb1fb 49 //--- Instruction ---
antbig 0:ad97421fb1fb 50 #define INST_PING 0x01
antbig 0:ad97421fb1fb 51 #define INST_READ 0x02
antbig 0:ad97421fb1fb 52 #define INST_WRITE 0x03
antbig 0:ad97421fb1fb 53 #define INST_REG_WRITE 0x04
antbig 0:ad97421fb1fb 54 #define INST_ACTION 0x05
antbig 0:ad97421fb1fb 55 #define INST_RESET 0x06
antbig 0:ad97421fb1fb 56 #define INST_DIGITAL_RESET 0x07
antbig 0:ad97421fb1fb 57 #define INST_SYSTEM_READ 0x0C
antbig 0:ad97421fb1fb 58 #define INST_SYSTEM_WRITE 0x0D
antbig 0:ad97421fb1fb 59 #define INST_SYNC_WRITE 0x83
antbig 0:ad97421fb1fb 60 #define INST_SYNC_REG_WRITE 0x84
antbig 0:ad97421fb1fb 61
antbig 0:ad97421fb1fb 62 #define DEFAULT_RETURN_PACKET_SIZE 6
antbig 0:ad97421fb1fb 63
antbig 0:ad97421fb1fb 64 #define BROADCASTING_ID 0xfe
antbig 0:ad97421fb1fb 65
antbig 0:ad97421fb1fb 66 #define MAX_TIMEOUT 5000
antbig 0:ad97421fb1fb 67
antbig 5:dcd817534b57 68 #define AX12_SERIAL1 0
antbig 5:dcd817534b57 69 #define AX12_SERIAL2 1
antbig 5:dcd817534b57 70
antbig 5:dcd817534b57 71
antbig 0:ad97421fb1fb 72 struct S_AX12 {
antbig 0:ad97421fb1fb 73 unsigned char id;//L'id de l'AX12
antbig 0:ad97421fb1fb 74 unsigned short goal;//La position ou doit aller le robot
antbig 0:ad97421fb1fb 75 unsigned short speed;//La vitesse de déplacement du bras
antbig 0:ad97421fb1fb 76 unsigned char isUsingCAN;//Indique si il faut envoyer les information via CAN (0=>non | autre=>oui)
antbig 0:ad97421fb1fb 77 unsigned char needToUpdate;//Indique qu'il faut mettre à jour la position
antbig 1:116040d14164 78 unsigned char needCheckMoving;//Permet d'indiquer que l'on doit verifier si l'AX12 bouge
antbig 5:dcd817534b57 79 unsigned char serial;
antbig 0:ad97421fb1fb 80 };
antbig 0:ad97421fb1fb 81
antbig 0:ad97421fb1fb 82 /****************************************************************************************/
antbig 0:ad97421fb1fb 83 /* FUNCTION NAME: AX12_register */
antbig 0:ad97421fb1fb 84 /* DESCRIPTION : Indiquer qu'un AX12 est connecté à la carte */
antbig 0:ad97421fb1fb 85 /****************************************************************************************/
antbig 5:dcd817534b57 86 void AX12_register(unsigned char id,unsigned char serial, unsigned short speed = 0x3FF);
antbig 0:ad97421fb1fb 87
antbig 0:ad97421fb1fb 88 /****************************************************************************************/
antbig 0:ad97421fb1fb 89 /* FUNCTION NAME: AX12_setGoal */
antbig 0:ad97421fb1fb 90 /* DESCRIPTION : Definir la position d'un ax12, !!Ne déclanche pas le mouvement */
antbig 0:ad97421fb1fb 91 /****************************************************************************************/
antbig 0:ad97421fb1fb 92 void AX12_setGoal(unsigned char id, unsigned short goal, unsigned short speed = 0x3FF);
antbig 0:ad97421fb1fb 93
antbig 0:ad97421fb1fb 94 /****************************************************************************************/
antbig 0:ad97421fb1fb 95 /* FUNCTION NAME: AX12_isLocal */
antbig 0:ad97421fb1fb 96 /* DESCRIPTION : Savoir si un AX12 est enregistré sur la carte */
antbig 0:ad97421fb1fb 97 /****************************************************************************************/
antbig 0:ad97421fb1fb 98 unsigned char AX12_isLocal(unsigned char id);
antbig 0:ad97421fb1fb 99
antbig 0:ad97421fb1fb 100 /****************************************************************************************/
antbig 1:116040d14164 101 /* FUNCTION NAME: AX12_notifyCANEnd */
antbig 1:116040d14164 102 /* DESCRIPTION : indiquer qu'un mouvement d'AX12 CAN est terminé */
antbig 1:116040d14164 103 /****************************************************************************************/
antbig 1:116040d14164 104 void AX12_notifyCANEnd(unsigned char id);
antbig 1:116040d14164 105
antbig 1:116040d14164 106 /****************************************************************************************/
antbig 0:ad97421fb1fb 107 /* FUNCTION NAME: AX12_getLocalID */
antbig 0:ad97421fb1fb 108 /* DESCRIPTION : Obtenir les info sur un AX12 ou l'initialiser si non présent */
antbig 0:ad97421fb1fb 109 /****************************************************************************************/
antbig 0:ad97421fb1fb 110 int AX12_getLocalID(unsigned char id);
antbig 0:ad97421fb1fb 111
antbig 0:ad97421fb1fb 112 /****************************************************************************************/
antbig 0:ad97421fb1fb 113 /* FUNCTION NAME: AX12_doLoop */
antbig 0:ad97421fb1fb 114 /* DESCRIPTION : Boucle de vérification de la position des AX12 */
antbig 0:ad97421fb1fb 115 /****************************************************************************************/
antbig 0:ad97421fb1fb 116 void AX12_doLoop(void);
antbig 0:ad97421fb1fb 117
antbig 0:ad97421fb1fb 118 /****************************************************************************************/
antbig 0:ad97421fb1fb 119 /* FUNCTION NAME: AX12_processChange */
antbig 0:ad97421fb1fb 120 /* DESCRIPTION : Permet de prendre en compte les changement d'instruction des AX12 */
antbig 0:ad97421fb1fb 121 /* Début du mouvement à partir de l'appel de cette fonction */
antbig 0:ad97421fb1fb 122 /****************************************************************************************/
antbig 5:dcd817534b57 123 void AX12_processChange(unsigned char fromCan = 0);
antbig 0:ad97421fb1fb 124
antbig 0:ad97421fb1fb 125 /****************************************************************************************/
antbig 1:116040d14164 126 /* FUNCTION NAME: AX12_isMoving */
antbig 1:116040d14164 127 /* DESCRIPTION : Fonction pour savoir si un AX12 local est entrain de bouger */
antbig 1:116040d14164 128 /****************************************************************************************/
antbig 1:116040d14164 129 int AX12_isMoving(unsigned char id);
antbig 1:116040d14164 130
antbig 1:116040d14164 131 /****************************************************************************************/
antbig 0:ad97421fb1fb 132 /* FUNCTION NAME: AX12_syncWrite */
antbig 0:ad97421fb1fb 133 /* DESCRIPTION : Fonction pour envoyer des trames aux AX12 en mode syncWrite */
antbig 0:ad97421fb1fb 134 /****************************************************************************************/
antbig 5:dcd817534b57 135 int AX12_syncWrite(SerialHalfDuplex& AX12_Serial,int start, int bytes, char* data);
antbig 0:ad97421fb1fb 136
antbig 0:ad97421fb1fb 137 /****************************************************************************************/
antbig 0:ad97421fb1fb 138 /* FUNCTION NAME: AX12_write */
antbig 0:ad97421fb1fb 139 /* DESCRIPTION : Fonction pour envoyer des trames aux AX12 */
antbig 0:ad97421fb1fb 140 /****************************************************************************************/
antbig 5:dcd817534b57 141 int AX12_write(SerialHalfDuplex& AX12_Serial, int ID, int start, int bytes, char* data, int flag=0);
antbig 0:ad97421fb1fb 142
antbig 1:116040d14164 143 /****************************************************************************************/
antbig 1:116040d14164 144 /* FUNCTION NAME: AX12_read */
antbig 1:116040d14164 145 /* DESCRIPTION : Lire des données dans un registre de l'AX12 */
antbig 1:116040d14164 146 /****************************************************************************************/
antbig 5:dcd817534b57 147 int AX12_read(SerialHalfDuplex& AX12_Serial, int ID, int start, int bytes, char* data);
antbig 1:116040d14164 148
antbig 0:ad97421fb1fb 149 #endif
antbig 0:ad97421fb1fb 150