Comment connaître les limites en vitesse du microcontrôleur ?

Bonjour,

un énorme +1 pour l'optimisation du code.
L'IDE arduino est très pratique, mais certaines de ses fonctions ne sont pas du tout optimisées pour la vitesse, mais plutôt pour la réutilisation facile du code.
Tu peut très bien "taper" directement dans les registres dans tes programmes arduino. Rien que le temps passé pour faire changer 1 sortie d’état et drastiquement changé.
De même tu peut aussi intégrer du code assembleur direct a l’intérieur de la structure principale de ton code en C.

60 octets par secondes, c'est juste super lent pour l'UART de l'arduino. A 9600 bauds, sa vitesse minimum / 11 bit par "coup de transmission" (1 bit de start, 1 stop, 1 parité + 8 bits de données) tu arrive a 872 octets par secondes. A 31250 bauds tu va un peu plus de 3 fois plus vite.
De plus c'est géré en hardware, avec un petit buffer et tout, laissant au CPU du temps pour faire sa petite cuisine pendant que l'UART se charge d'envoyer le paté. Ça ne ralenti presque pas ton code tant que le buffer n'est pas saturé.

Le temps d’acquisition d'une entrée ana je ne m'en rapelle plus exactement mais il est de l'ordre de quelques micro secondes il me semble. De plus sur les PIC je sait qu'on peut le raccourcir a condition de sacrifier une partie de la régulation. Sur l'arduino je pense qu'on peut faire la même chose, a condition de taper dans les registres au lieu d'utiliser les fonctions toutes faites.

Si tu peut modifie ton code pour allumer la led pendant que tu fait des trucs, et éteins la quand tu attends et que tu ne fait rien.
Avec un coup d'oscilloscope tu pourra mesurer avec précision le temps qu'il te reste disponible.
Rien que visuellement tu sera surpris de la voir briller aussi peu, voire pas du tout si ton code est optimisé a fond.