Hallo, allerseits!
Ich habe (um eine grobe Software-PWM zu programmieren [und um das
Prinzip dahinter zu verstehen]) mal folgendes programmiert:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 |
|
4 | int main(void){
|
5 | DDRB=0xff;
|
6 | char a=0;
|
7 | char b=10;
|
8 |
|
9 |
|
10 | while(1){
|
11 |
|
12 | for (char c=0;c<10;c++)
|
13 | {
|
14 |
|
15 | PORTB=255;
|
16 | _delay_ms(a);
|
17 | PORTB=0;
|
18 | _delay_ms(b);
|
19 |
|
20 | a++;
|
21 | b--;
|
22 | }
|
23 | for (char c=0;c<10;c++)
|
24 | {
|
25 |
|
26 | PORTB=255;
|
27 | _delay_ms(a);
|
28 | PORTB=0;
|
29 | _delay_ms(b);
|
30 |
|
31 | a--;
|
32 | b++;
|
33 | }
|
34 | }
|
35 | return 0;
|
36 | }
|
Das Programm macht genau was es soll, nämlich ein paar LEDs am PORTB
ein- und ausfaden lassen. Allerdings bläst der Compiler das Programm
ganz schön auf; für diese wenigen Schleifen gehen schonmal 4 KB ins Land
:(
Woran könnte das ligen? am Compiler? (Ich habe -Os als Optimierung an)
Ich benutze das AVR-Studio in Version 4.13.
Danke für eventuelle Antworten!
Gruß,
NrDesign