Moin Leute...
Ich habe ein Timingproblem was LEDs dimmen angeht.
momentaner Stand:
1. weisse und blaue LEDs sollen abwechselnd gedimmt werden
2. LEDs werden mittels PWM gedimmt (OC1A und OC1B)
3. Timer0 im Fast-PWM Mode (zählt bis 1023, Vergleichsregister OCR1A u. 
OCR1B)
Wenn ich die beiden LEDs mit gleichen Werten in den Vergleichsregistern 
hin und herdimmen lasse dann dimmen die LEDs wie gewünscht, sprich:
WS    BL
0%    100%
20%   80%
40%   60%
50%   50%
60%   40%
70%   30%
80%   20%
90%   10%
100%  0%
Da die LED von der Leuchtstärke alldings unterschiedlich sind, ich sie 
also in der Helligkeit angleichen möchte, Sieht der Dimmvorgang nicht 
mehr so schön aus da die beiden Vergleichsregister mit unterschiedlichen 
Werten geladen sind. Angenommen die blauen haben einen Soll-Wert von 20% 
und die weissen von 40%. Dann sollen die blauen von 0% bis 20% 
hochgedimmt werden, während die blauen von 40% nach 0% gedimmt werden. 
Hierbei müssten ja die blauen langsamer dimmen als die weissen damit ich 
einen flüssigen Übergang erhalte.
Mein Problem ist jetzt wie ich das realisieren soll...
Die Funktion muss auch flexibel sein weil wie schon gesagt, die maximale 
Helligkeit ist ja abhängig von den eingesetzten LEDs. Könnt ihr mir da 
ein wenig auf die Sprünge helfen ?
Hier noch meine derzeitige Funktion zum dimmen:
| 1 | .
 | 
| 2 | .
 | 
| 3 | .
 | 
| 4 | #define  PWM_WS    OCR1A      //Pin Ausgang
 | 
| 5 | #define  PWM_BL    OCR1B 
 | 
| 6 | volatile uint16_t intTOP_WS;
 | 
| 7 | volatile uint16_t intTOP_BL;
 | 
| 8 | 
 | 
| 9 | .
 | 
| 10 | .
 | 
| 11 | .
 | 
| 12 | void flush(void)
 | 
| 13 | {
 | 
| 14 |   for (i = 0; i < intTOP_WS; i++)
 | 
| 15 |   { 
 | 
| 16 |     PWM_WS++; 
 | 
| 17 |     PWM_BL--;
 | 
| 18 |   _delay_ms(6);
 | 
| 19 |   }
 | 
| 20 | 
 | 
| 21 |   for (i = 0; i < intTOP_BL; i++)
 | 
| 22 |   { 
 | 
| 23 |     PWM_WS--; 
 | 
| 24 |     PWM_BL++;
 | 
| 25 |   _delay_ms(6);
 | 
| 26 |   }
 | 
| 27 | }
 | 
Vielen Dank schonmal für die Bemühungen.