-
Thread
Assembler aus Hex-Dump
hex_dump.hex > hex_converted.asm (http://rn-wissen.de/wiki/index.php/Assembler-Dump_erstellen_mit_avr-gcc) Dazu hätte ich ein paar Fragen. Ist als Architektur "avr" richtig?? Ich habe auch schon Beispiele gesehen bei dehnen avr4 oder avr2 standen? Gibt es eine vergleichsweise bequeme Möglichkeit
herauszufinden, aus wo welche Sections beginnen? http://rn-wissen.de/wiki/index.php?title=Avr-gcc/Interna#Speicherverwaltung
-
Thread
AVR-GCC Fixed Point und Strings
> "long long sat fract". Unterstützt der AVR-GCC diesen Typen überhaupt?
nicht finden kann, d.h. die Funktion ist auch nicht in einer lib des gcc, die in jedem Falle mitgelinkt wird. Kann man dafür ausgehen, dass beim avr-gcc dafür einfach der Support fehlt?
-
Thread
SPI Master Code Optimierung
Hallo Forum, ich habe das Problem dass mein AVR-GCC nicht das macht was ich will: Hier der Code: [c] //slave.h: typedef struct { const uint8_t slaveSelectPin; volatile uint8_t * slaveSelectPort; const uint8_t outputSignalPin; volatile
das noch rausreißen können, aber das kann ich mir angesichts der Komplexität der notwendigen Optimierung schwer vorstellen.
-
Thread
Bootloader Atmega644 Interrupts und die Probleme
geht :). Vielen Dank für die hilfe und ein schönes Wochenende Gruß Daniel PS: hab die Optimierung auf (-O2) jetzt gestellt und es geht.
Daniel H. schrieb im Beitrag #2416754: > PS: hab die Optimierung auf (-O2) jetzt gestellt und es geht. Die delay routinen und viele libs sind auf -Os optimiert. -O0 verursacht bei mir oft Probleme, mit -O2 wäre ich auch vorsichtig.
-
Thread
Wie stelle ich die Optimierung ein, dass...
dieses foo=4 wegoptimiert wird ( oder erwarte ich da zuviel ??? ) #include <avr/io.h> uint8_t foo; int main(void) { /* Setzt das Richtungsregister des Ports A auf 0xff (alle Pins als Ausgang): */ DDRB = 0xff; foo = 4; /* Setzt PortA auf 0x03, Bit 0 und 1 "high", restliche "low": */ PORTB = 0x03; }
-
Thread
Frage zu C und möglichen Schreibweisen
Semikolon gehört natürlich nicht dahin. Aber zwei Meinungen? Es geht natürlich um einen Atmega und GCC Comiler uint16_t CRC_VAL; uint16_t std_value = 0xFFFF ;
Lesezugriff auch in >einer Abfrage ausgeführt wird. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung >Das mit der Schreibweise werd ich mir merken. [[Strukturierte Programmierung auf Mikrocontrollern]]
-
Thread
made from scratch Firmware für Wittig/Welec Oszilloskop W20xxA
Die Cygwin Version von SF habe ich auch erst benutzt. Es gibt aber eine minimal neuere GCC Version von Altera. Die cygwin Version auf SF ist die "gcc version 2.9-nios-010801-20030718", die letzte Altera Version für den Nios I ist "gcc version 2.9-nios-010801-20041001" (GNU Tool 3.2). Den
Björn F. schrieb im Beitrag #2517975: > Wie schon gesagt, mit dem gcc > 4 mag er den Code nicht übersetzen. > Übersetzt ist das ganze also mit gcc 3.4.4 unter Ubuntu 10.04. Den alten > gcc muss man allerdings aus dem Hardy Repository installieren. Entschuldigung,
-
Thread
GPS Daten Umrechnen und ausgeben (float to string)
<UDRE))); UDR = nmea[ucCount]; ucCount++; } [/c] kann es sein das hier die Optimierungen von GCC eine rolle spielen?
Claudio H. schrieb: > kann es sein das hier die Optimierungen von GCC eine rolle spielen? Nein. Aber es kann sein, dass du C lernen solltest. Mach dir eine Funktion [C] void uart_putc( char c ) { while (!(USR & (1<<UDRE))) ; UDR = c;
-
Thread
extern void f(){};
Norbert schrieb im Beitrag #3962889: > // gcc -Wall -Wextra -o x x.c Und jetzt probiere das selbe mal mit -pedantic.
schrieb im Beitrag #3990040: > Der Linker zieht globale Variablen zusammen Habs oft genug beim gcc gehabt, dass er sich eine aussucht und nur einen Teil dorthin verlinkt. Böser Fehler. Manchmal finde ich, dass der gcc zu tolerant ist und selbst meint, was richtig sein könnte. So einige Optionen
-
Thread
AVR GCC inline Funktionen
. Dann kann der gcc auch über diese Files optimieren. Aber das ist die Ausnahme und nicht die Regel!
kann, während er bar.c übersetzt! Mit folgender Sequenz ist das _nicht_ der Fall. Auch GCC hat noch keine Kristallkugel. [pre] gcc foo.c -o foo.o -W -Wall -fno-keep-inline-functions -Winline -Os gcc bar.c -o bar.o -W -Wall -fno-keep-inline-functions -Winline -Os gcc foo.o bar.o -o foobar.elf
-
Thread
WinCC Outputgrößen bei Optimierung
sich die Outputgrößen irgendwie nicht so verhalten wie ich es erwartet hätte, nämlich so: - Ohne Optimierung: Output: 7,05kB - mit -O/-O1 : 7,15kB - mit -O2 : 7,64kB - mit -O3: 7,75kB - mit -Os: 7,63kB Was ich nicht verstehe, ist, dass -Os so einen großen Output liefert, gerade im Vergleich zum
Versuch mal zusätzlich: > > -fno-inline-small-functions hmmm, ich dachte das wäre längst in gcc? Sind nur ein paar Zeilen das. FYI: [pre] Index: avr-protos.h =================================================================== --- avr-protos.h (Revision 160067) +++ avr-protos.h
-
Thread
Optimierung zeilenweise abschalten (AVR)
/Parameter senden LCD_DATA = SS_P3; //Parameter senden [/c] Gibt es eine Möglichkeit die Optimierung für diese Zeilen abzuschalten. Bei meinem alten Compiler CodeVision gabe es den Preprozessorbefehl #optimize- & #optimize+. Gibt es so etwas ähnliches auch für den GCC? Danke & Gruß Steffen
-
Thread
Impulse erzeugen
Anzahl Takte entspricht. >1ter Ansatz waren "delays" Guter Ansatz. hast du aber auch die Optimierung eingeschaltet? Sonst sitmmen deine Zeiten hinten und vore nicht. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 >Funktioniert zwar einigermaße die Zeiten
Danke @falk Optimierung ist eingeschaltet Vieleicht hab ich bei der Genauigkeit einfach ein wenig zu viel erwartet. 1 us --> 1,1 4,24 us --> 4,5 us bei der Frequenz macht sich das allerdings sehr schnell bemerkbar
-
Thread
LCD -> Probleme mit Optimierungsgrad
stelle. Dann kommen nur Hieroglyphen auf dem Display an. Ich verwende die LCD Routinen aus dem AVR-GCC Tutorial mit einem ATMega16-16PU und einem 16 MHz Quarz. Was mir aufgefallen ist: Der compiler spuckt bei der Optimierungs-Einstellung "-O0" die Warnung: [c]c:/winavr-20070525/bin/../avr/include
begrenzt, also bei 16 MHz auf maximal ca. 16,4 ms. Bei allem was länger ist kommt Murks raus. Ohne Optimierung werden die _delay_XX-Funktionen aufgebläht und wesentlich länger als gewünscht, so dass es durchaus nachvollziehbar ist, dass es ohne Optimierung funktioniert (schließlich sind die Pausen zwischen
-
Thread
Fatale Größenoptimierung
Hab vorhin ein Problem mit der Optimierung in gcc 4.0.1 gefunden. Ich bin nicht ganz klar, ob man es als Bug in gcc oder in avr-libc werten soll. Ich habe allerdings gesehen, daß jemand es bereits als Bug bei der avr-libc gemeldet hat.
= !_BV(PB5); // _delay_ms(10); } [/C] Compiliert und die Codegröße angezeigt: $ avr-gcc -Os -mmcu=attiny2313 test.c $ avr-size text data bss dec hex filename 120 0 0 120 78 a.out Jetzt ohne den Kommentar: [C] #define F_CPU 8000000L
-
Thread
implizites modul init
://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html Damit kann sich ein Modul selbst initialisieren ohne daß dies von Hand in main geschehen muss. main sieht davon nix. Somit kann man auch mit avr-gcc
Constructors werden in GCC unterstützt, siehe obigen Link auf die GCC Dokumentation. Und: Bitte nicht constructor mit naked-Funktionen in init-Sections verwechseln! Letztere sind nicht zu anderen Architekturen portabel,
-
Thread
AVR-GCC Win98 Fehler mit Schalter -Os
Was sagt denn avr-gcc -v ? Oder geht das auch nicht?
Moin, welcher Prozessor sitzt denn im Rechner? Eventuell wurde der GCC mit Optimierungen übersetzt die nicht verfügbar sind (INTEL <> AMD) MfG
-
Thread
Auf Arduino erstelltes Programm in C und Assembler anschauen
Entwicklungsumgebung von Microchip kennen gelernt. Dort ist zumindest bei Abschalten der Compiler-Optimierung hinter jedem einzelnen C-Befehl aufgeführt, wie er in Assembler übersetzt wurde. Mit AVR C und Assembler habe ich noch keine Erfahrung.
könnte eventuell auch in der "platform.txt" /pfad/zur/Arduino/IDE/hardware/platform.txt die GCC-Optionen für die Erzeugung der Assembler-List-Files anhängen: https://www.systutorials.com/240/generate-a-mixed-source-and-assembly-listing-using-gcc/
-
Thread
C Compiler für PIC
manche schwöre aber auch manche verhassen ;-) Aber ich kann dir diesen Compiler nur empfehlen. GCC gäbe es auch noch für PICs. hab aber damit noch keine Erfahrungen gemacht.
Hi der GCC kann keinen Code für den PIC erzeugen. Der einzige mir bekannte kostenlose Compiler ist der SDCC für PIC14. Matthias
-
Thread
Aus '\n' wird '\0'
hier 2 Beispiele: [c] #pragma GCC push_options #pragma GCC optimize ("O0") your code #pragma GCC pop_options [/c] und [c] void __attribute__((optimize("O0"))) foo(unsigned char data) { // unmodifiable compiler code
Compilieren >> konvertiert und das \n entfernt. >Genauer gesagt, ist es eine eine Built-In-Funktion des GCC. Aber das normale printf() im avr gcc schmeißt das \n doch nicht raus, oder?
-
Thread
Avr Studio - Hex Datei plötzlich zu groß
Problem, dass meine compilierte hex datei auf einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr auf den Controller. Die eep Datei ist auch 6 mal so groß... Habe schon mit der Optimierungs-Einstellung rumgespielt
, dass meine compilierte hex datei auf > einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf > dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr > auf den Controller. Die eep Datei ist auch 6 mal so groß... > > Habe schon mit der Optimierungs-Einstellung
-
Thread
Floatingpoint Berechnung DSP vs. ARM CM3
Laufzeitfunktionen ab. Die kann man in Assembler effizient handoptimieren - oder beispielsweise beim GCC auch als generischen C Code erhalten, wenn sich niemand dafür fand.
der richtigen Compiler-Option bzw. Library zu fassen kriegt. Das beispielsweise kann einem beim avr-gcc blühen.
-
Thread
AVR Studio 4.07
; \ [ -s test.d ] || rm -f test.d -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3 20030421 (prerelease) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even
oben ist mein makefile. makefile:224: no file name for `-include' -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3 20030421 (prerelease) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even
-
Thread
Atollic TrueStudio Lite ohne CodeSizeLimitation
besseren Code als GCC.
Gleiche tun. Paradebeispiele sind die ST-Libs für den ST32 und den ST8. Als völlig unschlagbare Optimierung gibt es nach wie vor die Möglichkeit (auch mit GCC) die Quellen in Assembler zu erstellen ...
-
Thread
C Verständnisproblem Variable sich selbst zuweisen
Dummy wird nur geschrieben um einen > Speicher zu leeren -> Dummy. Wie soll das gehen? Beim AVR-GCC wird das knallhart wegoptimiert, da nicht volatile: [c] void test() { uint8_t Dummy = Dummy; } 22: 08 95 ret [/c]
auch benutzt wird. Sonst macht das keinen Sinn. Bei eingeschalteter Optimierung sieht das Ganze allerdings anders aus. mfg.
-
Thread
leere funktion in c code ändert verhalten (attiny13)
> CFLAGS=-mmcu=attiny13 -Os -c -Os Keine Optimierung. Die leere Funktion wird nicht entfernt.
Kurt schrieb im Beitrag #4926937: >> CFLAGS=-mmcu=attiny13 -Os -c > > -Os Keine Optimierung. -Os steht für Größenoptimierung, nicht für keine Optimierung. > Die leere Funktion wird nicht entfernt. Kann sie auch gar nicht, da der Compiler nicht weiß, ob die Funktion von irgendwo
-
Thread
[GELÖST]arm-elf-gdb springt bei Breakpoint in falschen Code
Optimierung war in der Tat eingeshaltet (-Os), aber auch mit -O0 ändert sich nichts.
mit dem Problem beschäftigt. Richtig lösen konnte ich es zwar nicht, nach einer Neuinstallation (gcc, newlib, binutils, gdb), jetzt mit arm-none-eabi anstatt arm-elf, hat alles wieder funktioniert. Da arm-elf als Target im neuesten gcc-Release sowieso nicht mehr verfügbar ist, empfiehlt sich ein Umstieg
-
Thread
Vergleich der µCs nach IO-Performance
m. H. wrote: > Bleibt noch die Frage, gibt es einen freien C-Compiler für die > Steinchen? GCC. Von Microchip. Allerdings haben die es geschafft, diesen wider dem Geist der FSF so zu kastrieren, dass man für bessere Optimierung zahlen muss, indem dann ein separates proprietäres Programm eingeschleift
Andreas Kaiser wrote: > GCC. Von Microchip. Allerdings haben die es geschafft, diesen wider dem > Geist der FSF so zu kastrieren, dass man für bessere Optimierung zahlen > muss, indem dann ein separates proprietäres Programm
-
Thread
C++, virtual, inline, Fehler wenn ich abstrakte Basis-Klasse entferne
Compiler so alt ist, könnte das daran liegen. Da hat sich in den letzten Jahren schon einiges an den Optimierungen getan. Oliver
so alt ist, könnte das daran liegen. Da hat sich in > den letzten Jahren schon einiges an den Optimierungen getan. > > Oliver ich darf nur C++03, mein Testkompiler ist aber x64 mit aktuellem VS2019
-
Thread
Studio 6.0 einzelschritt debuger
Stefan U. schrieb im Beitrag #4716970: > Deaktiviere Optimierungen mit -O0 Ok, aber unter debug--Options und settings kann ich es nicht finden. wo ist denn das dann drinnen
nächsten namen und wert in zeile 2 anzeigen usw... wie oben schon gsagt wurde. Wird das an der Optimierungs Einstellung liegen die sollte ich auf low setzen. Aber ich habe immer noch nicht raus gefunden wie ich dort hin komme. könnte mir bitte jemand weiter helfen? [c]/* * GccApplication21.c
-
Thread
[AVR] Sehr schnelle Interruptroutine mit 16Bit Counter
als 600 Takte gegen ca. 20. Mehr aus Interesse an dem Stück Inline-ASM allerdings. Ich denke, die GCC-Routine hätte es genauso getan. ;-) Gruß aus Berlin Michael
avr-gcc beizubringen! Damit die unnötigen Operationen im ISR-Prolog/-Epilog entfallen :-) Johann
-
Thread
Variable an Register binden - ich kanns nicht oder compilerbug :)
übrigens, GCC hab ich mir grad die neueste Version runter geladen. Optimierung ist -Os (tritt aber auch bei -O1 -O2 und -O3 auf)
. Jörg, kannst du das mit nem ungepatchten avr-gcc nachvollziehen? Die Insn wird in Pass 141r.cse1 von avr-gcc 4.3.2 als tot erkannt und gelöscht. Johann
-
Thread
Inline Assembler Wieso Contraints, ClobberList etc?
ist... dafür brauchst du die Listen. http://www.rn-wissen.de/index.php/Inline-Assembler_in_avr-gcc http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
schließlich auch in deinem Assemblercode nicht schneller hin als der C-Compiler (sofern man ihm die Optimierung einschaltet natürlich).
-
Thread
AVR-GCC warum Code so groß?
in C. Nach dem Compilieren habe > ich aber bei FAST-AVR nur ca 56% RAM beschrieben während mir AVR-GCC > 161% sagt. Der GCC legt Konstanten als default in den SRAM. Man muß ihm erst speziell sagen, daß er sie in den Flash legen soll (Attribut progmem). Peter
Optimierung aktiviert? Zeit in delay ist keine Compilezeit-Konstante? Kristallkugel, um den Code zu sehen?
-
Thread
arm gcc Arrayzugriff
Welche GCC-Version kommt zum Einsatz? Mit welchem Programm wird das Programm auf den µC geladen? Ist es zufällig das stm32vldiscovery? Steht ein Debugger zur Verfügung? Marco Weinrich schrieb im Beitrag
Hallo Roland, ich benutze den gcc Version 4.5.2 unter Linux. Einen Debugger besitze ich keinen, und auf dem Board sitzt ein STM32F103RBT6.Flashen tue ich mit stm32flash. Wie schalte ich die Escalation ab? (bin noch Arm-Anfänger)
-
Thread
M16C GCC Minimalbeispiel
dem M16C von Renesas an und möchte gerne so bald wie möglich von der HEW-Entwicklungsumgebung nach GCC unter Linux umsteigen. Deshalb habe ich mir schon Binutils/GCC/Newlib für das "m32c-elf"-Target gebaut. Ich verzweifele aber im Moment an einem minimalen Programm, dass ein paar LEDs zum Blinken bringen
Hi, >Deshalb habe ich mir schon Binutils/GCC/Newlib für das "m32c-elf"-Target >gebaut. würdest du deine Binutils/GCC/Newlib veroeffentlichen? Ganz ehrlich gesagt sagt mir die HEW-Entwicklungsumgebung auch nicht zu und wuerde gerne den GCC
-
Thread
AVR-ASM: Simulierter call
@Charly B. Das ist aber mit Sicherheit nicht der gas aus den gcc-binutilities.
Insgesamt hat die Optimierung 220 Byte Programmspeicher gebracht.
-
Thread
Welcher µC ist "der Richtige"
teure Lizenzen nötig Wenn es um die PIC32 geht, gibt es bspw. auch die Möglichkeit den normalen GCC zu benutzen, auf welchem der XC32 bzw. XC32++ basiert http://wise-ware.org/wiki/index.php?n=Pic32.GccPic32 Für die Compiler von Microchip gilt: "No time or memory restrictions", "Unrestricted use—ideal
teuer einzukaufen Sind das nicht ARM Controller von ST? Wenn ja dann kann man doch Eclipse CTD und gcc verwenden oder geht das nicht? Oder verwechsel ich da was?
-
Thread
Zu viele Symbole werden gestrippt (Code zu klein)
auch aus Win-AVR - die spielen beim Kompilieren selbst aber keine Rolle, die relevanten Tools (avr-gcc, avr-as, ...) liegen ja in bin oder avr/bin (dort als gcc, as, ...). Benutzt wird Win7. Es gibt keine Fehler beim kompilieren. Der Build log ist absolut identisch, bis auf die Ausgabe der Größen:
atmega128rfa1.ld -Wl,--section-start=.data=0x800200 -mmcu=atmega128rfa1 [/code] (aufgerufen wird avr-gcc mit o.g. LINKER_FLAGS) Warum in aller Welt verhält sich nun ein neuerer Kompiler/Linker so dermaßen anders? Mit einem selbst kompilierten AVR-GCC 4.9.1 passiert das gleiche... Hat jemand sowas
-
Thread
Datentypen / Übergabewerte Funktionen
Hallo, ich bin momentan dabei vom Keil 8051-C51 auf AVR-GCC (Atmel Studio 6) umzusteigen. Hierbei durfte ich feststellen, dass GCC einige Datentypen, die es in C51 von Keil gibt, nicht kennt. So schlagen in C51 einwandfreie Funktionsdefinitionen wie z.B.
z.B. > > "unsigned char i2c_get(bit ack)" > > gnadenlos fehl da Datentyp "bit" bei GCC unbekannt. Das /könnte/ damit zusammenhängen, daß gcc ein C-Compiler ist ;-) Tipp: "bit" ist kein Schlüsselwort in C. Oder erwartest du, daß GCC ungültigen Code akzeptiert? (Vorausgesetzt,
-
Thread
MPLAB X Debugging mit Snap Debugger vs PicKit
github.com/cv007/XC3216 So etwas ähnliches kenne ich schon. Harald tat so, als ob es einen freien gcc für die PICs gäbe.
Harald K. schrieb im Beitrag #7925739: > Das wiederum ist ein Grund für viele, stattdessen den gcc zu verwenden, Das war mal der Fall, als es nur eine rudimentäre, bzw. wirklich "kastrierte" Optimierung gab. Is seit _gefühlt_ 10 Jahren nich mehr so.
-
Thread
WinAVR bekannter Linker Fehler?
Namen in anderen > Modulen diesen Effekt zu verhindern. Ja, so ist es. > Sollte das in "C" oder gcc wirklich so gewollt sein, da doch die export > Funktion ausreichend sein sollte. Das hat nichts mit GCC zu tun. Das ist in der Sprache 'C' so definiert. Eine Funktion oder Schlüsselwort 'export'
. Andere Linker machen das nicht und geben entsprechende Fehlermeldungen aus. Dem GCC lässt sich dieses Verhalten mit -fno-common auch abgewöhnen.
-
Thread
Merkwürdige Laufzeitunterschiede bei umgestellten Gleichungen (float + int)
die Division fällt damit komplett raus. Das Gleiche bei Variante 3 "105.6 / 5.6" Welche Optimierung -O hattest du an?
der float-Behandlung nicht erforderlich ist, hilft z.B. -ffast-math oder ähnliche Optionen. Siehe GCC-Doku.
-
Thread
Probleme bei den ersten Schritten mit WinAvr
wie [pre] -Wall -W : aktiviert ein paar Warnungen -Os : Optimierungen -std=gnu99 : Erweiterungen wie Mischen von Code und Deklarationen [/pre] Wenn man die Arbeitsweise von GCC verstanden hat, ist's später auch einfacher, klomplexere Fehlermeldungen einzuordnen
Hast du ein Beispiel, wo man den Fehler nachvollziehen kann? Ist das ein Meldung von make, das avr-gcc nicht findet, oder eine Meldung von avr-gcc, der cc1 nicht findet? Ersteres ist kein Problem von GCC, und letzteres deutet auf eine kaputte Installation hin. Johann
-
Thread
Zweierkomplement uint8_t richtig ausgeben
Bit-Wert z = (struct z){z}.z; // Vorzeichenerweiterung nach int [/c] Leider tut sich da der GCC etwas schwer bei der Optimierung.
> z = (struct z){z}.z; // Vorzeichenerweiterung nach int > [/c] > > Leider tut sich da der GCC etwas schwer bei der Optimierung. Das mit den 10 Bit laeuft. Ich will aber auch eine 8 Bit Variante. Hierbei liegen die Daten in einem uint8_t und das Vorzeichen ist auch an der 8. Stelle. Um dem
-
Thread
define_ms() und F_CPU
Compiler-Optimierung eingeschaltet?
16mhz extern die Deklaration auch > geändert. Vor oder nach dem '#include <avr/delay.h>'? Optimierung 'Os' eingestellt?
-
Thread
Probleme mit dem richtigen setzten des sei() makros bei externem Interrupt ATmega16
optimiert es der Compiler wieder > raus. Nein, das darf er nicht, weil das eine Endlosschleife ist. Gcc macht das auch richtig offensichtlich wenn die Optimierungen an sind: [code] $ cat main.c #include <inttypes.h> int main(void) { for (uint8_t x = 0; x < 1000; x++) {}
es der Compiler wieder >> raus. > > Nein, das darf er nicht, weil das eine Endlosschleife ist. Gcc macht das > auch richtig offensichtlich wenn die Optimierungen an sind: Was für einen Unsinn erzählst du uns hier jetzt? Aber immerhin lieferst du den Nachweis, dass es wegoptimiert wird, gleich
-
Thread
Gleitender Mittelwert -> Algorithmus
intel c++ compiler ist wohl so ein Stück schlitzohriger Software, der es in diesem Fall mit der Optimierung (Einsparung von Rechenzeit) übertreibt. Aber ob der Compiler "aggresiv optimiert" sollte der obligatorische Regressiontest (Vergleich Ergebnisse alter, neuer Softwarestand) zeigen.
Da hast Du Recht, Klaus. Guter Einwand. Ich benutz meist GCC, da ist dieser Spaß zum Glück per Default deaktiviert. Wer doppelt sicher gehen will kann ja bei GCC mit -fno-associative-math das noch mal explizit deaktivieren.
-
Thread
_delay_ms geht nicht obwohl richtig verwendet
/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:153:28: error: __builtin_avr_delay_cycles expects an integer constant. /usr/lib/gcc/avr/4.5.3/../../../avr/include/util/delay.h:153:28: error: __builtin_avr_delay_cycles
Built-ins, für die man jedoch keine(n) Header braucht und für die as Built-in Makros gibt: http://gcc.gnu.org/onlinedocs/gcc/AVR-Built_002din-Functions.html Und die anderen Built-ins sind dokumentiert in http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Other-Builtins.html#Other-Builtins für __builtin_
-
Thread
Wie habt ihr C gelernt?
, Shell. µC habe ich hobbymäßig mit Assembler programmiert. Und vor ca. 3 Jahren erst habe ich das gcc-Tutorial hier überflogen und mein erstes C Projekt auf dem AVR durchgezogen. Ich würde mich all jenen anschließen, die empfehlen C auf dem PC zu lernen. Wenn man die Sprache an sich beherrscht und vielleicht auch schon die richtige^Wselbe Toolchain (gcc) verwendet, dann hilft das enorm weiter wenn man den Schritt zum µC geht. Da kommt dann eigentlich bloß noch ein Sack magische Namen wie PORTD oben drauf. Und natürlich eine andere Standardlibrary.