Forum: Compiler & IDEs _delay_ms macht das programm 3,5 kB groß


von Robert Stefanowicz (Gast)


Lesenswert?

Hallo miteinander!

Ich probieren auf Windows-XP mit AVR-Studio 5  einen Attiny26-16PU
mit folgendem zu flashen:

#include <avr/io.h>
#define F_CPU 1200000UL  // 1,2 MHz
#include <util/delay.h>

int main(void)
{
  DDRA = 0xFF;

   while (1) {
       PORTA = 0x4c; _delay_ms(255);

       PORTA = 0x00; _delay_ms(255);
   }

   return(0);
}


Ich bekomme als Meldung vom AVR-Studio:


    Device: attiny26
    Program:    3634 bytes (177.4% Full)
    (.text + .data + .bootloader)
    Data:          8 bytes (6.2% Full)
    (.data + .bss + .noinit)
  Done executing task "RunAvrGCC".
Done building target "CoreBuild" in project "AVRGCC1.avrgccproj".
Target "PostBuildEvent" skipped, due to false condition; 
('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Programme\Atmel\AVR Studio 
5.0\Vs\Avr.common.targets" from project "C:\Dokumente und 
Einstellungen\Administrator\Desktop\AVRGCC1\AVRGCC1\AVRGCC1.avrgccproj" 
(entry point):
Done building target "Build" in project "AVRGCC1.avrgccproj".
Done building project "AVRGCC1.avrgccproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped 
==========

Sprich : Program:    3634 bytes (177.4% Full)

Lasse ich delay.h und _delay_ms befehle weg, dann ist das programm nur 
wenige byte groß.

Ich bitte um Unterstützung!
Nette Grüße aus Stuttgart
Robert Stefanowicz

von Lukas K. (carrotindustries)


Lesenswert?

Ins blaue geraten: Optimierung abgeschaltet.
Kompilier' das Programm mal mit -Os

von Robert Stefanowicz (Gast)


Lesenswert?

Danke für die rasche Antwort.
wo gebe ich diesen Parameter bei AVR-Studio ein ?

von Marco O. (xray272)


Lesenswert?

Project --> Properties
Toolchain --> Optimization

mfg marco

von Marco O. (xray272)


Lesenswert?

160bytes ! das geht doch ^^

von hp-freund (Gast)


Lesenswert?

Marco Oklitz schrieb:
> 160bytes ! das geht doch ^^

Prüf aber erst mal in der lst Datei ob die _delay_ms durch die 
Optimierung nicht komplett verschwinden ist.

von hp-freund (Gast)


Lesenswert?

Verschwunden meinte ich natürlich :)

von Matthias (Gast)


Lesenswert?

hp-freund schrieb:
> Prüf aber erst mal in der lst Datei ob die _delay_ms durch die
> Optimierung nicht komplett verschwinden ist.

Warum sollte die verschwinden.

Wie steht in der delay.h so richtig:
"In order for these functions to work as intended, compiler 
optimizations <em>must</em> be enabled, and the delay time must be an 
expression that is a known constant at compile-time."

von hp-freund (Gast)


Lesenswert?

Hab es gerade mal getestet:
mit delay: 90byte
ohne delay: 54byte

Scheint alles in Ordnung zu sein. Ich ziehe meine Bedenken zurück ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.