Bascom - an Sub übergebene Werte

OP #2296556
Lesenswert?

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
Angehängte Dateien:
Gast #2296589
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren