J'ai simplifié ton programme en virant l'affichage (source de problème, je l'ai vécu)
A la fin de ton programme, j'ai fait basculer la sortie LED au NL1 puis au NL2, c'est une astuce fournie par un collègue, de cette manière tu mesures réellement le temps du cycle.
Au scope j'obtiens une période (cycle complet de 10000 double calculs) de 4624us auquel je retranche par honnêteté la durée du pulse, on arrive donc a 4524us pour réaliser 10000 fois le cycle de calcul.
Le temps mis pour réaliser les deux calculs (Y1 et Y2) est donc de 0.45us : bravo pour la démonstration
Ajouter q=q+1 a présenté un temps négligeable (curieux cela contredit mes essai de cet après midi : j'ai aligné mon pas de la table de retard sur 3.5us en jouant avec cette astuce, mais arduino est parfois curieux, je le constate tous les jours)
int led = 13;
// regime moteur [tr/mn]
double x;
// y1 :retard entre l'étincelle et le top capteur
double y1;
// y1 :retard entre le début de charge de la bobine et le top capteur
double y2;
// temps et le temps de traitement
double temps;
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
// config du port série
x=333.0000;
}
void loop() {
temps = micros();
for (int i=1; i <= 10000; i++){
//et un essai avec 24 digits
y1=3.27124770502473 + x*(-0.00470054766560975+x*(0.00000291486604109577 + x*(- 0.000000000961445062745614+x*(0.000000000000173225871332+x*(- 0.000000000000000015926233+x*0.000000000000000000000582)))));
// y2 : retard entre le debut de charge et le top capteur
// avec une exponentielle
y2=57,604*pow(2.71828,-0.00042738*x);
}
digitalWrite(led, HIGH); // met la sortie led. à l'état haut
delayMicroseconds (100);
digitalWrite(led, LOW); // met la sortie num. à l'état bas
}
» Des MZ à la sauce Enduro
» Side-car forever
» MZ aux USA
» ETS Forever
» Une MZ amphibie
» Belles photos
» installation bobine Valeo et condo moderne sur ETS 125
» Anti éclaboussures pour spray