Programme carte strategie (disco)
Dependencies: mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac
Diff: main.cpp
- Revision:
- 29:41e02746041d
- Parent:
- 19:b4b91258c275
- Child:
- 30:a1e37af4bbde
diff -r acd18776ed2d -r 41e02746041d main.cpp --- a/main.cpp Sat May 27 05:40:26 2017 +0000 +++ b/main.cpp Fri Apr 06 13:47:19 2018 +0000 @@ -1,10 +1,29 @@ +#include "mbed.h" #include "global.h" +#include <CAN.h> + +CAN can1(PB_8,PB_9); // Rx&Tx pour le CAN +CAN can2(PB_5, PB_13); +CANMessage msgRxBuffer[SIZE_FIFO]; +unsigned char FIFO_ecriture; +char strat_sd[10][SIZE+8]; +char PATH[10][SIZE+8]; + + -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 +char cheminFileStart[SIZE+8]; //Le chemin du fichier de strat, utiliser strcpy(cheminFileStart,"/local/strat.txt"); +struct S_Instruction strat_instructions[SIZE_BUFFER_FILE]; //La liste des instruction chargé en mémoire +unsigned char nb_instructions; //Le nombre d'instruction dans le fichier de strategie +unsigned char actual_instruction;//La ligne de l'instruction en cours d'execution + +unsigned short telemetreDistance=0; -extern "C" void mbed_reset();//Pour pouvoir reset la carte +unsigned char InversStrat = 1;//Si à 1, indique que l'on part de l'autre cote de la table(inversion des Y) + + +unsigned short waitingAckID=0;//L'id du ack attendu +unsigned short waitingAckFrom=0;//La provenance du ack attendu +char modeTelemetre; // Si à 1, indique que l'on attend une reponse du telemetre 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 @@ -18,12 +37,14 @@ 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; + //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 */ @@ -31,29 +52,24 @@ 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 - + can2.frequency(1000000); - wait_ms(5000); #ifdef ROBOT_BIG tactile_printf("Initialisation gros robot"); #else tactile_printf("Initialisation petit robot"); #endif led1 = 1; + bluetooth_init(); initRobot();//Initialisation du robot initRobotActionneur(); + lecture_fichier(); led1 = 0; - 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 - + //wait_ms(2000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue + while(true) { + automate_etat_ihm(); automate_process();//Boucle dans l'automate principal - canProcessRx();//Traitement des trames CAN en attente //AX12_doLoop();//Vérification de la position des AX12 } }