-
Thread
Probleme Flash Bootloader AtMega2560
die Brownout Fuse setzen, was das Problem ebenfalls nicht behoben hat. Ich habe auch mit der Optimierung rumgespielt, ebenfalls ohne Erfolg... Wie hoch stehen die Chancen, das das Problem nicht 50cm vorm Monitor sondern im AVR-GCC Compiler liegt? Das einzige was ich mir vorstellen kann (da ich die
-
Thread
Schneller Mikrocontroller
auch kein Mensch. Moby schrieb im Beitrag #3734645: > Asm-Code ist mehr als "irgendwelche Optimierungen". Er ist die > einfachste, kleinstmöglichste, schnellste, paßgenaueste Lösung jeder > Aufgabe. Dem Stimme ich nicht zu. Ich gebe dir recht, ASM ist mehr als nur eine Optimierung. Ich gebe
spielts keine Rolle. Die Funktion kann der Compiler trotzdem nicht inlinen (auch bei entsprechender Optimierung, habs gerade mal wieder gemessen).
-
Thread
Noch ein RTOS
Heute habe ich Chibios auf mein STM32F401 portiert. Für IDE mit Eclipse und GCC ca. 2 Std.
> eben vermeiden. Heute habe ich Chibios auf mein STM32F401 portiert. Für IDE mit Eclipse und GCC ca. 2 Std.
-
Thread
uC: Adresse von Empfangspuffer an andere Funktion übergeben
true; [/code] und lesen [code] if (Daten_gueltig) { ... = Daten; } [/code] Ohne Optimierung funktioniert das auch so. Mit Optimierung kommt der Kompiler womöglich auf die Idee, die Daten in einer anderen Reihenfolge zu lesen. Z.B. Daten_gueltig wird gesetzt, bevor Daten den korrekten
gelesen. Wie die Memory-Barrier genau realisiert wird, hängt vom Prozessor und vom Kompiler ab. Bei GCC sollte es das folgende tun (Makro definieren!): [code] asm volatile ("" : : : "memory"); [/code] Jürgen
-
Thread
Optimizer Warnung bei SDCC
Code mit eingeschalteter Optimierung nicht läuft, dann ist er fehlerhaft (= verstößt gegen den Standard).
Rabe schrieb im Beitrag #3731765: > Wenn Code mit eingeschalteter Optimierung nicht läuft, dann ist er > fehlerhaft (= verstößt gegen den Standard). Bei korrekt arbeitenden Compilern muss das so sein. Bei GCC wohl keine Frage. Bei SDCC würd ich das aber nicht unterschreiben
-
Thread
Was macht ein AVR bei einer Division durch Null?
-Kompiler gefallen, wenn man ihm einen Quelltext > gibt, der eine Division durch Null erzeugt? GCC gibt eine Warnung. Wenn er es merkt.
http://gcc.gnu.org/viewcvs/gcc/trunk/libgcc/config/avr/lib1funcs.S?content-type=text%2Fplain&view=co Für die nicht zwingend saturierenden Fixed-Point Divisionen sind m.W. ebenfalls so, daß diese auf den Maximal
-
Thread
,,Sprung zu beliebiger Adresse" - Kleine Frage dazu
erreichen. Und das ist nur deswegen keine Einschränkung, weil man diese verkürzten Sprungbefehle als *Optimierung* verwendet (der Maschinencode ist kürzer). Falls die Distanz zu weit sein sollte, kann man ja allemal noch einen absoluten Sprung nehmen. Allerdings übernimmt der Assembler für dich das Ausrechnen
oldmax schrieb im Beitrag #3725722: > Richtig... aber probier es mal aus. GCC 4.7.2 erzeugt und assembliert seelenruhig IJMP. > Und soweit ich mich erinnern kann, > steht da auch was betreffendes im Datenblatt. Möglicherweise in einer > Fußnote. Ich finde nichts (bzw
-
Thread
Ampelsteuerung mit Potentiometer
übergibst, die diese Zeit abwartet. Zum Thema ADC http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe#Der_interne_ADC_im_AVR
delay_ms verbirgt sich eine Funkion, die auf jeden Fall inline aufgelöst wird. Eben damit die Optimierungen greifen können und das Ergebnis stimmt.
-
Thread
If Abfrage in C - Frage zu Verkürzung
Michael schrieb im Beitrag #3720531: > Und der gcc ist natürlich - wie so ziemlich jeder Compiler der letzten > zwanzig Jahre - clever genug, das zu optimieren. Die Welt besteht nicht nur aus gcc. Du hast leider keine Ahnung, wie (teilweise
Ausschliesslich für kleine Mikrocontroller bestimmte Compiler sind bei Optimierung nicht annähernd auf dem Standard von GCC. Einerseits weil hinter GCC 3 Jahrzehnte Optimierung für Highend-Maschinen stecken. Andererseits weil zu viel unerwartete Optimierung im Kundenkreis unerwünscht
-
Thread
Wahl der richtigen µC-Familie Gesperrt
STLink-Firmware aktualisieren. IAR ist nicht so meins, ich arbeite am Mac bislang mit Eclipse, AVR-GCC, GNU-arm-eabi, ... SDCC hätte ich auch schon da, muss das mit etwas Geduld versuchen, in Eclipse zu integrieren.
rechnet char, int, long, long long und float zu meiner vollsten Zufriedenheit. Nur double kann der AVR-GCC leider nicht.
-
Thread
arm-gcc -Os Problem in reset Handler
Hi, bis zur Optimierung (-O3) funktionierts noch. Umgebung: CoIDE gcc 4.8 2013q4 mit STM32F050F6 Bei (-Os) kommt schon in der mit *** gekennzeichneten Stelle ein fault. .section .text.Reset_Handler .weak
die Adresse 0x08002dbe ein 2byte alignment hat im Gegensatz zum 4byte Alignment bei der (-O3) Optimierung. Jetzt müsste ich mal genauer in das Cortex Manuell schauen, oder weiß jemand direkt, das das Alignment die Ursache für den fault ist? Wenn ja, wo muss ich drehen, das der gcc so etwas nicht
-
Thread
IRMP auf einen PIC18F4520 portieren
Änderung reinkamen, entdeckt und behoben. Jetzt sollte der Source im SVN auch wieder durch den avr-gcc gehen ;-)
also ein zip file. Benutzt habe ich xc8-1.3.1 und mplabx 2.10. nur die free version, keinerlei optimierung. Auch habe ich noch mal die Interruptzeit gemessen: ca 3.5 us bei ruhe, springt bis auf ca 7us wenn IR tasten gedrückt werden. das letztere könnte aber wohl an meinem UART interrupts liegen
-
Thread
Division fehlerhaft
im Beitrag #3697934: > daß der Kompiler einfach Sachen nach Gutdünken > wegoptimiert Für die Optimierung gibt es ja Regeln und eine ist die "as if" Regel. Die *Funktion* des Codes muss nach der optimierung so sein *als ob* der Compiler nichts getan hätte. Das der Code nicht immer das macht was der
würde ich zum Testen des Programmes erzwingen > wollen, daß nichts optimiert wird Einfach die Optimierung ausschalten. Grüße
-
Thread
Anfänger fragen zur Programmierung des Atmega32A in C
Das Tutorial von diesem Forum ist recht verständlich. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
/articles/AVR-GCC-Tutorial das ist klasse danke
-
Thread
MPLAB X Broken Breakpoint
Problemen (broken Breakpoints), nicht der Simulator. Einen Versuch ist es aber wert. Die Optimierungen im Compiler sollte man zum Debggen auch abschalten.
Andreas S. schrieb im Beitrag #3680338: > Was meinst du, > Gast, mit "Optimierung abschalten"? Wo mache ich das? Unter "Project properties" --> XC16(Global options): XC16-gcc --> Dort unter "Option categories": Optimizations --> "Optimization level" auf 0 setzen. (
-
Thread
STM32F4 Discovery Takt am Ausgang
t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F429 // IDE : CooCox CoIDE 1.7.4 // GCC : 4.7 2012q4 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Hauptprogramm // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c
Register laden - 2 Takte XOR - 1 Takt Register schreiben - 2 Takte. Bei perfekter Compiler Optimierung. Max. Toggelfrequrnz ist also 168MHz / 5, Max Ausgabetakt also 168MHz / 10 = 16.8MHz. So klappt das nicht... Gib den Takt per Timer oder vllt DCMI aus...
-
Thread
Zu viele pop/push bei Interruptaufruf -> Optimierung?
deklarieren, dann must du dich um das pushen/popen selber kümmern (welch ein Wortspiel) https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.htm Gruß Roland
Register tatsächlich überschrieben werden, und pusht > nur diese. Das bring beim GCC aber nur dann was, wenn Inlining stattfindet d.h. kein Funktionsaufruf mehr stattfindet. Wenn die Funktion nicht geinlinet wird, dann nutzt GCC den bekannten, kleineren Fußabdruck der Funktion nicht
-
Thread
Assembler Frage
. Und ich auf ein krasses Unverständnis von der Arbeitsweise eines solch komplexen Werkzeuges wie GCC. Es ist beim GCC (und bei allen anderen ernsthaften Compilern) nicht mehr sinnvoll, willkürlich nach dem Sinn irgendeines Schnippels zu fragen. Ganz einfach deshalb, weil zwischen C-Quelltext und
oder anderen Form mitspielt. Auch in deinem Code ist es sehr wahrscheinlich nicht eine einzige Optimierung, die für das Ergebnis verantwortlich ist, sondern da sind viele Optimierungen am Werk, die sukzessive und in Schritten den Ausgangscode auf das letztendlich generierte Ergebnis transformieren.
-
Thread
Warnung / Fehler nach casten von char a[] zu uint_32*
attribute versehen, dass es an die richtige Bytegrenze gelinkt wird. Näheres verrät die Doku zum GCC
Doku zum GCC > > Falsch. Minimalbeispiel ist angehaengt! Standarteinstellung verstehe ich als: [code]gcc main.c[/code]. Damit läuft der Compiler mit Warnung durch. Kein Abbruch (-Werror fehlt ja...) und vor
-
Thread
AVR Studio Bug Breakpoin!
Beitrag #3666072: > Was mache ich falsch? c-hater hat's gut zusammengefasst: einfach die compiler optimierung abschalten, dann klappts auch mit den breakpoints. Tipp: Du solltest auf einheitliche schreibweisen achten... Sec_Kopie, Min_KOPIE... Grüße
Wie kommt ihr eigentlich drauf, dass es an der Einstellung für die Optimierung liegen muss? Ich gehe mal davon aus, dass er GCC verwendet und beim AVR-Studio sollte die Defaulteinstellung "-O0" für die "Debug"-Konfiguration sein. Ich hätte eher die Vermutung, dass aus
-
Thread
Probleme mit Übergabe eines Arrays
Warnungen anmachen, dann sollte der Compiler > schon ein wenig meckern. Da gibts keine Warnungen (GCC mit -Wall, -Wextra und -pedantic). Klar ist es schöner, size_t zu verwenden. Aber auf einem uC darf man durchaus kleinere Datentypen verwenden. Marian B. schrieb im Beitrag #3665614: > Ergo (immer
strlen liefert nach POSIX size_t, was z.B. beim AVR-GCC uint16_t entspricht und uint16_t =/= uint8_t. Ergo impliziter Cast bei der Zuweisung. strcmp liefert nach POSIX int, was z.B. beim AVR-GCC int16_t entspricht und int16_t =/= int8_t. Wenn jemand solchen
-
Thread
Suche Softcore Alternative mit Compiler und Debugger
> hätte. Hi, Ich habe schon mehrmals erfolgreich gcc und gdb mit mingw32 übersetzt. Der Vorteil dabei ist, dass man nachher kein cygwin braucht um die laufen zu lassen. Ist vielleicht etwas für Dich. Gruß Martin
Hallo zusammen, Danke für die Infos. GCC und GDB für Windows sollte eigentlich kein Problem sein. Da sollte ich Übung durch YAGARTO haben. Viele Grüße, Michael
-
Thread
GCC ( AVRStudio 6.2.933.beta) optimiert lokale variable weg
Optimierung ausschalten ? Debugmodus bedeutet nur das die Zusatzinfos nicht entfernt werden bzw. überhaupt generiert werden.
einen 8 Bit Controller mit seinen beschränkten Resourcen betrachten. Und ich arbeite ja nicht nur mit GCC und mit AVRs. Aber in diesem einen Falle hätte es natürlich mit Aus/Einschaltung der Optimierung funktioniert.
-
Thread
Problem bei Erstellung eines Arrays
Hallo zusammen, ich arbeite mit einem STM32F4 und CooCox (mit neuster GCC Version). Ich habe ein etwas größeres Programm (hier die gekürzte Fassung!!!) geschrieben, in dem ich ein Array V_f[16] innerhalb einer Funktion erstelle. [c]void estimator_qmethod(float a1, float
funktioniert das wie gewohnt. Beim Kompilieren erhalte ich keine Warnungen. Ich habe keinerlei Code-Optimierungen an. Hat jemand eine Idee woran das liegen könnte? Falls ihr mehr Informationen braucht, stelle ich die gerne bereit! MfG Peter
-
Thread
Leisungsvergleich ARM AVR
die beim ARM zusammen auf 4 bytes erfolgen können. Somit könnte der AVR-Code bei entsprechender Optimierung auf dem ARM um ein vielfaches schneller laufen.
Dirk K. schrieb im Beitrag #3640847: > Optimierungen (-O2) Wie sieht dein Px-Auswerte-code denn inzwischen aus? Du hattest auch if-while-Verschachtelungen...
-
Thread
LCD WinAVR gibt nur halbe Texte aus
ich vergessen :o bitte vielmals um entschludigung :) http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung In C. Habe diese Bsp Kopiert und die Pinbelegung angepasst. Mit zufällig meine ich komplett zufällig! Hatte auch einmal "Temperatur" als ganzes Wort stehen. "Hello
da steht die selbe Frequenz. Was ist hier mit gemeint? Wichtig ist außerdem, dass die Optimierung bei der Compilierung eingeschaltet ist, sonst stimmen die Zeiten der Funktionen _delay_us() und _delay_ms() nicht und der Code wird wesentlich länger (Siehe Dokumentation der libc im WinAVR).
-
Thread
ARM-GCC: stderr
Hallo Klaus, beim AVR-GCC habe ich das im Griff. Die Frage bezieht sich auf dem ARM-GCC. Viele Grüße W.T.
die in einer Schleife Byte für Byte kopiert. Siehe die Liste der built-in-Funktionen hier: http://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Other-Builtins.html#Other-Builtins
-
Thread
Atmel Studio 6 ignoriert Code
>und wenn dann der >Rest wegoptimiert wird, hilft mir das recht wenig. Einfach die Optimierung abschalten.
verwendet wird und der Linker sie rauswirft, etwa mit --gc-sections und -fdata-sections. Bei neueren avr-gcc wirkt -fdata-sections nämlich auch auf PROGMEM-Daten, was früher[tm] nicht so war.
-
Thread
Eigene 4bit-Integerzahl erstellen mit Über-Unterlauf in C
ATmega2560 und habe bisher bei meinen Projekten maximal 37% des Speichers belegt. Also muss diese Optimierung nicht sein, da hast du recht. Aber jmd fragte, was ich mit den übrigen Bits vorhatte. ;) guter Spruch
Zumal diese Optimierung des Speicherverbrauches auf Lasten der Performance geht.
-
Thread
An alle Echten Programmierer: Fortran lebt!
/könne/, denn der praktische Beweis ist ja da. ;-) Im Gegenzug sind generische Compiler (wie GCC) mit ihrem FORTRAN-Frontend natürlich nicht besser als der äquivalente C-Compiler. Oder anders gesagt: würden sich die genannten Hersteller mit gleichem Eifer an die Optimierung eines Compilers
Ist bei Anweisungen mit arithmetischen Ausdrücken beim GCC denn noch so viel Optimierungspotenzial? Wenn ich zumindest für den AVR-GCC mal gelegentlich in den generierten Assemblercode reinschaue, ist bei solchen Anweisungen auch mit handgeknüppeltem Assembler
-
Thread
gratis PIC compiler, der pipelining benutzt?
nicht-optimierenden Compiler durchaus plausibel aus und weist viele Analogien mit Code auf, den etwa GCC ohne Optimierung erzeugt — selbst wenn sich Zielarchitektur und Compilerarchitektur deutlich unterscheiden: > "XC8 insert two useless instructions that moves the assigned value > to a temporally
nicht-optimierenden Compiler durchaus >plausibel aus und weist viele Analogien mit Code auf, den etwa GCC ohne >Optimierung erzeugt — selbst wenn sich Zielarchitektur und >Compilerarchitektur deutlich unterscheiden: Kann schon sein. >Das zeigt lediglich, daß der Autor nicht versteht, wie Compiler
-
Thread
Unterschied #define und Funktion?
Wenn der verwendete Compiler inlinen nicht beherrscht, würde ich mein Geld zurück verlangen und/oder GCC oder Clang verwenden... > Es lohnt als an kritischen > Stellen immer ein Blick auf den produzierten Assembler-Code. Das ja. > Historisch > resultieren ja viele Makros aus nicht so guten Optimierungen
hatten Kernighan und Ritchie noch keinen optimierenden Compiler. Damals mussten die halt Inline-Optimierungen noch irgendwie zurecht tricksen. Hat sich inzwischen erledigt.
-
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
Compiler-Einstellung im Code erkennen?
Optimierung oder Wegfall von Debug-Infos verändern.
Wurm drin. Zwar kannst du per #ifdef __OPTIMIZE__ oder #ifdef __OPTIMIZE_SIZE__ abtesten, ob Optimierung (auf Größe) aktiviert ist, aber wenn du das brauchst, hast du vermutlich einen Denkfehler im Programm. Erzeugen / Nichterzeugen von Debug-Information wird niemals den von GCC erzeugten Code verändern
-
Thread
Servos "zittern"
Dateien lcd_routines.c und lcd_routines.h findet man hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung Muss natürlich auf den µC, den Takt und das LCD angepasst werden. Andreas S. schrieb im Beitrag #3621195: > Ich wollte Dir als Einsteiger das Interrupt-Programmieren
weiß nicht, dass es eine Beziehung bezüglich der Verwendung zwischen den Variablen gibt. Wenn die Optimierung eingeschaltet ist, baut sie unkontrolliert Mist, wenn der Compiler nicht mit "volatile" zu einer bestimmten Vorgehensweise gezwungen ist. IMHO dürfte das Problem also nur zusammen mit Variablenverwendung
-
Thread
AVR, Pointer auf Flash-Speicher per Assembler
>solche Tabellen immer in die untersten 64 kiB legt? Nein, EIN C-Compiler nicht, aber DER avr gcc. Will man mehr, muss man workarounden ;-) [[AVR-GCC-Tutorial]] -> Variablenzugriff >64kB
> Nein, EIN C-Compiler nicht, aber DER avr gcc. Will man mehr, muss man > workarounden ;-) > > AVR-GCC-Tutorial > > -> Variablenzugriff >64kB Hier wendet sich der Gast mit Grausen... Entschuldigen Sie die Störung, ich bleibe bei Assembler
-
Thread
Inline Funktion in Interrupt Routine
gcc-Option -lto beim Compilieren _und_ Linken angeben. Wichtig: Beim Linken auch noch die Optimierung einschalten, z.B. -Os. Dann hast Du zumindest eine Chance, dass die Funktion "geinlined
Michael Reinelt schrieb im Beitrag #3618108: > GCC does not inline any functions when not optimizing unless you specify > the ‘always_inline’ attribute for the function [...] Mit Optimierung sieht gcc ein inline ohne "always_inline" allerdings
-
Thread
uC führt Code nicht aus, wenn in if-Abfrage zuvor zu viel Code ist?
bisschen größer ist, es funktioniert! Aber warum verhält sich ein Programm bei unterschiedlichen Optimierungen komplett anders? :O
K. schrieb im Beitrag #3615789: > Aber warum verhält sich ein Programm bei unterschiedlichen Optimierungen > komplett anders? :O Häufigstes Problem: du hast ein "volatile" vergessen und der Compiler optimiert anders...
-
Thread
Compiler-Warnings für nicht initialisierte Variablen EINschalten
enable-version-specific-runtime-libs --without-system-libunwind --with-cpu=generic --host=x86_64-suse-linux Thread model: posix gcc version 4.1.2 20061115 (prerelease) (SUSE Linux) [/c]
tictactoe schrieb im Beitrag #3616587: > Mein GCC warnt aber schon: Mist, ich habe wohl meinen eigenen Beitrag nicht gelesen: Yalu X. schrieb im Beitrag #3614474: > Es muss auch ein gewisser Grad an Optimierung aktiviert sein, damit der > Compiler
-
Thread
Welcher Lowpower uC
sein sich daran zu orientieren. Nicht umsonst gibt es http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial auf der Mainpage verlinkt.
kostenlos, auch für kommerziellen Einsatz. Bei XC8 muss man bei der kostenlosen Version auf Teile der Optimierung verzichten. Olaf schrieb im Beitrag #3622483: > Dann solltest du einen Mikrocontroller nehmen der in der Lage ist dumme > Glaser anzusteuern. Der oben genannte PIC16 wäre z.B. so einer.
-
Thread
Warum doppelbedeutung static?
Compiler hat mit Adressvergabe grad garnix am Hat, das macht immer noch der Linker / Lokator, im Fall der GCC also ld.
was heißt hier "schon", Windows/Microsoft ist jetzt nicht gerade ganz vorne bei der C++ Entwicklung. GCC und Clang sind da weiter...
-
Thread
Avr-gcc Bitshift 32bit Variable geht nicht
return 1; }[/c] Ich habe mir ein Testprogramm geschrieben: Atmel Studio 6.2 im Simulator. Optimierung ausgeschaltet, aber keine Änderung bei aktivierter Optimierung. [c] for(uint8_t i=0;i<30;i++) { if((i%2) == 0) { ret[i] = RinoBus_Fifo_Write(&f,i|(1<<8)); }else {
[[AVR-GCC-Codeoptimierung]]
-
Thread
ARM-GCC: Wert auslesen
Hallo zusammen, ich habe es mal wieder geschafft, mich in eine totale Anfängerfrage zu maneuvrieren: Ich will ein Register auslesen, da dadurch das Statusflag zurückgesetzt wird. Den ausgelesenen Wert kann ich allerdings für nichts gebrauchen. Also mal schnell und naiv: [c] void dummy(void) { volatile temp; // Auslesen, um Flag zu löschen temp = I2Cx->SR2; // temp wird nicht weiter gebraucht und nicht weiter verwendet } [/c] Wie kann ich sicherstellen, daß diese Leseoperation nicht wegoptimiert wird. Immerhin kann der Compiler von ihrer Nebenwirkung ja nichts wissen?
-
Thread
"Include-Libs" - Teufelswerk?
so dass > es nicht funktioniert. Neuere Versionen können vermutlich auch die > "normalen" Optimierungen -O2 etc besser. Lieber eine nicht-antike > Compilerversion verlangen als hässlichen Code zu schreiben... gcc4.7.2 ist antik?!? Das glaubst Du doch selbst nicht.
einem frühen zeitpunkt des Compilevorgangs, also vor Inlining > von Funktionen und anderen Optimierungen. Beim LTO-Lauf extrahiert der > Compiler die LTO-Info und hat dann die globale Information über alle > Module / Danke für die Hintergrundinfos. Für den Laien kann man also sagen: Der gcc
-
Thread
womit füllt atmel bit shift (>>) die neuen bits auf?
lss-file > postest? Genau, zeige uns den generierten Assembler-Code und nenne uns die verwendete GCC-Version.
[code] ..... -O1 .... [/code] und da wunderst du dich, dass der gcc nicht vernünftig optimiert?
-
Thread
Atmega88 Servo mit Poti steuern
1,26. Also > müsste es so auch funktionieren. > OCR1B = ICR1 - (850 + (ADC_C0 * 1.26)); Beim AVR GCC ist der Default für die Berechnung ein Integer, damit wird sich das so verhalten, wie von mir oben beschrieben. Im AVR-Studio kannst Du Deinen Code auch simulieren und die Variablen untersuchen, stell dafür auf keine Optimierung, -O0.
-
Thread
Kleine Byte-Buffer Lib
inline" zu verwenden. Dazu zwinge ich den Compiler noch gern zu inlinen, weil er das (wegen Os Optimierung beispielsweise) nicht selbst tun will: __attribute__((always_inline)) für bspw. GCC Das ganze noch in ein Makro #define BYTE_BUFFER_INLINE static inline __attribute__((always_inline)) ;-) Übrigens, wenn sich nicht großartig was geändert hat am GCC (vorausgesetzt, der wird hier benutzt), dann ist Inlining NICHT möglich, wenn der Quellcode NICHT in der Header Datei steht.
-
Thread
Atmel UC3A (ECVK1100) - FreeRTOS und USB (CDC)
handle_Data_Address_Read: rjmp $[/c] Da mein Problem allerdings sogar dann schon besteht, wenn ich die compiler-Optimierung von -O1 auf -O0 setzte, vermute ich jedoch, dass das Problem nicht unbedingt bei dieser einen Zeile bestehen muss. Ob, und welche Interrupts eventuell nicht rechtzeitig für die USB-Kommunikation
wenig konnte ich nun doch noch die Stelle eingrenzen, an der sich der Code aufhängt, wenn ich die Optimierung auf -O0 stelle. Im nun zusammengewürfelten Projekt aus FreeRTOS+USB ist somit auch das Symbol "FREERTOS_USED" definiert. Unter anderem wird es bei der IRQ verwendet: file: usbb_device.c [