LED Dimmer per UART steuern: Flackern

Gast #2100294
Lesenswert?

Hallo Leute,

habe einen kleinen LED Dimmer gebaut der per UART steuerbar ist. Da er 
nichts anderes macht als LEDs dimmen, habe ich einfach folgenden Code 
(BASCOM) verwendet:
1
Do
2
   ' Berechnet die Helligkeit der einzelnen LEDs, es gibt unterschiedliche Programme
3
   Call Managebrightness
4

5
   ' Dimmt die LEDs
6
   Call Dimleds
7
Loop
8

9
' Liest per Interrupt neuen Helligkeitswert per UART ein, der dann in Managebrightness verwendet wird
10
Sub Serial0charmatch()
11
   Local Incoming_data As String * 25
12

13
   'Daten vom Buffer auslesen
14
   Input Incoming_data Noecho
15

16
   Targetbrightness = Val(incoming_data)
17
End Sub
18

19
' Hier wird anhand verschiedener Parameter die LED an Ausgang "Ledcontroller1" gedimmt
20
Sub Dimleds
21

22
   'LEDs1
23
   Pwmctr1 = Pwmctr1 + 1
24

25
   Tmphelligkeit = 256 - Flackerh1
26

27
   If Pwmctr1 = Tmphelligkeit Then
28
        Ledcontroller1 = 1
29
   End If
30

31
   If Pwmctr1 = 255 Then
32
      Pwmctr1 = 0
33
      If Flackerh1 < 255 Then
34
         Ledcontroller1 = 0
35
      End If
36
   End If
37

38
End Sub

Das funktioniert auch alles sehr gut, das einzige Problem ist folgendes: 
Wenn ich per UART einen neuen Wert sende, dann flackern die LEDs kurz. 
Liegt natürlich vermutlich daran, dass die Interrupt Routine einfach zu 
lange braucht.

Gibt es eine Möglichkeit, dies zu verbessern? Ich habe auch schon einen 
Timer für das Dimmen verwendet statt die Main-Loop, kommt aber aufs 
gleiche raus. Ich arbeite mit 8Mhz.

Danke & Viele Grüße,
Pascal

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