Bonjour,
Quel est aujourd'hui l'intéret d'entrer dans les entrailles d'un avr particulier alors de plus en plus d'utilisateur passent à des micro ARM32 ou ESP32 ?
Ce travail sur les registres des avr est très formateur pour comprendre le fonctionnement d'un microcontroleur.
Je le concède très volontiers et je l'ai fait à titre personnel à une époque où Arduino n'avait que la Uno et la Mega.
Ce travail devrait être préfacé avec une mise en garde : il ne s'applique que pour un microcontroleur particulier.
Je crains qu'un "non-encore-connaisseur" croit que c'est vrai pour tous les microcontroleurs.
Porter ce travail sur les microcontroleurs récents sera difficile. Les microcontroleurs récents sont bien plus complexes qu'un avr.
Ce travail n'est même pas applicable dirrectement sur le micro de la UNO R3 qui est le micro avr le plus répandu dans le catalogue Arduino (atmega 328p = Uno, nano, pro-mini).
La Uno n'a pas les mêmes registres ni le même nombre de timers, ni le même dombre d'interruptions que la Mega.
La lecture de la datasheet s'imposera pour transposer sur un micro 328p.
Documentation :
AVR : une datasheet, avec des exemples en C, de 400 à 500 pages à lire,
ARM32 ou ESP32 (qui n'est pas un ARM) ; c'est deux documents de plus de 1000 pages chacun, et sans exemples -> les auteurs partent du principe que le lecteur est un professionnel et ils ne vont pas perdre du temps à lui macher le travail.
Les fonctions delay() et micro(), comme toutes les autres fonctions du framework arduino, n'ont pas le même code sur Avr, sur ARM et sur ESP32.
Je ne suis même pas sur que le code pour un ARM-Microchip et pour un ARM-STM32 sera le même.
Ce qui est vrai pour une famille de micro sera faux pour les autres.
Les fonctions écrites par Wiring/Arduino sont très conservatrices et prévoient des contrôles en cas de "bétises utilisateur" au détriment de la performance.
Rien ne prouve qu'STMicro et/ou Espressif ne priviligient pas la performance. Selon les tests que j'ai fait sur ESP32 il n'y a pas beaucoup de différence entre digitalWrite et l'utilisation des registres. On est loin du rapport 30 sur Wiring/Arduino.
Microchip continu de livrer des atmega328p pour les anciens projets mais n'accepte plus de commandes pour les nouveaux projets.
Situation classique d'un produit dont la fin de vie est enclenchée.
Certes, il n'y a toujours pas d'annonce publique de fin de vie pour d'autres avr, il y a quand même la disparition de certains boîtiers, ce qui n'est pas bon signe.
Il y a un atmega 328P
B, mais il n'exite aucun bootloader Arduino et toujours pas d'adaptation du framework pour utiliser peinement ce micro.
Arduino a refusé d'investir du temps sur ce micro 328 P
B parce qu'Arduino avait d'autres projets.
C'est ce qui explique qu'Arduino abandonne les arv avec la nouvelle UNO R4 et des nouvelles nano.
En conclusion :
Bon article mais mise en garde nécessaire.
3 |
0 |