Programme carte strategie (disco)
Dependencies: mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac
main.cpp
- Committer:
- antbig
- Date:
- 2016-04-15
- Revision:
- 2:8d8e2cf798a3
- Parent:
- 1:116040d14164
- Child:
- 3:19f2285a4757
File content as of revision 2:8d8e2cf798a3:
#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 /****************************************************************************************/ /* 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 /** On enregistre les id des AX12 présent sur la carte **/ AX12_register(1,0x0FF); AX12_register(2); wait_ms(1000); tactile_printf("Initialisation cartes..."); initRobot();//Initialisation du robot wait_ms(2000);//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 while(true) { automate_process();//Boucle dans l'automate principal canProcessRx();//Traitement des trames CAN en attente AX12_doLoop();//Vérification de la position des AX12 } }