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
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:
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ähltCode:Sub Empfangen Print "Empfange" Call Rf12_rxdata(maxchar) For Count = 1 To Maxchar Print Chr(rfdata(count)) ; "-"; Next Count Print Goto Zuruck End Sub
-> 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
Lesezeichen