[beendet] I²C beschleunigen am ESP8266 / NodeMCU

Also du sagst,

Tommy56:
dass die CPU schneller läuft

, wenn man den Werkzeuge/Crystal Frequency-Wert erhöht. Aber ich dachte, dass man den Wert

Tommy56:
Werkzeuge --> CPU-Frequency

ändern muss, um die CPU-Frequenz zu ändern. Wird der eine Wert mit dem Anderen multipliziert?

Ich habe auch CPU-Frequency geschrieben. Von Crystal-Frequency sehe ich bei den ESP8266 nichts.
Die hast Du plötzlich ins Spiel gebracht. Warum?

Gruß Tommy

Die dürfte bei Generic ESP8266 Module mit dabei sein.
Weil ich gerne jenes Programm mit irrelevanter Funktion beschleunigen möchte.

Keine Ahnung, habe ich nicht und damit noch nie verwendet.
Ich nutze D1 mini und D1 mini pro.

Es könnte aber sein, dass Du da beim Rumspielen den ESP zum Elektronikschrott beförderst.
Da solltest Du vorher genau wissen, was es wie bewirkt.

Gruß Tommy

Was der Grund ist, warum ich frage.

Naja, werde mich wohl mit 50 FPS begnügen müssen.

50 Fps aus MC sind schon ein sehr guter Wert. Wenn Dir das nicht genügt, musst Du mehr Rechenpower nutzen, z.B. RasPi 4.

Gruß Tommy

Das Programm ist, ich löse das große und spannende Rätsel auf, ein Programm, dass auf einem OLED-I²C-Screen das Adafruit-Logo ein- und ausblendet. Und das will ich mit einem ESP auf 60 FPS hochkriegen, was mit meinem Arduino Due und sogar mit dem Uno geht. Indem man halt die Taktfrequenz auf 1000000 Bit/s und aufwärts stellt. Da kann man wunderbar Animationen aus SD-Karten abspielen, denn bei einer hohen Rate dauert es nur 10 ms und der Bildschirm ist aktualisiert. Beim ESP dagegen dauert es mindestens 18 - 19 ms, plus 2ms Rechenzeit für die Zufallsfunktion, de über den Buffer huscht. Und das ist doof! Ich fürchte, ich muss mir SPI-Displays holen.

Ich habe noch nie ein ESP8266 Modul gehabt, wohl aber ATtiny85, daher mische ich mich mal spekulativ ein.

  • Crystal Frequency: Das dürfte die Frequenz des Quarzes/Resonators sein. "The crystal frequency ranges from 24 MHz to 52 MHz."
  • CPU-Frequency: Das dürfte die Prozessorgeschwindigkeit sein. "The ESP8266EX integrates a Tensilica L106 32-bit RISC processor, which ... reaches a maximum clock speed of 160 MHz."
  • I2C: Hier hängt es vom Display ab, welche Geschwindigkeit möglich ist. Ein I2C-Scanner wie MultiSpeed I2C Scanner gibt Dir Auskunft. Auch 1000 kHz könnten möglich sein. Nach meiner Einschätzung dürfte überwiegend dieser Parameter für die Anzeigegeschwindigkeit verantwortlich sein.

Hoffentlich hilft es Dir :slight_smile:

Beim ESP ist das was anderes. Da wird eine Art delay verwendet, um beim I²C bis zum nächsten Clock-Takt zu warten. Und wenn dieses delay auf 1 gesetzt ist, was durch einstellen der Clock-Frequenz via setClock bei mir der Fall ist, was eine Frequenz von ca. 700kHz erzeugt. Und 1 ist der nidrigste, sinnige Wert. Mein Problem ist, dass der ESP an sich nicht schneller kann. Das Display schafft auch 1MHz, vielleicht sogar 1.5MHz, da bin ich mir nicht sicher, ein anderes, älteres Display von mir, was ich bei einem anderen Händler erworben habe, sogar 2Mhz, aber der ESP halt nur diese 700kHz. Und die wollte ich erhöhen, um unter die 1613ms - 2ms zu kommen, denn dann hätte ich 60 FPS.

Im Datenblatt lese ich: "I2C interface functionality can be realized via software programming, and the clock frequency is 100 kHz at maximum."

Dann doch besser SPI: "SPI mode can be implemented via software programming. The clock frequency is 80 MHz at maximum when working as a master ..."

Das maximum bei I²C ist höher, wie gesagt bei 700kHz bei 160MHz CPU. Und bei SPI gilt für viele µCs: Maximale Geschwindigkeit = CPU-Takt / 2. Und da der CPU-takt auf 160MHz gesetzt werden kann, macht das Sinn.