PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Bascom AVR Random Befehl Problem



Paulschen97
26.03.2012, 20:16
Moin alle zusammen,

habe hier ein kleines Problem und zwar möchte ich mit Hilfe eines AT Tiny 13 einen kleinen elektronischen Würfel per Zufallsgenerator, sprich "var = Rnd()"
programmen. Das Problem ist nun, dass Bascom in der Zeile der Dimensionierung der Variable und an der Zeile der Wertdefinierung (X = Rnd(6)) etwas zu meckern hat.

Hier mal der Quelltext:

$regfile = "attiny13.dat"
$crystal = 4000000

Config Pinb.0 = Input
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output

Start:

Dim X As Byte

Do
If Pinb.0 = 1 Then
X = Rnd(6)
End If

If X = 0 Then
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
Portb.4 = 0
End If

If X = 1 Then
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Portb.4 = 1
End If

If X = 2 Then
Portb.1 = 0
Portb.2 = 0
Portb.3 = 1
Portb.4 = 1
End If

If X = 3 Then
Portb.1 = 0
Portb.2 = 1
Portb.3 = 0
Portb.4 = 1
End If

If X = 4 Then
Portb.1 = 0
Portb.2 = 1
Portb.3 = 1
Portb.4 = 1
End If

If X = 5 Then
Portb.1 = 1
Portb.2 = 1
Portb.3 = 0
Portb.4 = 1
End If
Loop
End

----------------------------------------------

Wäre nett wenn mir jemand sagen könnte was daran genau falsch ist.

Als Fehler werden Error 22 (Dim X As Byte)
und Error 46 (X = Rnd(6))
angegeben.

mfg
Paulschen97

Kampi
26.03.2012, 20:25
Hi,

also ich hab dein Programm mal kompiliert und dann kam folgender Fehler:
http://img826.imageshack.us/img826/5053/unbenanntzer.png (http://imageshack.us/photo/my-images/826/unbenanntzer.png/)

Wenn ich den Chip auf einen Mega32 ändere kompiliert er problemlos.
Ich denke du hast zu wenig SRAM im Tiny. Und es gibt keinen Fehler im Programm :)

Rone
26.03.2012, 23:44
Hallo!

Stacks angeben!

Bei mir compilierts anstandslos!

MfG

Edit: Hab gerade was seltsames endeckt:

Mit diesem Header kommt "Out of SRAM"

$regfile = "attiny13.dat"
$crystal = 9600000
'$hwstack = 0
'$swstack = 0
'$framesize = 0


Während mit diesem es anstandslos compiliert:

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 0
$swstack = 0
$framesize = 0


Weiß MWS Abhilfe?

MfG
Rone

Kampi
27.03.2012, 00:12
Eventuell kompiliert er im 1. Fall anders und ist da mit der SRAM-Benutzung etwas "großzügiger" ;)

MagicWSmoke
27.03.2012, 08:36
Mit diesem Header kommt "Out of SRAM"
Während mit diesem es anstandslos compiliert:
Wenn keine Werte für Stack und Frame im Code angegeben werden, dann sind die Einstellungen der IDE unter Optionen --> Compiler --> Chip aktiv. Sind dort zu hohe Werte drin, dann gibt's Mecker.
Einstellungen von 0,0,0 sind nicht das Richtige, nur weil's compiliert, muss es deswegen nicht laufen. Man sollte so viel Speicher wie möglich und verfügbar für Stack und Frame verwenden, der Bascom Report gibt Auskunft darüber wie viel frei ist.

Rone
27.03.2012, 14:26
Das mit der Voreinstellung ist mir nachher auch in den Sinn gekommen. Nachgeschaut >> Es werden alle 64 Byte reserviert. Logisch das dann nix mehr frei ist.
An die Report Möglichkeit denke ich leider zu selten.

Danke nochmal für die Erläuterungen.

MfG
Rone

Paulschen97
27.03.2012, 20:10
Danke! für eure schnelle Antwort, der Error-Code taucht nun nicht mehr auf.
Jetzt muss ich das Programm nur noch ein bisschen verfeinern und darauf achten, dass der Code nicht größer als 1kB wird,
ich quäle den Tiny jetzt schon mit 966 Byte. xD

Also Danke nochmal
und mfg
Paulschen97