Hallo, ich versuche gerade einem Problem mit einem Arduino-Mega auf die Schliche zu kommen. Das Ganze ist recht umfangreich (mehrere I²C Sensoren, Webserver, Telnet, RS232). Um besser zu verstehen was wann passiert hab ich den sketch in Atmel Studio importiert um mit dem Atmel ICE besser debuggen zu können. Komischerweise tritt der Fehler nicht auf wenn ich im Atmel Studio kompiliere. Egal ob debug oder release! Mir ist bewusst dass da unterschiedliche Compiler laufen, aber dass das so krass unterschiedliche Resultate produziert find ich schon seltsam... Hat das noch wer festgestellt, und evtl. sogar eine Erklärung parat?
Bob A. schrieb: > Mir ist bewusst dass da unterschiedliche Compiler laufen, aber dass das > so krass unterschiedliche Resultate produziert find ich schon seltsam... Der winzigste Unterschied kann eine große Wirkung haben. Bei fehlerhaftem Code, welcher sich auf ein bestimmtes Verhalten des Compilers verlässt (undefined behaviour), kann das schnell schief gehen, wenn die Compiler Version, Optionen, Umgebung... anders ist. In erster Näherung: Alle Warnungen aktivieren und beheben.
Warnungen sind alle an, sowohl in der Arduino IDE als auch in AS7 Läuft ohne jegliche Meldung in beiden durch. Das Problem ist dass das Programm nach einem loop-Durchlauf hängen bleibt. Eine Lösung war lokale String-Definitionen aus einer Funktion global in der Datei zu definieren. Habs hier auch noch ein bischen ausführlicher beschrieben: Beitrag "Arduino Mega hängt wenn String nicht global definiert ist" Irgendwie kapiere ich es nicht was da abgeht...
Das ist so jetzt schwierig zu analysieren. debugge doch das von Arduino erzeugte Binary (ELF) in Atmel Studio. Oder wähle in Atmel Studio die Toolchain von Arduino aus zum kompilieren...
Wobei das eher nach Stack Overflow o.ä. klingt, was durch abweichende Linker Scripte ausgelöst werden könnte.
Bob A. schrieb: > Eine Lösung war lokale String-Definitionen aus einer Funktion global in > der Datei zu definieren. Arduino Strings != std::string - das sind unterschiedliche Bibliothken, die du beide vermeiden solltest. leo
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.