pour trouver l'automate de reception can
Fork of CRAC-Strat_copy by
AX12-V2/AX12-V2.h@1:116040d14164, 2016-04-15 (annotated)
- Committer:
- antbig
- Date:
- Fri Apr 15 10:49:40 2016 +0000
- Revision:
- 1:116040d14164
- Parent:
- 0:ad97421fb1fb
- Child:
- 5:dcd817534b57
Premier test fonctionnel avec le petit robot,
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:ad97421fb1fb | 68 | struct S_AX12 { |
antbig | 0:ad97421fb1fb | 69 | unsigned char id;//L'id de l'AX12 |
antbig | 0:ad97421fb1fb | 70 | unsigned short goal;//La position ou doit aller le robot |
antbig | 0:ad97421fb1fb | 71 | unsigned short speed;//La vitesse de déplacement du bras |
antbig | 0:ad97421fb1fb | 72 | unsigned char isUsingCAN;//Indique si il faut envoyer les information via CAN (0=>non | autre=>oui) |
antbig | 0:ad97421fb1fb | 73 | unsigned char needToUpdate;//Indique qu'il faut mettre à jour la position |
antbig | 1:116040d14164 | 74 | unsigned char needCheckMoving;//Permet d'indiquer que l'on doit verifier si l'AX12 bouge |
antbig | 0:ad97421fb1fb | 75 | }; |
antbig | 0:ad97421fb1fb | 76 | |
antbig | 0:ad97421fb1fb | 77 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 78 | /* FUNCTION NAME: AX12_register */ |
antbig | 0:ad97421fb1fb | 79 | /* DESCRIPTION : Indiquer qu'un AX12 est connecté à la carte */ |
antbig | 0:ad97421fb1fb | 80 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 81 | void AX12_register(unsigned char id, unsigned short speed = 0x3FF); |
antbig | 0:ad97421fb1fb | 82 | |
antbig | 0:ad97421fb1fb | 83 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 84 | /* FUNCTION NAME: AX12_setGoal */ |
antbig | 0:ad97421fb1fb | 85 | /* DESCRIPTION : Definir la position d'un ax12, !!Ne déclanche pas le mouvement */ |
antbig | 0:ad97421fb1fb | 86 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 87 | void AX12_setGoal(unsigned char id, unsigned short goal, unsigned short speed = 0x3FF); |
antbig | 0:ad97421fb1fb | 88 | |
antbig | 0:ad97421fb1fb | 89 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 90 | /* FUNCTION NAME: AX12_isLocal */ |
antbig | 0:ad97421fb1fb | 91 | /* DESCRIPTION : Savoir si un AX12 est enregistré sur la carte */ |
antbig | 0:ad97421fb1fb | 92 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 93 | unsigned char AX12_isLocal(unsigned char id); |
antbig | 0:ad97421fb1fb | 94 | |
antbig | 0:ad97421fb1fb | 95 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 96 | /* FUNCTION NAME: AX12_notifyCANEnd */ |
antbig | 1:116040d14164 | 97 | /* DESCRIPTION : indiquer qu'un mouvement d'AX12 CAN est terminé */ |
antbig | 1:116040d14164 | 98 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 99 | void AX12_notifyCANEnd(unsigned char id); |
antbig | 1:116040d14164 | 100 | |
antbig | 1:116040d14164 | 101 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 102 | /* FUNCTION NAME: AX12_getLocalID */ |
antbig | 0:ad97421fb1fb | 103 | /* DESCRIPTION : Obtenir les info sur un AX12 ou l'initialiser si non présent */ |
antbig | 0:ad97421fb1fb | 104 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 105 | int AX12_getLocalID(unsigned char id); |
antbig | 0:ad97421fb1fb | 106 | |
antbig | 0:ad97421fb1fb | 107 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 108 | /* FUNCTION NAME: AX12_doLoop */ |
antbig | 0:ad97421fb1fb | 109 | /* DESCRIPTION : Boucle de vérification de la position des AX12 */ |
antbig | 0:ad97421fb1fb | 110 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 111 | void AX12_doLoop(void); |
antbig | 0:ad97421fb1fb | 112 | |
antbig | 0:ad97421fb1fb | 113 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 114 | /* FUNCTION NAME: AX12_processChange */ |
antbig | 0:ad97421fb1fb | 115 | /* DESCRIPTION : Permet de prendre en compte les changement d'instruction des AX12 */ |
antbig | 0:ad97421fb1fb | 116 | /* Début du mouvement à partir de l'appel de cette fonction */ |
antbig | 0:ad97421fb1fb | 117 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 118 | void AX12_processChange(void); |
antbig | 0:ad97421fb1fb | 119 | |
antbig | 0:ad97421fb1fb | 120 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 121 | /* FUNCTION NAME: AX12_isMoving */ |
antbig | 1:116040d14164 | 122 | /* DESCRIPTION : Fonction pour savoir si un AX12 local est entrain de bouger */ |
antbig | 1:116040d14164 | 123 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 124 | int AX12_isMoving(unsigned char id); |
antbig | 1:116040d14164 | 125 | |
antbig | 1:116040d14164 | 126 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 127 | /* FUNCTION NAME: AX12_syncWrite */ |
antbig | 0:ad97421fb1fb | 128 | /* DESCRIPTION : Fonction pour envoyer des trames aux AX12 en mode syncWrite */ |
antbig | 0:ad97421fb1fb | 129 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 130 | int AX12_syncWrite(int start, int bytes, char* data); |
antbig | 0:ad97421fb1fb | 131 | |
antbig | 0:ad97421fb1fb | 132 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 133 | /* FUNCTION NAME: AX12_write */ |
antbig | 0:ad97421fb1fb | 134 | /* DESCRIPTION : Fonction pour envoyer des trames aux AX12 */ |
antbig | 0:ad97421fb1fb | 135 | /****************************************************************************************/ |
antbig | 0:ad97421fb1fb | 136 | int AX12_write(int ID, int start, int bytes, char* data, int flag=0); |
antbig | 0:ad97421fb1fb | 137 | |
antbig | 1:116040d14164 | 138 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 139 | /* FUNCTION NAME: AX12_read */ |
antbig | 1:116040d14164 | 140 | /* DESCRIPTION : Lire des données dans un registre de l'AX12 */ |
antbig | 1:116040d14164 | 141 | /****************************************************************************************/ |
antbig | 1:116040d14164 | 142 | int AX12_read(int ID, int start, int bytes, char* data); |
antbig | 1:116040d14164 | 143 | |
antbig | 0:ad97421fb1fb | 144 | #endif |
antbig | 0:ad97421fb1fb | 145 |