Hallo,
ich habe ein paar Fragen zum PWM Thema und diversen anderen C Code.
Ich denke das wird im laufe der Zeit weiter ausarten, aber komme ich
erstmal auf dad pwm Thema..
Also ich habe ein ATMega128A mit einer pwm am laufen.
Mit dieser pwm dimme ich eine LED. Wenn ich den OCR1A Wert ändere,
ändert sich auch die Helligkeit der LED.
Ok.
Wenn ich dad ganze nun aufdimmen lassen möchte, schreibe ich ganz simpel
1 | int test = 0;
|
2 | while(1)
|
3 | {
|
4 | OCR1A = test;
|
5 | _delay_ms(100);
|
6 | test++;
|
7 | }
|
und dann dimmt die led auf...
oder auf und ab...
1 | int test = 0;
|
2 | int up = 1;
|
3 | while(1)
|
4 | {
|
5 | OCR1A = test;
|
6 | _delay_ms(100);
|
7 |
|
8 | if (up == 1) {
|
9 | test++;
|
10 | } else {
|
11 | test--;
|
12 | }
|
13 |
|
14 | if (test == 255) {
|
15 | up = 0;
|
16 | }
|
17 | if (test == 0) {
|
18 | up = 1;
|
19 | }
|
20 | }
|
Jetzt würde ich das ganze jedoch gerne mit einem timer machen. Das delay
lässt ja den ganzen Controller schlafen.
Ein timer mit einer isr habe ich auch schoneinmal ans laufen bekommen,
die isr belegt jedoch auch Zeit vom Controller.
Wie könnte man den Wert denn mit einem timer ändern? Ohne isr? Und wie
ändert man die "Geschwindigkeit" des dimmens?
Danke