-
Artikel
AVR-GCC-Codeoptimierung
wo's nur geht. Wirklich zeitkritische Funktionen und Interrupts als Assemblercode in separater Datei GCC-Optionen. Optimierungs-Level. avr-gcc kennt mehrere Optimierungsstufen: -O0 : Keine Optimierung des erzeugten Codes. Diese Optimierungsstufe optimiert den Resourcenverbrauch des Hostrechners und die
diese zu schieben, das ist meist deutlich schneller. Gute Beispiele findet man hier und hier. Optimierung der Ausführungsgeschwindigkeit. Hierzu gibt es schon eine Application-Note von Atmel. Diese AppNote bezieht sich auf den IAR-Compiler. Die darin genannten "Optimierungen" sind für avr-gcc größtenteils
-
Artikel
ARM GCC
ARM-GCC bezeichnet die für ARM-Mikrocontroller konfigurierte Variante des C- und C++- Crosscompilers GCC. In diesem Artikel geht es primär um den arm-none-eabi-gcc, der ein für embedded Systems optimiertes
aus, nicht alle! -Wextra erzeugt noch einmal mehr Warnungen. -O[0,1,2,3,s,g] Wählt die Art der Optimierung. -O0: keine Optimierung -O[1,2,3]: Optimierung auf Ausführungsgeschwindigkeit. Je höher die Stufe, desto aggressiver ist die Optimierung. Das führt unter Umständen zu beträchtlich größerem Code
-
Artikel
AVR-GCC-Tutorial/Exkurs Makefiles
werden alle temporären Dateien gelöscht (="aufgeräumt"). Sonstige Einstellungen. Optimierungsgrad. Der gcc-Compiler kennt verschiedene Stufen der Optimierung. Nur zu Testzwecken sollte die Optimierung ganz deaktiviert werden (OPT = 0). Die weiteren möglichen Optionen weisen den Compiler an, möglichst kompakten
der Compiler diese "Variablen" direkt Registern zuweist. Dies kann vermieden werden, indem die Optimierung abgeschaltet wird (im makefile). Man simuliert dann jedoch ein vom optimierten Code stark abweichendes Programm. Das Abschalten der Optimierung wird nicht empfohlen. Statt des Software-Simulators
-
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.
-
Artikel
Diskussion:Schnelle 32Bit-Integer Sinusberechnung
Die Routine selbst braucht nochmals 192 Bytes. Macht insgesamt also rund 300 Bytes, bei starker Optimierung (-O2, avr-gcc 4.7.2). Spart bei ganzzahligen Winkeln also eigentlich quasi fast nichts und braucht noch viel mehr Rechenzeit als eine Tabelle mit 360 Einträgen. --Haku (Diskussion) 19:02, 29. Okt
beschrieben ist: Digitale_Sinusfunktion 87.166.170.19 14:41, 1. Nov. 2013 (CET) Ergebnis für 8 Bit AVR-GCC. Der AVR-GCC-Compiler macht aus diesem Code mit 16Bit integer, (nur die Multiplikationen als long) 272 Bytes. Das sind 84Byte mehr als bei einem 32Bit-Arm. Jetzt kann sich jeder selbst ein Bild machen
-
Artikel
AVR-GCC
aus dem svn kommen (svn co svn://gcc.gnu.org/svn/gcc/branches/branchname gcc ,mit branchname gcc-version-branch, aktuell ist gcc-6-branch) oder aus dem aktuellen trunk (svn co svn://gcc.gnu.org/svn/gcc/trunk). Die AVR-LibC: Download. Achtung
Einstieg in die Nutzung des avr-gcc unter MS-Windows mit WinAVR (englisch) AVR-GCC und Linux GCC-Forum auf mikrocontroller.net
-
Artikel
PIC C-Compilervergleich
Unterstützt: PIC10/12/16 Preis (Standard/Pro): 495$ / 1195$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage PRO Version Hi-Tech C for PIC18. Version: 9.80, MPLAB X 1.51 Unterstützt: PIC10/12/16/18 Preis (Pro): 1195$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage PRO Version
X 2.05 Unterstützt: PIC24/dsPIC Preis (Pro): 995$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 60-Tage PRO Version Hi-Tech C for PIC24 & dsPIC. Version: 9.62, MPLAB X 1.51 Unterstützt: PIC24/dsPIC Preis (Standard): 895$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage Standard
-
Artikel
AVR-GCC-Tutorial
allem (aber nicht nur) den Abschnitt = Oft gestellte Fragen (und Antworten dazu). Den Artikel AVR-GCC in diesem Wiki lesen. Das GCC-Forum auf www.mikrocontroller.net nach vergleichbaren Problemen absuchen. Das avr-gcc-Forum bei AVRfreaks nach vergleichbaren Problemen absuchen. Das Archiv der avr-gcc
Warteschleifen) vorzuziehen, da leere Zählschleifen ohne besondere Vorkehrungen sonst bei eingeschalteter Optimierung vom avr-gcc-Compiler wegoptimiert werden. Weiterhin sind die Bibliotheksfunktionen bereits darauf vorbereitet, die in F_CPU definierte Taktfrequenz zu verwenden. Außerdem sind die Funktionen der
-
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
ArithmetikBenchmark
meines Benchmarkprogramms. Ausgeführt wurde das Programm auf einem ATmega328p. Compiliert wurde mit avr-gcc 4.3.2 und avr-libc 1.6.2.cvs20080610-2. Das sind die Versionen, die bei einem aktuellem Debian (stand März 2010) mit geliefert werden. Compiliert wurde mit einer Optimierung für minimale Größe. Zum
die Berechnung relativ lang ist, letzteres gibt dem Compiler hingegen mehr Möglichkeiten für Optimierungen. Die Bits sind sizeof(datentyp)*8. {| class="wikitable" + Ergebnisse Datentyp Bits Berechnung Verwendete Funktion Ticks signed long long 64 a+b=c Inline 135 signed long long 64 a*b=c __muldi3 895
-
Artikel
AVR-Bootloader mit Verschlüsselung von Hagen Re
zusätzliche Funktionen und eine Sprungtabelle eingebunden. im Ordner \test\ ein Test-Projekt in WinAVR GCC zur Demonstration der Bootloader Funktionalität. Im Headerfile AVRootloader.h eine universelle Schnitstelle zum Bootloader. durch einige Optimierungen im Code konnte der benötigte FLASH reduziert werden
war nicht ganz korrekt. Ist gefixt. PC-Software: die Kommunikationsgeschwindigkeit wurde durch Optimierungen beschleunigt. PC-Software: einige Fehler in der Bedienung etc.pp. beseitigt PC-Software: neue Einstellungen in der AVRootloader.ini [System]-AppCmd, [System]-AppCmdResponse, [Timeouts]-AppCmd.
-
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
Umstieg von Arduino auf AVR
Arduino-IDE später deinstallieren möchte, eine separate Compiler-Installation vornehmen. Siehe dazu AVR-GCC. Ein Terminal-Programm wie Putty oder HTerm kann nie schaden. Antrieb. Man sollte sich überlegen, warum man sich vom Arduino lösen will. Dazu gibt es im wesentlichen 2 Gründe: Trennung von der Arduino-IDE
Hinweis: Der Compiler kann bei der Laufvariable i die Größe von 16 auf 8 Bit reduzieren via Code-Optimierung, und kann den Speicherplatz für die Konstante ledPin wegoptimieren (wenn man static const davorschreibt). Der GCC tut das in der Regel nicht, da dieser wie jeder Compiler von einer Mindestintelligenz
-
Artikel
STM32 - Einstieg mit Em::Blocks
kann die IDE per Dialog, sehr einfach, installiert werden. Als Compiler beinhaltet Em::Blocks den ARM GCC Compiler. Die IDE unterstützt zurzeit den ST-Link, den J-Link und es gibt eine Generic-Vorlage, durch welche andere Debugger konfiguriert werden können. Außerdem muss noch der passende Treiber für den
executables. Ganz unten, unter Logging kann man dann Full command line auswählen. Compiler Optionen. Optimierung. Standardmäßig verwendet Em::Blocks keine Optimierung. Unter -> Rechts Klick -> Build options... -> Categories: Optimization kann zwischen verschieden Optimierungen ausgewählt werden. Verschiedene
-
Artikel
Pollin Funk-AVR-Evaluationsboard
Funk-AVR-Evaluationsboard v1.1 von der Firma Pollin und um die C-Programmierung mithilfe des Boards und AVR-GCC/WinAVR. In den Beispielprogrammen wird nach Möglichkeit ein ATmega8 mit 12 MHz Quarz Taktquelle verwendet. Die Hardware auf dem Board ist sehr überschaubar (ein Taster, zwei LEDs, s. PDF unter Weblinks
, um eine ankommende Frequenz z. B. hier durch 5 zu teilen (Bsp. 10 Hz auf 2 Hz runterteilen). AVR-GCC-Tutorial/Die Timer und Zähler des AVR. Im folgenden ist das Beispiel für Compare Match Mode aus dem AVR-GCC-Tutorial/Die Timer und Zähler des AVR vom Atmega8 auf den Attiny2313 umgeschrieben. Die wesentlichen
-
Artikel
AVR-GCC-Tutorial/LCD-Ansteuerung
Hauptprogramm in sein Projekt aufnehmen. Dies geschieht beim AVR Studio unter Source Files im Fenster AVR GCC oder bei WinAVR im Makefile (z. B. durch SRC += lcd-routines.c). Wichtig ist außerdem, dass die Optimierung bei der Compilierung eingeschaltet ist, sonst stimmen die Zeiten der Funktionen _delay_us(
-
Artikel
Avr-gcc Bugs
Useless code generated for stack / register operations 12.3 92729 Switch from cc0 to CCmode so avr-gcc can be kept in GCC v11+ 11.0 82658 Right-shifting 8-bit unsigned integers. 10.0 92055 Support 64-bit double 10.0 86040 RAMPZ not cleared after reading from __flashN 9.3, 8.4, 7.5 85805 Wrong code for
epilogue on naked function 4.5.3 41885 Rotate patterns do not correctly consider overlap. 4.5.0 Weblinks. gcc.gnu.org/bugzilla: avr avr-libc: Fehler
-
Artikel
AVR-DevCPP
-gdwarf-2 -std=gnu99. Dies sind die notwendigsten Parameter um den qC zu beschreiben sowie die Optimierung(dwarf-2) und den C Standard (GNU C99) In der Karteikarte Einstellungen sind i.A. keine Änderungen vorzunehmen. Hier können die weiteren Compiler-Flags aber komfortabel eingestellt werden. Als nächstes
eingerichtet. In der Karteikarte Programme müssen nun noch die richtigen Programme ausgewählt werden: Als gcc wird avr-gcc.exe eingetragen, als g++ avr-g++.exe und als gdb avr-gdb.exe. Nun kann dieser Dialog geschlossen werden. Projekt Vorlage. Als nächstes wird eine Vorlage gebraucht. Diese kann anschließend
-
Artikel
FAQ
selbstgeschriebene Funktion zur Stringausgabe auf LCD - die Funktion lcd_string() - aus dem LCD-Teil des AVR-GCC-Tutorials verwendet: Um also eine Zahl (numerische Konstante oder Variableninhalt) auszugeben, muss von dieser Zahl zunächst ihre String-Repräsentation ermittelt werden. Hier geht es aber nur darum,
Maschinensprache übersetzen Version, Anweisungen einzusparen. Das dürfen sie auch. Der C-Standard erlaubt Optimierungen, solange die 'As-If'-Regel eingehalten wird. Das bedeutet: Der Compiler darf das Programm umstellen und verändern, solange die Programmergebnisse dieselben bleiben. Eben "As-if" die Optimierung
-
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
-
Artikel
Bitmanipulation
Operation (1 MEINBIT1) stillschweigend, gemäß den C-Regeln, die 1 als Integer-Typ ansieht. Beim AVR-GCC bedeutet das 16-Bit/signed und die folgende Operation bringt ggf. nicht das gewünschte Ergebnis (Stichwort: „Integer Promotion“). Angenommen, Bit 15 soll in einer 32-Bit weiten Variable gesetzt werden
der Bitmanipulation bei IO-Registern Weblinks. AVR Built-in Functions – spezielle Funktion im avr-gcc zur schnellen Bitvertauschung (englisch) Sean Eron Anderson: Bit Twiddling Hacks – Sammlung von komplexeren Bitmanipulationen (englisch) Günther Jena: Bitmanipulation mit C – mit Übungen
-
Artikel
Festkommaarithmetik
undefiniert , in aller Regel spuckt es das unbekannte Zeichen aus (wie bei '%' ). 'S' ist eine avr-gcc-Erweiterung: Es interpretiert den übergebenen Zeiger als Flash-Adresse und liest die Bytes intern mit pgm_read_byte() . Anders als bei Windows, wo "%S" mit Unicode zu tun hat. Dadurch ist die printf-Funktionalität
der Ablage im Speicher berücksichtigt werden. Im Sinne der Verständlichkeit wurde bewusst auf Optimierungen und kompakt/kryptische Schreibweisen verzichtet. Der Syntax ist Standard-C und somit auf jedem Compiler nutzbar. Diese Funktion gibt auch führende Nullen aus. Das ist erstmal OK, denn so wissen
-
Artikel
Mini2440
, dass man den Compileraufruf anpassen muss. Wenn man eine Cross Toolchain installiert hat und nur gcc auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim lokalen gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit $ which gcc Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der: $ arm-linux-gcc oder $ arm-none-linux-gnueabi-gcc Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über arm-linux-... zu erreichen
-
Artikel
DsPIC
EEPROM Versionen mit internem 12 Bit AD-Wandler, I2C, SPI, AC97 und CAN Software. Microchip bietet den GCC-basierten Compiler C30 im 3-4 stelligen $-Bereich an. Eine Studentenlizenz ist kostenlos erhältlich. Nach der Erprobungszeit ist lediglich die Art der Optimierung nicht mehr frei wählbar. Es wird dann
-
Artikel
Soft-PWM
stehen damit maximal 312 Takte zur Verfügung. Glücklicherweise ist die Funktion relativ kurz und der GCC leistet gute Arbeit. Der Interrupt benötigt hier 152 Takte, es verbleiben also jeweils 160 Takte zur Bearbeitung anderer Aufgaben. Das entspricht einer CPU-Belastung von ~49%. Das Programm benötigt
Quelltext mit Hilfe von #if . . #endif geprüft. Die +5 Takte sind eine Reserve. Dazu muß aber die Optimierung -Os eingeschaltet sein, sonst stimmen die Zahlen nicht! Achtung: Wenn man für eine PWM aussschliesslich 8 Bit breite Datentypen verwendet, dann steht für den Parameter für die Pulsbreite nur der
-
Artikel
Entwicklungsboard mit AT91SAM7Sxxx - selbstgemacht
Programmieren zuwenden. Die Softwareseite. Die ARM-Prozessorkerne werden von der Gnu Compiler Collection (gcc) voll unterstützt. Der ist gut und gratis, wie hier allgemein bekannt sein sollte. Der gcc Compiler ist in der Lage, sowohl 32Bit Code als auch 16-Bit Thumb Code sowie Mischcode zu erzeugen. Es gibt
Auswahlmöglichkeiten [0, 1, 2, 3, s] stellt den Optimierungsgrad des Compilers ein. 0 bedeutet keine Optimierung und sollte beim Debuggen verwendet werden. Im endgültigen Programm kann man 3 (schnellstmöglicher Code) oder s (kleinstmöglicher Code, in einigen Fällen daher sogar schneller als 3) verwenden. Debuggen
-
Artikel
Interrupt
, müssen um kritische Aktivitäten herum jedesmal die Interrupts abgeschaltet werden. Beispiel (AVR-GCC): Wenn man ein globales Einschalten der Interrupts mit sei() vermeiden will, kann man die folgende Methode benutzen. Hierbei werden die Interrupts nur eingeschaltet, wenn sie vorher bereits eingeschaltet
auf eine 16-Bit Variable. Siehe auch. ADC Timer FAQ#Timer AVR-Tutorial - Interrupts in Assembler AVR-GCC-Tutorial - Interrupts in C Forumsbeitrag: Minimale Pulsbreite zum Auslösen eines Pin Change Interrupts beim AVR Forumsbeitrag: Schwerer Bug in AVR-GCC 4.1.1 Forumsbeitrag: Code in den Atomic Block verschleppt
-
Artikel
Zeitgesteuerte Pflanzenbewässerung
= Software = Die Software ist komplett in C geschrieben und mehr auf Einfachheit als auf volle Optimierung ausgerichtet. Das erklärt auch dass die 4K des Atmega48 randvoll sind. Alle Einstellungen ausser der aktuellen Zeit und dem aktuellen Wochentag werden im EEPROM abgespeichet und sind nach einem
Eagle Schema und das PDF sind hier: Bewaesserung_HW_V1.0_2010_04_24 Software. C-Source Code für AVR-GCC und die vorkompilierte HEX Datei für einen ATmega48 sind hier: Bewaesserung_SW_V1.0.3_2010_10_09
-
Artikel
C-Präprozessor
besser mit const vereinbarte Variablen benutzen. Bei jedem besseren Compiler ergeben sich dank Optimierung keinerlei Nachteile. enum für Konstantenfelder benutzen. Dabei sollte man allerdings sauber casten, da enum-Werte in der Regel als int interpretiert werden. Neuere Versionen des GCC unterstützen
-
Artikel
AVR Checkliste
: die Blinkfrequenz ist dann achtmal langsamer. Allerdings muss man auch hier aufpassen. Siehe AVR-GCC-Tutorial: Warteschleifen. Erscheinen im Terminalprogramm kryptische Zeichen anstatt ordentlichen Buchstaben (z. B. ü statt A), liegt das zu 99,9% an einer falsch eingestellten/erzeugten Baudrate im
Bei der Initialisierung der UART beachtet, wenn das für den verwendeten AVR notwendig ist, siehe AVR-GCC-Tutorial/Der UART: Die UART-Register. In den Tutorials für Assembler und GCC wird die Nutzung recht gut erklärt und mit Beispielen erläutert. Testprogramm. Im folgenden Programm muss angepasst werden
-
Artikel
LED-Fading
anschliessen und los gehts. Es sollte hier noch erwähnt werden, dass das Programm mit eingeschalteter Optimierung compiliert werden muss, sonst stimmen die Zeiten der Warteschleifen aus util/delay.h nicht. Bei Verwendung der LEDs auf dem STK500 bzw. bei der Verwendung von invertierenden Treiberstufen ist das
Tabelle benötigte EEPROM-Speicher entspricht log_2(MAX+1)*steps bit. Fußnoten. Siehe auch. PWM AVR-GCC-Tutorial: PWM Soft-PWM - optimierte Software-PWM in C Eine LED weich blinken lassen ohne Mikrocontroller [PDF "Experimente zur logarithmischen Empfindlichkeitsskala - Das Weber-Fechnersche Gesetz" -
-
Artikel
MCURSES
und myApp.c. Damit nicht verwendete mcurses Funktionen auch nicht im Binary landen bzw. weitere Optimierungen zwischen der mcurses-Bibliothek und der eigentlichen Applikation vorgenommen werden, sind folgende zusätzlichen Compiler-Optionen für den avr-gcc (ab Version 4.7.2) sehr zu empfehlen: -Os -flto
gc-sections Diese Optionen können mehrere 100 Bytes im Binary einsparen. Dabei muss auch dem Linker das Optimierungs-Flag -Os mitgegeben werden - auch wenn das ungewöhnlich erscheint. Dies liegt daran, dass der Linker bei Verwendung von LTO (-flto) auch nochmal im zweiten Durchgang den Compiler aufruft. Fehlt
-
Artikel
UsbDisplay
Die 8/08 Version hat noch keine Massefläche und ist noch völlig ungeprüft! Außerdem wäre eine Optimierung für eine bestimmte gängige Gehäusegröße und einige Bohrungen zur Befestigung sinnvoll. Aufbau der Hardware. Die aufgeführten Bauteile kosten etwa 70 EUR bei Reichelt. Aus einer DSS (Doppelseitigen
mir diese Simple behandlung. Die Magie geschieht über das Attribut __attribute__((interrupt)) Laut GCC Manual ist dies genau für Interrupt Handler gedacht. Der Compiler speichert nur die Register auf dem Stack, die tatsächlich benötigt werden. Dies ist performanter als per se alle Register zu speichern
-
Artikel
LAUNCHXL-F28379D
erinnert an Assemblerprogrammierung. Auch das Ersetzen von switch durch if -Ketten für bessere Optimierung ist Schnee von gestern, vor allem für diesen schnellen Prozessor. Unicode-Zeichenketten ( L"Beispiel" ) nehmen genauso viel Platz ein wie ASCII-Zeichenketten ( "Beispiel" ). Wide-Char ( wchar_t
noch sollte man es mit Vererbungshierarchien und Abhängigkeiten übertreiben. Linkerskript. Wie auch gcc (bekannt aus WinAVR, Arduino, MSP430) verwendet der Linker (Compiler+Linker-Pfad: c:/ti/ccs1010/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/bin/cl2000.exe) ein Linkerskript. Es hat hierbei die Endung
-
Artikel
IRMP
irmp-main-stellaris-arm.c bereits integriert. Ebenso kann IRMP auf STM32-Mikroprozessoren eingesetzt werden. avr-gcc-Optimierungen. Ab Version avr-gcc 4.7.x kann die LTO-Option genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten
nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift. Konfiguration. Die Konfiguration von IRMP wird über Parameter in irmpconfig.h vorgenommen, nämlich: Anzahl Interrupts pro Sekunde Unterstützte IR-Protokolle Hardware-Pin zum IR-Empfänger
-
Artikel
FIFO
Bytes arbeiten. Die kleine Bibliothek ist als Archiv verfügbar. Für die Simulation muss man die Optimierung des Compilers ausschalten, um alle Variablen anzeigen zu können. 2 n -Ringpuffer - die schnellste Lösung. Vorteile: Durch Bitmaske auf den Feld-Index write kann der nicht "Amoklaufen" und beliebige
werden, bzw. durch Generische FIFO mit C-Präprozessor. Mit einigen zusätzlichen Macro-Tricks (und GCC Compiler Extensions) ist es möglich diese FIFO auf beliebige Datentypen und Längen zu erweitern. Die Grundidee ist, dass für jede FIFO ein neuer struct erstellt wird, dessen Bestandteile identisch benannt
-
Artikel
Pulsweitenmodulation
zusammen. Etwas genauer: Schaltverluste beim FET Siehe auch. Pulsdichtemodulation AVR-Tutorial: PWM AVR-GCC-Tutorial: PWM Soft-PWM Motoransteuerung mit PWM LED-Fading AVR PWM Ambilight in Hardware 1-Bit Digital-Analog-Wandlung Forumsbeitrag: Audioausgabe mit PWM Forumsbeitrag: SPWM auf Atmega8, bitte um Feedback hinsichtlich Optimierung Forumsbeitrag: H-Bridge 50Hz Sinus - LC Filter dimensionieren Forumsbeitrag: Arduino Mega 11 PWM-Pins mit 1kHz Forumsbeitrag: Sprung in der PWM-Kennlinie beim ATtiny85 und Timer 1 Forumsbeitrag:
-
Artikel
Plattformunabhängige Programmierung in C
ein C99-kompatibler Compiler eingesetzt wird, da die meisten verbreiteten Compiler (allen voran der GCC) zumindest die wichtigsten Features unterstützen, unter anderem die in diesem Artikel zentralen C99-Integer-Datentypen. Plattform. Neben dem C-Standard spielt insbesondere die Plattform, für die der
bietet auch nicht jeder Compiler überhaupt Unterstützung für Double-Precision-Berechnungen. Der avr-gcc erfüllt beispielsweise nicht den C-Standard, da er nur mit Single-Precision (32 Bit) rechnet. Die Typen float und double sind auf dieser Plattform entsprechend identisch. Sofern Code auf Plattformen