Bonjour,
Je serais heureux de recevoir de l'aide pour devenir capable de bien choisir une carte, selon ses caractéristiques ET mes besoins propres ... aujourd'hui c'est au petit bonheur la chance !
Pour concrétiser rapidement ce qui a amené ce besoin : après être passé par différents matériels et configurations, mon MCU principal, gestionnaire, est aujourd'hui un Tennsy 3.5. Il est sollicité par beaucoup de tâches et s'en sort fort bien mais prend juste beaucoup de temps pour les communications I2C, au point qu'il serait vite coincé sur un réseau de bonne taille, d'où mon souci et ma question.
Sur le site PJRC, on trouve ce tableau de benchmark :
Je suis malheureusement incapable d'en tirer un enseignement... on y voit cependant qu'un ESP32 surclasse le Tennsy 3.5 (pour 10 fois moins cher !!)
Ayant des ESP32, j'ai donc tenté de retrouver dans des tests simplistes cette supériorité potentielle mais ça n'est pas sauf exception ce qui en ressort. (CPU speed sur : Teensy 120 / ESP 80)
Faudrait-il encore que ces tests aient un minimum de validité... un benchmark rigoureux est probablement une discipline, un art, à part entière...
Il doit néanmoins exister des critères élémentaires pour dégrossir la question ?
Donc grand merci par avance pour toute réponse.
Voici le code des tests perso avec les résultats :
/* POUR TESTS DE PERF */
uint16_t count = 0;
uint32_t timerTests = 0;
void setup() {
Serial.begin(115200);
delay(100);
}
void loop() {
for (int f=0; f<1000; f++) {
/* test calculs*/
float sqr = sqrt(f); /* resultat TEENSY : 773 Hz / resultat ESP32 : 244 Hz */
/* test IO */
// digitalWrite(4, HIGH); /* resultat TEENSY : 1390 Hz / resultat ESP32 : 4074 Hz */
// digitalWrite(4, LOW);
/* IO rapide - TENNSY 3.5 */ /*resultat TEENSY : 19633 Hz */
// digitalWriteFast(4, HIGH);
// digitalWriteFast(4, LOW);
/* IO rapide - ESP32 */ /* resultat ESP32: 9384 Hz */
// GPIO.out_w1ts = ((uint32_t)1 << 4); // HIGH
// GPIO.out_w1tc = ((uint32_t)1 << 4); // LOW
}
count++;
if (millis()-timerTests >= 3000) {
Serial.printf("%u Hz \n", count/((millis()-timerTests)/1000));
timerTests = millis();
count = 0;
}
}
cordialement