Forum: Mikrocontroller und Digitale Elektronik Probleme mit Arduino und ESP8266


von Markus (Gast)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

Ich kann das nicht erklären....
So leider nicht.

von Wolfgang (Gast)


Lesenswert?

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.

von Andreas B. (bitverdreher)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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?

von Sascha W. (sascha-w)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

> 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.

von Stefan F. (Gast)


Lesenswert?

> 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.

von Einer K. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

> 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?

von Einer K. (Gast)


Lesenswert?

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.

von Kolja L. (kolja82)


Lesenswert?

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.

von Andreas B. (bitverdreher)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

>> 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?

von Andreas B. (bitverdreher)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

> 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.

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
Noch kein Account? Hier anmelden.