Forum: Mikrocontroller und Digitale Elektronik LED Dimmer per UART steuern: Flackern


von Pascal (Gast)


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

von Lehrmann M. (ubimbo)


Lesenswert?

PIC, AVR, ... ???

von snowfly (Gast)


Lesenswert?

Bei BASCOM nehme ich mal AVR an.

Warum nimmst du nicht einfach Hardware PWM?
da flackert nix

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.