Fehler in Bascom rnd()?

Gast #2712823
Lesenswert?

Hallo,

ich habe für einen ATTiny13 ein kleines Programm in Bascom geschrieben, 
das einfach die 3 LEDs einer RGB-LED eine Sekunde ein- und 
zufallsgesteuert  per rnd() zwischen 0 und 10 Sekunden ausschalten soll. 
Das ganze ist einfach nur zu Testzwecken fix zusammengeschrieben.

Funktioniert soweit ganz gut, nur hängt sich das Programm regelmäßig 
nach dem 6. Aufruf von a=rnd(10) auf.
1
$regfile = "attiny13.dat"
2

3
$hwstack = 36
4
$swstack = 5
5
$framesize = 16
6

7

8
$crystal = 128000
9

10
Config Portb = Output
11
Dim A As Word
12

13
Rot Alias Portb.2
14
Gruen Alias Portb.1
15
Blau Alias Portb.0
16

17
Do
18

19

20
Portb = 7
21
Gosub Warten_an
22
Portb = 0
23
Gosub Warten_aus
24

25
Portb = 5
26
Gosub Warten_an
27
Portb = 0
28
Gosub Warten_aus
29

30
Portb = 6
31
Gosub Warten_an
32
Portb = 0
33
Gosub Warten_aus
34

35

36
Portb = 3
37
Gosub Warten_an
38
Portb = 0
39
Gosub Warten_aus
40

41
Portb = 7
42
Gosub Warten_an
43
Portb = 0
44
Gosub Warten_aus
45

46
Blau = 1
47
Gosub Warten_an
48
Blau = 0
49
Gosub Warten_aus
50

51
Gruen = 1
52
Gosub Warten_an
53
Gruen = 0
54
Gosub Warten_aus
55

56

57
Rot = 1
58
Gosub Warten_an
59
Rot = 0
60
Gosub Warten_aus
61

62
Loop
63

64
Warten_an:
65
Wait 1
66
Return
67

68
Warten_aus:
69
A = Rnd(10)
70
Wait A
71
Return

Das ist also wirklich nichts spektakuläres und soweit ich das 
überblicken kann, auch ohne Fehler im Code ;-).
Aber nach jedem Einschalten ist nach dem Ausschalten der blauen LED 
Schluss. Kann das jemand von Euch nachvollziehen?
Wenn ich A=rnd(10) auskommentiere und durch einen festen Wert ersetze 
läuft das Programm durch.
Vermute, dass rnd() Müll auf dem Stack "zurücklässt" und dass sich der 
Tiny dann aufhängt....

Gruß
Kurt

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren