Gast
#1067337
Hi, ich hab wieder mal ein Problem, bei dem ich nicht so recht weiter weiß... Und zwar hab ich eine Funktion, die verschiedene Rotieroperationen durchführt und dann anschließend den fertigen String über die serielle rausschickt. Die Funktion funktioniert soweit, aber nur das erste Mal. Wenn ich die Funktion in einer Endlosschleife ausgebe, dann stimmt immer nur der erste berechnete String - alles was danach kommt stimmt nicht mehr(ein paar Bits sind falsch). Wenn ich den µC resete, dann ist das Programm noch im Flash und ich bekomm wieder beim ersten Mal den richtigen Wert - alles was danach kommt ist wieder falsch. Ich würde ja gerne den Code posten, aber der ist ziemlich lang(einige Seiten) und ich möchte keinen zumuten den Code zu durchforsten. Einzelne Teile daraus zu posten halte ich irgendwie auch nicht für zweckmäßig, da die Funktion ja prinzipiell funktioniert - jedoch nur 1x. Meine Vermutung ist folgende: In dem Programm werden viele Variablen und Strings verwendet(teils lokal, teils global). Die lokalen Variablen sollten ja eigentlich kein Problem darstellen, da diese ja nur innerhalb eines Unterprogramms gültig sind, oder? Meiner Meinung nach problematischer dürften die globalen Variablen(im speziellen Strings) sein. Könnte es sein, dass da vielleicht noch irgendetwas drinnen steht, dass dann beim zweiten Ausführen des Programms eine falsche Berechnung durchführt? Und das obwohl ich am Ende die globalen Strings mit strcpy(string,""); leere? Ich bin jetzt nicht so firm in der C-Programmierung, aber gibt es vielleicht eine Funktion die es mir erlaubt auf dem µC(übrigens ein 8051 Derivat) den Speicher von globalen Variablen freizugeben? Oder würdet ihr mir dazu raten, komplett auf globale Variablen zu verzichten bzw wie wahrscheinlich haltet ihr es das dies das Problem sein könnte? Danke im Voraus!