Go Down

Topic: [beendet] I²C beschleunigen am ESP8266 / NodeMCU (Read 737 times) previous topic - next topic

HTML-Fan

Nov 04, 2019, 05:23 pm Last Edit: Nov 05, 2019, 02:27 pm by HTML-Fan
Hallo!

Ich habe mich jetzt mal an die ESPs gewagt und ich glaube, ich werde nie wieder einen Arduino kaufen. Die Teile sind sooo toll! Aber einen Nachteil, soviel konnte ich herausfinden, haben sie: Die I²C-Kommunikation wird nicht automatisch von der Hardware geregelt, sondern muss irgendwie manuell gesteuert werden. Daher ist die maximale Geschwindigkeit 400000 Bit/s bei 80Mhz und 600000 Bit/s bei 160Mhz. Aber müsste es nicht gehen, dass bei 160Mhz die Geschwindigkeit auf 800000 Bit/s hochgefahren werden kann?
Ich habe im Pfad C:\Users\Habedidai\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266 mir verschiedene Dateien für I²C angesehen und bin dann auf die Funktion gestoßen, die die Geschwindigkeit steuert: twi_setClock(unsignet int freq) in der Datei twi.h! Aber ich habe gesucht und gesucht und keine twi.cpp gefunden. Nichts! Wo ist diese Datei? Kann man diese Geschwindigkeitsbegrenzung irgendwie sonst entfernen?

Gruß
HTML-Fan

Tommy56

Die heißt core_esp8266_si2c.c

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Gut, das erklärt einiges. Aber ich frage mich eins: In dieser Datei überprüft der Kompiler, ob 160Mhz aktiviert sind. Allerdings kann man ja diese CPU-Frequenz während der Laufzeit ändern. Was passiert dann? Wird die Geschwindigkeit verdoppelt?

Tommy56

Warum sollte man das tun, auch wenn man das kann?

Wenn man das doch tut, dann sollte man an der Stelle auch gleich die passende twi-Funktion mit aufrufen.
Schon passt alles wieder. Ansonsten ausprobieren.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Weil momentan mein Programm, dessen Funktion irrelevant ist, während der Laufzeit auf 160mhz umschaltet.

Tommy56

#5
Nov 04, 2019, 07:48 pm Last Edit: Nov 04, 2019, 07:49 pm by Tommy56
Dann habe ich Dir den Weg ja auch gezeigt (ungetestet, nur gefolgert).

Gruß Tommy

Edit: Gibt es einen plausiblen Grund, nicht von Anfang an auf 160 zu fahren?
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

#6
Nov 04, 2019, 07:50 pm Last Edit: Nov 04, 2019, 07:51 pm by HTML-Fan
Wenn man das doch tut, dann sollte man an der Stelle auch gleich die passende twi-Funktion mit aufrufen.
In dieser Datei überprüft der Kompiler, ob 160Mhz aktiviert sind.
Da der Kompiler da mit #if F_CPU == FCPU80 reingeschaltet ist, werden ganz andere Werte in dem Programm eingesetzt.
Wo kann man die CPU-Geschwindigkeit am PC einstellen?

Tommy56

Dann musst Du wohl die Funktion so umbauen, dass sie zur Laufzeit den Prozessortakt auswertet oder den halt konstant halten.
Einen Tod musst Du sterben.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Edit: Gibt es einen plausiblen Grund, nicht von Anfang an auf 160 zu fahren?
Wie kann man das denn einstellen?

Tommy56

In der IDE. Werkzeuge --> CPU-Frequency

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Oh ...

Und warum ist das dann überhaupt eine Option, den ESp langsamer einzustellen? Der gezogene Strom ist fast identisch, was ist denn dann der Vorteil?

Tommy56

Wärme? Störstrahlung? ...

Ich fahre meine alle mit 80, weil ich noch nicht festgestellt habe, das da was zu lahm wäre.
Nicht alles was machbar ist, ist auch sinnvoll. Das hängt aber von der Anwendung ab.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Noch eine Frage, hat kaum was mit dem Thema zu tun: Was bedeutet Crystal Frequency?

Tommy56

#13
Nov 04, 2019, 08:16 pm Last Edit: Nov 04, 2019, 08:17 pm by Tommy56
Quartzfrequenz - es kann aber auch im weiteren Sinne ein keramischer Resonator gemeint sein.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Okay. Anders.
Wenn ich die Quartzfrequenz ändere, was passiert dann? Läuft alles schneller oder langsamer, sauberer oder unzuverlässiger?

Go Up