Hallo zusammen.
Ich nutze das Pretzel Board (Arduino ATmega 328 + ESP8266 mit AT
Kommandos), um eine kleine Website per Webbrowser bereitzustellen. Die
Website liegt als const char [] = "..." und ein paar Strings als globale
Variablen im Programmcode. Jetzt habe ich beobachtet, dass sich das
Board mal mit dem WLAN verbindet und mal nicht. Mal werden kryptische
Zeichen auf der Website angezeigt, mal nicht. Das Verhalten ist jedes
Mal reproduzierbar und ändert sich, wenn ich am Code etwas ändere (zB.
den char Text ändern, debug prints hinzufügen/entfernen etc).
Worauf deutet das hin? Können dies Speicherzugriffsverletzungen sein?
Der Compiler liefert keine Fehlermeldungen.
Herr je...
Ich finde die Kombination in der Form "falsch"..
Aber davon mal abgesehen:
Markus schrieb:> Können dies Speicherzugriffsverletzungen sein?
Speicherzugriffsverletzungen kennt der AVR nicht.
Aber doch:
Das können durchaus Heap-Stack Kollisionen oder in die Wiese zeigende
Pointer sein.
Arduino F. schrieb:> Ich finde die Kombination in der Form "falsch"..
Ich weiß. Soll auch nur eine quick und dirty Version werden.
Arduino F. schrieb:> Das können durchaus Heap-Stack Kollisionen oder in die Wiese zeigende> Pointer sein.
Aber wie kann man dann erklären, dass bereits beim Verbindungsaufbau
unterschiedliches Verhalten auftritt? Bis zu diesem Zeitpunkt (also in
der setup() Routine) wird nichts mit meinen chars oder Strings gemacht.
Nur der unveränderte Code aus einem funktionierendem Beispiel.
Markus schrieb:> Ich weiß. Soll auch nur eine quick und dirty Version werden.
Gerade dann gibt es doch keinen Grund, sich das Leben mit einem zweiten,
dazu noch wesentlich weniger leistungsfähigem, µC schwer zu machen.
Hi,
zu 95% sind solche Probleme beim ESP Stromversorgungsprobleme.
Also: Netzteil min 500mA, min 100uF Elko möglichst nahe am ESP und gut
ist.
Steckbrett? Dann schlechte Kontakte.
Gruß
Andreas
Könnte es auch sein, dass der SRAM (2KB) für meine Anwendung zu klein
ist? Meine Website ist nämlich relativ groß und ich habe hier gelesen,
dass es dann zu unerwarteten Verhalten kommt:
https://www.arduino.cc/en/tutorial/memory
Gibt es keine Möglichkeit die erwähnten Probleme, die im Link
beschrieben sind, programmtechnisch zu erkennen, indem ein Flag oä
überprüft wird?
Hallo,
zapf doch erst mal die UART-Verbindung zwischen μC und ESP an, dann
kannst du schon mal sehen ob aus dem μC überhaupt das richtige raus
kommt. Wenn ja dann liegts am ESP, wenn nein dann an deinem μC Programm.
Sascha
An alle, die ESP Module als WLAN-Adapter an weiteren Mikrocontrollern
betreiben möchten und keine Lust auf die Gebetsmühle haben, dass dies
der falsche Ansatz sei: Ich dürft mich gerne per PM anschreiben und
Fragen außerhab dieses Forums klären.
Man muss nicht immer mit dem Strom schwimmen.
> Gibt es keine Möglichkeit die erwähnten Probleme, die im Link> beschrieben sind, programmtechnisch zu erkennen, indem ein Flag oä> überprüft wird?
Ja, git es und wurde hier bereits mehrfach diskutieren, mit vielen
unterschieldlichen Lösungsansätzen. Suche mal gezielt nach den Wörtern:
heap speicher überlauf erkennen - am besten mit Google.
> Gerade dann gibt es doch keinen Grund, sich das Leben mit einem zweiten,> dazu noch wesentlich weniger leistungsfähigem, µC schwer zu machen.
Doch, und zwar das man den Umgang mit einem anderen noch nicht
vertrauten µC lernen muss, dazu ein noch nicht vertrautes SDK mit
bekanntlich mangelhafter Dokumentation, eventuell eine andere IDE.
(manche Leute haben noch nie eine IDE verwendet und programmieren seit
Jahren).
Nicht jeder entwickelt für Massenproduktion, wo man lieber 50 Cent
Hardware einspart dafür aber einige Wochen zusätzlichen
Entwicklungsaufwand in Kauf nimmt.
Nicht jeder möchte sein gesamtes Programm von einem WLAN Modul mit
mutmaßlich eilig zusammengestrickter Firmware abhängig machen, von deren
Zuverlässigkeit man wenig bis gar nicht überzeugt ist.
Nicht jedem genügen die Fähigkeiten und Schnittstellen des ESP8266 Chip.
Wenn ich schon ein simples Schieberegister oder einen mehrkanaligen A/D
Wandler zusätzlich brauche, dann kann ich auch gleich einen vertrauten
µC dran hängen.
Nicht jeder möchte ein bereits bestehendes Programm auf eine ganz andere
Hardware mit Betriebsystem migrieren, nur um eine WLAN Schnittstelle
hinzuzufügen.
Stefan U. schrieb:> Umgang
Ich glaube du verwechselst da was...
Das Pretzelboard ist krank, weil:
SPI ist unterbunden, da der ESP an den Pins steckt.
Das halte ich für eine Fehlkonstruktion.
Gerade weil man bei einem Webserver doch auch mal ganz gut einen
externen Speicher (SD-Karte) verwenden kann.
Die AT Firmware ist auch komisch, da es da viele verschiedenen,
zueinander inkompatible Versionen gibt.
Dass man dem schwächeren Prozessor die Hauptlast aufbürdet, und den
starken im Leerlauf dümpeln lässt, ist da nur noch eine dumme
Nebensache.
Trotz allem dem sollten die Beispiele laufen.
> Dass man dem schwächeren Prozessor die Hauptlast aufbürdet,> ... ist da nur noch eine dumme Nebensache.
Es sind durchaus Anwednungen vorstellbar, wo die WLAN Kommunikation
erheblich mehr CPU Takte erfordert, als die Hauptanwendung.
Bei Bluetooth stellt keiner die Kombination AVR+Extraprozessor in Frage.
Dabei haben alle Bluetooth Module noch viel mehr freie I/O Pins, als der
ESP und sie sind ebenso programmierbar. Ist das nicht seltsam?
Ok, jetzt noch Birnen und Äpfel vergleichen...
Bist heute wohl etwas auf Krawall gebürstet... hi hi hi...
Dann such dir einen andern zum spielen, habe heute keine Lust dazu.
Stefan U. schrieb:> Ist das nicht seltsam?
Aber du glaubst doch nicht ernsthaft an eine Verschwörung?
Es soll Menschen geben die kaufen sich für 100k€ ein Auto um damit nur
zum Spaß rum zu fahren, während die Hauptlast die 30k Familienkutsche
trägt.
Stefan U. schrieb:>> Gerade dann gibt es doch keinen Grund, sich das Leben mit einem zweiten,>> dazu noch wesentlich weniger leistungsfähigem, µC schwer zu machen.>> Doch, und zwar das man den Umgang mit einem anderen noch nicht> vertrauten µC lernen muss, dazu ein noch nicht vertrautes SDK mit> bekanntlich mangelhafter Dokumentation, eventuell eine andere IDE.> (manche Leute haben noch nie eine IDE verwendet und programmieren seit> Jahren).>> Nicht jeder entwickelt für Massenproduktion, wo man lieber 50 Cent> Hardware einspart dafür aber einige Wochen zusätzlichen> Entwicklungsaufwand in Kauf nimmt.>> Nicht jeder möchte sein gesamtes Programm von einem WLAN Modul mit> mutmaßlich eilig zusammengestrickter Firmware abhängig machen, von deren> Zuverlässigkeit man wenig bis gar nicht überzeugt ist.>> Nicht jedem genügen die Fähigkeiten und Schnittstellen des ESP8266 Chip.> Wenn ich schon ein simples Schieberegister oder einen mehrkanaligen A/D> Wandler zusätzlich brauche, dann kann ich auch gleich einen vertrauten> µC dran hängen.>> Nicht jeder möchte ein bereits bestehendes Programm auf eine ganz andere> Hardware mit Betriebsystem migrieren, nur um eine WLAN Schnittstelle> hinzuzufügen.
Seit der ESP mit der Ardino Umgebung programmierbar ist, sind diese
Argumete obsolet.
Wenn mir die Schnittstellen des ESP nicht reichen, lasse ich höchstens
einen AVR als slave laufen und binde ihn mit I2C ein.
Was die FW betrifft, ist die defaultmäßig vorhandene ja wohl das
allerletzte auf die ich mein Design aufbauen würde,
Gruß
Andreas
>> Doch, und zwar das man den Umgang mit einem anderen noch nicht>> vertrauten µC lernen muss, dazu ein noch nicht vertrautes SDK mit>> bekanntlich mangelhafter Dokumentation, eventuell eine andere IDE.>> Nicht jeder möchte ein bereits bestehendes Programm auf eine ganz andere>> Hardware mit Betriebsystem migrieren, nur um eine WLAN Schnittstelle>> hinzuzufügen.> Seit der ESP mit der Ardino Umgebung programmierbar ist,> sind diese Argumete obsolet.
Vorausgesetzt, Arduino gehört zu den bereits vertrauten und akzeptierten
Entwicklungsumgebungen.
> Was die FW betrifft, ist die defaultmäßig vorhandene ja wohl das> allerletzte auf die ich mein Design aufbauen würde
Du hast das zwar nicht begründet, aber ich kann mir gute Gründe für
deine Entscheidung vorstellen. Dennoch sind andere Meinungen (vor allem
unter anderen Rahmenbedingungen) auch legitim, oder?
Stefan U. schrieb:>> Seit der ESP mit der Ardino Umgebung programmierbar ist,>> sind diese Argumete obsolet.> Vorausgesetzt, Arduino gehört zu den bereits vertrauten und akzeptierten> Entwicklungsumgebungen.
Jemand, der sich außerhalb der Arduino Welt bewegt dürfte es umso
leichter fallen, mal über den Tellerrand zu blocken.
>>> Was die FW betrifft, ist die defaultmäßig vorhandene ja wohl das>> allerletzte auf die ich mein Design aufbauen würde>> Du hast das zwar nicht begründet, aber ich kann mir gute Gründe für> deine Entscheidung vorstellen. Dennoch sind andere Meinungen (vor allem> unter anderen Rahmenbedingungen) auch legitim, oder?
Also jeder der mal mit einem ESP mal gearbeitet hat, wird feststellen,
daß die vorhandene FW Versionen je nach Lust und Laune mal funktionieren
oder auch nicht, von den verschiedenen zufallsbedingten Versionen, die
da defaultmäßg drauf sind, mal ganz abgesehen. Daher bin ich davon
ausgegangen, dies nicht näher begründen zu müssen.
Deine Meinung ist legitm, aber eben nur Deine Meinung. Ich habe eben
eine andere. Wenn Du mal eine etwas kompliziertere Webseite aufbauen
würdest, die sich außerdem auch noch schnell aufbauen soll, würdest Du
Deine Meinung aber vermutlich recht schnell ändern.
Sorry, aber einen ESP als Slave eines AVR zu verwenden und den lediglich
mit der vorhandenen FW via RS232 an einem AVR anzubinden ist wie einen
Porsche mit einem Fahrrad zu ziehen.
Gruß
Andreas
> Wenn Du mal eine etwas kompliziertere Webseite aufbauen> würdest, die sich außerdem auch noch schnell aufbauen soll,> würdest Du Deine Meinung aber vermutlich recht schnell ändern.
Zweifellos sind AVR's eher nicht geeignet, Webserver zu spielen. Eine
simple Seite mit ein paar Buttons geht noch, aber viel mehr nicht.