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...
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.
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 ;-).
Ohne das Zauberwort "Blinklicht" im Titel hätte die Kristallkugel wohl auch versagt :-) Oliver
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
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ß...
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
Guenter B. wrote:
> Wo schaltet man die Optimierung ein ?
"Project | Configuration Options | General | Optimization"
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
@Benedikt: >Ein Befehl auf einem AVR ist aber 1 Word groß... Ist der AVR nicht ein 8-Bit RISC??? Bin grade verwirrt :-)
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.