Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed bloc_8_pompe2 Herkulex_library_2022 ident_crac1 bloc_pompe2
main.cpp@3:77e937c315f1, 2022-04-26 (annotated)
- 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?
User | Revision | Line number | New 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 | } |