Hallo alle!
Ich bin mit den Fachbegriffen nicht so vertraut, ich hoffe, ich kann das Problem verständlich beschreiben :)
Die Frage ist sicher schnell beantwortet: Ich versuche gerade, ein ESP32-Sketch auf Atmega umzuschreiben bzw zum Laufen zu bekommen. Ich habe einen Sensor (BL0940), der eine eigene Bibliothek hat, die ich im Sketch-Verzeichnis liegen habe, in Form von cpp/h-Dateien.
Ich habe herausgefunden, dass es mit der Initialisierung zu tun hat. Die -h-Datei ist wie üblich mit include ganz am Anfang. Beim ESP steht vor dem Setup(void)-Block: BL0940 bl0940; Im Setup(void)-Block steht dann z.B. bl0940.Reset();
Wenn ich das gleiche für Atmega644 kompiliere, hängt sich der µC sofort auf, sobald BL0940 bl0940; aufgerufen wird. Ich habe jeden Block in der .cpp-Datei auskommentiert, um zu sehen, ob es irgendein Teil vom Code ist, der das Problem verursacht. Nichts gefunden.
Schiebe ich die Init BL0940 bl0940; IN den Setup-Block, also z.B. direkt über bl0940.Reset(); funktioniert alles. Allerdings, sobald bl0940 in anderen Funktionen/Blöcken aufgerufen wird, kommt der compile-error, dass dies nicht definiert sei. Logisch, die Definition steht ja nur im Setup-Block.
Wie löse ich das Problem? Ich will nicht mal wissen, warum es diesen Unterschied zwischen ESP32 und Atmega(mightycore) gibt, aber ich würde es gern zum Laufen bringen.
Ein Blick in andere Libs hat mir aktuell noch nicht weitergeholfen.
Mein Sketch basiert quasi auf diesem Beispiel bzw kann fast direkt so probiert werden: https://github.com/mcmchris/BL0940-Energy-Meter-w-Arduino/tree/main/BL0940-ESP32 Lediglich die serielle Schnittstelle ist eine andere (cpp-Datei).
Reine Vermutung: gibt es einen Unterschied, an welcher Stelle die seriellen Schnittstellen initialisiert werden müssen? Normalerweise macht man das ja im Setup-Block, wenn die Init aber vor diesem schon die Schnittstelle initialisiert, gibt es da ein Problem beim Atmega?
edit: ich vermute, BL0940 bl0940 ist eine Klasseninitialisierung? edit2: alternativ wäre auch eine Änderung der Lib auf Atmega hilfreich, aber ich weiss halt nicht, an welcher Stelle sich was beisst :)
Danke für kurze Hilfe oder eine Lösung :) Nik
