CAN_Servomoteur_V1_Haoxuan avec lib de servo

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }