Forum: Mikrocontroller und Digitale Elektronik Was mache Ich falsch? Bascom Simulator-OK HW-Error


von Franzl F. (Firma: Elektroniker) (franzl-f)


Angehängte Dateien:

Lesenswert?

Hallo

Was mache ich Falsch? Im Simulator läufts und in der Hardware kommt bei 
GPS-Distance ein anderes Ergebnis und mit LCD auf einem anderen MC 
stürzt er immer bei der Berechnug ab und startet wieder von Vorne. Kann 
mir jemand helfen?

von Karl H. (kbuchegg)


Lesenswert?

Ins Blaue geraten
1
$hwstack = 32                                               ' default use 32 for the hardware stack
2
$swstack = 10                                               ' default use 10 for the SW stack

kommt mir etwas wenig vor.
Deine Funktion
1
Sub Get_distance_course(byval Lat1 As Double , Byval Lon1 As Double , Byval Lat2 As Double , Byval Lon2 As Double)
2
3
  Local Tmp As Double , A As Double , B As Double , C As Double , T2 As Double
da sind 4 double in der Argument Liste, nochmal 4 lokale Variablen. Das 
könnte mit den 32 'ein bischen eng' werden.


Du hast gerade etwas wichtiges gelernt: Men entwickelt kein Programm 
ausschliesslich mit dem Simulator. Egal wie gut ein Simulator ist, 
irgendwas ist an der realen Hardware immer ein kleines bischen anders.

von mue-c (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Du hast gerade etwas wichtiges gelernt: Men entwickelt kein Programm
>
> ausschliesslich mit dem Simulator. Egal wie gut ein Simulator ist,
>
> irgendwas ist an der realen Hardware immer ein kleines bischen anders.

Wobei der Simulator ihm sicherlich sagt, dass sich die Stacks 
überlagern. Abstürzen sollte der Simulator dazu nicht.


Karl Heinz Buchegger schrieb:
> da sind 4 double in der Argument Liste, nochmal 4 lokale Variablen. Das
>
> könnte mit den 32 'ein bischen eng' werden.
>
>

Die Parameter und die lokalen Variablen haben zunächst einmal nichts mit 
dem HWStack (32) zu tun. Die Adressen müssen alle in den SWStack 
(10)passen, die Werte in Frame (40). Diese beiden sind dafür zu klein.

@Franzl
Du solltest dir auch überlegen, ob du die Double Werte wirklich 
brauchst. So kleinen Controllern geht schnell die Luft aus, wenn sie 
diese Berechnungen machen müssen.

von Franzl F. (Firma: Elektroniker) (franzl-f)


Lesenswert?

Hab die Stackwerte mal erhöht jetzt Funktionierts. Danke!

Wozu ist den der Stack eigendlich gut? Wie berechneht man den?

mue-c schrieb:
> Wobei der Simulator ihm sicherlich sagt, dass sich die Stacks
> überlagern. Abstürzen sollte der Simulator dazu nicht.

Der MC stürzt ab nicht der Simulator. Der meldet garnichts, auch der 
Compiler meckert nicht.

mue-c schrieb:
> @Franzl
> Du solltest dir auch überlegen, ob du die Double Werte wirklich
> brauchst. So kleinen Controllern geht schnell die Luft aus, wenn sie
> diese Berechnungen machen müssen.

Werde es einmal mit Single probieren.

von Hannes L. (hannes)


Lesenswert?

Franzl F. schrieb:
> Wozu ist den der Stack eigendlich gut?
1
$regfile = "attiny2313.dat"             'Portnamen vereinbaren
2
$crystal = 1000000                      'Takt vereinbaren
3
$hwstack = 32                           'Reg-Sicherung, Rücksprungadressen
4
$swstack = 10                           'Parameterübergabe
5
$framesize = 10                         'Rechenbereich Funktionen

...

von Peter II (Gast)


Lesenswert?

Franzl F. schrieb:
> Werde es einmal mit Single probieren.

damit war mehr gemeint, du sollte auf int gehen.

von mue-c (Gast)


Lesenswert?

Franzl F. schrieb:
> Wozu ist den der Stack eigendlich gut? Wie berechneht man den

Schau mal in die Bascom Hilfe zu $HWStack und $HWCheck und entsprechend 
bei den dort aufgeführten Links. Da gibt es jede Menge Erklärungen.

Franzl F. schrieb:
> Der MC stürzt ab nicht der Simulator. Der meldet garnichts, auch der
> Compiler meckert nicht.

Natürlich stürzt der Simulator nicht ab. Das war auf KHBs Kommentar zum 
Unterschied Simulator <-> HW gedacht.
Klick mal im Simulator die Befehle durch, bis du in der Sub 
Get_distance_course den ersten Befehl ausführst. Dann steht unten in der 
Statuszeile, das "Frame or software stack overlap". Genau das, was 
passiert.

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.