Temps de calculs, nombre de mesure

Bonjour,

Je suis novice en programmation sur ardiuno. Je suis en classes préparatoires et pour mon TIPE je souhaite utiliser une arduino UNO.

Pour mon projet je souhaite : lire, afficher sur mon ordinateur et faire une dizaine d’équations 9330 fois par seconde d'une tension aux bornes d'un condensateur.

je pensais donc utiliser la fonction " delayMicroseconds(107) " pour avoir un pas de temps de 1/9330 secondes. Mais le problème c'est qu'il y a biensur les calculs intermédiaire que je souhaite faire (une dizaine d’inégalités, 1 boucle while et 1 boucles if).

Ma question est donc si ces calculs sont négligeables devant la centaine de microsecondes ou bien dois-je en tenir compte?
Et si je dois en tenir compte, dois-je mesurer ces temps manuellement ou bien connait on a peu près ces temps?

Une autre question, n'existe t-il pas un delay en nanosecondes, idéalement j'aurais besoin de delayMicroseconds(107.18) mais je crois que les virgules ne sont pas acceptées. Sinon ce n'est pas grave je modifierai mon circuit.

Cordialement

Nicky

une idee pour avoir le temps des boucles

void loop() {
unsigned long memo_temps = millis();
 
 //********************
 faire tes calculs ici
 //**********************
   unsigned long temps_actuel = millis();
   unsigned long tempspassepourcalculs= temps_actuel - memo_temps;

}

Compte tenu de tes interrogations la lecture de la datasheet du microcontrôleur est indispensable.
Tu y apprendra entre autres choses :

  • le fonctionnement du convertisseur analogique digital
  • le nombre de cycles horloge nécessaires à une conversion
  • comment modifier la fréquence de l'horloge du convertisseur et par conséquent le temps que prend une convertion.
  • la résistance maximale que doit présenter la source de tension à mesurer.

Il faut bien comprendre que l'univers Arduino est fait pour simplifier l'apprentissage par les nouveaux venus. La conséquence est qu'il n'est pas optimisé et que le micro est sous utilisé.
Dès que le sujet devient technique il faut chercher l'information dans la datasheet du micro.

Pour connaître le nombre de cycles d'horloge système (celle du quartz, soit ici 16MHz) que prend une "action, ou un groupe d'action" il y a les timers.
Le timer 0 est utilisé par les fonctions arduino il est prérable d'utiliser le timer 2.
Avec un pré-scaler configuré à 1, le timer compte à la fréquence systèma. La lecture du registre TCNT2 donnera directement le nombre de cycle horloge système.
A noter que le registre TCNT2 peut être mis à 0 à n'importe quel moment ce qui règle tous les problèmes dus au débordement du compteur, dans la limite de 255 cycles (timer 8 bits) , sinon il y a le timer 1 qui est 16 bits