Forum: Mikrocontroller und Digitale Elektronik Bascom - an Sub übergebene Werte


von Bo G. (boge-ro)


Angehängte Dateien:

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

von oldmax (Gast)


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

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
Noch kein Account? Hier anmelden.