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