guus.assmann schreef op maandag 30 oktober 2006 @ 16:19:
Het zou ook kunnen zijn dat de ULN een beetje lekstroom heeft.
En er kan ook "Ghosting" optreden bij multiplexing.
De ULN heeft een gemeenschappelijke aansluiting met diodes naar alle uitgangen.
Sluit die eens aan. (Moet naar de plus als ik me goed herinner)
dat is die free-wheeling diode zal ik eens doen
Thijsch schreef op maandag 30 oktober 2006 @ 17:03:
Waarschijnlijk worden je leds simpelweg nooit uitgezet. Je PWM doe je neem ik aan met een teller, als die 0 is zet je alle leds aan en zodra die gelijk is aan een bepaalde waarde zet je de leds weer uit. In dat geval zal de led nooit helemaal uitgaan.
ik gebruik de ingebouwde PWM controllers. Je krijgt ook volgens de datasheet een spike als je je PWM waarde op 0 zet. Dit is wel te verhelpen
Dit is op te lossen door als de pwm-teller gelijk is aan 0 de vergelijkingen NIET te doorlopen, ze hebben immers geen enkel nut. Ikzelf werk ook met interrupt gedreven pwm, en zodra je de leds aan hebt gezet als de teller 0 is. Gewoon de interrupt beindigen.
omdat ik toch de HW PWM gebruik zal dat me een beetje een rotzorg zijn denk ik
Dit is dus een simpele beschrijving zoals de hardware pwm het ook doet. Als je dit wil voorkomen moet je het in software proggen, interrupt gedreven. Meteen meer output kanalen..
Op dit moment kan ik er 4 maken voor een RGB led is 3 al genoeg dus op dit moment niet echt relevant.
maar voor de liefhebbers mijn ongetwijfeld erg prutserige code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| .include "tn2313def.inc"
.equ led=6
.equ blue=4
.equ green=3
.equ red=2
.equ delay=10
.def temp=R16
.def pwmh=R17
.def pwml=R18
;interrupt vector
.org 0x0000
rjmp RESET
RESET:
;STACK INIT!!!
ldi temp, RAMEND
out SPL, temp
;STACK INIT!!!
;timer0
;enable PWM A and B of Timer0
;ldi temp, 163
ldi temp, 255
out TCCR0A, temp
;set prescaling of Timer0
ldi temp, 1
out TCCR0B, temp
;enable ports for PWM outputs
sbi DDRB, 2
sbi DDRD, 5
;timer1
;enable PWM A and B of Timer1
;ldi temp,161
ldi temp,241
out TCCR1A, temp
;set prescaling of Timer1 and 8 bit operation mode
ldi temp,9
;ldi temp,1
out TCCR1B, temp
;enable ports for PWM outputs
sbi DDRB, 3
sbi DDRB, 4
;set PWM values timer 0
ldi temp, 0 ;red
out OCR0A, temp
ldi temp, 0
out OCR0B, temp
;set PWM values timer 1
ldi pwmh, 0
ldi pwml, 0 ;blue
out OCR1AH, pwmh
out OCR1AL, pwml
ldi pwmh, 0
ldi pwml, 0 ; green
out OCR1BH, pwmh
out OCR1BL, pwml
rjmp LOOP
LOOP:
rjmp LOOP |
[
Voor 39% gewijzigd door
TrailBlazer op 30-10-2006 18:08
]