CRAC Team / Mbed 2 deprecated PHARE2021

Dependencies:   mbed bloc_8_pompe2 Herkulex_library_2022 ident_crac1 bloc_pompe2

Committer:
ares1999
Date:
Tue Apr 26 14:08:43 2022 +0000
Revision:
3:77e937c315f1
Parent:
2:c7f2e7d8b305
mesure position servo 4 5 6 sur serial 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ares1999 2:c7f2e7d8b305 1 #include "main.h"
ares1999 2:c7f2e7d8b305 2
ares1999 2:c7f2e7d8b305 3 //initialisations relatives au Bus CAN
ares1999 2:c7f2e7d8b305 4 CAN bus_can(PB_8,PB_9,1000000);
ares1999 3:77e937c315f1 5 Serial pc(USBTX,USBRX,115200);
ares1999 2:c7f2e7d8b305 6 CANMessage rx_message ;
ares1999 2:c7f2e7d8b305 7 char data[1] = {0x28};
ares1999 2:c7f2e7d8b305 8 CANMessage tx_message(0x220,data,1,CANData,CANStandard);
ares1999 2:c7f2e7d8b305 9
ares1999 2:c7f2e7d8b305 10 int flag_reception_CAN = 0 ;
ares1999 2:c7f2e7d8b305 11 void interruption_reception(void) ;
ares1999 2:c7f2e7d8b305 12 void gestion_Message_CAN(void) ;
ares1999 2:c7f2e7d8b305 13 void Envoi_msg_CAN(char donnee);
ares1999 2:c7f2e7d8b305 14
ares1999 2:c7f2e7d8b305 15 CANMessage msgRxBuffer[SIZE_FIFO];
ares1999 2:c7f2e7d8b305 16 unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN
ares1999 2:c7f2e7d8b305 17 signed char FIFO_lecture=0;//Position du fifo de lecture des messages CAN
ares1999 2:c7f2e7d8b305 18 unsigned short ackFinAction = 0;
ares1999 2:c7f2e7d8b305 19
ares1999 3:77e937c315f1 20 bloc_8_pompe::bloc_8_pompe classe_pompe (PC_9, PA_8, PB_0, //bloc 1
ares1999 3:77e937c315f1 21 PA_9, PA_10, PB_1, //bloc 2
ares1999 3:77e937c315f1 22 PA_11, PA_15, PC_1, //bloc 3
ares1999 3:77e937c315f1 23 PB_7, PB_6, PC_0, //bloc 4
ares1999 3:77e937c315f1 24 PC_7, PC_8, PC_5, //bloc 5
ares1999 3:77e937c315f1 25 PB_10, PB_2, PC_4, //bloc 6
ares1999 3:77e937c315f1 26 PA_6, PA_5, PA_7, //bloc 7
ares1999 3:77e937c315f1 27 PA_0, PA_1, PA_4); //bloc 8
ares1999 3:77e937c315f1 28
ares1999 2:c7f2e7d8b305 29 int main (void)
ares1999 2:c7f2e7d8b305 30 {
ares1999 2:c7f2e7d8b305 31 wait_ms(200); //tempo pour boot
ares1999 2:c7f2e7d8b305 32 bus_can.attach(&interruption_reception); //création de l'interrupt attachée à la réception sur le CAN
ares1999 2:c7f2e7d8b305 33 //servo_interrupt_en(); //permettre les interuptions
ares1999 2:c7f2e7d8b305 34 //activer_torque();
ares1999 3:77e937c315f1 35 //wait_ms(200);
ares1999 3:77e937c315f1 36 //desactiver_torque();
ares1999 3:77e937c315f1 37 pc.printf("\nLAUNCHED\n\r");
ares1999 2:c7f2e7d8b305 38
ares1999 2:c7f2e7d8b305 39 while(1)
ares1999 2:c7f2e7d8b305 40 {
ares1999 3:77e937c315f1 41 //Envoi_msg_CAN(1);
ares1999 3:77e937c315f1 42 wait_ms(100);
ares1999 3:77e937c315f1 43 servo_interrupt_en();
ares1999 3:77e937c315f1 44 Interrupt2_en();
ares1999 3:77e937c315f1 45 pc.printf("Bar_base: %03d Bar_milieu: %03d Bar_haut: %03d \r",getPos(BAR_BASE,2),getPos(BAR_MILIEU,2),getPos(BAR_HAUT,2));
ares1999 3:77e937c315f1 46 //Interrupt2_en();
ares1999 3:77e937c315f1 47 /*Interrupt2_en();
ares1999 3:77e937c315f1 48 printf("Har_base: %d \n",getPos(HAV_BASE,2));
ares1999 3:77e937c315f1 49 Interrupt2_en();
ares1999 3:77e937c315f1 50 printf("Har_milieu: %d \n",getPos(HAV_MILIEU,2));
ares1999 3:77e937c315f1 51 Interrupt2_en();
ares1999 3:77e937c315f1 52 printf("Har_haut: %d \n",getPos(HAV_HAUT,2));*/
ares1999 2:c7f2e7d8b305 53 if(flag_reception_CAN)
ares1999 2:c7f2e7d8b305 54 {
ares1999 2:c7f2e7d8b305 55 gestion_Message_CAN();
ares1999 2:c7f2e7d8b305 56 }
ares1999 2:c7f2e7d8b305 57 }
ares1999 2:c7f2e7d8b305 58 }
ares1999 2:c7f2e7d8b305 59
ares1999 2:c7f2e7d8b305 60 void interruption_reception(void)
ares1999 2:c7f2e7d8b305 61 {
ares1999 2:c7f2e7d8b305 62 bus_can.write(tx_message);
ares1999 2:c7f2e7d8b305 63 bus_can.read(rx_message);
ares1999 2:c7f2e7d8b305 64 flag_reception_CAN = 1 ;
ares1999 2:c7f2e7d8b305 65 }
ares1999 2:c7f2e7d8b305 66
ares1999 2:c7f2e7d8b305 67 void gestion_Message_CAN(void)
ares1999 2:c7f2e7d8b305 68 {
ares1999 2:c7f2e7d8b305 69 int identifiant = rx_message.id ;
ares1999 3:77e937c315f1 70 char num_groupe = 1 ;
ares1999 3:77e937c315f1 71 char etat_groupe = 0 ;
ares1999 2:c7f2e7d8b305 72
ares1999 2:c7f2e7d8b305 73 switch (identifiant)
ares1999 2:c7f2e7d8b305 74 {
ares1999 2:c7f2e7d8b305 75 case TORQUE_ACT:
ares1999 2:c7f2e7d8b305 76 activer_torque();
ares1999 2:c7f2e7d8b305 77 break;
ares1999 2:c7f2e7d8b305 78
ares1999 2:c7f2e7d8b305 79 case TORQUE_DESACT:
ares1999 2:c7f2e7d8b305 80 desactiver_torque();
ares1999 2:c7f2e7d8b305 81 break;
ares1999 2:c7f2e7d8b305 82
ares1999 3:77e937c315f1 83 case PRISE_ARRIERE:
ares1999 3:77e937c315f1 84 //fct_prise(BAR_BASE, BAR_MILIEU, BAR_HAUT, SERIAL_GAUCHE);
ares1999 3:77e937c315f1 85 fct_prise_arriere(SERIAL_DROITE);
ares1999 3:77e937c315f1 86 break;
ares1999 3:77e937c315f1 87
ares1999 3:77e937c315f1 88 case PRISE_COMPLETE:
ares1999 3:77e937c315f1 89 fct_bras_arriere(SERIAL_GAUCHE);
ares1999 3:77e937c315f1 90 break;
ares1999 3:77e937c315f1 91
ares1999 3:77e937c315f1 92 case CN_OUVERTURE:
ares1999 3:77e937c315f1 93 activer_CN();
ares1999 3:77e937c315f1 94 break;
ares1999 3:77e937c315f1 95
ares1999 3:77e937c315f1 96 case CN_FERMETURE:
ares1999 3:77e937c315f1 97 desactiver_CN();
ares1999 2:c7f2e7d8b305 98 break;
ares1999 2:c7f2e7d8b305 99
ares1999 3:77e937c315f1 100 case VENT_AT:
ares1999 3:77e937c315f1 101 num_groupe = rx_message.data[0];
ares1999 3:77e937c315f1 102 classe_pompe.aspirer(num_groupe) ;
ares1999 3:77e937c315f1 103 break;
ares1999 3:77e937c315f1 104
ares1999 3:77e937c315f1 105 case VENT_RE:
ares1999 3:77e937c315f1 106
ares1999 3:77e937c315f1 107 num_groupe = rx_message.data[0];
ares1999 3:77e937c315f1 108 classe_pompe.relacher(num_groupe) ;
ares1999 3:77e937c315f1 109 break;
ares1999 3:77e937c315f1 110
ares1999 3:77e937c315f1 111 case VENT_ETAT:
ares1999 3:77e937c315f1 112 num_groupe = rx_message.data[0];
ares1999 3:77e937c315f1 113 etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
ares1999 3:77e937c315f1 114
ares1999 3:77e937c315f1 115 if(etat_groupe == 0x07)
ares1999 3:77e937c315f1 116 {
ares1999 3:77e937c315f1 117 classe_pompe.aspirer(num_groupe) ;
ares1999 3:77e937c315f1 118 etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
ares1999 3:77e937c315f1 119 }
ares1999 3:77e937c315f1 120
ares1999 3:77e937c315f1 121
ares1999 3:77e937c315f1 122 Envoi_msg_CAN(etat_groupe);
ares1999 3:77e937c315f1 123
ares1999 3:77e937c315f1 124 break;
ares1999 2:c7f2e7d8b305 125
ares1999 2:c7f2e7d8b305 126 default:
ares1999 2:c7f2e7d8b305 127 break;
ares1999 2:c7f2e7d8b305 128 }
ares1999 2:c7f2e7d8b305 129 flag_reception_CAN = 0 ;
ares1999 2:c7f2e7d8b305 130
ares1999 2:c7f2e7d8b305 131 }
ares1999 2:c7f2e7d8b305 132
ares1999 2:c7f2e7d8b305 133 void Envoi_msg_CAN(char donnee)
ares1999 2:c7f2e7d8b305 134 {
ares1999 2:c7f2e7d8b305 135 CANMessage message;
ares1999 2:c7f2e7d8b305 136 message.id = 0x220;
ares1999 2:c7f2e7d8b305 137 message.len=1;
ares1999 2:c7f2e7d8b305 138 message.format=CANStandard;
ares1999 2:c7f2e7d8b305 139 message.type=CANData;
ares1999 2:c7f2e7d8b305 140 message.data[0]=donnee;
ares1999 2:c7f2e7d8b305 141
ares1999 2:c7f2e7d8b305 142 bus_can.write(message);
ares1999 3:77e937c315f1 143 }