code avec modifs, programme mit dans les robots pour les derniers matchs

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Committer:
gabrieltetar
Date:
Tue Mar 03 16:41:33 2020 +0000
Revision:
10:1964bb91b925
Parent:
7:44eec996a76e
Child:
11:848ea39838bf
restructred demo menu - features added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabrieltetar 1:7e925468f9d9 1 #include "mbed.h"
gabrieltetar 1:7e925468f9d9 2 #include "global.h"
gabrieltetar 1:7e925468f9d9 3 #include <CAN.h>
gabrieltetar 1:7e925468f9d9 4
gabrieltetar 1:7e925468f9d9 5 CAN can1(PB_8,PB_9); // Rx&Tx pour le CAN
gabrieltetar 1:7e925468f9d9 6 CAN can2(PB_5, PB_13);
gabrieltetar 1:7e925468f9d9 7
gabrieltetar 1:7e925468f9d9 8 void bluetooth_init(void);
gabrieltetar 1:7e925468f9d9 9 DigitalIn choix_robot(PG_12);
gabrieltetar 1:7e925468f9d9 10 CANMessage msgRxBuffer[SIZE_FIFO];
gabrieltetar 1:7e925468f9d9 11 unsigned char FIFO_ecriture;
gabrieltetar 1:7e925468f9d9 12 char strat_sd[10][SIZE+8];
gabrieltetar 1:7e925468f9d9 13 char PATH[10][SIZE+8];
gabrieltetar 1:7e925468f9d9 14
gabrieltetar 1:7e925468f9d9 15 Serial rn42_pr(PG_14, PG_9);
gabrieltetar 1:7e925468f9d9 16 //Serial rn42(PA_1,PA_2);
gabrieltetar 1:7e925468f9d9 17 Serial rn42_Tx(PA_2,NC);
gabrieltetar 1:7e925468f9d9 18 Serial rn42_Rx(NC,PA_1);
gabrieltetar 1:7e925468f9d9 19
gabrieltetar 1:7e925468f9d9 20 Serial pc(USBTX,USBRX);
gabrieltetar 1:7e925468f9d9 21 LiaisonBluetooth liaison_Rx(&rn42_Rx,&pc);
gabrieltetar 1:7e925468f9d9 22 LiaisonBluetooth liaison_Tx(&rn42_Tx,&pc);
gabrieltetar 1:7e925468f9d9 23 LiaisonBluetooth liaison_pr(&rn42_pr,&pc);
gabrieltetar 1:7e925468f9d9 24
gabrieltetar 1:7e925468f9d9 25 char cheminFileStart[SIZE+8]; //Le chemin du fichier de strat, utiliser strcpy(cheminFileStart,"/local/strat.txt");
gabrieltetar 1:7e925468f9d9 26 struct S_Instruction strat_instructions[SIZE_BUFFER_FILE]; //La liste des instruction chargé en mémoire
gabrieltetar 1:7e925468f9d9 27 unsigned char nb_instructions; //Le nombre d'instruction dans le fichier de strategie
gabrieltetar 1:7e925468f9d9 28 unsigned char actual_instruction;//La ligne de l'instruction en cours d'execution
gabrieltetar 1:7e925468f9d9 29
gabrieltetar 1:7e925468f9d9 30
gabrieltetar 1:7e925468f9d9 31
gabrieltetar 1:7e925468f9d9 32 unsigned char InversStrat = 1;//Si à 1, indique que l'on part de l'autre cote de la table(inversion des Y)
gabrieltetar 1:7e925468f9d9 33
gabrieltetar 1:7e925468f9d9 34
gabrieltetar 1:7e925468f9d9 35 unsigned short waitingAckID=0;//L'id du ack attendu
gabrieltetar 1:7e925468f9d9 36 unsigned short waitingAckFrom=0;//La provenance du ack attendu
gabrieltetar 1:7e925468f9d9 37 unsigned short waitingId=0;
gabrieltetar 1:7e925468f9d9 38 char modeTelemetre; // Si à 1, indique que l'on attend une reponse du telemetre
gabrieltetar 1:7e925468f9d9 39
gabrieltetar 1:7e925468f9d9 40 DigitalOut led1(LED1);//Led d'indication de problème, si elle clignote, c'est pas bon
gabrieltetar 1:7e925468f9d9 41 DigitalOut led2(LED2);//Led d'indication de problème, si elle clignote, c'est pas bon
gabrieltetar 1:7e925468f9d9 42 DigitalOut led3(LED3);//Led d'indication de problème, si elle clignote, c'est pas bon
gabrieltetar 1:7e925468f9d9 43 DigitalOut led4(LED4);//Led d'indication de problème, si elle clignote, c'est pas bon
gabrieltetar 1:7e925468f9d9 44
gabrieltetar 1:7e925468f9d9 45 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 46 /* FUNCTION NAME: canRx_ISR */
gabrieltetar 1:7e925468f9d9 47 /* DESCRIPTION : Interruption en réception sur le CAN */
gabrieltetar 1:7e925468f9d9 48 /****************************************************************************************/
gabrieltetar 1:7e925468f9d9 49 void canRx_ISR (void)
gabrieltetar 1:7e925468f9d9 50 {
gabrieltetar 1:7e925468f9d9 51 if (can2.read(msgRxBuffer[FIFO_ecriture])) {
gabrieltetar 1:7e925468f9d9 52 //if(msgRxBuffer[FIFO_ecriture].id==RESET_STRAT) mbed_reset();
gabrieltetar 1:7e925468f9d9 53 /*else*/ FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO;
gabrieltetar 1:7e925468f9d9 54 //canProcessRx();
gabrieltetar 1:7e925468f9d9 55 }
gabrieltetar 1:7e925468f9d9 56 }
gabrieltetar 1:7e925468f9d9 57
gabrieltetar 1:7e925468f9d9 58
gabrieltetar 1:7e925468f9d9 59
gabrieltetar 1:7e925468f9d9 60
gabrieltetar 1:7e925468f9d9 61 /**********************************************************************************/
gabrieltetar 1:7e925468f9d9 62 /* FUNCTION NAME: main */
gabrieltetar 1:7e925468f9d9 63 /* DESCRIPTION : Fonction principal du programme */
gabrieltetar 1:7e925468f9d9 64 /**********************************************************************************/
gabrieltetar 1:7e925468f9d9 65 int main() {
gabrieltetar 1:7e925468f9d9 66 can1.frequency(1000000); // fréquence de travail 1Mbit/s
gabrieltetar 1:7e925468f9d9 67 can2.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN
gabrieltetar 1:7e925468f9d9 68 can2.frequency(1000000);
gabrieltetar 5:81aac085516f 69 lcd.DisplayStringAt(0, 0,(uint8_t *)"Initialisation", LEFT_MODE);
gabrieltetar 1:7e925468f9d9 70 led1 = 1;
gabrieltetar 1:7e925468f9d9 71 bluetooth_init();
gabrieltetar 10:1964bb91b925 72 lecture_fichier(); //bloquant si pas de carte SD
gabrieltetar 1:7e925468f9d9 73 led1 = 0;
gabrieltetar 1:7e925468f9d9 74 wait_ms(2000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue
gabrieltetar 1:7e925468f9d9 75 while(true) {
gabrieltetar 1:7e925468f9d9 76 automate_etat_ihm();
gabrieltetar 1:7e925468f9d9 77 automate_process();//Boucle dans l'automate principal
gabrieltetar 1:7e925468f9d9 78 canProcessRx();
gabrieltetar 1:7e925468f9d9 79 }
gabrieltetar 1:7e925468f9d9 80 }
gabrieltetar 1:7e925468f9d9 81
gabrieltetar 1:7e925468f9d9 82 void bluetooth_init(void){
gabrieltetar 1:7e925468f9d9 83 rn42_Tx.baud(115200);
gabrieltetar 1:7e925468f9d9 84 rn42_Rx.baud(115200);
gabrieltetar 1:7e925468f9d9 85 rn42_pr.baud(115200);
gabrieltetar 1:7e925468f9d9 86 pc.baud(115200);
gabrieltetar 1:7e925468f9d9 87 pc.printf("ok1");
gabrieltetar 1:7e925468f9d9 88 /*while(1){ // sert au paramètrage des module RN42
gabrieltetar 1:7e925468f9d9 89 while(pc.readable()){
gabrieltetar 1:7e925468f9d9 90 rn42_Tx.putc(pc.getc());
gabrieltetar 1:7e925468f9d9 91
gabrieltetar 1:7e925468f9d9 92 }
gabrieltetar 1:7e925468f9d9 93 while(rn42_Rx.readable()){
gabrieltetar 1:7e925468f9d9 94 pc.putc(rn42_Rx.getc());
gabrieltetar 1:7e925468f9d9 95 }
gabrieltetar 1:7e925468f9d9 96 }*/
gabrieltetar 1:7e925468f9d9 97 }