homologation gros robot et test avec les ack de la carte a tout faire

Fork of CRAC-Strat_2017_HOMOLOGATION_PETIT_ROBOT by CRAC Team

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "global.h"
00002 
00003 CAN can1(p30,p29); // Rx&Tx pour le CAN
00004 CANMessage msgRxBuffer[SIZE_FIFO]; // buffer en réception pour le CAN
00005 unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN
00006 
00007 extern "C" void mbed_reset();//Pour pouvoir reset la carte
00008 
00009 DigitalOut led1(LED1);//Led d'indication de problème, si elle clignote, c'est pas bon
00010 DigitalOut led2(LED2);//Led d'indication de problème, si elle clignote, c'est pas bon
00011 DigitalOut led3(LED3);//Led d'indication de problème, si elle clignote, c'est pas bon
00012 DigitalOut led4(LED4);//Led d'indication de problème, si elle clignote, c'est pas bon
00013 
00014 /****************************************************************************************/
00015 /* FUNCTION NAME: canRx_ISR                                                             */
00016 /* DESCRIPTION  : Interruption en réception sur le CAN                                  */
00017 /****************************************************************************************/
00018 void canRx_ISR (void)
00019 {
00020     if (can1.read(msgRxBuffer[FIFO_ecriture])) {
00021         if(msgRxBuffer[FIFO_ecriture].id==RESET_STRAT) mbed_reset();
00022         else FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO;
00023     }
00024 }
00025 
00026 
00027 /**********************************************************************************/
00028 /* FUNCTION NAME: main                                                            */
00029 /* DESCRIPTION  : Fonction principal du programme                                 */
00030 /**********************************************************************************/
00031 int main() {
00032     can1.frequency(1000000); // fréquence de travail 1Mbit/s
00033     can1.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN
00034     
00035     
00036     wait_ms(5000);
00037 #ifdef ROBOT_BIG
00038     tactile_printf("Initialisation gros robot");
00039 #else
00040     tactile_printf("Initialisation petit robot");
00041 #endif
00042     led1 = 1;
00043     initRobot();//Initialisation du robot
00044     initRobotActionneur();
00045     led1 = 0;
00046     wait_ms(2000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue
00047  
00048     /**
00049     A retirer lors de l'utilisation avec selecteur de stratégie sur IHM
00050     **/
00051     //strcpy(cheminFileStart,"/local/test.txt");//On ouvre le fichier test.txt
00052     //loadAllInstruction();//Mise en cache de toute les instructions
00053 
00054     while(true) {
00055         automate_process();//Boucle dans l'automate principal
00056         canProcessRx();//Traitement des trames CAN en attente 
00057         //AX12_doLoop();//Vérification de la position des AX12
00058     }
00059 }