Programme carte strategie (disco)

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

main.cpp

Committer:
Sitkah
Date:
2018-04-20
Revision:
30:a1e37af4bbde
Parent:
29:41e02746041d
Child:
31:833fc481b002

File content as of revision 30:a1e37af4bbde:

#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);


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(PG_14, PG_9);
Serial pc(USBTX,USBRX);
LiaisonBluetooth liaison(&rn42,&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
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;
    }
}




/**********************************************************************************/
/* 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;
    rn42.baud(115200);
    pc.baud(115200);
    //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
    
    while(true) {
        automate_etat_ihm();
        automate_process();//Boucle dans l'automate principal
        //canProcessRx();
        //AX12_doLoop();//Vérification de la position des AX12
    }
}