Hi zusammen Ich war dabei ein kleines Beispielprogramm zu schreiben um die Funktion vom Mikrokontroller und dem LED was daran hängt zu demonstrieren, doch irgendwie scheint der Wurm drin zu sein. Das Programm besteht aus einer Hauptschleife in der neue Farbintensitätswerte generiert werden und einem Unterprogramm welches zu diesen Farbwerten hin iterieren soll. Was passiert ist jedoch dass das Programm immer (auch im Simulator komischweise) direkt nach dem ersten Durchlauf aus der Schleife springt. Egal welche Zahlen die Schleife enthält. Vll ist es nur was ganz Grundsätzliches, aber irgendwie schein ich da was zu übersehen. Wäre dankbar für ein bisschen Hilfe ;)
1 | Config Timer3 = Pwm , Prescale = 256 , Pwm = 8 , Compare B Pwm = Clear Down |
2 | |
3 | Dim I As Byte |
4 | Dim Negspeed As Integer |
5 | Dim Newval As Byte |
6 | Dim Oldval As Byte |
7 | Dim Stepsize As Integer |
8 | |
9 | Declare Function Slide(a As Byte , B As Byte , C As Integer) As Byte |
10 | |
11 | Compare3b = 0 |
12 | Oldval = Compare3b |
13 | |
14 | Do
|
15 | |
16 | Newval = Rnd(230) + 25 |
17 | Stepsize = Rnd(58) + 2 |
18 | Oldval = Slide(oldval , Newval , Stepsize) |
19 | Waitms 30 |
20 | |
21 | Loop
|
22 | End
|
23 | |
24 | |
25 | |
26 | Function Slide(a As Byte , B As Byte , C As Integer) As Byte |
27 | If A > B Then |
28 | Negspeed = 0 - C |
29 | For I = A To B Step Negspeed |
30 | Compare3b = I |
31 | Waitms 20 |
32 | Next
|
33 | Else
|
34 | For I = A To B Step C |
35 | Compare3b = I |
36 | Waitms 20 |
37 | Next
|
38 | End If |
39 | Compare3b = B |
40 | Slide = B |
41 | End Function |