mikrocontroller.net

Forum: Compiler & IDEs 3700 Byte für ein Blinklicht


Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

warum produziert dieser kurze Code 3700 Byte ?
Muss ich noch irgendwas im AVR-Studio einstellen ?
Text und Bootloader brauche ich normalerweise doch nicht.

Gruß

Günter


Device: attiny13

Program:    3780 bytes (369.1% Full)
(.text + .data + .bootloader)

Data:          8 bytes (12.5% Full)
(.data + .bss + .noinit)

Build succeeded with 0 Warnings...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Angesichts von 0 Bytes Quellcode ist das tatsächlich recht viel.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die Delayfunktionen muss die Optimierung eingeschaltet werden.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guenter B. wrote:

> Text und Bootloader brauche ich normalerweise doch nicht.

Wo willst du den Programmcode unterbringen, wenn du .text nicht
brauchst?

Ansonsten sagt mir meine Kristallkugel, dass du _delay_ms() benutzt
und vergessen hast, die Optimierung einzuschalten.  Die entsprechende
Compilerwarnung hast du dann auch gleich ignoriert.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint eine gute Zeit für Kristallkugeln zu sein - allein aus der 
Grösse des Programms auf die Ursache zu schliessen, das hat schon was 
;-).

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne das Zauberwort "Blinklicht" im Titel hätte die Kristallkugel wohl 
auch versagt :-)

Oliver

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht handelt es sich ja um eine "NOP Kette" das erklärte wohl 
selbst bei 1 khz externem takt noch die unglaublichen 3700 Byte und gäbe 
dann gerade mal ca 3,7 sec Periodendauer.


;-DDDD

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Winfried J. wrote:
> vielleicht handelt es sich ja um eine "NOP Kette" das erklärte wohl
> selbst bei 1 khz externem takt noch die unglaublichen 3700 Byte

Ein Befehl auf einem AVR ist aber 1 Word groß...

Autor: Guenter B. (gbl)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich war mir sicher den Quellcode angehängt zu haben.
Aber eure Kristalkugel schein gut zu funktionieren.
Ich habe wirklich _delay_ms() benutzt.
Wo schaltet man die Optimierung ein ?
Ich mache gerade meine ersten Gehversuche mit C.

Gruß

Günter

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guenter B. wrote:
> Wo schaltet man die Optimierung ein ?
"Project | Configuration Options | General | Optimization"

Autor: Guenter B. (gbl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke

Ich habe testweise -0s eingestellt.
-> 117 Bytes

Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damals, als ich angefangen habe, C zu programmieren... Okay, das war 
Atari ST oder PC oder irgendeine Workstation oder so..., da brachte es 
das niedliche Hello-World!-Progrämmchen auch auf ein Binary von ca. 8KB. 
Damals gab's noch keine dynamischen Libraries für den Compiler.

Na gut, nach dem "strip a.out" ist es immerhin auf ca. 2 KB geschrumpft.

virtuPIC
/ggadgets for tools & toys

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt:
>Ein Befehl auf einem AVR ist aber 1 Word groß...

Ist der AVR nicht ein 8-Bit RISC???

Bin grade verwirrt :-)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dieser Logik wäre Microchips dsPIC30 eine 24-Bit Architektur ;-).

Nö, die Breite eines Codewortes hat nichts mit der Breite der 
Datenverarbeitung zu tun. Zumindest nicht, wenn dabei getrennte 
Adressräume für Code und Daten im Spiel sind.

Autor: Dahohl Dahhl (dahohl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe im Quellcode folgende Zeile(n) gefunden:

_delay_ms(500);

Frage: Funktioniert das? Ich meinte diese Funktion ist auf 262.14 ms / 
F_CPU in MHz begrenzt (-> delay.h) oder hab ich da was nicht richtig 
verstanden?

Bsp: bei 16MHz wären es noch 16.38ms

Gruss dahohl

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Grenze gab es in alten Versionen der avr-libc. Mittlerweise 
arbeiten diese Funktionen adaptiv, d.h. je nach Delay wird das 
unterschiedlich realisiert, mit unterschiedlicher Auflösung bis 6,5s.

Die Formulierung in der Doku ist allerdings nicht wirklich gelungen, 
denn da steht erst drin, dass nicht mehr als 262/MHz möglich ist, und 
dahinter dann dass es sehr wohl möglich ist.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.