PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Sub in Bascom



T.J.
25.01.2008, 22:19
Hi,

ich habe gerade mit einem MCP2510 kommuniziert. Und weil das so toll war wollte ich eine Subroutine draus machen.

ich habe sie mit: Declare Sub Spi_write(byval Command As Byte , Byval Reg_add As Byte , Byval Reg_cont As Byte) definiert

und rufe sie ganz unten auf. Das Problem ist folgendes: Wenn ich Spi_send_buff(1) = &H02 statt Spi_send_buff(1) = Command schreibe (was nicht den Sinn der Sub erfüllen würde) funktioniert es! An der SPI kommunikation liegt es nicht. Habe ich ein Fehler beim deklarieren der Sub gemacht? Der Prozessor kommt bis zu der Zeile wo er eine 4 schreibt, scheinbar kann er mit den Variablen SPIout nicht ausführen. Ich weiß aber nicht was daran falsch sein sollte :-k

linux_80
26.01.2008, 12:31
Hallo,

schau mal auf dieser Seite:
https://www.roboternetz.de/wissen/index.php/Bascom_Inside
ich glaub Du musst diese Werte etwas erhöhen, damit die Sub Platz hat die Daten zu verwalten die darin verwendet werden.

stefan_Z
26.01.2008, 15:44
Jau, da müssen die Stacks hochgestellt werden. Das sollte man bei komischem Verhalten des Programms immer als erstes machen.

T.J.
26.01.2008, 17:00
danke für die Antworten, aber wenn ich unter $crystal = 2000000



$swstack = 32
$hwstack = 32

schreibe, sagt bascom: assignment error

er erkennt den befehl auch nicht als blau und in der Hilfe ist es auch nicht zu finden.
liegt das an bascom, am Mega32, oder ???

Aber ich kann die entsprechenden Größen in den compiler options eintragen, das Programm funzt, danke schonmal. Nur es wäre schon sinnvoller die Befehle in den code zu schreiben oder?

PicNick
26.01.2008, 17:16
Welchen Chip hast du denn definiert ? ($regfile= xxxxxx.DAT) ?
Wenn das irgendein mini-wuzi-tiny ohne SRAM ist, hätte der Bascom recht.

Anderenfalls stelle zumindest deine ersten 10 Zeilen Code da rein, daß man gucken kann. (aber orignal, ohne Bearbeitung)

T.J.
26.01.2008, 17:59
reicht dir denn meine komplette datei nicht aus? (1. post)

sechsrad
15.02.2008, 14:53
$swstack = 32
$hwstack = 32

machen ältere versionen nicht im programmcode, musste im untermenu angeben.

StevieL
15.02.2008, 16:15
Hallo Thomas,

du hast die Variablen, die du bei der Deklaration der Sub angibst, oben ja schon mit gleichem Namen deklariert.
Probier doch mal, die Deklaration einfach auszukommentieren.

Vitis
16.02.2008, 08:32
bei:

Dim Command(1) As Byte
Dim Reg_add(1) As Byte
Dim Reg_cont(1) As Byte

kannste Dir sowieso die "(1)" schenken
Variablennamen möglichst nicht doppelt verwenden