Ich habe mein Bascom auf 2.0.8.0 upgedated, nun laufen einige meiner Programme nicht mehr bzw es werden Errors beim syntax check ausgeworfen. Folgendes Programm lief unter 2.0.7.9
Alles anzeigen
Bei 2.0.8.0 kommen nun folgende Errors:
Soweit ich mich erinnern kann, wurde die Funktion Rb_getcolor_wa ursprünglich von Galahat für Michael geschrieben, da RB_GETCOLOR nicht richtig funktionierte. Leider hab ich es mit meinem begrenzten Wissen nicht geschafft, die Programme mit der neuen Bascomversion wieder zum laufen zu bringen. Es ist zum Heulen
Wie bekomme ich die Programme (sind mehrere) wieder hin???
Gruß Robert
BASCOM-Quellcode
- 'Knight Rider Lauflicht mit Nachglüheffekt (exponentiell) und Hintergrundfarbe für 2 Strips WS2812-Leds a 30 LEDs
- 'Bascom Version 2.0.7.9 Beta
- '$sim
- $regfile = "attiny85.dat"
- $crystal = 8000000
- $hwstack = 32
- $swstack = 10
- $framesize = 40
- Config Rainbow = 2 , Rb0_len = 30 , Rb0_port = Portb , Rb0_pin = 2 , Rb1_len = 30 , Rb1_port = Portb , Rb1_pin = 1
- Declare Function Rb_getcolor_wa(byval Lednr As Word)as Byte 'nötig wegen noch nicht richtig funktionierendem Rb_getcolor
- Rb_selectchannel 0
- Dim Farbe(3) As Byte
- Rot Alias Farbe(_base)
- Gruen Alias Farbe(_base + 1)
- Blau Alias Farbe(_base + 2)
- Dim Farbe_(3) As Byte
- R_ Alias Farbe_(_base)
- G_ Alias Farbe_(_base + 1)
- B_ Alias Farbe_(_base + 2)
- Dim Farbe_h(3) As Byte 'Hintergrundfarbe
- R_h Alias Farbe_h(_base)
- G_h Alias Farbe_h(_base + 1)
- B_h Alias Farbe_h(_base + 2)
- Const Num_leds = 30 '30 (Muss identisch sein mit Rb0_len !!!
- Const Num_leds_1 = Num_leds - 1
- Const Num_leds_2 = Num_leds_1 * 2
- Dim N As Word
- Dim X As Integer
- Dim Y As Integer
- Dim A As Byte
- Dim B As Byte
- Dim Position As Word
- Dim Position_1 As Word
- Dim Direction As Bit
- Dim Stripe_change_counter As Byte
- Dim Zielfarbe_erreicht As Byte
- Const Stufen = 60 '60x so schnelles hochdimmen
- 'Hintergrundfarbe setzen
- R_h = 0
- G_h = 0
- B_h = 0
- 'Sollfarbe setzen
- Rot = 255
- Gruen = 0
- Blau = 0
- Position = 0
- '########################### Knight Rider Lauflicht mit Nachglüheffekt ###################################
- Do
- 'Runterdimmen auf Hintergrundfarbe
- For A = 0 To 1 'Beide Strips bearbeiten
- Rb_selectchannel A
- For N = 0 To Num_leds_1
- Farbe_() = Rb_getcolor_wa(n)
- For Y = 0 To 1 'Nachglühdauer einstellen (höherer Wert, kürzere Nachglühdauer)
- If R_ > 200 Then R_ = R_ - 10 'pseudo 3 Punkte Kurve für exponentielles Dimmen
- If R_ < 200 And R_ > 120 Then R_ = R_ - 7
- If R_ < 120 And R_ > 50 Then R_ = R_ - 4
- If R_ > R_h Then Decr R_ Else R_ = R_h 'originale Zeile bei linearem Dimmen
- If G_ > 200 Then G_ = G_ - 10
- If G_ < 200 And G_ > 120 Then G_ = G_ - 7
- If G_ < 120 And G_ > 50 Then G_ = G_ - 4
- If G_ > G_h Then Decr G_ Else G_ = G_h
- If B_ > 200 Then B_ = B_ - 10
- If B_ < 200 And B_ > 120 Then B_ = B_ - 7
- If B_ < 120 And B_ > 50 Then B_ = B_ - 4
- If B_ > B_h Then Decr B_ Else B_ = B_h
- Next Y
- Rb_setcolor N , Farbe_()
- Next N
- Rb_send
- Next A
- 'Lauflicht bewegen
- Rb_selectchannel B
- If Stripe_change_counter = Num_leds_2 Then ' falls ein Stripwechsel ansteht, erste LED (0) auf dem neuen Strip setzen und Berechnung der neuen Position EINMAL überspringen
- Rb_setcolor Position , Farbe()
- Rb_send
- Stripe_change_counter = 0
- Goto Stripe_change
- End If
- If Direction = 0 And Position < Num_leds_1 Then 'bis zur vorletzten LED...
- Position = Position + 1 'wird die Position um eins erhöht...
- Rb_setcolor Position , Farbe() 'und LED gesetzt
- Rb_send
- End If
- If Direction = 1 And Position > 0 Then
- Position = Position - 1
- Rb_setcolor Position , Farbe()
- Rb_send
- End If
- If Position = Num_leds_1 Then 'ist die letzte LED erreicht...
- Direction = 1 'wird die Richtung für den nächsten Durchgang geändert...
- Rb_setcolor Position , Farbe() 'und die letzte LED gesetzt
- Rb_send
- End If
- If Position = 0 Then
- Direction = 0
- Rb_setcolor Position , Farbe()
- Rb_send
- If B = 0 Then 'Stripe wechseln
- B = 1
- Else
- B = 0
- End If
- End If
- Incr Stripe_change_counter
- Stripe_change:
- Waitms 4 ' Lauflichtgeschwindigkeit einstellen
- Loop
- End
- Function Rb_getcolor_wa(byval Lednr As Word)as Byte 'nötig wegen noch nicht richtig funktionierendem Rb_getcolor
- $external Rb_getcolor
- LDD ZL , Y+0
- LDD ZH , Y+1
- LD R24 , Z+
- LD R25 , Z
- LDD XL , Y+2
- LDD XH , Y+3
- RCall RB_GetColor
- End Function
Bei 2.0.8.0 kommen nun folgende Errors:
Soweit ich mich erinnern kann, wurde die Funktion Rb_getcolor_wa ursprünglich von Galahat für Michael geschrieben, da RB_GETCOLOR nicht richtig funktionierte. Leider hab ich es mit meinem begrenzten Wissen nicht geschafft, die Programme mit der neuen Bascomversion wieder zum laufen zu bringen. Es ist zum Heulen
Wie bekomme ich die Programme (sind mehrere) wieder hin???
Gruß Robert