Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
}
}