Hallöchen, ich schreibe Zeile um Zeile einer Steuerung und tauche dabei immer tiefer in den ESP32 ein, der ein starkes Stück Hardware ist. Beim Googlen lande ich immer wieder auf den Seiten des Herstellers und seiner API, die viele Funktionen hat, die ich bei der von Arduino nicht wiederfinde oder anders. Manches kann ich mit ESP. ... als Methode aufrufen, anderes hat einen ganz eigenen Namen oder es existiert nicht. Kann mir jemand sagen wie man diese beiden Welten vereinen kann? Die von ESPRESSIV scheint mir doch einen sehr viel detailierteren Zugriff zu erlauben. Ähnlich wie beim STM32F103, wo man mit Embitz alles erreichen und rausholen kann, in der Arduino Welt aber kaum mal einen Timer ansprechen kann, geschweige denn die vielen Optionen der ADC nutzen. Fragen: Lässt sich das ESPRESSIV Interface irgendwie einbinden? CPU Taktwechsel 80 auf 260Mhz und zurück, gibt es da Probleme, wenn man den bei rechenintensiven Routinen wo ich Standardabweichungen usw berechne hochschraubt? Kommt da was aus dem Takt intern? Gibt es eine Semaphore Struktur wenn ich das RTOS benutze unter Arduino um Kollisionen zu vermeiden? Ich würde gern alle Berechnungen für Messreihen die ständig laufen um zb Mittelwerte von Tabellen zu bilden, Varianz und Sigma auf den Core 0 auslagern, der aber gemeinsamen Speicher mit Core 1 benutzt. Da muss ich abriegeln. Muss ich das selbst machen oder hat der Hardware die das regelt? RAM ist ja gleich für beide. Gruss, Thorsten
Der Arduino Core baut auf dem IDF von Espressif (mit f nicht v) auf. Dieses wurde in den Vergangenen Jahren fortlaufend weiter entwickelt, so dass du darauf achten musst, die richtige Version der Doku zu benutzen. Bedenke, dass man nicht beliebig alle Funktionen der beiden Frameworks durcheinander verwenden kann. Ich würde dir empfehlen, dich für eine der beiden Welten zu entscheiden und dann dabei zu bleiben: Arduino oder IDF. Arduino ist dir offenbar zu beschränkt, also sollte die Entscheidung leicht fallen.
Stefan F. schrieb: > Arduino ist dir offenbar zu beschränkt, also sollte die > Entscheidung leicht fallen. Bietet die hauseigene SDK auch den gleichen Luxus was Uploads, debuggen usw. angeht?
Thorsten M. schrieb: > Bietet die hauseigene SDK auch den gleichen Luxus was Uploads, debuggen > usw. angeht? Selbstverständlich. Nur halt nicht auf dem Kindischen-Niveau der Arduino IDE. Ich dachte du hast die Doku bereits gefunden!? https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/jtag-debugging/index.html
Thorsten M. >Ähnlich wie beim STM32F103, wo man mit Embitz alles erreichen >und rausholen kann, in der Arduino Welt aber kaum mal einen Timer >ansprechen kann, geschweige denn die vielen Optionen der ADC nutzen. Da liegst du ziemlich falsch: https://github.com/stm32duino/wiki/wiki/HardwareTimer-library Man kann auch alle Hardwarefunktionen der STM-HAL benutzen (wenn man's kann).
Na dann koppel mal den DMA controller an einen ADC der zirkular tastet und installiere mal einen Timer CC Interrupt der den DMA anstoesst in Deiner bunten Arduino Kindergarten Welt.,.
Arduino (STMDuino) verwendet HAL, also kann man auch direkt HAL/LL Code in Arduino verwenden, auch Cube generierten. Wenn man es Anwenderfreundlich machen will, dann baut man daraus eine C++ Komponente und fertig. Verbietet keiner.
Thorsten M. schrieb: > Beim > Googlen lande ich immer wieder auf den Seiten des Herstellers und seiner > API, die viele Funktionen hat, die ich bei der von Arduino nicht > wiederfinde oder anders. Auch wenn unser Stefanus wieder Arduino Bashing betreibt... Es liegt halt in seinem Wesen. Je weniger Ahnung er von einem Thema hat desto lauter und dümmer das Getrööte Die ganze API des Herstellers steht dir in Arduino zur Verfühgung. Thorsten M. schrieb: > Kann mir jemand sagen wie man diese beiden Welten vereinen kann? Die betreffende *.h Datei einbinden, dann sind auch die API Funktionen da. Das gilt für alle µC und ihre Libs. Warum sollte das beim ESP anders sein? Wenn du konkret werden würdest, könnte man dir evtl. eine konkrete Antwort liefern. Aber so ist das nur Gejammere.
Thorsten M. schrieb: > Lässt sich das ESPRESSIV Interface irgendwie einbinden? EAF schrieb: > Die ganze API des Herstellers steht dir in Arduino zur Verfühgung. Korrekt. du kannst in Arduino direkt die Espressif IDF funktionen nutzen. Oder auch gern direkt auf den Registern arbeiten. Mache ich selber genauso. Sensor abfragen über Arduino und RMT Peripheral über IDF funktionen. Das einzige was man beachten sollte: Im Arduino Core ist die IDF Version meistens eine Version älter. Sprich: es wird immer erst die IDF aktualisiert und danach der Arduino Core nachgezogen.
EAF schrieb: > Je weniger Ahnung er von einem Thema hat > desto lauter und dümmer das Getrööte War meine Antwort falsch?
EAF schrieb: > Wenn du konkret werden würdest, könnte man dir evtl. eine konkrete > Antwort liefern. > Aber so ist das nur Gejammere. Wie bindet man die API denn genau ein? Ich habe nur ESP.h drin und einiges mit wifiserver.h usw. Das mit Registern lassen wir mal schön sein ... das behalte ich AVR und PIC vor.
Thorsten M. schrieb: > Wie bindet man die API denn genau ein? Warum wirst du nicht konkret? Was willst du nutzen? Wo klemmt es? EAF schrieb: > Die betreffende *.h Datei einbinden, dann sind auch die API Funktionen > da. > Das gilt für alle µC und ihre Libs. > Warum sollte das beim ESP anders sein? Es gibt gefühlt 100 Dateien, welche du da einbinden könntest. Welche davon nötig ist, kannst nur du wissen.
EAF schrieb: > Es gibt gefühlt 100 Dateien, welche du da einbinden könntest. > Welche davon nötig ist, kannst nur du wissen. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/index.html Ok, habe es gefunden... heute aber keine Zeit das zu testen.
Thorsten M. schrieb: > da steht nirgendwo was von Header Dateien Natürlich nicht auf der Übersichts-Seite. Aber auf den dort verlinkten Seiten mit den konkreten Funktionen.
Stefan F. schrieb: > Natürlich nicht auf der Übersichts-Seite. Aber auf den dort verlinkten > Seiten mit den konkreten Funktionen. Probiere es später aus. Frau macht aber grad Essen... #include <components/hal/include/hal/adc_types.h> Gibt Fehlermeldung: No such file Muss man die erst irgendwo installieren? Falls ja, kannst Du das mal beschreiben? Die install.bat bricht sofort ab. Und das ist bereits da unter /core, installiert von Arduino
Thorsten M. schrieb: > Muss man die erst irgendwo installieren? Ich habe das starke Gefühl, dass du doch besser bei dem bleiben solltest, was Arduino mitbringt. Natürlich ist der Pfad innerhalb von Arduino anders, als innerhalb des IDF. Was dachtest du denn? Es kann ja wohl nicht so schwer sein, den Pfad der Dateien herauszufinden. Ist dir wenigsten der Unterschied zwischen #include <...> und #include "..." klar? Wenn nicht, finde es heraus und finde heraus, wie du auf deinem Computer nach Dateien suchen kannst. Dann kombinierst du beides.
Stefan F. schrieb: > #include <...> > > und > > #include "..." Ja, ist mir! Heute eh nicht mehr... Familie ...
Hier ein konkretes Beispiel: https://medium.com/home-wireless/how-to-program-an-esp32-in-arduino-while-using-esp-idf-functions-90033d860f75 Wobei sich mir die Fußnägel hoch rollen, wenn ich den absoluten Pfad im #include sehe. Es wäre besser, dich von Arduino zu trennen und das Espressif SDK zu benutzen. Warum, steht dort: https://community.platformio.org/t/using-esp-idf-library-within-the-arduino-framework-esp32/17226
Stefan F. schrieb: > Es wäre besser, dich von Arduino zu trennen und das Espressif SDK zu > benutzen. Warum, steht dort: Ist alles schon da: ....AppData\Local\Arduino15\packages\DFRobot\hardware\esp32\0.2.1\tools\ sdk\esp32\include Man muss nur suchen :-)
Stefan F. schrieb: > Hier ein konkretes Beispiel: > https://medium.com/home-wireless/how-to-program-an-esp32-in-arduino-while-using-esp-idf-functions-90033d860f75 > > Wobei sich mir die Fußnägel hoch rollen, wenn ich den absoluten Pfad im > #include sehe. Völliger Unsinn! OK, ich habe keine Ahnung auf welcher Baustelle ihr buddelt.... Ich dachte es wäre irgendwas mit Arduino und ESP32.
1 | #include "C:\msys32\home\Mark\esp\esp-idf\components\esp32\include\esp_wifi.h" |
Solche Pfade sind blödsinnig. Und so hat es auszusehen:
1 | #include "esp_wifi.h" |
Fertig! Die Pfade zu den Includes werden in der Plattformdefinition schon korrekt gesetzt. Vergleichbar, wie man es in einem Makefile tun würde. Und Stefan, wenn du da nicht selber drauf kommst, ist es schade. Unterstützt allerdings nicht deine Argumentation, sondern du blamiert dich eher damit. Zeigst dich Ahnungslos. Ich behaupte, unterstelle dir, dass du absichtlich solche schrägen Artikel suchst. Was du davon hast, weiß ich nicht. Was fühlst du dann? Verstehe mich richtig: Das Arduino Gedöns nutzt die IDF ganz intensiv. Es steht vollständig im Zugriff. Warum sollte man da nicht selber mit in den Pool greifen und Dinge nutzen, welche vom Arduino Framework nicht unterstützt werden?
Stefan F. schrieb: > Wobei sich mir die Fußnägel hoch rollen, wenn ich den absoluten Pfad im > #include sehe. EAF schrieb: > Und Stefan, wenn du da nicht selber drauf kommst, ist es schade. > Unterstützt allerdings nicht deine Argumentation, sondern du blamiert > dich eher damit. > Zeigst dich Ahnungslos. > Ich behaupte, unterstelle dir, dass du absichtlich solche schrägen > Artikel suchst. > Was du davon hast, weiß ich nicht. > Was fühlst du dann? Was stimmt nicht mir dir? Vielleicht kannst du dem TO helfen, indem du ihm ein Beispiel gibtst, wie man diese Header includiert: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/index.html Nehmen wir mal als konkretes Beispiel "components/driver/pcnt/include/driver/pulse_cnt.h". Wie inkludiert man diese in einem Arduino sketch, ohne den Pfad absolut anzugeben (denn das wollen wir beide ja nicht).
Stefan F. schrieb: > Was stimmt nicht mir dir? Das frage ich mich auch ... manche scheinen hier massive Defizite in der Diskussionskultur zu haben. Deine Homepage ist schon klasse.
Stefan F. schrieb: > Was stimmt nicht mir dir? Das frage ich mich auch ... manche scheinen hier massive Defizite in der Diskussionskultur zu haben. Deine Homepage ist schon klasse. Das Einbinden ist am einfachsten, in dem man das Ordnerwerk an einen Ort kopiert, den Arduino beim Start scannt. Dann sind die Header ohne alles drumherum einbindbar. Ich habe es unter cores in appdata kopiert.
Beitrag #7344838 wurde von einem Moderator gelöscht.
Thorsten, ich möchte nochmal darauf hinweisen, dass nicht alle IDF Funktionen im Arduino Core zur Verfügung stehen, und dass einige (je nach dem was du machst) mit dem Arduino Framework kollidieren. Wenn dir Arduino zu eingeschränkt ist, solltest du dir wirklich mal das SDK von Espressif angucken. Da hast du dann auch den vollwertigen Debuggen mit dabei, nach dem du gefragt hast.
Thorsten M. schrieb: > Das Einbinden ist am einfachsten, in dem man das Ordnerwerk an einen Ort > kopiert, den Arduino beim Start scannt. Das hört sich allerdings nach üblem Pfusch und Garantie für Seiteneffekte an. Man übergeht das Buildsystem und auch die Versionierung die gar nicht mal so schlecht ist.
Stefan F. schrieb: > Nehmen wir mal als konkretes Beispiel > "components/driver/pcnt/include/driver/pulse_cnt.h". Wie inkludiert man Es wurde schon gesagt: John P. schrieb: > Das einzige was man beachten sollte: Im Arduino Core ist die IDF Version > meistens eine Version älter. > Sprich: es wird immer erst die IDF aktualisiert und danach der Arduino > Core nachgezogen. Klarer: Im Arduino ESP32 Paket steckt IDF V4.4 Du zeigst die Doku von V5.0 In der Version V4.4 gibt es diese Header Datei nicht. Also kann ich dir auch nicht zeigen, wie das geht. Frage mich nach dem nächsten Update auf IDF V5.0 nochmal.... ------------ Und damit du nicht dumm sterben musst, auch in der V4.4 finden sich schon die Grundzüge des pcnt! Allerdings an einem anderen Ort, unter anderem Namen. Hier der Include einer der benötigten Dateien,, zum selber testen. Die anderen Dateien findest du selber.
1 | #include "hal/pcnt_hal.h" |
am core mit IDF 5.x wird offensichtlich gearbeitet, man könnte ja z.B. diesen Branch ausprobieren: https://github.com/espressif/arduino-esp32/tree/esp-idf-v5.1-libs
EAF schrieb: > Im Arduino ESP32 Paket steckt IDF V4.4 > Du zeigst die Doku von V5.0 Na also geht doch. Mit fachlichen Infos ohne persönliche Angriffe. Damit kann der Fragende etwas anfangen. Die "pulse_cnt.h" hatte ich übrigens nicht absichtlich gewählt, um dich in die Pfanne zu hauen, oder so. Das war einfach meine erstbeste Wahl, nachdem der TO schrieb, dass er Peripheriefunktionen nutzen will, die das Arduino Framnework ihm nicht direkt zugänglich macht. Die ersten Zeilen der Beschreibung klangen für mich nach einem passenden Fall.
Stefan F. schrieb: > Die "pulse_cnt.h" hatte ich übrigens nicht absichtlich gewählt, um dich > in die Pfanne zu hauen, oder so. Da gehe ich aber schwer von aus! Denn, wenn dein Geist so "wach" wäre, wie du glaubst, dann muss dir sowas doch selber auffallen. Für so intelligent möchte ich dich gerne halten! Ist es aber nicht, wenn ich dir glaube... Aber selbst wenn ich annehme, dass du solche Fallen unabsichtlich stellst... Überlege selber, welche Böcke du sonst noch so schießt, ohne es zu merken. (kannst du nicht, denn wie solltest du etwas merken, was außerhalb deines Horizonts liegt) Bedenke, dabei, dass wir "Außenstehende" das vermutlich eher und deutlicher bemerken, als du selber. Ich schätze mal, dieser Vorgang hier macht einigermaßen klar, wenigstens einen Teilaspekt, wie und warum du manchen Leuten fürchterlich auf den Keks gehst. U.a. mir. Dein fortgesetztes Arduino Bashing verbessert die Lage auch nicht wirklich. 3 mal in diesem Thread, oder schon 5 mal? Gebetsmühlenartig.... --------------------- Stefan F. schrieb: > Da hast du dann auch den vollwertigen > Debuggen mit dabei Mit der aktuellen Arduino IDE ist auch der Debugger in die Arduinowelt eingezogen. Für ARM geht da schon einiges, für ESP besteht Hoffnung.
Hallo Thorsten, bitte habe Verständnis, dass ich mich auf dieser Diskussion zurück ziehe. Ich habe keine Lust mehr, mich weiterhin von EAF so beschimpfen zu lassen. Du kannst ihn ja fragen, wenn du weitere Hilfe brauchst. Mach's gut.
Stefan F. schrieb: > Du kannst ihn ja fragen, wenn du weitere Hilfe brauchst. > Mach's gut. Ich denke nicht, dass ich hier noch viel fragen werde in diesem offensichtlich unmoderierten Forum, wo einige Wenige, meist nicht angemeldete Schreiber ihre narzisstischen Tendenzen frei ausleben um die Lufthoheit zu erwerben und kein Moderator sich berufen fühlt einzugreifen. Danke für Deine Hilfe, ich weiss Bescheid und komme klar.
J. S. schrieb: > Man übergeht das Buildsystem und auch die > Versionierung die gar nicht mal so schlecht ist. Und warum schreibst Du dann nicht, wie es richtig geht? Warum gibt es in der Arduino Welt den Befehl esp_random() nicht, der die Hardware benutzt? Und wie bindet man ihn ein, dass es ihn gibt?
Thorsten M. schrieb: > Warum gibt es in der Arduino Welt den Befehl esp_random() nicht, der die > Hardware benutzt? Und wie bindet man ihn ein, dass es ihn gibt? Schon mehrfach gesagt: Binde die richtige Headerdatei ein, dann geht das.
1 | #include "esp_random.h" |
2 | |
3 | |
4 | #include <Streaming.h> // die Lib findest du selber ;-) |
5 | Print &cout = Serial; // cout Emulation für "Arme" |
6 | |
7 | void setup() |
8 | {
|
9 | Serial.begin(9600); |
10 | cout << esp_random() << endl; |
11 | }
|
12 | |
13 | void loop() |
14 | {
|
15 | |
16 | }
|
Compiliert, aber ungetestet, da gerade kein ESP zur Hand
Thorsten M. schrieb: > #include <components/hal/include/hal/adc_types.h> > > Gibt Fehlermeldung: No such file > > Muss man die erst irgendwo installieren? Nein!
1 | #include "hal/adc_types.h" |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.