Also danke erstmal für die Antworten
@PicNick:
hwstack ist schon bei 64
swstack bei 32
habs mal auf hwstack=128 und swstack=32 erhöht
Das Ergebnis bleibt bei null 
@fumir:
1.: was meinst du mit groß/klein schreibung? Weil das x und y in den klammern klein ist und weiter oben groß geschrieben?
Da muss ich dich enttäuschen. Aber das geht bei Bascom nicht anders.
Wenn ich variablen klein schreibe, dann ändert Bascom den ersten Buchstabe IMMER AUTOMATISCH auf große Schreibweise.
Wenn ich aber hingegen bei dem str() das x groß schreibe, dann wird es AUTOMATISCH auf ein kleines x umgeschrieben. Da kann man absolut nichts gegen machen. Sobald der Cursor die Zeile verlässt, wird es vom Compiler geändert.
2.: double habe ich gewählt, weil ich eine größtmögliche Genauigkeit erreichen muss. Denn kleinste Fehler addieren sich hier auf und bewirken dann größeres nach 1000 Rechnungen.
3.: Ich habe absichtlich nicht das komplette Programm gepostet, denn es umfasst 829 Programmzeilen (22kB Hex-File). Ich denke das wird sich hier keiner Durchlesen. Und ich wüsste jetzt auch nicht weswegen der restliche Programmcode hier stören sollte. Denn die Variablen x und y gibt es ausschließlich in diesem Sub. sie existieren an keiner anderen Stelle im Code. Die Variablen "links" und "rechts" existieren an zwei anderen stelle nochmal und das sind 2 Interrupts. Die schaun wie folgt aus:
Code:
Overflow_links:
Links = 20
Rechts = Enc_rechts - 236 ' - 243
Load Timer0 , 20
Load Timer1 , 20
Statusbit.calc_koordinaten = 1
Return
Overflow_rechts:
Rechts = 20
Links = Enc_links - 236 ' - 256-20
Load Timer0 , 20
Load Timer1 , 20
Statusbit.calc_koordinaten = 1
Return
Dieser Interrupt wird bei einem Timer Overflow aufgerufen. Der Timer ist als Counter konfiguriert. Es kommt also alle 20 Takte zu einem Interrupt. Momentan zum Testen wird der Interrupt nur einmal aufgerufen (Ich gebe einfach 23 Takte auf den einen Counter.
4.: Habe die Berechnung jetzt mal wie folgt umgeschrieben:
Code:
X = Links
Y = Rechts
X = X / 12.143
Y = Y / 12.143
Auch dabei kommt für x und y Null heraus
5.:
Wenn ich es so schreibe:
Code:
X = Links
Y = Rechts
X = X / 12.143
Y = Y / 12.143
X = X * 12.143
Y = Y * 12.143
Dann kommt für x und y auch Null heraus. Das verstehe ich nicht 
Hab jetzt aber doch mal versucht x und y als Single zu deklarieren (In dem Code den ich im ersten Post geschickt hatte).
Und siehe da: Es funktioniert einwandfrei.
Aber warum nicht mit Double? Das verstehe ich nicht 
PS: Ich schreib mal noch dazu das ich einen ATMega 32 verwende. Das hatt ich noch vergessen...
Lesezeichen