Hallo Forum, in einem Bascom-Programm habe ich eine Sub, welche im Timerinterrupt jede Milisekunde ein Zeichen an ein Display sendet. Eine weitere Sub wird aus main aufgerufen, welche an DA-Wandlern Spannungen ausgeben soll. Diese beiden Funktionen sind sind um Ihre Funktionalität gekürzt im angehängten Programm. Was nun passiert: Den Wert, den die Variable _x in der Funktion Lcd_put annimmt, taucht hin und wieder in der Funktion Analog anstelle der zu übergebenen Werte _w1, _w2 und _w3 auf. Sogar im Bascom-Simulator lässt sich dieser Fehler reproduzieren - wenn man nur häufig genug den Timerinterrupt auslöst. Wo ist hier also der Fehler - wie kann ich sichergehen, dass die Funktionen ihre korrekten Werte erhalten? Die Frage wurde auch im RN-Forum gestellt - jedoch habe ich hier Hoffnung, einen größeren Kreis zu erreichen.+ Danke BoGe-Ro
Hi Nun, ich vermute, es liegt in der Zuweisung "_x=54" "_X ist eine Variable, die im Procedure-Kopf deklariert ist und wird damit temporär über den Stack gültig. Ist das Unterprogramm abgearbeitet, wird _X nicht verändert, d. H. der darin enthaltene Wert bleibt stehen. Wird nun eine Andere Subroutine gestartet, die diese Werte in Abhängigkeit einer If-Bedingung setzen, so könnte ich mir vorstellen, da ja der gleiche Speicherbereich angesprochen wird, Werte halt "stehengeblieben" sind. Dabei spielen die Übergebenen Werte erst mal noch keine Rolle. Allerdings kann ich's nicht untermauern, ist halt so ein Gedanke.... Gruß oldmax
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.