question de perception du temps...

l’atmega 328p de la uno est cadencé a 16Mhz.

donc sa veut dire si je ne me trompe pas que 16x106 Etat haut et bas vont être exécuté en 1sec

vu que si je simplifie au maximum selon la logique booléene mon atmel contiendrais une quantité faramineuse de porte de toute sorte

maintenant je programme le blink en exemple

et que je retire le delay combien d’implusion ma carte va fournire ?

la question en fait est la suivante la cadence indique t’elle le nombre de fois que le programme de taille B (variable du nombre de byte mémoire pour le programme charger… incluant le void setup, loop, et biensur des void suplémentaire)peut etre execter en 1 sec ???
ou bien elle indique une autre perception d’un temps d’execution ???

Un µc ATmega8 requière environ 200 000 portes logique, ça fait du monde :wink:
(Source: résultat d'occupation d'un µc ATmega8 émulé sur plateforme FPGA)

La fréquence de cadencement du µc influe directement sur la fréquence d'horloge interne du µc.
Une instruction en assembleur ne demande pas exactement un cycle d'horloge, certaine instructions nécessite jusqu'à 9 cycles d'horloge pour s'exécuter complétement.
A partir de la fréquence du quartz il est possible de calculer la puissance théorique en MIPS (Million instruction per second) du µc.

Mais tout est relatif, le µc peut par exemple calculer 1 MIPS mais n'exécuter réellement que 100 instructions/s car les instructions utilisé demande beaucoup de cycle cpu.
De plus il n'est pas possible d'avoir une idée réaliste de la vitesse d'exécution d'un code en C en ce basant sur la valeur en MIPS du µc, en C (langage de haut niveau) le résultat en assembleur (langage bas niveau) dépend complétement du compilateur et de l'optimisation.
De même avec les µc récent possédant une PLL intégré (Phase Locked Loop) il est possible avec un quartz de 8MHz d'avoir une horloge cpu de 72MHz (exemple les STM32 comme sur les arduino-maple ou encore les chipkits/pinguino) donc pour calculer le temps d'exécution il faut ce lever de bonne heure :wink:

Quoi qu'il arrive l'horloge tourne toujours à la même fréquence, si tu retire un delay ça ne change rien, le µc va tourner exactement à la même vitesse sauf qu'au lieu de boucler en attendant que les n millisecondes se soit écoulé il va exécuter le reste du programme.

En fait je vois même pas pourquoi tu te pose ce genre de questions ... 16MHz c'est la fréquence d'horloge, point, c'est la vitesse à laquelle tourne le cpu mais ça ne donne pas "vraiment" une quelconque notion de puissance de calcul, certes plus c'est rapide mieux c'est, mais tout dépend de l'architecture, du hardware, du jeu d'instructions, ...

(Arrête moi si je fait du HS)

Salut!

Il faut savoir que certaines instructions bas-niveau prennent 1 ou 2 temps d'horloges en général (c'est à dire 1 ou 2/16 000 000).
Le langage Arduino est haut-niveau, c'est à dire qu'il utilise des fonctions bas-niveau et est optimisé pour la 'simplicité' d'utilisation; il n'est pas optimisé pour la vitesse d'exécution.

Tu pourras monter à de 'hautes' fréquences de changement d'état de broche, en utilisant la manipulation de ports et de registres.

Je t'invite à lire ce post de 68tjs, qui a testé la vitesse d'exécution en langage Arduino et en langage bas-niveau.

Au final, peu importe la valeur de cadencement du µC pour toi, sauf si tu veut développer du militaire... :slight_smile:

merci a tous les deux

Skywood donne moi du temps pour comprendre les mot abracadabrant que tu ma sortit dans ta reponse pour les comprendre. inutile de me faire une traduction Google lui va m’être utile, il faut que je comprenne aussi par moi meme ... et non tu n'est pas H.s.

shyzo je vais allé lire le post que tu m'as indiqué ...

@Skywodd

il est facile de programmer sans comprendre parfois ce qu'il ce passe..., mais etant programmeur dans un autre domaine, je sais que de mettre plusieur point du processus de programmation et fort utile quand il sagit de taper dans la performance...

