CRAC Team / Mbed 2 deprecated carte_esclave_bras_debugeur

Dependencies:   mbed Herkulex_Library_2019

Committer:
maximilienlv
Date:
Tue Jun 02 06:44:31 2020 +0000
Revision:
0:0cb11adecfc6
programme de la carte esclave des bras, debugeur

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maximilienlv 0:0cb11adecfc6 1 #include "main.h"
maximilienlv 0:0cb11adecfc6 2
maximilienlv 0:0cb11adecfc6 3 #define SIZE_FIFO 50
maximilienlv 0:0cb11adecfc6 4
maximilienlv 0:0cb11adecfc6 5 CAN can(PB_8,PB_9,1000000); // Rx&Tx pour le CAN
maximilienlv 0:0cb11adecfc6 6
maximilienlv 0:0cb11adecfc6 7 Serial pc(USBTX,USBRX);
maximilienlv 0:0cb11adecfc6 8
maximilienlv 0:0cb11adecfc6 9 CANMessage msgRxBuffer[SIZE_FIFO];
maximilienlv 0:0cb11adecfc6 10 unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN
maximilienlv 0:0cb11adecfc6 11 signed char FIFO_lecture=0;//Position du fifo de lecture des messages CAN
maximilienlv 0:0cb11adecfc6 12 unsigned short ackFinAction = 0;
maximilienlv 0:0cb11adecfc6 13
maximilienlv 0:0cb11adecfc6 14 void canProcessRx(void);
maximilienlv 0:0cb11adecfc6 15
maximilienlv 0:0cb11adecfc6 16
maximilienlv 0:0cb11adecfc6 17 /*********************************************************************************************/
maximilienlv 0:0cb11adecfc6 18 /* FUNCTION NAME: canRx_ISR */
maximilienlv 0:0cb11adecfc6 19 /* DESCRIPTION : lit les messages sur le can et les stocke dans la FIFO */
maximilienlv 0:0cb11adecfc6 20 /*********************************************************************************************/
maximilienlv 0:0cb11adecfc6 21 void canRx_ISR (void)
maximilienlv 0:0cb11adecfc6 22 {
maximilienlv 0:0cb11adecfc6 23 if (can.read(msgRxBuffer[FIFO_ecriture]))
maximilienlv 0:0cb11adecfc6 24 {
maximilienlv 0:0cb11adecfc6 25 FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO;
maximilienlv 0:0cb11adecfc6 26 }
maximilienlv 0:0cb11adecfc6 27 }
maximilienlv 0:0cb11adecfc6 28
maximilienlv 0:0cb11adecfc6 29 int main()
maximilienlv 0:0cb11adecfc6 30 {
maximilienlv 0:0cb11adecfc6 31 can.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN
maximilienlv 0:0cb11adecfc6 32 servo_interrupt_en(); //permettre les interuptions
maximilienlv 0:0cb11adecfc6 33 wait_ms(200);
maximilienlv 0:0cb11adecfc6 34 deverouillage_torque();
maximilienlv 0:0cb11adecfc6 35 pc.printf("\nLAUNCHED\n\r");
maximilienlv 0:0cb11adecfc6 36 while(1)
maximilienlv 0:0cb11adecfc6 37 {
maximilienlv 0:0cb11adecfc6 38 canProcessRx();
maximilienlv 0:0cb11adecfc6 39 f_mesure();
maximilienlv 0:0cb11adecfc6 40 }
maximilienlv 0:0cb11adecfc6 41 }
maximilienlv 0:0cb11adecfc6 42
maximilienlv 0:0cb11adecfc6 43 /****************************************************************************************/
maximilienlv 0:0cb11adecfc6 44 /* FUNCTION NAME: canProcessRx */
maximilienlv 0:0cb11adecfc6 45 /* DESCRIPTION : Fonction de traitement des messages CAN */
maximilienlv 0:0cb11adecfc6 46 /****************************************************************************************/
maximilienlv 0:0cb11adecfc6 47 void canProcessRx(void)
maximilienlv 0:0cb11adecfc6 48 {
maximilienlv 0:0cb11adecfc6 49 static signed char FIFO_occupation=0,FIFO_max_occupation=0;
maximilienlv 0:0cb11adecfc6 50 CANMessage msgTx=CANMessage();
maximilienlv 0:0cb11adecfc6 51
maximilienlv 0:0cb11adecfc6 52 FIFO_occupation=FIFO_ecriture-FIFO_lecture;
maximilienlv 0:0cb11adecfc6 53 if(FIFO_occupation<0)
maximilienlv 0:0cb11adecfc6 54 FIFO_occupation=FIFO_occupation+SIZE_FIFO;
maximilienlv 0:0cb11adecfc6 55
maximilienlv 0:0cb11adecfc6 56 if(FIFO_max_occupation<FIFO_occupation)
maximilienlv 0:0cb11adecfc6 57 FIFO_max_occupation=FIFO_occupation;
maximilienlv 0:0cb11adecfc6 58
maximilienlv 0:0cb11adecfc6 59 if(FIFO_occupation!=0) {
maximilienlv 0:0cb11adecfc6 60 int identifiant=msgRxBuffer[FIFO_lecture].id;
maximilienlv 0:0cb11adecfc6 61
maximilienlv 0:0cb11adecfc6 62 switch(identifiant)
maximilienlv 0:0cb11adecfc6 63 {
maximilienlv 0:0cb11adecfc6 64 case TEST_BRAS_1:
maximilienlv 0:0cb11adecfc6 65 test_BRAS_1();
maximilienlv 0:0cb11adecfc6 66 break;
maximilienlv 0:0cb11adecfc6 67
maximilienlv 0:0cb11adecfc6 68 case TEST_BRAS_2:
maximilienlv 0:0cb11adecfc6 69 test_BRAS_2();
maximilienlv 0:0cb11adecfc6 70 break;
maximilienlv 0:0cb11adecfc6 71
maximilienlv 0:0cb11adecfc6 72 case TEST_BRAS_3:
maximilienlv 0:0cb11adecfc6 73 test_BRAS_3();
maximilienlv 0:0cb11adecfc6 74 break;
maximilienlv 0:0cb11adecfc6 75
maximilienlv 0:0cb11adecfc6 76 case TEST_BRAS_4:
maximilienlv 0:0cb11adecfc6 77 test_BRAS_4();
maximilienlv 0:0cb11adecfc6 78 break;
maximilienlv 0:0cb11adecfc6 79
maximilienlv 0:0cb11adecfc6 80 case TEST_BRAS_5:
maximilienlv 0:0cb11adecfc6 81 test_BRAS_5();
maximilienlv 0:0cb11adecfc6 82 break;
maximilienlv 0:0cb11adecfc6 83
maximilienlv 0:0cb11adecfc6 84 case TEST_TELEMETRE_1:
maximilienlv 0:0cb11adecfc6 85 short distance1=lecture_telemetre(1);
maximilienlv 0:0cb11adecfc6 86 unsigned char distance_telemetre_1 = distance1;
maximilienlv 0:0cb11adecfc6 87 SendMsgCan(TELEMETRE_1_REP, &distance_telemetre_1,1);
maximilienlv 0:0cb11adecfc6 88 break;
maximilienlv 0:0cb11adecfc6 89 case TEST_TELEMETRE_2:
maximilienlv 0:0cb11adecfc6 90 short distance2=lecture_telemetre(2);
maximilienlv 0:0cb11adecfc6 91 unsigned char distance_telemetre_2 = distance2;
maximilienlv 0:0cb11adecfc6 92 SendMsgCan(TELEMETRE_2_REP, &distance_telemetre_2,1);
maximilienlv 0:0cb11adecfc6 93 break;
maximilienlv 0:0cb11adecfc6 94 case TEST_TELEMETRE_3:
maximilienlv 0:0cb11adecfc6 95 short distance3=lecture_telemetre(3);
maximilienlv 0:0cb11adecfc6 96 unsigned char distance_telemetre_3 = distance3;
maximilienlv 0:0cb11adecfc6 97 SendMsgCan(TELEMETRE_3_REP, &distance_telemetre_3,1);
maximilienlv 0:0cb11adecfc6 98 break;
maximilienlv 0:0cb11adecfc6 99 case TEST_TELEMETRE_4:
maximilienlv 0:0cb11adecfc6 100 short distance4=lecture_telemetre(4);
maximilienlv 0:0cb11adecfc6 101 unsigned char distance_telemetre_4 = distance4;
maximilienlv 0:0cb11adecfc6 102 SendMsgCan(TELEMETRE_4_REP, &distance_telemetre_4,1);
maximilienlv 0:0cb11adecfc6 103 break;
maximilienlv 0:0cb11adecfc6 104
maximilienlv 0:0cb11adecfc6 105 default:
maximilienlv 0:0cb11adecfc6 106 break;
maximilienlv 0:0cb11adecfc6 107 }
maximilienlv 0:0cb11adecfc6 108 FIFO_lecture=(FIFO_lecture+1)%SIZE_FIFO;
maximilienlv 0:0cb11adecfc6 109 }
maximilienlv 0:0cb11adecfc6 110 }