pour trouver l'automate de reception can
Fork of CRAC-Strat_copy by
main.cpp
- Committer:
- ClementBreteau
- Date:
- 2017-01-31
- Revision:
- 13:93edbb03a8c6
- Parent:
- 12:14729d584500
- Child:
- 14:c8fc06c4887f
File content as of revision 13:93edbb03a8c6:
#include "global.h" CAN can1(p30,p29); // Rx&Tx pour le CAN CANMessage msgRxBuffer[SIZE_FIFO]; // buffer en réception pour le CAN unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN extern "C" void mbed_reset();//Pour pouvoir reset la carte DigitalOut led1(LED1);//Led d'indication de problème, si elle clignote, c'est pas bon DigitalOut led2(LED2);//Led d'indication de problème, si elle clignote, c'est pas bon DigitalOut led3(LED3);//Led d'indication de problème, si elle clignote, c'est pas bon DigitalOut led4(LED4);//Led d'indication de problème, si elle clignote, c'est pas bon /****************************************************************************************/ /* FUNCTION NAME: canRx_ISR */ /* DESCRIPTION : Interruption en réception sur le CAN */ /****************************************************************************************/ void canRx_ISR (void) { if (can1.read(msgRxBuffer[FIFO_ecriture])) { if(msgRxBuffer[FIFO_ecriture].id==RESET_STRAT) mbed_reset(); else FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO; } } /**********************************************************************************/ /* FUNCTION NAME: main */ /* DESCRIPTION : Fonction principal du programme */ /**********************************************************************************/ int main() { can1.frequency(1000000); // fréquence de travail 1Mbit/s can1.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN wait_ms(1000); #ifdef ROBOT_BIG tactile_printf("Initialisation gros robot"); #else tactile_printf("Initialisation petit robot"); #endif initRobot();//Initialisation du robot wait_ms(1000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue /** A retirer lors de l'utilisation avec selecteur de stratégie sur IHM **/ //strcpy(cheminFileStart,"/local/test.txt");//On ouvre le fichier test.txt //loadAllInstruction();//Mise en cache de toute les instructions GoStraight(100, 0, 0, 2); while(true) { //void GoStraight (signed short distance,unsigned char recalage, unsigned short newValue, unsigned char isEnchainement) automate_process();//Boucle dans l'automate principal canProcessRx();//Traitement des trames CAN en attente AX12_doLoop();//Vérification de la position des AX12 } }