carte_strategie_2019
Dependencies: mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac
Diff: main.cpp
- Revision:
- 0:ad97421fb1fb
- Child:
- 1:116040d14164
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Apr 13 22:04:54 2016 +0000 @@ -0,0 +1,57 @@ +#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 + +/****************************************************************************************/ +/* 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); + + initRobot();//Initialisation du robot + + wait_ms(9000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue + tactile_printf("Initialisation cartes..."); + + /** + 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 + } +}