-
Hallo Wigbert,
ich wollte Dir schon immer mal die Frage stellen, warum Du im Originalcode
http://home.arcor.de/dirk.milewski/R...Tranceiver.bas
schreibst:
Code:
Sub Empfangen
Print "Empfange"
Call Rf12_rxdata(maxchar)
For Count = 1 To Maxchar
Print Chr(rfdata(count)) ; "-";
Next Count
Print
Goto Zuruck
End Sub
beim Aufruf der Sub wird ein Call ausgeführt, der 2 Byte auf den STACK pusht. Da "Goto Zuruck" das RET umgeht, wird der Stackpointer nicht um 2 Byte wieder heruntergezählt
-> das führt unweigerlich zum Stacküberlauf!
Du hast den Fehler noch nicht bemerkt, da Du keine Variablen mit Dir herumschleppst...
-
Na ja,
etwas habe ich schon bemerkt, hatte einfach den Stack hochgesetzt.
Ich dachte bei Gosub müsse return.
Und wie lösche ich nun den Stack in meinen Bespiel ?
Wigbert
-
nicht den Stack manipulieren und es verschlimmbessern, sondern einfach die Struktur aufräumen.
Programmierregel Nummer Eins: "Verwende niemals nie GOTO!"
Anbei ungetesteter Code:
Code:
Do
S = ""
WHILE Len(s) < 3
Empfangen
WEND
Senden
Text = S
Loop
Sub Empfangen
Print "Empfange"
Call Rf12_rxdata(maxchar)
For Count = 1 To Maxchar
Print Chr(rfdata(count)) ; "-";
Next Count
Print
End Sub
-
Na ja das springen aus der Sub war mir sowieso nicht geheuer.
Mit einen Flag wäre das auch gegangen.
Dank Dir für die Hinweise.
Wigbert
-
Abend
also bin wieder aus Paris zurück,
ist so das ich mit bei dem Bauteil vertippt hab. Benutze 5 V Spannungsversorgung.meint ihr also das liegt an dem Stack?
Aber müsste das nicht zumindest ne kleine weile laufen?
Bastian
-
eine Weile lief das Programm bei mir auch,
wenn der Stack voll wäre, muss das Programm nach Reset
wieder laufen
Wigbert
-
Also geh ich jetzt einfach mal davon aus das das board einen Fehler hat. Den atmega hab ich auch schon ausgetauscht daran liegts nicht. Wenn ich das modul enkoppel (Über die dip schalter) dann liegt auf dem Miso pin (Der ja in verbindung mit der Rf12_readys steht) 0V an wenn ich das modul wieder verbinde liegt auf dem pin +5V kann es sein das das Modul kaputt ist?
gruß
-
ein Versuch hab ich noch
Leg mal zusätzlich
10 K Widerstand von SS an + 5V
(warum? war irgendwo mal im Forum beschrieben)
Wigbert
-
Ne leider auch kein erfolg. Muss ich wohl mal ein neues Board machen. Oder meinste das das Modul irgendwie seinen Geist aufgegeben hat. Wobei kann auch schlecht sein weil es ja noch sendet.
Irgendwo muss der fehler ja bei dem Miso pin liegen..
Und auch seltsam das es ein paar mal geklappt hat.
Bastian
-
na ja , ein versuch war es wert,
Ic raus und Leiterbahn auf Durchgang prüfen, nachlöten
Brück mal den Jumper.
Ich löte deshalb den rfm 12 mit stiftleisten auf. rfm 12 tauschen
Wigbert