esp32 CPU à 80MHz quelle bibliothèque ?

Bonjour,

j'ai trois questions, quelle bibliothèque utiliser pour faire tourner l'esp32 à 80MHz au lieu de 240 (recommandé quand on utilise un HX711) ?

Pour l'instant, j'utilise la bibliothèque "soc/rtc.h" sans souci mais je n'ai pas vérifié si effectivement la fréquence était 80 MHz. J'ai lu sur un forum qu'un utilisateur avait constaté qu'après un deepsleep, le CPU avait repris sa fréquence d'origine c.a.d. 240 MHz.

Je teste actuellement une autre bibliothèque que certains recommandent : "esp32-hal-cpu.h".

Quelle est votre avis ?

Enfin, dans les menus de l'IDE arduino, dans "outil" j'ai une ligne "CPU frequency" suffit-il de choisir 80MHz pour que le problème soit réglé sans passer par des bibliothèques supplémentaires ?

Ma troisième question est quelle est la commande pour afficher la fréquence de fonctionnement ?

Cordialement

Enfin, dans les menus de l'IDE arduino, dans "outil" j'ai une ligne "CPU frequency" suffit-il de choisir 80MHz pour que le problème soit réglé sans passer par des bibliothèques supplémentaires ?

Jamais essayé mais je suppose que oui.

Ma troisième question est quelle est la commande pour afficher la fréquence de fonctionnement ?

uint32_t getCpuFreqMHz();

merci pour la réponse rapide.

Je pensais que c'était cette commande, elle est d'ailleurs utilisée dans la bibliothèque "esp32-hal-cpu.h".

Je vais tester.

Bonsoir,

après quelques lectures, il semble que la bibliothèque "esp32-hal-cpu.h" soit plutôt recommandée.
Donc voilà les cas de figure que j'ai testés :

1 bibliothèque "esp32-hal-cpu.h"

  • compilation avec fréquence CPU dans l'IDE : 240MHz
  • ajout des lignes suivantes dans le setup() :
setCpuFrequencyMhz(80);
int cpuSpeed = getCpuFrequencyMhz();
Serial.print("Frequence du CPU :");
Serial.println(cpuSpeed);

La fréquence indiquée dans le moniteur est bien 80 MHz mais avec beaucoup de signes incompréhensibles à chaque redémarrage.

2 Compilation avec fréquence CPU dans l'IDE : 80MHz

  • suppression de la bibliothèque "esp32-hal-cpu.h"
  • ajout des lignes suivantes dans le setup() :
int cpuSpeed = getCpuFrequencyMhz();
Serial.print("Frequence du CPU :");
Serial.println(cpuSpeed);

C'est encore plus simple mais en contradiction avec plusieurs commentaires lus sur la toile qui doutent que le changement dans le menu de l'IDE soit pris en compte. Les signes non significatifs sont toujours là.

Dans mon cas, le changement de fréquence est bien conservé à chaque réveil. Mon problème reste cette bordée de signes illisibles qui polluent l'affichage. Ça n'affecte pas le fonctionnement de mon dispositif ; simplement ce n'est pas satisfaisant. Je ne pense pas que cela vienne de la mise en sommeil car ce comportement apparaît de manière aléatoire même lors du premier démarrage.

Avez-vous une idée sur l'origine de ces anomalies ?

Bonjour

Meci du retour qui démontre ne fois de plus qu'il ne faut pas prendre pour argent comptant les commentaires trouvés ici ou là et que seuls les tests sont probants.

Je note qu'il est simple d'abaisser la fréquence de fonctionnement, intéressant pour certaines applications en vue d'augmenter l'autonomie

les messages troublants au démarrage sont sans liés au fait que le bootloader ne corrige pas sont débit (message de démarrage) en fonction de la fréquence d'horloge choisie pour le code perso, il agit de son côté en amont du code perso.

bonjour,

dernier test avec la bibliothèque <soc/rtc.h> et la commande

rtc_clk_cpu_freq_set(RTC_CPU_FREQ_80M);

Pas de différence avec les autres solutions, la valeur de la fréquence est bien conservée. J’avoue que je vois pas la différence d’approche entre les deux méthodes de réduction de la fréquence (avec “soc/rtc.h” ou “esp32-hal-cpu.h”). J’avais cru comprendre que la méthode d’abaissement de la fréquence n’était pas la même mais je n’ai rien trouvé de très clair.

Comme il suffit de prévoir avant compilation la fréquence souhaitée dans le menu outils de l’IDE d’arduino, ce n’est pas la peine de s’embêter à ajouter une bibliothèque (sauf si on utilise sublimeText avec le pluggin deviot qui semble-til ne propose pas d’option de chgt de fréquence).

Mais c’est toujours agréable de comprendre…

Comme il suffit de prévoir avant compilation la fréquence souhaitée dans le menu outils de l'IDE d'arduino, ce n'est pas la peine de s'embêter à ajouter une bibliothèque

L'intérêt de le faire dans le code est que dans un an tu auras oublié que dans le menu de l'IDE il faut choisir 80MHz pour ce projet, à moins que tu le notes en commentaire au début du sketch.

C'est bien vrai, c'est ce que je me suis dit, le commentaire en préambule est une solution dans la mesure où on prend la peine de se relire.

Cela dit, dans ce cas précis, dès qu'on tourne à 240 MHz ça déconne sec...

Mais du coup, ta remarque me fait réfléchir.

C’est ce que je n’aime pas dans l’IDE ARDUINO.
Les options ne sont pas conservées dans le projet. Dommage …