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?
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?
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.
Tommy56:
Wenn man das doch tut, dann sollte man an der Stelle auch gleich die passende twi-Funktion mit aufrufen.
HTML-Fan:
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?
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.
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.
Was meinst Du mit Quartzfrequenz ändern? Einen anderen Quartz einbauen?
Dann stimmen alle zeitabhängigen Sachen (Serial, I2C,millis(), delay(), ...) nicht mehr. Das würde ich nicht empfehlen.
Bei den AVR kannst Du mit den Fuses noch was anpassen aber ansonsten ist Wegwerfen billiger.
Na dass die CPU schneller läuft. Die zeitabhängigen Werte werden angepasst.
Wenn Du das unbedingt brauchst, ok, ansonsten ist es grundlegend störanfälliger.