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
Diff: main.cpp
- Revision:
- 2:ee896365f8fe
- Parent:
- 1:bb5b935c0aa9
- Child:
- 3:b95fe07153f1
diff -r bb5b935c0aa9 -r ee896365f8fe main.cpp
--- a/main.cpp Mon May 25 06:41:51 2020 +0000
+++ b/main.cpp Mon May 25 12:31:45 2020 +0000
@@ -1,10 +1,10 @@
#include "mbed.h"
/*************** Variables globales **************************/
-volatile int flag_timer_etat=0;
-volatile int flag_timer_reglage_vitesse=0;
-volatile int flag_fc_haut=0;
-volatile int flag_contact=0;
+volatile int flag_timer_etat=0; //ce timer séquence l'alimaentation des phases du moteur, sa fréquence est réglable avec le potentiomètre + trame vitesse
+volatile int flag_timer_reglage_vitesse=0; //ce timer lit le réglage de la vitesse tous les 0.1 s
+volatile int flag_fc_haut=0; //interruption sur SW2
+volatile int flag_contact=0; //interruption sur SW3
/*************** Interfaces utilisés *************************/
Serial pc(USBTX, USBRX,9600); // liaison USB
Ticker timer_etat; // Interruptions temporelles (timout)
@@ -16,14 +16,14 @@
DigitalOut ENA(PTA1);
DigitalOut ENB(PTD2);
AnalogIn ain0(A0); //(lecture potentiometre vitesse) // entrées analogiques
-AnalogIn ain1(A1); // (lecture potentiometre reglage position)
-InterruptIn fc_haut(SW2); // entrées KBI
-InterruptIn contact(SW3); //
+AnalogIn ain1(A1); // (lecture potentiometre lecture position)
+InterruptIn fc_haut(SW2); // SW2 est associé à une interruption kbi s'appelant fc_haut
+InterruptIn contact(SW3); // SW3 est associé à une interruption kbi s'appelant contact
/*************** Programmes d'interruption *******************/
-void IT_timer_etat() { // sequencement phases moteur
+void IT_timer_etat() { // sequencement phases moteur dont la fréquence est réglable potentiomètre/trame
flag_timer_etat=1;
}
-void IT_timer_reglage_vitesse() { // reglage de la vitesse
+void IT_timer_reglage_vitesse() { // reglage de la vitesse tous les 100 ms
flag_timer_reglage_vitesse=1;
}
void IT_fc_haut(){ // position haute atteinte (raz)
@@ -42,7 +42,7 @@
// position_mesurée : position estimée avec Vpos
// periode : periode de l'IT etat (pilotage moteur)
// frequence : frequence de l'IT etat (pilotage moteur)
- char command[9]; // buffer de réception du message
+ char command[30]; // buffer de réception du message
int position =0; // comptage du nombre de 1/2 pas
// int consigne_position =0;
float a=127.47; // coefficient etalonnage capteur de position
@@ -52,10 +52,10 @@
IN2=0;
IN3=0;
IN4=0;
- timer_etat.attach(&IT_timer_etat, 0.01); // mise à jour de la commande moteur toutes les 1ms (100Hz)
+ timer_etat.attach(&IT_timer_etat, 0.01); // mise à jour de la commande moteur toutes les 10ms (100Hz)
timer_reglage_vitesse.attach(&IT_timer_reglage_vitesse, 0.1); // mise à jour de la vitesse moteur par potentiomètre toutes les 0,1s
fc_haut.rise(&IT_fc_haut); // declaration des programmes kbi
- contact.rise(&IT_contact);
+ contact.rise(&IT_contact); //
// boucle programme principal
while(1) {
// on traite la liaison serie
@@ -102,7 +102,8 @@
}
else if(strcmp(command,"position")==0) {
pc.scanf("%s",command);
- //consigne_position=atoi(command);*/
+ consigne_position=atoi(command);
+
}
}
// on traite la commande du moteur