code de la carte IHM avant les bugs et avant le travail effectué avec Melchior
Dependencies: mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait
Diff: main.cpp
- Revision:
- 1:7e925468f9d9
- Child:
- 5:81aac085516f
diff -r 41cc45429aba -r 7e925468f9d9 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 30 16:48:59 2020 +0000 @@ -0,0 +1,101 @@ +#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); + +void bluetooth_init(void); +DigitalIn choix_robot(PG_12); +CANMessage msgRxBuffer[SIZE_FIFO]; +unsigned char FIFO_ecriture; +char strat_sd[10][SIZE+8]; +char PATH[10][SIZE+8]; + +Serial rn42_pr(PG_14, PG_9); +//Serial rn42(PA_1,PA_2); +Serial rn42_Tx(PA_2,NC); +Serial rn42_Rx(NC,PA_1); + +Serial pc(USBTX,USBRX); +LiaisonBluetooth liaison_Rx(&rn42_Rx,&pc); +LiaisonBluetooth liaison_Tx(&rn42_Tx,&pc); +LiaisonBluetooth liaison_pr(&rn42_pr,&pc); + +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 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 +unsigned short waitingId=0; +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 +DigitalOut led3(LED3);//Led d'indication de problème, si elle clignote, c'est pas bon +DigitalOut led4(LED4);//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 (can2.read(msgRxBuffer[FIFO_ecriture])) { + //if(msgRxBuffer[FIFO_ecriture].id==RESET_STRAT) mbed_reset(); + /*else*/ FIFO_ecriture=(FIFO_ecriture+1)%SIZE_FIFO; + //canProcessRx(); + } +} + + + + +/**********************************************************************************/ +/* FUNCTION NAME: main */ +/* DESCRIPTION : Fonction principal du programme */ +/**********************************************************************************/ +int main() { + can1.frequency(1000000); // fréquence de travail 1Mbit/s + can2.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN + can2.frequency(1000000); +#ifdef ROBOT_BIG + lcd.DisplayStringAt(0, 0,(uint8_t *)"Initialisation gros robot", LEFT_MODE); +#else + lcd.DisplayStringAt(0, 0,(uint8_t *)"Initialisation petit robot", LEFT_MODE); +#endif + led1 = 1; + bluetooth_init(); + lecture_fichier(); //bloquant si pas de carte SD + led1 = 0; + 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(); + } +} + +void bluetooth_init(void){ + rn42_Tx.baud(115200); + rn42_Rx.baud(115200); + rn42_pr.baud(115200); + pc.baud(115200); + pc.printf("ok1"); + /*while(1){ // sert au paramètrage des module RN42 + while(pc.readable()){ + rn42_Tx.putc(pc.getc()); + + } + while(rn42_Rx.readable()){ + pc.putc(rn42_Rx.getc()); + } + }*/ +}