-
Thread
SPI will auf AVR nicht laufen
nicht sein! Nicht ohne Grund sind die SPI Register als volatile deklariert. Also sind sie von Optimierungen ausgeschlossen.
kann ein solcher Fehler auch nicht auftreten. Wie schon gesagt... Mit einem halben Dutzend AVR Gcc Toolchains getestet.
-
Thread
Einheitliche Regel für in C erstellte Variablen, Typen etc
return count; } [/c] Mal mit drei verschiedenen Typdefinitionen compiliert: [pre] $ avr-gcc -Os -mmcu=atmega328 -S -o default.s test.c $ avr-gcc -Os -mmcu=atmega328 -DTYPE=int -S -o int.s test.c $ avr-gcc -Os -mmcu=atmega328 -DTYPE=int_fast32_t -S -o int_fast32_t.s test.c $ md5sum *.s
Es gibt beim gcc & clang noch __int128_t und bei c23 _BitInt(N) (Wobei es für N eine obergrenze gibt, über der das ib ist.)
-
Thread
Statische Bibliothek erstellen in C++
in das Build-System ein was es besser macht. Nicht den Code unlesbar machen um fragwürdige Optimierungen zu erzielen, das ist fast immer ein Fehler.
Anwendung braucht ungepackt rund 3 Mb, gepackt mit Winrar knapp 800 Kb. Statisches Linken, Optimierung -o3 mfg
-
Thread
ATMega328, komisches Verhalten bei fast vollem Speicher
der Minimum-Code von hier: http://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc#Dynamischer_RAM-Verbrauch
könntest dir auch die ersten Zeilen des Assemblercodes angucken bzw. mit dem Ergebnis des neuen avr-gcc vergleichen.
-
Thread
xmega Taktfrequenz
schrieb im Beitrag #5494536: > Warum habe ich solch lange Schaltzeiten bei 32MHz? Welchen Optimierungs-Level hast Du aktiviert? Poste doch bitte auch Deinen Compiler-Aufruf. Grüßle Volker Nachtrag: Ohne Optimierung funktioniert der Zugriff auf das geschützte Register für die Taktumstellung nicht, wird also aktiviert sein. Mein avr-gcc erzeugt für die Schleife folgenden Code .L3: std Z+5,r24 std Z+6,r24 rjmp .L3 Wobei jeder Assembler-Befehl 2 Taktzyklen benötigt und die Schleife somit 187,5ns benötigt
-
Thread
AVR ATMega8 Systementwicklung in C
Hallo Severino, sieh einmal hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial dort steht alles was Du bruachst und wissen muß um los legen zu können. Grüße Hans-Josef
erzeugen. Nur so kannst du schnell sehen wie groß das Programm wirklich wird. @ Peter >avr-gcc -g -Wall -Wstrict-prototypes -Os -mcall-prologues Siehe oben. Kleiner gehts kaum noch.
-
Thread
Schachcomputer
GCC ist ein freier C/C++ Compiler den man ueberall fuer alle Betriebssysteme herunterladen kann.
aber ich kann nur durch Probieren sehen, ob ich das wirklich durchziehe. Fangen wir mal mit c/c++ GCC an! Also was benötige ich C oder C++ und ist der GCC die Schnittstelle zum Prozessor oder das Entwicklungsprogramm? Gruß Duracell
-
Thread
_delay_ms macht das programm 3,5 kB groß
Ins blaue geraten: Optimierung abgeschaltet. Kompilier' das Programm mal mit -Os
160bytes ! das geht doch ^^ Prüf aber erst mal in der lst Datei ob die _delay_ms durch die Optimierung nicht komplett verschwinden ist.
-
Thread
ATtiny85 - bei 3.5kB ist Schluss
abweichen, greift diese Optimierung natürlich nicht mehr.
gibt es leider _flash, usw. nicht. AFAIK schon, denn der Compiler unten drunter ist auch der avr gcc.
-
Thread
bestimmte gnu-arm-as Version im Netz finden
Du könntest hier schauen ob der da dabei ist: https://launchpad.net/gcc-arm-embedded/+series
2.24-"Kollegen" anders machen zu müssen. Vielleicht gibt es ja einen Schalter, der gewisse Optimierungen steuert?
-
Thread
AVR Struct Zugriff
nicht, da solcherlei Operationen nicht klar definiert sind. Vielmehr sind läuft es im aktuellen avr-gcc auf denselben Assembler-Text hinaus. Wobei die Variante mit den Flags, die Floh oben vorgeschlagen hat, noch deutlich langsamer ist, da der gcc die Bitoperation standardmäßig auf einen Integer aufweitet
2) y = 2; else if (x & 4) y = 3; } [/c] Ohne Optimierung ist die Variante mit dem Bitvektor, wie oben schon beschrieben, effizienter.
-
Thread
Referenzen in C
mitteilen, etwa wenn sie nur in einem Modul gebraucht wird (static). Vielleicht bringt das schon die Optimierung. Und hast mal den Code angeschaut, den avr-g++ für eine Referenz macht? Ich glaub nicht daß der besser ist als mit Zeigern.
Programmieren ist zwar schön aber das was am ende Rauskommt ist leider selten optimal (was die optimierung angeht). Der Computer kann halt noch nicht denken.
-
Thread
HINWEIS: abgekündigte Funktionen/Makros verschwinden bald
Böhmische Dörfer für mich! Im Endeffekt ist GCC ja nur ein Werkzeug. Ich würde zum Blech biegen auch den Hammer mit dem krummen 30cm Stiel nehmen. Mit dem kann ich eben gut. Auch wenn die EU "Normgerechte Hämmer mit 20cm Stiel, rot lackiert" vorschreibt
, Code wie foo |= BAR; foo &= ~BAR; zu verstehen, weil es halt generisches C ist. Wenn AVR-GCC nicht irgendwann mal die Krücke mit sbi und cbi und so gebraucht hätte, hätte die AVR-GCC-Gemeinde sicher auch gar keine Probleme damit, weil sie sich von vornherein an die natürliche C-Schreibweise
-
Thread
Makros versus Funktionen
Stefan schrieb im Beitrag #3333210: > Aber > dann klappt die Optimierung nicht mehr so gut, oder doch? Funktionen sind Makros grundsätzlich und immer vorzuziehen, falls irgendwie möglich. Makros haben keinen Typ, keinen Scope, bringen die Syntax durcheinander etc. Wenn man inline-Funktionen verwendet klappt die Optimierung genau so gut (wenn der GCC sich trotzdem weigert die Funktion zu inlinen, __attribute__((always_inline)) dranschreiben). Headerfiles mit Tausenden #defines (siehe CMSIS...) sind wie ein Feld
-
Thread
Assembler oder C
professionelle Softwareentwicklung findet in Assembler statt, höchstens noch ein paar zeitkritische Optimierungen. C ist nicht schwer zu erlernen und man spart sich solche unnötigen Verrenkungen wie "low bytes anfügen und dann durch 4800 teilen". Was soll das? Warum sollte man sich das Leben unnötig kompliziert
8051 compiliert. Der Code war jeweils auf den >entsprechenden Controller optimiert (keine ASM-Optimierungen). Der >Unterschied in der Codegröße war minimal und vernachlässigbar. Es wird immer Projekte geben, die die Vorteile der einen (oder anderen) Architektur besser nutzen. Wobei die Codegrösse
-
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
STM32 komisches Verhalten bei include und leerer Funktion
coocox 1.7.7 mit gcc 4.9 hat keine Probleme mit dem Projekt.
demselben Evalboard nicht. Zwischenzeitlich habe ich avon Win7 auf Win10 umgestellt und CoIDE/gcc neu installiert.. Ob das was damit zutun hast? Mich kotzt das hier an..
-
Thread
GCC -> ASM
@echo off set mcu=90s2313 set main=test set ac=c:\avr\winavr path %ac%\bin;%path% avr-gcc.exe -xc -Os -mmcu=at%mcu% -Wall -g -o main.out *.c avr-objdump.exe -t -h -S main.out >%main%.lst avr-objcopy.exe -O ihex main.out %main%.hex avr-size.exe -B main.out ----------------------------
keinerlei Symbole dranhängen, damit sieht der Disassembler sie nicht mehr. Bei bestimmten Optimierungen kann die Ausgabe auch ziemlich konfus aussehen, weil ein Compiler, je ,,RISCiger'' ein Prozessor ist, um so mehr Verbiegungen am generierten Code vornimmt, um ihn optimal auf den Prozessor anzupassen
-
Thread
GCC cross compile / libgcc.a verweist in leeren speicher bereich
befehle weiter ein sprungbefehl und der zeigt ins leere. WARUM???? Ich habe diese Probleme mit dem GCC-4.6.3, GCC-4.7.0 und GCC-4.7.1 Was muss ich ändern? Die libgcc liegt als static vor "libgcc.a" Wenn ich den GCC-4.6.3 von codesourcery verwende gibt es kein Problem. Die Makefile und den linkerskript
Möglicherweise hat Dein eigenerzeugter Compiler andere arch- und cpu defaults wie der Codesourcery. GCC-Manual sollte Auskunft geben. Was sagt $ xxx-gcc -v? Bei CS kommt da: arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER=/usr/local/CodeSourcery
-
Thread
LDO Regler ADP3339 überbrücken(?)
immer eine Warnung geworfen wird: irgendwas mit 'delay.h' funktioniert nicht richtig, wenn keine Optimierung eingeschaltet ist. Ich habe dann mal die Optimierung auf 'Grösse' eingeschaltet, und das Ding laufen lassen. Die Warnung war zwar weg, aber dafür spielte das Display verrückt! Die Optimierungsstufen 'Geschwindigkeit' und 'Mittel' brachen das gleiche Ergebnis. Erst ohne Optimierung zeigte die Kiste wieder was an, weil dann das Displaytiming wieder stimmte! Die haben da so lange dran rumgebastelt, bis das auch ohne Optimierung funktionierte! Naja. Also. Das Display.
-
Thread
Frage zu Pointern - AVR vs x86_64
Sieht jemand auf Anhieb einen Fehler? Ich nutze avr-eclipse, daher kein Makefile. [code] $ avr-gcc --version avr-gcc (GCC) 4.3.4 [/code] [code] $ gcc --version gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 [/code] Vielen Dank für die Ratschläge, ich vermute, dass es etwas sehr banales ist, aber
muss... Meine Assembler-Kenntnisse gehen leider gegen 0 :( Ich habe jetzt versucht, es ohne Optimierungen zu übersetzen (-O0) und da scheint es zu gehen!? Wo kann da in meinem Code der Fehler sein? Mir wird das langsam zu hoch ;)
-
Thread
sigma delta dac in c
so um die 100kHz. Faktor 10 bringt da qualitativ viel. Stellt sich nur die Frage, mit welcher Optimierung komiliert?
chris schrieb im Beitrag #3129573: > Stellt sich nur die Frage, mit welcher Optimierung komiliert? Ach so, das habe ich ganz vergessen zuschreiben: Die angegebenen Ergebnisse gelten für die Optimierung mit -O2. Bei -Os wird der Code etwas langsamer und etwas kleiner. Die Unterschiede
-
Thread
Wieso wird alles kompiliert?
ist das ganze > halt viel einfacher. Was nicht benötigt wird, wird auch nicht kopiliert. Der AVR-GCC kann auch eine über alles Optimierung vornehmen: [pre] -Wl,--relax --combine -fwhole-program [/pre] Alle nicht benötigten Daten/Funktionen fliegen raus, alle nur einmal benutzten Funktionen werden
http://www.mikrocontroller.net/articles/GCC:_unbenutzte_Funktionen_entfernen
-
Thread
Welche IDE um Controller zu programmieren/flashen
noch gar keine AVR. Makefiles schreibe ich auch schon länger, als es die AVR gibt. Und der Rest (avr-gcc, avr-gdb, avrdude) ist mit einem Tastendruck in aptitude installiert.
XC32 weder Lizenz-Bedingungen für die einzelnen Lizenzen, noch eine andere Information zu der Optimierung. Free geht nur bis -O1, -O2 ist ab PRO.
-
Thread
attiny2313, LCD, 4-Bit, C, Einzelne Zeichen falsch
mal vorneweg: Ich sehe Text ! Verwendet habe ich (nach zig eigenen Tests) den SourceCode aus dem GCC-Tutorial. Angepaßt auf meine Pins (Port B). Mein Problem liegt nun darin, das bestimmte Zeichen nicht richtig angezeigt werden, allerdings in seltsamen Konstellationen. Das hier ist mein Hauptprogramm
0 wenn der Aufruf aus einer Schleife kommt. Darum hatte ich vermutet, das es irgendwas mit Optimierungen & Compiler zu tun hat.
-
Thread
Display fällt in unregelmäßigen Abständen aus
Hab die Optimierungen mal umgesetzt und werd das ganze bei Gelegenheit mal auf den Käfer packen. Bei der PROGMEM optimierung bin ich mir unsicher, muss ich da nicht pgm_read_byt verwenden um da dann drauf zuzugreifen
nachgelesen und gesehen, dass da ein Adressoperator fehlt, läuft jetzt erstmal mit den ganzen Optimierungen. Mal schauen ob er immer noch zu schwachsinn übergeht oder nicht. Florian
-
Thread
AVR-install-skript?
hallo ihr fleißigen! könnt ihr mir sagen, ob, und wenn ja, wo es ein Skript für den avr-gcc gibt, das wie das hier im forum für den msp430 verwendet wird und alles benötigte für linux aus dem netz zieht und installiert? ich dachte da an simulavr, gcc, avr-libc, avr-gdb, uisp,... in möglichst
letztlich eine Übermenge des yacc. > aja, sind die versionen ok? ich habe mal aus verdacht den gcc4 > genommen! Nimm eine neuere Version des GCC, die Optimierung ist dort für den AVR deutlich besser geworden. Ich mache meine Projekte auf Arbeit nunmehr mit GCC 4.1.0. Wenn du latest+greatest
-
Thread
µC von 0 auf lernen. ASM oder C?
PIC gibt es GCC basierende Compiler. (Wobei es ja auch geschmackssache ist ob jemand gcc favorisiert oder nicht. Nicht für jeden ist das der Nabel der Welt) 2. Die freien Compiler von Microchip sind -nach ablauf
wenn Wilhelm am Internet teilnehmen kann, dann hat er sicherlich > auch eine Plattform, auf der der GCC läuft. Es geht nicht um *auf*, sondern *für*... Auf einem AVR läuft auch kein GCC, aber der GCC kann AVR-Code generieren. > Wenn er wirklich keine Plattform hat, der arme Mensch... Es gibt ja auch
-
Thread
avr-gcc Code im lss
hi, wenn man im AVR-Studio ein Projekt erstellt undkompiliert, dann findet man im Listing auch den C-Code als Kommentar wieder. Im Eclipse mit AVR-Plugin ist das leider nicht der Fall. Weiß jemand welche optionen für die Ausgabe des codes verantwortlich sind oder noch besser, wo ich das genau in den Projekt-Settings im Eclipse-Projekt umstellen muss? Danke Vlad
-
Thread
LCD-lib ohne R/W
die Lib von P. Fleury verwendet, nach Änderungen in der SW und fehlerfreiem kompilieren mit neuem GCC ergeben sich allerdings Probleme. Ohne Optimierung läuft das Programm einwandfrei, ist aber zu groß für den Kontroller Mega8 (Test mit Mega32). Mit Optimierung geht am Display nichts mehr ausser gelegentlich
restliche Programm etwas dazugekommen. Der Speicherplatz ist voll daher wollte ich es mit dem neuen GCC machen, mit dem alten gehts nicht. Lesen ist nicht wichtig da nur alle 2sec aktualisiert wird und auch nicht zeitkritisch. Wie müsste man denn die Lib umrüsten?
-
Thread
Webseite für die Einarbeitung STM32 auf Deutsch
Hardware z.B. Sensoren in meine Simulationen mit einbinden. Das Hilft bei der Visulaisierung und optimierung komplexer Regelungen. Weißt du zufällig wo ich die Cpp bezüglichen Einstellungen für den GCC nachlesen kann? Ich würde mit gern ein genaueres Bild machen was ich Abschalten kann und was ich
/github.com/texane/stlink (zum > Programmieren und gdb-Anbindung) unter Linux, dazu arm-none-eabi-gcc Genauso hatte ich mir das gedacht. Als IDE dachte ich an Eclipse denn dort habe ich bereits arm-none-eabi-gcc zum laufen gebracht.GDB habe ich aber bisher noch nichts gemacht. Das Beispiel für
-
Thread
OLED Display 128x64 - Fehlermeldung "text will not fit in region text"
> extrahieren, das nennt sich dann u.a. "function level linking". Damit der allseits beliebte gcc und gnu ld das machen muss man ihnen mit den erwähnten Flags -ffunction-sections -fdata-sections und -Wl,--gc-sections unter die Arme greifen. Ob die Flags nun im gcc Spec-File steht, man es auf
Jack schrieb im Beitrag #5204780: > Damit der allseits beliebte gcc und gnu ld das machen muss man ihnen mit > den erwähnten Flags -ffunction-sections -fdata-sections und > -Wl,--gc-sections unter die Arme greifen. > > Ob die Flags nun im gcc Spec-File steht,
-
Artikel
ASM vs C
workarounds belegt werden müssen, oder mit neuen Generationen von Derivaten neue Möglichkeiten der Optimierung gegeben sind. Von solchen Optimierungen, die in neuere Compilerversionen einfliessen, kann man auf diese Weise quasi kostenlos profitieren. Ein Beispiel dafür: POVRay (mehrere Megabyte C++ Sourcecode) compiliert für P4 mit GCC 3.4.0 bringt gegenüber GCC 3.3.1 eine Leistungssteigerung von knapp 7%. Um diese 7% per Assembler-Optimierung zu erreichen würden wohl einige Tage Arbeitsaufwand nötig, sofern es überhaupt gelingt.
-
Thread
cpp memory leaks vermeiden
ganze lasse ich auf folgenden Systemen laufen: * Arduino Nano (Atmega328), 2k Ram, 32kFlash gcc version 5.4.0 (GCC) gcc version 7.3.0 (GCC) * Pipico2, 520k Ram gcc version 14.2.0 (GCC) * PC, 16GB Ram gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04) Der Atmega hat den
landest und wenn nicht, warum nicht. Die Funktion ist ursprünglich hier definiert: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/src/c%2B%2B11/functexcept.cc
-
Thread
-554 Byte = 1 Befehl?
einen Befehl weglasse(!) bzw. einen anderen konstanten Wert zuweise. Ich vermute mal, daß da die Optimierung des GCC nicht mehr kann, wenn der eine Befehl fehlt. Zusammengefaßt sieht es so aus: [C] main() { while(1) { if(...) { if(...) { } else { if(.
packe ich die Option -Wunreachable-code jetzt immer mit rein, hilft ja und Warnungen nehme ich beim GCC durchaus ernst.
-
Thread
C++ Librarysammlung?
jede einzelne Version inkompatibel ist, ja. Die Änderung an std::string ist C++ selbst Schuld, nicht GCC/libstdc++.
einzelne Version inkompatibel ist, ja. Die Änderung an > std::string ist C++ selbst Schuld, nicht GCC/libstdc++. Da stimme ich auch zu.
-
Thread
Ich verstehe diesen Code nicht
Absprachen" halt auch durch Personalunion. :) Beispiele dafür kannst du bei Georg-Johann Lays Arbeit an AVR-GCC und AVR-LibC finden.
Analyse des Laufzeitverhaltens und darauf aufbauender Optimierung. Ist aber nach meiner Erfahrung eher wenig nutzbringend. Bringt meistens nur bei großen Maschinen was, wenn Caches zu optimieren sind. Sonst nix. Drittens hatte (und hat vermutlich bis heute
-
Thread
Pointer in STRUCT wollen einfach nicht funktionieren! (AVR-GCC)
Hallo Leute, ich werd noch blöde.. :) Ich versuche gerade einen kleinen Modbus Slave aufzubauen und kämpfe gerade mit Pointern die auf structs mit weiteren Pointern ziele sollten.. Klingt kompliziert, ist es aber nur wenn man den Wald vor lauter Bäumen nicht mehr sieht.. :P Die Deklaration meines Structs: [c] typedef struct { uint8_t slave_address; uint8_t function_code; uint16_t *data; uint16_t crc; } modbus_frame_t; [/c] Nun würde ich gerne dieses Struct in meiner Empfangsroutine mit Daten füllen.. Dafür teste ich gerade einen Code wie den folgenden.. Der Compiler
-
Thread
uint32_t bit für bit interpretieren - wahrscheinlich typ problem
0x12345678 dann ist ret 0xffff5678. Hat jemand eine Idee wo das Problem liegt? Compiler ist avr-gcc 4.5.3 auf Ubuntu 12.04LTS.
können je nach Compiler, Architektur (8/16/32/64? bit) und eingestellten Optionen (wie packing, Optimierung) variieren. In dem speziellen gezeigten Fall mag es funktionieren. Adib.
-
Thread
C++ auf Mikrocontrollern
, siehe [[STM32#GCC]] und [[ARM GCC]].
Compiler noch kein C++11 >> unterstützt :-(. > Ja, richtig. Den STM32 kann man auch wunderbar mit dem GCC > programmieren, siehe STM32: GCC und ARM GCC. Ja, richtig. Bei privaten Projekten nutze ich den GCC auch. Beruflich bin ich aber leider gebunden :-(. Mein aktueller C Code ist auf jeden Fall
-
Thread
STM32F7 GCC Speicherzugriff Optimierung
Hallo, Ich spiele grade an einem einfachen Ringbuffer auf einem STM32F7 rum. Hierbei habe ich festgestellt das der Mikrocontroller ein enorm hohen Teil (ca 50%) meiner "Rechenzeit" mit dem auslesen aus dem Buffer beschäftigt ist. Die aufzurufende Funktion gibt einen wert aus mit einem delay zurück und sieht folgendermaßen aus: #define BUFFER_SIZE 11499 float RingBufferDelay(int delay) { int offset = 0; if (delay< 0) offset = buffer.write + delay- 1; else offset = buffer.write - delay- 1; while (offset < 0) offset += BUFFER_SIZE; return data[channel][offset]
-
Thread
Programmiersprachen jenseits von "C"
fand ich > ganz gut, ist aber aus der Nische Militär/Raumfahrt nie herausgekommen. Ada (gnat/gcc) funktioniert gut für populäre µCs & OSs.
Geschwindigkeit erreicht Wie schafft der das ohne die hochkomplexen Optimierungsalgorithmen welche bspw. der GCC für C und C++ nutzt?
-
Thread
Mega88 SPI Soft->Hard Jetzt Flash zu klein,HILFE
ein paar Bytes rausquetschen kannst: http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung
noch eine Kopie behalten, /falls/ die Funktion von außen doch noch aufgerufen wird (hier könnte der GCC-Parameter "-ffunction-sections" helfen, falls der noch nicht im Makefile (oder den AVR-Studioproject-settings) steht). Vielleicht hilft dir noch [[AVR-GCC-Codeoptimierung]], Aber mehr fällt mir auch
-
Thread
ATTINY13: Noch ein CLKPR Unfall - bei HVSP Programming
möchtest. Für Vorteiler 1 müsstest du als zweiten Schritt eine 0 schreiben. Funktioniert aber im AVR-GCC nur dann, wenn du die Optimierungen einschaltest, sonst wird der Code u. U. zu langsam für die vier- Takte-Zeitforderung. Besser ist daher: [c] #include <avr/power.h> ... clock_prescale_set
Jörg Wunsch schrieb im Beitrag #1717346: > Funktioniert aber im AVR-GCC nur dann, wenn du die Optimierungen > einschaltest, sonst wird der Code u. U. zu langsam für die vier- > Takte-Zeitforderung. Besser ist daher: > #include <avr/power.h> > > ... > clock_prescale_set
-
Thread
Optimiert der Compiler Formeln?
konstante Ausdrücke schon bei der Compilierung berechnet werden. Es gibt auch noch weitergehende Optimierungen, aber da wirst du schon nachschauen müssen, was für Code für deine Zielplattform erzeugt wird. Oliver
kann, dass das Ergebnis nach der Umformung für alle Variablenwerte dasselbe bleibt. Zumindest der GCC würde dann die gewünschte Umformung vornehmen.
-
Thread
Jitter in ISR von Atmega
Ich habe GCC 4.7.2, ebenfalls mit -Os
Der Meister Joda des avr gcc ;-) https://www.mikrocontroller.net/user/show/gjlayde
-
Thread
avr-gcc 5.2 für Windows
--param ggc-min-heapsize=131072 COMPILER_PATH=c:/program files (x86)/gcc-5-avr-mingw32/lib/gcc/../../libexec/gcc/avr/5.2.1/;c:/program files (x86)/gcc-5 -avr-mingw32/lib/gcc/../../libexec/gcc/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../libexec/gcc/avr/5.2.1/;c:/progra
lib/gcc/avr/5.2.1/../../../../avr/lib/avr5/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/avr/5.2 .1/;c:/program files (x86)/gcc-5-avr-mingw32/bin/../lib/gcc/;c:/program files (x86)/gcc-5-avr-mingw32
-
Thread
Welches strcpy ist schneller?
Ich fände einen Vergleich mit strlen interessanter. Weil da mehr Spielraum für Optimierung des Algorithmus besteht. Bei strcpy muss jedes Zeichen kopiert werden. Untere Schranke für die Komplexität ist also O(n). D.h. die Optimierung beschränkt sich allein auf die Details der Rechnerarchitektur
#6489398: > Ich fände einen Vergleich mit strlen interessanter. Weil da mehr > Spielraum für Optimierung des Algorithmus besteht. Bei strcpy muss jedes > Zeichen kopiert werden. Untere Schranke für die Komplexität ist also > O(n). D.h. die Optimierung beschränkt sich allein auf die Details der >
-
Thread
AVR Flash Problem GCC
Hallo Leute, ich habe ein Problem mein mit Atmel Studio 6 erzeugtes Programm in den ATmega8 zu flashen. Er fängt mit dem Übertragen ja auch an, aber nach 192 bytes bricht er mit der Fehlermeldung ab: An error occured while executing command with ID 0x14. Timed out waiting for a response. 192 bytes was successfully received before the timeout. Protocol state at time of timeout was 'Get Data'. Ich vermute es liegt am Code. Nur das der Compiler nicht meckert. Habe leider kaum Erfahrungen mit Studio 6 wie man z.B. die Code Optimierungen ausstellt usw.... Es handelt sich um ein DCF77 Empfänger
-
Thread
Erkennung Programiersprache
assembler umwandeln. an den PUSH und POP erkennt man dann später eventuell die programmiersprache - gcc hat da zB eine eigene signatur.
avr schrieb im Beitrag #3030373: [Thema was der avr-gcc 4.7.2 alles nicht kann] > -rcall+ret durch rjmp ersetzen Na, dachte ich mir, probier ich das gleich mal mit dem avr-gcc 4.7.2 aus: [c] int ext_f(int x); int f(int x) { return ext_f(x