Fonctionne 1 Flash / 2 tours. Test oscillo OK

This commit is contained in:
Grouch 2017-05-08 10:11:59 +02:00
parent 71bec01111
commit 5b96debaa9
1 changed files with 18 additions and 22 deletions

View File

@ -48,7 +48,7 @@ volatile long D = 0L;
unsigned long pm = 0L; // Previous millis pour Refresh LCD
byte modconfig = 0; // Flag pour savoir si on est en mode config
int degT = 720 / Ncyl; // Degrés entre 2 étincelles
volatile bool moteur_tourne = false;
volatile bool flag = false;
LiquidCrystal lcd( 9, 17, 15, 16, 14, 10);
//lcd(RS, E, D4, D5, D6, D7)
@ -60,34 +60,33 @@ volatile RunningAverage moyT(lissrpm);
//--------------------------------------------------------------------------------
void isrEtincelle() {
if (!moteur_tourne){
Timer1.initialize(D);
moteur_tourne=true;}
T = micros() - prec_H; // Calcul de T
prec_H = micros();
if (T < T_MINI) {T = moyT.getAverage();} // Sécurité valeur aberrante
D_deg = (moyT.getAverage() * (long)deg_dem) / (long)degT;
D = D_deg - 200L;
if (D<=80){D+=T;}
// D+=T*2;
if(flag){
Timer1.stop();
if (T < T_MINI) {T = moyT.getAverage();} // Sécurité valeur aberrante
D_deg = (T * (long)deg_dem) / (long)degT;
// On ajoute la valeur de T au calcul de moy. glissante
moyT.addValue(T);
D = D_deg - 190L;
D+=T;
Timer1.initialize(D);
// On ajoute la valeur de T au calcul de moy. glissante
moyT.addValue(T);
}
flag =! flag;
}
void isrFlash(){
Timer1.stop();
digitalWrite (Flash, 1); delayMicroseconds(D_Flash); digitalWrite (Flash, 0);
digitalWrite (LED_BUILTIN, 1); delayMicroseconds(5 * D_Flash); digitalWrite (LED_BUILTIN, 0);
//digitalWrite (LED_BUILTIN, 1); delayMicroseconds(5 * D_Flash); digitalWrite (LED_BUILTIN, 0);
moteur_tourne=false;
F = micros() - prec_F;
prec_F = micros();
//F = micros() - prec_F;
//prec_F = micros();
}
//--------------------------------------------------------------------------------
@ -174,7 +173,6 @@ void IniT() {
// Timer entre Etincelle et Flash
Timer1.attachInterrupt(isrFlash);
//Timer1.initialize(1);
//Timer1.stop();
modconfig=0;
@ -208,8 +206,6 @@ void IniT() {
Affich_fond_ecran();
Affic_N_et_deg_dem();
moteur_tourne = false;
if (debug) {
Serial.print("degT : "); Serial.println(degT);
Serial.print(" Nc : "); Serial.println(Nc);