changements compte-tour & scribe

This commit is contained in:
pgp 2021-02-01 15:46:26 +01:00
parent 0b80117ca3
commit 530cde8e80

View file

@ -18,14 +18,14 @@
#define PCNT_TEST_CHANNEL PCNT_CHANNEL_0
#define PCNT_INPUT_SIG_IO GPIO_NUM_15 // Pulse Input GPIO
#define PCNT_INPUT_CTRL_IO GPIO_NUM_2 // Control GPIO HIGH=count up, LOW=count down
#define PCNT_H_LIM_VAL 10000 //valeur max du compteur_minuteur
#define PCNT_H_LIM_VAL 10000 //valeur max du depart_compteur_minuteur
#define PCNT_L_LIM_VAL -10 //valeur mini du compteur
bool sem_compteur; // sémaphore pour le compteur
bool sem_scribe; // sémaphore pour le compteur
int16_t count = 0; // variable de compteur
int vRotReel; // vitesse réelle mesurée du moteur
unsigned long compteur_minuteur = 0; // minuteur pour le déclenchement du compteur
unsigned long start_chrono_scribe= 0; // minuteur pour le déclenchement du compteur
bool sema_compte_tour = false; // semaphore poour le compte tour
unsigned long compteur_compte_tour = 0; // minuteur pour le déclenchement du compte-tour
unsigned long depart_compte_tour = 0; // minuteur pour le déclenchement du compte-tour
int refresh_compte_tour = 500; // durée entre deux mesures du compte-tour en ms
int pptr = 2; //nombre de pulsations par tour d'hélice
@ -48,7 +48,7 @@ DateTime now{rtc.now()};
////////////////////////////////
/* DÉFINITIONS DE LA CARTE SD */
////////////////////////////////
unsigned long freq_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
unsigned long intervalle_d_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
char horodatage[12]; //création du tableau pour contenir l'horodatage
char fichier[] = "/"; //tableau pour le nom de fichier
@ -174,12 +174,13 @@ void stop_compteur() {
void compte_tour() {
if (sema_compte_tour == false){
compteur_compte_tour = millis();
depart_compte_tour = millis();
sema_compte_tour = true;
}
int offset = (millis() - compteur_compte_tour );
int offset = (millis() - depart_compte_tour );
pcnt_get_counter_value(PCNT_UNIT_0, &count);
if (offset >= refresh_compte_tour && sema_compte_tour == true && count >= 1){
compteur_compte_tour = millis()- ;
vRotReel = (60000*count/(pptr*offset)); //vitesse en tours par min (4 pulsations /tour, 2 montantes, 2 descendantes)
Serial.println("count =");
Serial.println(count);
@ -188,7 +189,7 @@ void compte_tour() {
Serial.println("vRrotReel=");
Serial.println(vRotReel);
gaz_moteur();// ajustement des gaz en fonction de la vitesse mesurée
sema_compte_tour = false;
}
}
@ -324,11 +325,14 @@ void sd_init() {
}
void scribe_sd (){
if ( sem_compteur == false ) {
compteur_minuteur = millis();
sem_compteur = true;
if ( sem_scribe == false ) {
sem_scribe = true;
pcnt_counter_pause(PCNT_TEST_UNIT);
pcnt_counter_clear(PCNT_TEST_UNIT);
pcnt_counter_resume(PCNT_TEST_UNIT);
start_chrono_scribe = millis();
}
if ( sem_compteur == true && millis() - compteur_minuteur >= freq_ecriture ){
if ( sem_scribe == true && millis() - start_chrono_scribe >= intervalle_d_ecriture ){
char timestamp[] = "YY-MM-DD-hh:mm:ss";
char *horodatage = now.toString(timestamp);
char buffer[64];
@ -338,7 +342,8 @@ void scribe_sd (){
appendFile(SD, fichier, buffer);
appendFile(SD, fichier, "\n" );
Serial.println(vRotReel);
compteur_minuteur = 0;
start_chrono_scribe= 0;
}
}
@ -475,7 +480,7 @@ void setup() {
sd_init (); // initialisation de la carte SD
sem_wifi = false; // initialisation du sémaphore
/* compteur de pulsations */
sem_compteur = false; // initialisation du sémaphore
sem_scribe = false; // initialisation du sémaphore
//pinMode(pulsePin,INPUT_PULLUP);
start_compteur();
start_moteur(); // moteur