Parlons Arduino > Composants

Benchmark MCU

<< < (3/3)

Dominique:

--- Citation de: simontpellier le janvier 20, 2022, 04:13:51 pm ---Je viens (seulement) de découvrir la nouvelle "portée" d' Arduino NANO, les officielles. Avec déjà des variantes à ne plus compter..

--- Fin de citation ---

Avez-vous des exemples et des références concrètes sur les Nano Every, leur comparaison avec les Nano 328?

Jean-Luc:

--- Citation de: simontpellier le janvier 20, 2022, 04:13:51 pm ---( Peut-être mon programme fait-il en effet de l'attente active ? J'avoue ne pas savoir ce que c'est mais je soupçonnais quelque chose de ce genre.

--- Fin de citation ---

C'est simple. l'I2C fonctionne à 400kHz. Envoyer un octet à un périphérique nécessite ~16 bits, soit 40µs. Si le processeur doit envoyer plusieurs fois un octet, il doit attendre que le précédent soit parti du registre I2C. Pour cela il teste en boucle un bit d'état de l'I2C qui indique sa disponibilité. Pendant tout ce temps le CPU ne fait rien d'autre que d'attendre l'I2C. C'est ce qu'on appelle une attente active. Ça se passe à l'intérieur de la bibliothèque SSD1306.

Pour résoudre le problème, on peut

* faire une bibliothèque qui permet au programme de tester si l'I2C est libre et s'il ne l'est pas de faire autre chose. Ça revient à faire du multitâches à la main, c'est à la charge du programmeur et c'est pas drôle.
* faire une bibliothèque qui gère un tampon d'octets à envoyer à l'I2C et qui effectue le transfert sur interruption « I2C dispo »
* Le top : dégotter une bibliothèque qui utilise le DMA du Teensy 3.5 pour gérer par matériel un transfert mémoire vers l'I2C de manière autonome et pendant ce temps là le CPU fait autre chose. 

jeanmi67:
 
Bonjour,


--- Citation de: Dominique le janvier 20, 2022, 08:58:40 pm ---Avez-vous des exemples et des références concrètes sur les Nano Every, leur comparaison avec les Nano 328?

--- Fin de citation ---

Un élément de réponse...
https://socialcompare.com/fr/live/arduino-nano-every,arduino-nano

Jean-Michel

AmadeusHF:
Le nano every utilise un ATMEGA 4809 ce qui fait qu'on a 6 Ko de RAM au lieu de 2 Ko un fonctionnement "MEGA"....il faut utiliser un kit de base différent de celui du 328 pour compiler. La conséquence pouvant être que certaines librairies ne compilent pas.

Nous utilisons son petit frère le 4808 (32 broches au lieu de 48) sur nos rampes d'éclairage et décodeurs de loco. Le surplus de RAM est une bénédiction : ça permet une bien meilleur efficacité notamment de la partie décodage de flux, en autorisant un buffering que le 328 a du mal à supporter : entre la pile, les variables des 16 à 19 canaux d'éclairage et leurs animations...le 328 sature.

A noter que, avec son boitier de 48 broches, le 4809 du NANO EVERY propose un timer "B" de plus que le 4808.
Les AVR64 DA et DB, leurs successeurs, vont encore un peu plus loin en augmentant la fréquence maximale de 20 Mhz à 24 (mais souvent on restera sur 16 Mhz pour avoir la compatibilité avec beaucoup de bibliothèques !) et peuvent pousser jusqu'à 7 timers de trois types (A, B et C)

Dans tous les cas, le développement "Arduino" avec ces CPU ne pose pas de soucis particulier, surtout pour un usage courant. Et dès qu'on veut faire un peu plus que le tout venant, le pack MegaCoreX de MCUDude permet de s'affranchir des limites de l'offre de base Arduino et d'aller un peu plus loin en finesse.

L'équivalent n'existe pas encore à ma connaissance pour les AVR64...ce qui m'amènera probablement à faire le portage puisque nous allons utiliser ces CPU très bientot.

Navigation

[0] Index des messages

[*] Page précédente

Utiliser la version classique