Hallo Leute!
Ich habe ein Problem! Und zwar möchte ich zwischen 2 LEDs hin- und
her-faden. Sprich:
(1) LED1 an, LED2 aus
(2) LED1 langsam ausfaden, ->gleichzeitig<- LED2 einfaden
(3) LED1 aus, LED2 an
dafür hab ich jetzt folgende Funktion (für den ATtiny2313) auf Basis des
Fading-tuts mit 2 Timern (es sollen insgesamt 4 LEDs werden, die
untereinander durchfaden, aber erstmal nur für 2):
1
void fade() {
2
3
int16_t tmp;
4
5
TCCR1A = 0xA1; // non-inverted PWM on OC1A, 8 Bit Fast PWM
Das Ergebnis ist allerdings folgendes:
(1) LED1 an, LED2 an
(2) LED1 fadet aus
(3) LED1 fadet ein
(4) LED2 fadet aus
(5) LED2 fadet ein
Wieso? Wo genau liegt mein Denkfehler? Oder ist das so gar nicht
realisierbar?
Ich sitz jetzt schon Stunden über den Code und ich komm einfach nich
mehr weiter :(
Wäre cool, wenn mir hier jemand auf die Sprünge helfen könnte :)
Danke schonmal!
markus1689
Und einen Fehler hab ich jetzt gefunden! Und zwar war WGM02 im T0 auf 0
statt auf 1.
Jetzt faden aber immer beide LEDs gleichzeitig aus! Sollte das nich
eigentlich duch das "pwmtable_8D+31-tmp" im gegensatz zu
"pwmtable_8D+tmp" umgedreht werden? Also eine geht aus wären die andere
angeht!?
Vielleicht noch die pwmtable_8D:
Bei mir klappt dein Programm grundsätzlich.
Die fehlenden Teile habe ich auf das [[Pollin
Funk-AVR-Evaluationsboard]] (Attiny2313 @ 8 MHz) angepasst. Eine LED
passte bereits von der Hardware her, die andere musste ich per Jumper
kontaktieren. Wie steht in der Source (Anhang)
EEPROM-Code habe ich weggelassen und die Tabelle hatte ich mir zunächst
ausgedacht (linear, Delta=8). Deine Tabelle habe ich jetzt auch
probiert. Geschmackssache sagt der Affe :)
Bei der Initialisierung habe ich mal deine Doppelinitialisierung stehen
lassen, auch wenn ich nur 2 LEDs habe.
>Bei mir klappt dein Programm grundsätzlich.>unsigned char pwmtable_8D[32] = {
Die Tabelle steht ja auch im RAM und die
Elemente sind unsigned char und nicht uint16_t;)
Hi Stefan!
Vielen Dank für die Mühe! Das beruhigt mich in soweit, dass ich wohl
keinen technischen Fehler gemacht habe ;)
Sieht leider so aus, als ob eine LED ausgeht, wieder angeht, dann die
andere aus und wieder an, weißt du, was ich meine? Liegt wohl daran,
dass LEDs nunmal im unteren Bereich sehr schnell und im oberen bereich
sehr langsam dimmen -.- da wurde ja versucht durch die angepasste
Tabelle zu verhindern...
Ich bin gerade am Überlegen, ob ich nich einfach die LEDs
durchwechsel... Dann bin ich auch nich auf 4 Kanäle beschränkt... Und
vom sichtbaren Effekt is das wohl nahezu das gleiche, wenn ich z. B.
einen solchen Übergang mache:
(500ms)
1 -> 1 -> 1
0 -> 1 -> 1
1 -> 1 -> 0
1 -> 1 -> 1
Trotzdem natürlich an alle, die sich hier reingedacht haben, vielen,
vielen Dank! :)
markus1689