-
Thread
AVR-Studio-Simulator, C-Programm schrittweise ausführen Fehlermeldung "not in scope"
Mit Optimierung übersetzt?
/articles/AVR-GCC-Codeoptimierung ... -O0 Keine Optimierung des erzeugten Codes. Diese Optimierungsstufe optimiert den Resourcenverbrauch des Hostrechners und die Nachvollziehbarkeit der erzeugten Codes anhand von
-
Thread
Ambilight mit STM32F4discovery und TVP5150AM1
jetzt nachmals dieses hier von vorne bis hinten durch machen... http://hertaville.com/2012/05/28/gcc-arm-toolchain-stm32f0discovery/ Gruß Leitner
des neuen Projektes löschen; Alles (außer Ordner Debug) vom AmbiLight Projekt rüberkopieren; Alle GCC und Linker Optionen aus den Properties per Copy&Paste übernehmen; Index rebuilden; Builden. Ich hab das gerade mal gemacht und es scheint zu gehen. Ich habe jetzt auch den GCC 4.8.3 verwendet. Er scheint
-
Thread
Atmel 1284p Data Register überschrieben
einfach verschiedene Werte von bereits initialisierten Arrays überschrieben werden?? Compiler-Optimierung hab ich von -O0 bis -Os alles durchprobiert - keine Veränderung. Auch sollte ich noch genügend freien Speicher haben [code] Task "RunCompilerTask" C:\Program Files (x86)\Atmel\Atmel
worauf du abzielst bezieht sich auf das hier, richtig? https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29 Gibt es Vor/Nachteile zwischen progmem/__flash ? Ich probiers nach ein wenig Schlaf gleich mal aus und berichte ob es daran lag - Vielleicht ist es ja eine
-
Thread
Atmel Studio 6 beim Einzelschritt Debuggen asynchron
Schalte mal die GCC Optimierungen komplett ab.
Habe die Optimierung ganz ausgestellt, bringt aber nichts. Anbei ein kleiner Code-Auschnitt als Screenshot: Der Programmcursor steht am gelben Pfeil, aber es wurde schon die Routine lcd_command(0x01) abgearbeitet
-
Thread
Gibt es einen Trick um "volatile"-Variablen zu "normalisieren"
Programms ist also kein Problem... Und für das vergessene Rückschreiben gibt's sogar Warnings vom GCC wie "value is set but not used". > Nunja mal sehn vielleicht kommt ja noch DIE LÖSUNG zu tage, auch wenn > ich mit den bisherigen definitiv Leben kann... Ich bin halt ein kleiner > Perfektionist
22; } std::cout << x; }[/c] Das sieht zwar furchtbar ineffizient aus, aber mit Optimierungen an (-O2 bei GCC) wird daraus genau der Code, den man haben will: Lade den Wert aus x, multipliziere ihn mit 924, schreibe ihn zurück nach x. Die geschweiften Klammern sorgen dafür, dass xb nur
-
Thread
Phänomen: Rechenzeit Funktionsaufrufe
eingefügt. Programmiersprache: C Compiler: IAR 6.40 für die Tests auf dem ARM9, Nios II IDE 9.0SP2 GCC für den Nios Betrifft alle Funktionen die ich ausprobiert habe. Also so an die 15. Interrupts waren beim NIOS komplett aus, auf dem ARM war der Funktionsaufruf aus einem Interrupt mit der höchsten
nach der optimierung sollte eigentlich gar kein Sprung mehr vorhanden sein > for(i=0;i<1;i++) wird wohl komplett aufgelöst werden.
-
Thread
Leon3 c Code Optimierung und Messung
kann, da weder gettimeofday, noch clock() etwas bringt? Die Auflösung ist immer zu hoch. Gibt es Optimierungen beim GCC die speziell für Sparc bzw. Leon3 sind. Was sollte ich beim Programmieren beachten, dass meine Software schneller ausgeführt wird. Kleine Funktionen "inline" kennzeichnen bzw. Variablen
ein Betriebssystem nicht eine Laufzeitumgebung, sprich linux ? , whatever ... Gaisler bietet ein gcc cross compiler + Toolchain(bcc), von der Sache mit allem was das Herz begehrt :D Für Geschwindigkeit würd ich den LEON3 Instruktion- Data Cache auf max, fahren + geeignetem caching Algorithmus parametriern
-
Thread
Inlineassembler für ARV-GCC: Habe Schwierigkeiten mit den "Constraint Modifiers"
Hallo zusammen, ich habe folgendes Problem: ich möchte jedes 2. Bit aus einem 16-Bit-integer (unsigned) in einen 8-Bit-integer (unsigned) schreiben. Da dies sehr sehr häufig gemacht werden muss habe ich mir ein paar Gedanken gemacht wie man hier etwas "tunen" könnte. Mein bisheriger Code erledigt das recht zuverlässig, nur leider recht langsam. [c] uint16_t in; uint8_t out; for( uint8_t i=0; i<8; i++ ) { if( in & (1<<14) ) out++; out<<1; in<<2; } [/c] Mein vielleicht schnellerer Ansatz sieht folgendermaßen aus: [c] uint16_t in; uint8_t out=0, out2; for( uint8_t i
-
Artikel
Compilerfehler
unter Linux oder Microsoft Windows? Wie wurde der Compiler erzeugt? All diese Informationen zeigt gcc an, wenn man ihn mit der Option v aufruft. Kommandozeile: Sämtliche Kommandozeilen-Optionen, auch wenn es viele sind. Quelldatei: Die Eingabe von gcc ist nicht eine C-Datei, sondern die precompilierte
sich gerne durch deine Makefiles hangeln. Ein i-File ist vollkommen ausreichend. Bekannte Fehler. avr-gcc: avr-gcc Bugs Weblinks. GCC: Reporting Bugs, eine Anleitung, wie man einen brauchbaren Fehlerreport für GCC erstellt. GDB: Debugging Optimized Code, Effekte, die beim Debuggen optimierten Codes zu erwarten
-
Artikel
AVR Arithmetik/Sinus und Cosinus (CORDIC)
Für weiterführende Informationen siehe die Weblinks. Die vorliegende Implementierung hat eine Optimierung in Bezug auf die Ausführungszeit zum Ziel. Einsatzgebiet. Der Algorithmus findet dort Einsatz, wo eine Lookup-Tabelle zu groß oder zu ungenau ist. Mit 278 Bytes verbraucht CORDIC in etwa so viel
gewohnten C-Makros. {{Scrollbox|20em| }} cordic-asm.S. Der eigentliche CORDIC-Algorithmus. Er ist avr-gcc ABI-konform, kann also problemlos von avr-gcc aus verwendet werden, ohne mit dessen Registerverwendung zu kollidieren. Der Algorithmus führt 16 Iterationsschritte von n=0...15 aus, wobei zur Erhöhung
-
Artikel
FPGA Konfiguration mit AVR Butterfly
per JTAG auf das FPGA zuzugreifen. Software. Als Grundgerüst für die Butterfly-Software wurde die gcc-Portiertung der Butterfly-Demo verwendet. Um die Daten sicher in den Dataflash zu bekommen, wird das XMODEM-Protokoll verwendet. Dazu gibt es von Atmel die Application Note AVR350 Und um letztendlich
Links. UG332 Spartan-3 Generation Configuration User Guide AVR Butterfly Application code port to avr-gcc AVR350: Xmodem CRC Receive Utility for AVR XAPP058 Xilinx In-System Programming Using an Embedded Microcontroller
-
Thread
"-=" Will nur einmal, aber nicht 3 mal.
Hallo, ja, hab ich, deshalb hab ich ja auch gefragt. AVR-gcc ist version 4.3.2 . Standart in Arduino 1.0.5
Hast du Optimierungen beim Übersetzen an, dann schalt sie doch testweise mal aus...
-
Thread
Neue Cortex-M0+-Familie von Atmel
insbesondere, er hat die Peripherie, die ich benötige. Die Argumente klingen ein wenig wie die Angst-Optimierungen bei der C-Programmierung. Es könnte zu langsam sein...
nicht von der Hardware zu trennen. Zudem beziehe ich mich nicht unmittelbar auf GCC. Schon mal einen GCC für 8-Bit PICs gesehen? ;-) > Bei den kleineren > Cortex-Controllern ist es fast schon Glückssache, ob die Peripherie zur > Anwendung passt. Das gilt für alle solchen
-
Thread
Schokolade aufteilen ist doch einfach! Oh wait (Programmierknobelaufgabe inside!)
Lösung gibt?! Auch ein Aspekt, ja. Aber in meiner Lösung rührte der TLE daher, dass ich eine Optimierung gemacht habe die dann doch keine war :)
Ist an euren Algorithmen grundlegend was anders als bei mir oder "beschränken" sich eure Optimierung auf effizienteres Ausschließen von unmöglichen Fällen. Eine offensichtliche Optimierung, die ich bei mir sehe ist die Teilmengen effizienter zu generieren. Ich hätte da noch ein Aufgäbchen, die
-
Thread
Bitmanipulation, verschieben von Bits, optimierung
umsortieren sind: [c] uint8_t vermischt=__builtin_avr_insert_bits (0x04217563, abc, 0); [/c] http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
Anhänge mit folgendem Compiler: [code] leo@cb:~/src/avr/tmp$ avr-gcc -v Using built-in specs. COLLECT_GCC=avr-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/4.7.2/lto-wrapper Target: avr Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr/lib -
-
Thread
AVR gcc: Funktionsparameter werden überschrieben
mitverfolgen, wie der Wert kaputt geht. (von 0x0795 über 0x07ab zu 0x00ab) Kompiliert wurde mit [code]avr-gcc -funsigned-char -funsigned-bitfields -O3 -fpack-struct -fshort-enums -g2 -DDEBUG -Wall -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -mmcu=atmega88 [/code] Ich bin
stets mit der Option -O0 zu debuggen. Es sei denn, das Problem tritt nur bei einer bestimmten Optimierungs-Stufe auf.
-
Thread
SPIEN disable
mcucsr = MCUCSR; mcucsr |= (1 << JTD); MCUCSR = mcucsr; MCUCSR = mcucsr; Bei abgeschalteter Optimierung tat sich auf allen vier JTAG-Pins nichts. Bei optimaler Optimierung (-0s) hatte ich das gleiche Resultat wie bei der ersten Variante, nämlich dass der TCK-Pin funktioniert hat, die übrigen drei
ATmega32 schrieb im Beitrag #3206119: > Bei abgeschalteter Optimierung tat sich auf allen vier JTAG-Pins nichts. Das ist nicht verwunderlich, weil dann die zeitlichen Randbedingungen für JTD nicht eingehalten werden. > Bei optimaler Optimierung (-0s) hatte
-
Thread
C oder Pascal
zu diskutiert werden, ob das Ergebnis 4 oder 6 ist. Beides ist gleichermaßen richtig oder falsch. GCC liefert übrigens weder 4 noch 6, sondern 5.
praktisch aus unoptimierte Primitiven. Ich habe zuletzt ein Projekt in C umgesetzt, welches mit GCC und MikroC (dürfte ja dasselbe Backend wie MikroPascal sein) übersetzt wurde. Und selbst mit strammster Optimierung brauchte MikroC etwa drei bis viermal soviel Flash... (1) http://www.e-lab.de/AVRco
-
Thread
string buffer löschen
Parametern? Denn diese liegen auf dem Stack. Alle Variable global zu machen hat auch nachteile in der optimierung. Sollte man also nicht machen.
Variablen können in Registern gehalten werden, was >Geschwindigkeitsvorteile bringt. Da wir uns hier im GCC-Forum befinden, müsste der Compiler grundsätzlich von Registern ausgehen, heutzutage. Vor nicht alzu langer Zeit sah das anders aus.
-
Thread
AVR: OCRx1 Werte automatisch berechnen
Falk Brunner schrieb im Beitrag #3201008: > [[Festkommaarithmetik]] Übrigens beherrscht avr-gcc Festkommaarithmetik und Typen wie accum oder short fract etc. Wäre bestimmt ein Update von "Festkommaarithmetik" wert!
gibt optimierte ALgorithmen für (saturierte) Operationen. Insgesamt gibt es 16 Typen http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
-
Thread
Optimierung bei USART Registerzugriff
schrieb im Beitrag #3198790: > Ich hätte eine Frage, warum mit -O3 ? Wie gesagt, bei allen Optimierungen (1,2,3,s) gibt es das gleiche Ergebnis. Ich benutze avr-gcc 4.7.0
Die Anzahl der Zyklen sind für avr-gcc ziemlich wurscht. GCC erzeugt i.W. Code, der den Boliden wie ARM oder x86 genehm ist; was die maschinenunabhängigen Optimizer für Hänflinge wie AVR treiben interessiert eigentlich keinen...
-
Thread
(ARM) GCC binary size viel größer als von Realview
verwende ich die Angstrom-Toolchain unter Eclipse. Frage 1: Was ist der Unterschied zwischen den zwei gcc, die in den Toolchain-Paketen enthalten sind. Zum einen ist ein plain "gcc" und dann eins mit Präfix: /usr/local/gcc-arm-none-eabi-4_7-2013q1$ find . -iname *gcc ./bin/arm-none-eabi-gcc ./arm-none-eabi
ein recht ähnliches Problem. Der Code wird mit Keil so compiliert dass er gut in den Flsh passt bei GCC, trotz Optimierung (-Os -flto -ffunction-sections -fdata-sections -Wl,-gc-sections) kommt es zum Falsh Overflow (ca. 12kb). Könntest Du die konkreten Libraryalternativen (Namen) für stdio+fp benennen
-
Thread
4 Byte in 1 float wandeln
pData[1] << 8) | (pData[0])); printf("Value: %f\n", dResult); return 0; } $ rm -f main ; gcc -o main main.c $ ./main Value: 3.141593 [/code] ..will man aber nicht machen (gcc warnt auch (vollkommen zurecht) sobald man die Warnungen nicht unterdrückt und Optimierungen anfordert).
-
Thread
Datentypen und Berechnungen
Hm, ohne Optimierung wird der Code viel länger: uint8_t test2(uint8_t a, uint8_t b) { 92: df 93 push r29 94: cf 93 push r28 96: 00 d0 rcall .+0 ; 0x98 <test2+0x6>
von test2 nur ein 8-Bit Wert returniert. Dies ist so sein das ABI geändert wurde, irdendwo zwischen GCC Version 4.2 und 4.3 wenn ich mich recht entsinne: Es gibt keine Promotion von 8-Bit Werten zu 16-Bit Werten mehr.
-
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
Compilieren der Waspmote Library mit AtmelStudio (ähnlich arduino)
Christian Anders schrieb im Beitrag #3191199: > "region text overflowed by 119306 bytes" Optimierung eingeschaltet? Den richtigen µP gewählt?
Ja, das hab ich... Das Problem liegt irgendwie daran, dass diese IDE von Waspmote eine ältere GCC version verwendet und Atmel Studio die aktuelle.
-
Thread
wie compiliere ich richtig - altes Projekt anpassen - PowerLED Tiny85
würde. Einige zitate aus dem Beitrag: "Da fehlt ein volatile bei rc5_data. Mit (ganz) früheren gcc-Versionen funktionierte das auch so mit eingeschalteter Optimierung, die neueren optimieren gnadenlos alles weg." "Mit den defines habe ich so meine Schwierigkeiten, was wo wie definieren,
0 Warnings... _______________________________ Habe mal die Tipps berücksichtigt und die Optimierung abgeschaltet (-O0): rm -rf P_LED.o rc5.o LED2.elf dep/* LED2.hex LED2.eep LED2.lss LED2.map Build succeeded with 0 Warnings... avr-gcc -mmcu=attiny85 -Wall -gdwarf-2 -std=gnu99
-
Thread
8bit-Computing mit FPGA
das war ein Stückchen Arbeit: Habe jetzt eine debian-Distribution unter einer VMWARE laufen. gcc habe ich nachinstalliert und Dein "sendcard.c" kompiliert - ohne Probleme. Leider hat sich das Programm dann zunächst mit einem Segmentation Fault verabschiedet - ohne einen weiteren Mucks zu sagen
wieder zusätzlichen Aufwand. Auch brauchst du keine Sorge vor "dateispezifischen inkompatiblen Optimierungen" zu haben bei Archiven, das kann (zumindest bei den mir bekannten Verfahren) nicht geben, wobei das Archivieren einer einzigen weniger kB-großen Dateien an sich schon unsinnig ist. Von daher
-
Thread
main loop - while (1) - nur mit delay
meine Hauptschleife nur mit delay 'richtig' funktioniert. Programmierumgebung emacs mit AVRDude und GCC Mein Programm leitet Zeichen von USART2 per IRQ in einen FIFO. Wass dann passiert ist bereits egal, da selbst die FIFO Routine nicht mehr aufgerufen wird, ohne das delay von 50ms n der main loop.
always_inline)); [/c] in avr/util.h, das war mir nicht bewusst. Das inlining findet also auch ohne Optimierung statt. Wieder was dazugelernt :)
-
Thread
Ist MyHDL für echte Anwendungen einsetzbar?
Toolchain zu drehen (in der VL geht es aber auch um Parallelisierungs- und Synthesemethoden sowie Optimierungen dafür, nicht primär um den Hardwareentwurf). Die Xilinx- oder Altera-Toolchains sind halt monströse Black Boxes. -- Michael
HWKosten, Zertifizierungen (je beweisbarer, desto billiger) - "Testsieger" der kompakten CPUs mit GCC-Support: Sowohl Code als auch HDL (ca. 700 LE für Core). Die Frage mit den MHz kommt oft. Wie schon geschrieben gibt es immer mal Spezialanwendungen, wo eben ein FPGA anstatt eines DSP her muss
-
Thread
unverständliche Optimierung beim Schreiben von PORTs
Vorschläge. Kann gern auch noch mehr Code posten - bin aber irgendwie sicher, dass es an der Optimierung liegt. Vielen Dank schonmal Benni
gemacht. Ich hätte ja gesagt - Tiny / Programmiergerät / Schaltung selbst kaputt. Aber ohne Optimierung ging es zuvor immer. Jetzt hab ich grad mal meine avrgcc Version gecheckt - bin etwas erstaunt über das prerelease.. "gcc-Version 4.8.0 20130502 (prerelease) (GCC)" Fehler dort zu suchen
-
Thread
AVR ATMega - Zugriff auf Struct im Speicher mittels Offset
Compiler im Laufe der Jahre und kenne halt einige auswendig und bei anderen schlage ich nach. http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html#Structure_002dPacking-Pragmas
den verschiedenen Aussagen dazu das ein Struct > im Speicher optimiert abgelegt wird ? Beim avr-gcc lautet diese "Optimierung" eben "auf Byte-Grenzen legen".
-
Thread
STM32 Fehler in Webserver Software von STM
Initialisierung vom PA8 raus...dann hab ich bei mir den Fehler immer IDE ist CooCox 1.7.0 (optimierung = NONE) ARM GCC ist 4.7-2012-q4 (falls das noch eine Rolle für den Fehler spielt)
den ich gespannt verfolgen würde. Vielleicht kann ich dazu auch noch was beitragen, was eher Coocox/GCC betrifft. (Beispiel für 407er Linkerskript Stack im CCM, Stack anpassen, Aligment für DMA). Oder haben wir irgendwo einen passenden Thread "STM32 Coocox"? Cheerio...
-
Thread
C Compliler für EFM32 von Energy Micro
ein bisschen was mit inline-Funktionen & Assembler basteln, aber an sich gehts schon. Wie gesagt, GCC braucht halt etwas Anpassungsarbeit. > Pragmas Die GCC-spezifischen Pragmas logischerweise (die sind ja immer Compiler-spezifisch) > kompakten Code? Und wie, die Optimierungen sind krank... > Wohl eher doch nicht. Wohl doch! > Also: GCC oder nicht - es kommt drauf an, was man machen will. Eher wie faul man ist...
-
Thread
CDC für xmega
ich gleich anhänge, habe ich die Optimierung lokal mit #pragma GCC optimize ("O1") aktiviert, den Rest des Programmes lasse ich mit -O0 laufen. >> 3. Bei dem CDC-Beispiel aus ASF >> funktioniert die Verbindung weiter, wenn man zwischenzeitig
egal wie lange hier die Pause ist } return 0; } // Konfiguration muss mit Optimierung laufen, sonst funktioniert Entsperrung der Code Protection nicht #pragma GCC optimize ("O1") void Config32MHzClock(void) { unsigned char tmp; // get USBRCOSC NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc
-
Thread
inline vs -O0
Mit meiner Lösung bin ich sehr zufrieden. Wollte allerdings noch testen wie sich das Ganze ohne Optimierung verhält. Allerdings compiliert mir mein Code mit -O0 garnicht erst: undefined reference to *** Aktueller avr-gcc. Hab auf die schnelle nichts gefunden. Aber inline müsste doch auch ohne
muss sich dieses Hinweises nicht annehmen (so, wie früher auch "register" nur ein Hinweis war). GCC inlinet die entsprechende Funktion, sofern sie seiner Meinung nach klein genug ist, /und/ sofern die Optimierungen zugelassen sind. Die Idee dabei ist einfach, dass jemand, der ausdrücklich keine
-
Thread
Takte zählen (im Debugger)
pro C-Zeile zählen willst, ist das eh ein Ratespiel. Sinnvoll ist das ja nur mir eingeschalteter Optimierung, und da ist die Zuordnung von erzeugtem Assmeblercode zu C-Sourcen beim avr-gcc leider etwas, nun ja, wirr ;) Für ganze Funktionen passt es einigermaßen... Oliver
-
Thread
Atmel oder PIC Gesperrt
Bitter? Ist beim Rechnen mit großen Zahlen langsamer. > Kann man den hier auf der HP angebotenen GCC-Compiler für ALLE MCUs von > Atmel nutzen? Soweit ich weiß funktioniert der GCC nicht für alle. Dies betrifft aber eher alte Derivate (z.B. ATtiny11).
die aktuelle Version des 16 Bit Compilers (ehemals C30) heißt jetzt XC16 V1.11 und ist immernoch der GCC. In der freien Version gibt es keine Codebeschränkung, nur die Optimierung ist beschränkt. Der CCS Compiler ist nicht von Microchip, sondern von der Fa. CCS. MfG Klaus
-
Thread
VGA Ausgabe per STM32F4 Discovery-Board
#3143628: > bei mit läuft es unter CooCox auch ohne Optimierungsstufe Warum eigentlich immer ohne? Die GCC-Optimierungen bewirken kleine Wunder, während ohne diese der generierte Code ziemlich gruselig ist (so stehen gerne die gleichen Instruktionen 5x hintereinander da, wo 1x gereicht hätte). Und präzise
-
Thread
Kompilieren dauert zu lange!!
nur 20 Zeilen sind, dann dauert es so 15 Sekunden bis das Programm läuft. Ich verwende den GNU GCC Compiler und weiß einfach nicht woran es liegen könnte. Alle Optimierungen sind schon von Codeblocks automatisch deaktiviert und ich kann nur mehr auf euch zählen... Es tut weh wenn das so lange
int argc, char *argv[]) { printf("Hello, world!\n"); return 0; } [/c] Erstes Mal: $ time gcc -Wall -o Prog x.c real 0m0.869s user 0m0.080s sys 0m0.048s Zweites Mal: $ time gcc -Wall -o Prog x.c real 0m0.068s user 0m0.060s sys 0m0.012s Auf hundert Zeilen erweitert
-
Thread
AVR Studio 6 und Bootloader
Oliver schrieb im Beitrag #3138768: > Ohne Optimierung wird der Index von mcucr_write zur Laufzeit > ausgewertet, das dauert halt länger als 4 Zyklen. Nachtrag: Zumindest der gcc 4.3.3, den ich hier auf dem Rechner habe, erzeugt ohne Optimierung auch ohne Array solch umständlichen Code, der schafft die 4 Zyklen ohne Optimierung auch ohne Array nicht. Oliver
-
Thread
Anfängerfrage: LED Toggle in C - ATtiny13/ATmega8
definieren, und du musst die Optimierungen an machen ( mindestens -01)
Wurst sein. Ja, dass ging aus deiner Aussage jetzt nicht so direkt hervor ob du das auch tust. >(Im GCC kann ich ja unter Symbols die Frequenz selber angeben) Wenn du das auch machst ist alles Ok.
-
Thread
Atmel MC; ATTiny45/85 Alternative mit mehr Flash - 16kByte, Rest möglichst gleich, stromsparend,.
jede Bitvariable long long verwenden, die Optimierung einschalten (-Os) und keinen Copy&Paste-Monstercode, sondern Unterfunktionen mit Parametern.
AVRStudio zeigt doch nach dem Build immer an, wieviel Flash und SRAM belegt werden. Bzw. für den AVR-GCC macht das avr-size.exe.
-
Thread
AVR-GCC: Kein Zugriff auf Strukturmember
Hi! Ich habe die folgende C Structure definiert: [c] typedef uint8_t ringbuffer_addr_t; typedef struct{ uint8_t len; uint8_t head; uint8_t tail; uint8_t capacity; uint8_t *cont; } ringbuffer_t; [/c] und folgenden (vereinfachten) Testcode [c] int main(void){ ringbuffer_t buf; buf.capacity = 256; //breakpoint hier }[/c] egal was ich auch versuche, ich kann die Variable capacity nicht verändern, sie bleibt bei ihrem Initialwert. Ein Debugscreenshot hängt an diesem Post, der das Verhalten bestätigt. uC ist ein ATMega168P. Habt ihr eine Idee woran es liegen
-
Thread
AT90USBKey2 (1287) tut nicht was er soll. Polung?
WDTCSR = 0x00; //Wdt_stop(); > } Wieso verwendest du nicht die Watchdog-Funktionen von AVR-GCC (wdt.h)? > > void Init(void){ > // Alle Pins als Ausgang schalten > DDRB = 0xFF; > > } > int main(void) > { > > watchdog_off(); > Init(); > > while(1) > { > //Alle
ausgeben > PORTB = 0x01; > _delay_ms(100); > PORTB = 0x02; Hast du die Compiler-Optimierungen an (mindestens -O1) sonst geht das _delay_ms nicht richtig
-
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
_delay_ms(..) abhängig von ATTiny Taktung?
wird ein F_CPU benötigt wenn Du die delay.h einbindest ? http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29
F_CPU *vor* include delay.h angegeben wurde (idealerweise im Makefile / Projektoptionen) *und* Optimierung aktiviert wurde.
-
Thread
Pollin Geigerzähler Bericht
Forschungsprojekt wo man sein eigenes Programm dafür schreiben kann. Man kann natürlich einpaar Optimierungen für die Schaltung unternehmen. Gruß AVR-Entwickler
Walters (wally234) >in welcher Umgebung hast du dein Projekt kompiliert ? AVR Studio 4.18 + AVR gcc von 2010 >Könntest du ggf. das build-Kommando angeben ? F7 ;-)
-
Thread
Wie Umwandlung von Integer -> 2xByte beschleunigen?
Danke für Euer Feedback. Ich wusste nicht, dass der GCC Compiler das optimiert. Ich probiere das mal im Vergleich zu der union-Variante aus. Führt er diese erwähnte Optimierung in allen Optimierungsstufen durch, oder erst in höheren? Danke oli
Optimierung in allen Optimierungsstufen durch, > oder erst in höheren? Naja, mit -O0 natürlich nicht. ;-) Aber ab -O1 schon. Für den AVR-GCC ist in der Praxis -Os erfahrungsgemäß die Optimierungsstufe
-
Thread
C komisches Verhalten
setzte ich mich auch gerade mit diesem Problem auseinander. Mir ist dabei aufgefallen, dass der AVR-GCC teilweise wenig nachvollziehbare Optimierungen macht. z.B. wird für unterschiedliche AVRs ohne verständliche Gründe ganz anderer Code erzeugt, der mehr oder weniger Taktzyklen benötigt.
Compare) > auswerten kann. Len muss vorher um eins korrigiert werden. > Probiere das 'mal mit AVR-GCC aus. Du wirst Dich wundern..