Wenn all das dann nichts bringt versuche ich es mit dem Originalen Uno R3.
Wird nix bringen. Du hast ein EmV Problem
Das geht doch nur um die Spannung für den Arduino, nicht für die Pumpen.
Du kannst zwischen 12 Volt und dem Arduino einen Stepdown-Regler der die 7 Volt erzeugt, dazwischen schalten.
Ich kenne die Libs nicht.
(sachte ich doch schon)
Dann:
Wenn ich mich da einarbeite, bringt dir das nichts, denn davon lernst du nix.
Das wird auch nicht nötig sein. Ich habe in Post #28 schon gezeigt, wo in den Libs das delete versteckt ist.
Weil ich eben ein Egoist bin. Mir ist wichtig, dass ich etwas lerne, nicht der TO ![]()
Nein, solltest Du nicht, siehe Post #28, das ist nicht das Problem.
Was nicht heisst, dass am Code nichts falsch ist, aber ich würde mich ev. zuerst wirklich auf die Elektronik fokussieren.
Über so ein einfach reproduzierbares Beispiel würde ich mich dennoch sehr freuen. Einfach aus Nerd-Interesse.
Du versuchst das undefinierbare zu definieren. Das wird nicht gelingen.
Wenn du da was basteln willst, kannst du ja mal versuchen, die Rücksprungadresse auf dem Stack, die in der Nähe von lokalen Variablen liegt, auf 0 zu setzen. Das (ein Sprung nach 0) wird (je nach Controller) so ähnlich wie ein RESET. Vielleicht gelingt es dir. Ist aber immer noch undefiniertes Verhalten.
Über so ein einfach reproduzierbares Beispiel würde ich mich dennoch sehr freuen.
Was heiß einfach zu reproduzieren?
Es gibt hunderte Posts, wo der Controller neu bootet, ohne dass Programmierer das will.
Ich merk mir nicht jedes Thema, wo dieser Fall auftritt.
aber wenn DU ein Beipiel willst.... Du sollst eines bekommen.
Hallo Gemeinde Ich habe ein Projekt mit einem LTE-Modul (SIM7600) am Laufen. Das Problem ist, dass das Modul per default auf 115200 Baud eingestellt ist. Diese Rate ist für meinen Code aber zu schnell, d.h. Zeichen (z.B. von einem SMS) werden nicht richtig gelesen. Mit 9600 funktioniert der Code einwandfrei. Nur kann ich die Baudrate leider nicht permanent ändern. Deshalb muss ich sie beim Powerup per AT-Command (AT+IPR=) ändern. Doch leider will das nicht funktionieren, der Code bleibt im Setu…
Für weitere solcher Beispiele benutze die Suchfunktion - es fehlt aber an einer KI. Daher musst Du selbst selektieren und mit geschickten Suchbegriffen arbeiteen, da die Nutzenden leider nicht immer genau das schreiben. - wie man unter anderem in meinem Beispiel eindrücklich sehen kann.
Wenn du da was basteln willst, kannst du ja mal versuchen, die Rücksprungadresse auf dem Stack, die in der Nähe von lokalen Variablen liegt, auf 0 zu setzen.
Gaz sicher! Will ich das nicht.
der 12te schreibt irgendwohin
Nicht irgendwohin. Sondern eine gewisse Anzahl von Byte (in diesem Fall 4 Byte pro Element) nach dem Speicherplatz der Array-Variable.
Grüße Uwe
in diesem Fall 4 Byte pro Element nach dem Speicherplatz der Array-Variable
Nur, was dort steht, ist "undefiniert", d.h. man sollte gar nicht erst versuchen rauszukriegen, was bei der aktuellen Konstellation dort steht. Und das @combie als "Lösung" für How to Reset Arduino by Undefined Behavior empfehlen.
Ist also insoweit doch "irgendwohin".
ok verstehe
Ich bin schon fasst an dem Punkt angekommen, wo ich nichts mehr lernen sondern das Teil nur noch zum laufen bringen möchte
so banal es auch klingt
Ist also insoweit doch "irgendwohin".
"irgendwohin" klingt nach zufällig. Der Speicherort ist nicht zufällig. Er ist schon ziemlich genau relativ zum Array bestimmt. In welcher/n Speicherzelle/n es dann im RAM ist, ist unwichtig. Da kann ich "irgendwo" akzeptieren.
Grüße Uwe
Und wie könnte ich das in den Griff kriegen?
Der Speicherort ist nicht zufällig.
Das ist richtig, aber was dort gerade gespeichert ist, kannst Du nicht festlegen.
Es kann ein Datenwert sein, der unwichtig ist und nie wieder gebraucht wird, aber auch eine Rücksprungsdresse auf dem Stack sein, so dass der MC dann ins Nirvana hüpft.
Gruß Tommy
Wichtig sind zuerst einmal die Freilaufdioden an den Motoren. An dem Motoren kann man auch noch Abblockkondensatoren anbringen. Und dann gibt es noch die Möglichkeit mit Spulen und Ferritkernen zu arbeiten.
Und wie könnte ich das in den Griff kriegen ?
Erstmal das machen, was am wichtigsten ist. Ein vernünftige und stabile Versorgungsspannung aufbauen. Ohne die brauchst du nicht weiter basteln.
Und was dir über die Freilaufdioden geschrieben wurde.
Und was dir über die Freilaufdioden geschrieben wurde.
Ja schätze eher dass @combie mit Post#34 auf dem richtigen Weg ist.
Das ist kein Leak, es ist die Nutzung eines ungültigen Pointers, welches in ein UB (undefined behavior) mündet. Das Programm ist als total kaputt anzusehen. Ein Absturz, bzw. Restart ist somit als "normal" oder erwartbar anzusehen.
Ja schätze eher dass @combie mit Post#34 auf dem richtigen Weg ist.
Das streite ich auch nicht ab.
Allerdings ist der Punkt Hardware (Spannung und Freilaufdioden) im Vorwege richtig zu stellen. Wenn eine falsche oder kaputte Hardware genutzt wird, braucht man mit der Software erst nicht zu starten.
Freilaufdioden sind an Induktivitäten Pflicht.
Da habe ich ja was ausgelöst.....
Wollte einfach nur klar machen, dass bei einem UB einfach alles und auch nichts passieren kann.
Von Neustart bis Zimmer tapezieren.