Yep!

Tiens une petite question en cours de route. L’aspect logiciel ayant été évoqué. Peut on considerer que tous les élements constituant l’architecture arduino, cpu, sram, flash et bus de com tournent également à 16 Mhz ???

Je ne le pense pas, c’est par analogie avec l’informatique, avoir la capacité de traiter 1 Go/s alors que le disque dur soutient 180 Mo/s…

@+

Zoroastre.

poisson_dino:
Skywood donne moi du temps pour comprendre les mot abracadabrant que tu ma sortit dans ta reponse pour les comprendre. inutile de me faire une traduction Google lui va m’être utile, il faut que je comprenne aussi par moi meme ... et non tu n'est pas H.s.

J'ai rien "google tradé" :roll_eyes: ... Je t'ai même mis les acronymes + version complète pour que tu puisse comprendre ... c'est quoi qui te choc ? MIPS ? PLL ? ??
Je sait pas comment répondre à ton message, c'est la réponse que tu voulais ou je t'ai encore plus perdu ?
(Et pourquoi tu t' imagine que je t'ai fait une trad google ? La je comprend pas ...)

poisson_dino:
il est facile de programmer sans comprendre parfois ce qu'il ce passe..., mais etant programmeur dans un autre domaine, je sais que de mettre plusieur point du processus de programmation et fort utile quand il sagit de taper dans la performance...

Quand il s'agit de performance tu oublis arduino, tu oublis même le C, tu pars direct sur de l'assembleur ...
Arduino c'est une couche d'abstraction matérielle "user friendly", par définition le but c'est pas la performance mais la simplicité.
Le C/C++ c'est bien, mais si le but final c'est de faire un truc avec des timings à la µs prét c'est niveau assembleur que ça se passe.
Mais à pars pour des applications "temps réel" ou des applications spécifique comme la génération d'un signal VGA couleur je vois pas énormément de cas ou calculer le temps d'exécution en cycle cpu est intéressant/impératif ...

J'ai rien "google tradé" smiley-roll ... Je t'ai même mis les acronymes + version complète pour que tu puisse comprendre ... c'est quoi qui te choc ? MIPS ? PLL ? ??
Je sait pas comment répondre à ton message, c'est la réponse que tu voulais ou je t'ai encore plus perdu ?
(Et pourquoi tu t' imagine que je t'ai fait une trad google ? La je comprend pas ...)

C'est moi qui doit faire un trade car la terminologie malgré tes explication demeure pour encore un peu flou...

maintenant la performance...

le but c'est de tiré la performance au niveau ou tu peux la trouvé c'est la seul analogie que je peux te donnée...

Si je te donne une CNC 5axe Equipé d'un vieux calculateur Fanuc Series 16i et une autre CNC 5axe équipé d'un Calculateur Heideneim dernière génération. tu vas vite te trouvé face a un problème de programmation a cause des routine qu'inclus l'heideneim... Le heideneim qui est déjà orienté très utilisateur contient un tas monstrueux de sous routine de calcul te permutants de programmer sans même te soucier de comment tu as obtenu ton résultat... Mais parce que justement tu auras une excellant connaissance des performance et des faisabilité du fanuc tu seras allé tiré justement les information de la machine et tu pourras égalé le heideneim pourtant plus simple plus facile plus donc fainéant...

Voila la question que j'aurais du posé :

j'ai fais une petite experience avec mon gamin sur le spectre lumineux ... un potar la carte arduino led RGB et les resistance...

le but expliqué par le visuel que la couleur blanche de la télévision etait obtenu par 3 couleur RGB de la pour nous adulte on le sait ... enfin presque tous le monde...

et je me suis demandé

combien de led je pourrais alummé avec une frequence suffisante sans que l'oeil ne percoive le clignotement... le but n'est pas de trouvé comment je vais peut etre faire pour eclairer disons 300 led ni combien je vais tiré d'ampere non c'est de comprendre la relation entre la frequence de l'horloge et les etat au port pin ...

et si tu veux savoir le blink au comptage a obtenu un resultat de 105266 etat haut et bas en 2s de mesure...