Hallo,
ich habe folgendes Programm:
1 | #include <avr/io.h> // Pins
|
2 | #include <util/delay.h> // Verzögerung
|
3 | int main()
|
4 | {
|
5 | DDRB |= (1 << DDB4); // PortB Pin4 als Ausgang einstellen
|
6 |
|
7 | char brightness = 100;
|
8 | while (1)
|
9 | {
|
10 | PORTB |= (1 << PB4);
|
11 | _delay_us(brightness);
|
12 | PORTB &= ~(1 << PB4);
|
13 | _delay_us(255 - brightness);
|
14 | }
|
15 | }
|
dann hat das Programm folgende Größe:
1 | avr-size --format=berkeley -t eiscube.elf
|
2 | text data bss dec hex filename
|
3 | 100 0 0 100 64 eiscube.elf
|
4 | 100 0 0 100 64 (TOTALS)
|
Wenn ich allerdings die PWM-Funktion auslagere:
1 | #include <avr/io.h> // Pins
|
2 | #include <util/delay.h> // Verzögerung
|
3 |
|
4 | void pwm(char brightness) // PWM
|
5 | {
|
6 | PORTB |= (1 << PB4);
|
7 | _delay_us(brightness);
|
8 | PORTB &= ~(1 << PB4);
|
9 | _delay_us(255 - brightness);
|
10 | }
|
11 |
|
12 | int main()
|
13 | {
|
14 | DDRB |= (1 << DDB4); // PortB Pin4 als Ausgang einstellen
|
15 |
|
16 | while (1)
|
17 | {
|
18 | pwm(100)
|
19 | }
|
20 | }
|
hat das Programm folgende Größe:
1 | avr-size --format=berkeley -t eiscube.elf
|
2 | text data bss dec hex filename
|
3 | 4186 264 0 4450 1162 eiscube.elf
|
4 | 4186 264 0 4450 1162 (TOTALS)
|
was bereits zu groß für meine ATtiny13 ist. Was kann ich machen, um die
Programmgröße kleinzuhalten und trotzdem nicht auf Funktionen verzichten
zu müssen?