CAN_Servomoteur_V1_Haoxuan avec lib de servo
Dependencies: mbed
main.cpp@0:3b683da943e6, 2018-04-12 (annotated)
- Committer:
- Shanglin
- Date:
- Thu Apr 12 08:54:49 2018 +0000
- Revision:
- 0:3b683da943e6
CAN_Servo_V1_Haoxuan_avec_lib_servo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Shanglin | 0:3b683da943e6 | 1 | #include "mbed.h" |
Shanglin | 0:3b683da943e6 | 2 | #include "ident_crac.h" |
Shanglin | 0:3b683da943e6 | 3 | #include "lib.h" |
Shanglin | 0:3b683da943e6 | 4 | |
Shanglin | 0:3b683da943e6 | 5 | #define SIZE_FIFO 50 //Taille du buffer pour le bus CAN |
Shanglin | 0:3b683da943e6 | 6 | |
Shanglin | 0:3b683da943e6 | 7 | AnalogIn analog_value(A0); |
Shanglin | 0:3b683da943e6 | 8 | |
Shanglin | 0:3b683da943e6 | 9 | DigitalOut led(LED1); |
Shanglin | 0:3b683da943e6 | 10 | |
Shanglin | 0:3b683da943e6 | 11 | void canProcessRx(void); |
Shanglin | 0:3b683da943e6 | 12 | unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN |
Shanglin | 0:3b683da943e6 | 13 | signed char FIFO_lecture=0;//Position du fifo de lecture des messages CAN |
Shanglin | 0:3b683da943e6 | 14 | |
Shanglin | 0:3b683da943e6 | 15 | CAN can1(PB_8,PB_9); // Rx&Tx pour le CAN |
Shanglin | 0:3b683da943e6 | 16 | CANMessage msgRxBuffer[SIZE_FIFO]; // buffer en r�ception pour le CAN |
Shanglin | 0:3b683da943e6 | 17 | |
Shanglin | 0:3b683da943e6 | 18 | void canRx_ISR (void) |
Shanglin | 0:3b683da943e6 | 19 | { |
Shanglin | 0:3b683da943e6 | 20 | if (can1.read(msgRxBuffer[FIFO_ecriture])) { |
Shanglin | 0:3b683da943e6 | 21 | //if(msgRxBuffer[FIFO_ecriture].id==RESET_STRAT) mbed_reset(); |
Shanglin | 0:3b683da943e6 | 22 | /*else*/ FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO; |
Shanglin | 0:3b683da943e6 | 23 | } |
Shanglin | 0:3b683da943e6 | 24 | } |
Shanglin | 0:3b683da943e6 | 25 | |
Shanglin | 0:3b683da943e6 | 26 | int Combinaison_cube = 0; |
Shanglin | 0:3b683da943e6 | 27 | |
Shanglin | 0:3b683da943e6 | 28 | int main() { |
Shanglin | 0:3b683da943e6 | 29 | |
Shanglin | 0:3b683da943e6 | 30 | can1.frequency(1000000); // fr�quence de travail 1Mbit/s |
Shanglin | 0:3b683da943e6 | 31 | can1.attach(&canRx_ISR); // cr�ation de l'interrupt attach�e � la r�ception sur le CAN |
Shanglin | 0:3b683da943e6 | 32 | |
Shanglin | 0:3b683da943e6 | 33 | wait_ms(500); |
Shanglin | 0:3b683da943e6 | 34 | |
Shanglin | 0:3b683da943e6 | 35 | while(1) { |
Shanglin | 0:3b683da943e6 | 36 | canProcessRx(); |
Shanglin | 0:3b683da943e6 | 37 | } |
Shanglin | 0:3b683da943e6 | 38 | } |
Shanglin | 0:3b683da943e6 | 39 | |
Shanglin | 0:3b683da943e6 | 40 | void canProcessRx(void) |
Shanglin | 0:3b683da943e6 | 41 | { |
Shanglin | 0:3b683da943e6 | 42 | static signed char FIFO_occupation=0,FIFO_max_occupation=0; |
Shanglin | 0:3b683da943e6 | 43 | CANMessage msgTx=CANMessage(); |
Shanglin | 0:3b683da943e6 | 44 | FIFO_occupation=FIFO_ecriture-FIFO_lecture; |
Shanglin | 0:3b683da943e6 | 45 | if(FIFO_occupation<0) |
Shanglin | 0:3b683da943e6 | 46 | FIFO_occupation=FIFO_occupation+SIZE_FIFO; |
Shanglin | 0:3b683da943e6 | 47 | if(FIFO_max_occupation<FIFO_occupation) |
Shanglin | 0:3b683da943e6 | 48 | FIFO_max_occupation=FIFO_occupation; |
Shanglin | 0:3b683da943e6 | 49 | if(FIFO_occupation!=0) { |
Shanglin | 0:3b683da943e6 | 50 | |
Shanglin | 0:3b683da943e6 | 51 | switch(msgRxBuffer[FIFO_lecture].id) { |
Shanglin | 0:3b683da943e6 | 52 | case DEBUG_FAKE_JAKE://Permet de lancer le match � distance |
Shanglin | 0:3b683da943e6 | 53 | case GLOBAL_JACK: |
Shanglin | 0:3b683da943e6 | 54 | break; |
Shanglin | 0:3b683da943e6 | 55 | case ALIVE_BALISE: |
Shanglin | 0:3b683da943e6 | 56 | case ALIVE_MOTEUR: |
Shanglin | 0:3b683da943e6 | 57 | case ALIVE_IHM: |
Shanglin | 0:3b683da943e6 | 58 | case ALIVE_ACTIONNEURS_AVANT: |
Shanglin | 0:3b683da943e6 | 59 | case ALIVE_ACTIONNEURS_ARRIERE: |
Shanglin | 0:3b683da943e6 | 60 | case ALIVE_AX12: |
Shanglin | 0:3b683da943e6 | 61 | case ECRAN_ALL_CHECK: |
Shanglin | 0:3b683da943e6 | 62 | break; |
Shanglin | 0:3b683da943e6 | 63 | case ACKNOWLEDGE_BALISE: |
Shanglin | 0:3b683da943e6 | 64 | case ACKNOWLEDGE_MOTEUR: |
Shanglin | 0:3b683da943e6 | 65 | case ACKNOWLEDGE_IHM: |
Shanglin | 0:3b683da943e6 | 66 | case ACKNOWLEDGE_TELEMETRE: |
Shanglin | 0:3b683da943e6 | 67 | case ACKNOWLEDGE_AX12: |
Shanglin | 0:3b683da943e6 | 68 | case INSTRUCTION_END_BALISE: |
Shanglin | 0:3b683da943e6 | 69 | case INSTRUCTION_END_MOTEUR: |
Shanglin | 0:3b683da943e6 | 70 | case INSTRUCTION_END_IHM: |
Shanglin | 0:3b683da943e6 | 71 | case INSTRUCTION_END_AX12: |
Shanglin | 0:3b683da943e6 | 72 | break; |
Shanglin | 0:3b683da943e6 | 73 | case ECRAN_START_MATCH: |
Shanglin | 0:3b683da943e6 | 74 | break; |
Shanglin | 0:3b683da943e6 | 75 | case SERVO_AX12_PROCESS: |
Shanglin | 0:3b683da943e6 | 76 | break; |
Shanglin | 0:3b683da943e6 | 77 | case SERVO_AX12_DONE: |
Shanglin | 0:3b683da943e6 | 78 | break; |
Shanglin | 0:3b683da943e6 | 79 | case ECRAN_CHOICE_COLOR: |
Shanglin | 0:3b683da943e6 | 80 | break; |
Shanglin | 0:3b683da943e6 | 81 | case ECRAN_CHOICE_STRAT: |
Shanglin | 0:3b683da943e6 | 82 | break; |
Shanglin | 0:3b683da943e6 | 83 | case BALISE_DANGER : |
Shanglin | 0:3b683da943e6 | 84 | break; |
Shanglin | 0:3b683da943e6 | 85 | case BALISE_STOP: |
Shanglin | 0:3b683da943e6 | 86 | break; |
Shanglin | 0:3b683da943e6 | 87 | case BALISE_END_DANGER: |
Shanglin | 0:3b683da943e6 | 88 | break; |
Shanglin | 0:3b683da943e6 | 89 | |
Shanglin | 0:3b683da943e6 | 90 | case ECRAN_CHOICE_START_ACTION: |
Shanglin | 0:3b683da943e6 | 91 | break; |
Shanglin | 0:3b683da943e6 | 92 | case OBJET_SUR_TABLE: |
Shanglin | 0:3b683da943e6 | 93 | break; |
Shanglin | 0:3b683da943e6 | 94 | case Monter_immeuble: |
Shanglin | 0:3b683da943e6 | 95 | unsigned char Combinaison_cube_1 = msgRxBuffer[FIFO_lecture].data[0]; |
Shanglin | 0:3b683da943e6 | 96 | unsigned char Combinaison_cube_2 = msgRxBuffer[FIFO_lecture].data[1]; |
Shanglin | 0:3b683da943e6 | 97 | unsigned char Combinaison_cube_3 = msgRxBuffer[FIFO_lecture].data[2]; |
Shanglin | 0:3b683da943e6 | 98 | monter_immeble(1,Combinaison_cube_1,Combinaison_cube_2,Combinaison_cube_3); |
Shanglin | 0:3b683da943e6 | 99 | break; |
Shanglin | 0:3b683da943e6 | 100 | } |
Shanglin | 0:3b683da943e6 | 101 | |
Shanglin | 0:3b683da943e6 | 102 | FIFO_lecture=(FIFO_lecture+1)%SIZE_FIFO; |
Shanglin | 0:3b683da943e6 | 103 | } |
Shanglin | 0:3b683da943e6 | 104 | } |